When users have elected to enable delays in the spi-gpio driver, use the
cs speed to govern the time between CS assertion and beginning of data
transfer on the bus

Signed-off-by: Ben Gardiner <bengardi...@nanometrics.ca>
---
changes since v1:
 * none; new in v2

 drivers/spi/spi_bitbang.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c
index 8b55724..8707133 100644
--- a/drivers/spi/spi_bitbang.c
+++ b/drivers/spi/spi_bitbang.c
@@ -269,6 +269,7 @@ static void bitbang_work(struct work_struct *work)
        while (!list_empty(&bitbang->queue)) {
                struct spi_message      *m;
                struct spi_device       *spi;
+               struct spi_bitbang_cs   *cs;
                unsigned                nsecs;
                struct spi_transfer     *t = NULL;
                unsigned                tmp;
@@ -281,13 +282,15 @@ static void bitbang_work(struct work_struct *work)
                list_del_init(&m->queue);
                spin_unlock_irqrestore(&bitbang->lock, flags);
 
-               /* FIXME this is made-up ... the correct value is known to
-                * word-at-a-time bitbang code, and presumably chipselect()
-                * should enforce these requirements too?
-                */
-               nsecs = 100;
-
                spi = m->spi;
+               cs = spi->controller_state;
+               nsecs =
+#if defined(CONFIG_SLOWER_SPI_GPIO)
+                               !cs->nsecs ? cs->nsecs : 100;
+#else
+               100;
+#endif
+
                tmp = 0;
                cs_change = 1;
                status = 0;
-- 
1.7.0.4


------------------------------------------------------------------------------
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to