Message ID | 20190722124747.4792-2-alexandru.ardelean@analog.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | iio: imu: Add support for the ADIS16460 IMU | expand |
On Mon, Jul 22, 2019 at 03:47:44PM +0300, Alexandru Ardelean wrote: > Some devices like the ADIS16460 IMU require a longer period between > transfers, i.e. between when the CS is de-asserted and re-asserted. The > default value of 10us is not enough. This change makes the delay > configurable for when the next CS change goes active, allowing the default > to remain 10us is case it is unspecified. For the third time: | This looks like cs_change_delay. > #define SPI_NBITS_QUAD 0x04 /* 4bits transfer */ > u8 bits_per_word; > u8 word_delay_usecs; > + u8 cs_change_delay; > u16 delay_usecs; > u32 speed_hz; > u16 word_delay; This patch doesn't apply and even if it did it won't compile because you are trying to add a field with the same name as an existing one.
On Mon, Jul 22, 2019 at 8:42 PM Mark Brown <broonie@kernel.org> wrote: > > On Mon, Jul 22, 2019 at 03:47:44PM +0300, Alexandru Ardelean wrote: > > Some devices like the ADIS16460 IMU require a longer period between > > transfers, i.e. between when the CS is de-asserted and re-asserted. The > > default value of 10us is not enough. This change makes the delay > > configurable for when the next CS change goes active, allowing the default > > to remain 10us is case it is unspecified. > > For the third time: > > | This looks like cs_change_delay. > > > #define SPI_NBITS_QUAD 0x04 /* 4bits transfer */ > > u8 bits_per_word; > > u8 word_delay_usecs; > > + u8 cs_change_delay; > > u16 delay_usecs; > > u32 speed_hz; > > u16 word_delay; > > This patch doesn't apply and even if it did it won't compile because you > are trying to add a field with the same name as an existing one. oooohhhhhhhh now i see; well, my fault here; i was basing my patchset on top of branch iio/togreg from Jonathan's tree for the IMU: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git/log/?h=togreg [ typically that's the base branch for new IIO drivers ] that one is a bit behind, and does not contain the cs_change_delay stuff you mentioned; also, i will admit that sometimes, some review comments are not completely obvious to me; i should have checked the SPI tree before opening my mouth, but this will [hopefully] serve me as a learning experience when sending multi-subsystem patches when sending to a single subsystem, it's clear; when sending to 2, i get a bit lost i do feel a bit bad for the noise i caused, but it's not the worst thing i did today anyway: disregard this, and i will sync with Jonathan about how to proceed with this patch just for IIO; thanks for your time and sorry for the noise Alex
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 5e75944ad5d1..fe7fa7fb25c5 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1163,7 +1163,8 @@ static int spi_transfer_one_message(struct spi_controller *ctlr, keep_cs = true; } else { spi_set_cs(msg->spi, false); - udelay(10); + udelay(xfer->cs_change_delay ? + xfer->cs_change_delay : 10); spi_set_cs(msg->spi, true); } } diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 053abd22ad31..6de287f8e465 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -734,6 +734,7 @@ extern void spi_res_release(struct spi_controller *ctlr, * transfer. If 0 the default (from @spi_device) is used. * @bits_per_word: select a bits_per_word other than the device default * for this transfer. If 0 the default (from @spi_device) is used. + * @cs_change_delay: microseconds to delay between cs_change transfers. * @cs_change: affects chipselect after this transfer completes * @delay_usecs: microseconds to delay after this transfer before * (optionally) changing the chipselect status, then starting @@ -823,6 +824,7 @@ struct spi_transfer { #define SPI_NBITS_QUAD 0x04 /* 4bits transfer */ u8 bits_per_word; u8 word_delay_usecs; + u8 cs_change_delay; u16 delay_usecs; u32 speed_hz; u16 word_delay;