Re: [PATCH v2 7/9] iio: adis: add burst_max_speed_hz variable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 22, 2021 at 1:17 PM Nuno Sa <nuno.sa@xxxxxxxxxx> wrote:
>
> Typically, in burst mode, the device cannot operate at it's full spi
> speed. Hence, the spi transfers for burst mode have to take this into
> account. With this change we avoid a potential race with the spi core as
> drivers were 'hacking' the device 'max_speed_hz' directly in the
> trigger handler.
>

Reviewed-by: Alexandru Ardelean <ardeleanalex@xxxxxxxxx>


> Signed-off-by: Nuno Sa <nuno.sa@xxxxxxxxxx>
> ---
>  drivers/iio/imu/adis_buffer.c | 4 ++++
>  include/linux/iio/imu/adis.h  | 2 ++
>  2 files changed, 6 insertions(+)
>
> diff --git a/drivers/iio/imu/adis_buffer.c b/drivers/iio/imu/adis_buffer.c
> index dda367071980..82239da2f441 100644
> --- a/drivers/iio/imu/adis_buffer.c
> +++ b/drivers/iio/imu/adis_buffer.c
> @@ -51,9 +51,13 @@ static int adis_update_scan_mode_burst(struct iio_dev *indio_dev,
>         adis->xfer[0].tx_buf = tx;
>         adis->xfer[0].bits_per_word = 8;
>         adis->xfer[0].len = 2;
> +       if (adis->data->burst_max_speed_hz)
> +               adis->xfer[0].speed_hz = adis->data->burst_max_speed_hz;
>         adis->xfer[1].rx_buf = adis->buffer;
>         adis->xfer[1].bits_per_word = 8;
>         adis->xfer[1].len = burst_length;
> +       if (adis->data->burst_max_speed_hz)
> +               adis->xfer[1].speed_hz = adis->data->burst_max_speed_hz;
>
>         spi_message_init(&adis->msg);
>         spi_message_add_tail(&adis->xfer[0], &adis->msg);
> diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h
> index f9b728d490b1..cf49997d5903 100644
> --- a/include/linux/iio/imu/adis.h
> +++ b/include/linux/iio/imu/adis.h
> @@ -55,6 +55,7 @@ struct adis_timeout {
>   *                     this should be the minimum size supported by the device.
>   * @burst_max_len:     Holds the maximum burst size when the device supports
>   *                     more than one burst mode with different sizes
> + * @burst_max_speed_hz:        Maximum spi speed that can be used in burst mode
>   */
>  struct adis_data {
>         unsigned int read_delay;
> @@ -83,6 +84,7 @@ struct adis_data {
>         unsigned int burst_reg_cmd;
>         unsigned int burst_len;
>         unsigned int burst_max_len;
> +       unsigned int burst_max_speed_hz;
>  };
>
>  /**
> --
> 2.31.1
>



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux