Hi, On Wed, Jun 29, 2016 at 8:54 PM, <apronin@xxxxxxxxxxxx> wrote: > From: Andrey Pronin <apronin@xxxxxxxxxxxx> > > Some devices may need CS to be deasserted for some time > between transactions. Added a new capability to guarantee > a delay between SPI transactions for the device. > > Signed-off-by: Andrey Pronin <apronin@xxxxxxxxxxxx> > --- > drivers/spi/spi.c | 3 +++ > include/linux/spi/spi.h | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c > index c51c864..639c7bd 100644 > --- a/drivers/spi/spi.c > +++ b/drivers/spi/spi.c > @@ -971,6 +971,9 @@ static int spi_transfer_one_message(struct spi_master *master, > spi_reset_cs_wake_timer(msg->spi); > } > > + if (msg->spi->xfer_delay) > + mdelay(msg->spi->xfer_delay); > + Sounds like you're generalizing "EC_SPI_RECOVERY_TIME_NS" from the cros EC code. That code actually keeps track of the end of the last transfer and only delays as much as needed. Also note that time is in NS, which seems like a more appropriate time scale. Even if the hardware you're talking to needs many milliseconds to recover, there might be some that need only a few ns. > spi_set_cs(msg->spi, true); > > SPI_STATISTICS_INCREMENT_FIELD(statm, messages); > diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h > index 4b06ba6..4b1aa13 100644 > --- a/include/linux/spi/spi.h > +++ b/include/linux/spi/spi.h > @@ -137,6 +137,8 @@ void spi_statistics_add_transfer_stats(struct spi_statistics *stats, > * @cs_wake_timer: Timer measuring the delay before the device goes to > * sleep after the last SPI transaction. > * > + * @xfer_delay: Delay between SPI transactions (msec). > + * > * @statistics: statistics for the spi_device > * > * A @spi_device is used to interchange data between an SPI slave > @@ -183,6 +185,8 @@ struct spi_device { > bool cs_wake_needed; > struct timer_list cs_wake_timer; > > + u32 xfer_delay; > + > /* the statistics */ > struct spi_statistics statistics; As mentioned in the other patch, some of your code is missing and is in patch #1. -Doug -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html