On Tue, 25 Jun 2019 16:13:26 +0300
Alexandru Ardelean <alexandru.ardel...@analog.com> wrote:

> The ADIS16460 requires a higher delay before the next transfer. Since the
> SPI framework supports configuring the delay before the next transfer, this
> driver will become the first user of it.
> 
> The support for this functionality in ADIS16460 requires an addition to the
> ADIS lib to support the `cs_change_stall_delay_us` functionality in SPI.
> 
> Signed-off-by: Michael Hennerich <michael.henner...@analog.com>
> Signed-off-by: Alexandru Ardelean <alexandru.ardel...@analog.com>
Subject to previous patch naming etc, this is fine and I'll pick it up once
that's sorted.

Thanks,

Jonathan

> ---
>  drivers/iio/imu/adis.c       | 9 +++++++++
>  include/linux/iio/imu/adis.h | 2 ++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c
> index c771ae6803a9..90dac69910b3 100644
> --- a/drivers/iio/imu/adis.c
> +++ b/drivers/iio/imu/adis.c
> @@ -40,28 +40,33 @@ int adis_write_reg(struct adis *adis, unsigned int reg,
>                       .len = 2,
>                       .cs_change = 1,
>                       .delay_usecs = adis->data->write_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .tx_buf = adis->tx + 2,
>                       .bits_per_word = 8,
>                       .len = 2,
>                       .cs_change = 1,
>                       .delay_usecs = adis->data->write_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .tx_buf = adis->tx + 4,
>                       .bits_per_word = 8,
>                       .len = 2,
>                       .cs_change = 1,
>                       .delay_usecs = adis->data->write_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .tx_buf = adis->tx + 6,
>                       .bits_per_word = 8,
>                       .len = 2,
>                       .delay_usecs = adis->data->write_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .tx_buf = adis->tx + 8,
>                       .bits_per_word = 8,
>                       .len = 2,
>                       .delay_usecs = adis->data->write_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               },
>       };
>  
> @@ -134,12 +139,14 @@ int adis_read_reg(struct adis *adis, unsigned int reg,
>                       .len = 2,
>                       .cs_change = 1,
>                       .delay_usecs = adis->data->write_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .tx_buf = adis->tx + 2,
>                       .bits_per_word = 8,
>                       .len = 2,
>                       .cs_change = 1,
>                       .delay_usecs = adis->data->read_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .tx_buf = adis->tx + 4,
>                       .rx_buf = adis->rx,
> @@ -147,11 +154,13 @@ int adis_read_reg(struct adis *adis, unsigned int reg,
>                       .len = 2,
>                       .cs_change = 1,
>                       .delay_usecs = adis->data->read_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               }, {
>                       .rx_buf = adis->rx + 2,
>                       .bits_per_word = 8,
>                       .len = 2,
>                       .delay_usecs = adis->data->read_delay,
> +                     .cs_change_stall_delay_us = adis->data->cs_stall_delay,
>               },
>       };
>  
> diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h
> index 469a493f7ae0..4aa248b6b3bd 100644
> --- a/include/linux/iio/imu/adis.h
> +++ b/include/linux/iio/imu/adis.h
> @@ -27,6 +27,7 @@ struct adis_burst;
>   * struct adis_data - ADIS chip variant specific data
>   * @read_delay: SPI delay for read operations in us
>   * @write_delay: SPI delay for write operations in us
> + * @cs_stall_delay: SPI stall delay between transfers in us
>   * @glob_cmd_reg: Register address of the GLOB_CMD register
>   * @msc_ctrl_reg: Register address of the MSC_CTRL register
>   * @diag_stat_reg: Register address of the DIAG_STAT register
> @@ -36,6 +37,7 @@ struct adis_burst;
>  struct adis_data {
>       unsigned int read_delay;
>       unsigned int write_delay;
> +     unsigned int cs_stall_delay;
>  
>       unsigned int glob_cmd_reg;
>       unsigned int msc_ctrl_reg;

Reply via email to