mbox series

[0/4] Refactor ADIS Burst Mode

Message ID 20200917155223.218500-1-nuno.sa@analog.com (mailing list archive)
Headers show
Series Refactor ADIS Burst Mode | expand

Message

Nuno Sa Sept. 17, 2020, 3:52 p.m. UTC
This series refactors the ADIS burst mode. The 2 main ideas of the
refactor are:

1. As discussed in previous patches, there's no point in
enabling/disabling burst mode at runtime. Hence, we can drop the `en`
variable.
2. Replace the `extra_len` by `burst_len` where users have now to
explicitly define the size of the burst buffer. The point is to remove
the following line from the lib:

```
/* All but the timestamp channel */
burst_length = (indio_dev->num_channels - 1) * sizeof(u16);
```

The library should not assume that a timestamp channel is defined.
Moreover, most parts also include some diagnostic data, crc, etc.. in
the burst buffer that needed to be included in an `extra_len` variable
which is not that nice. On top of this, some devices already start to
have some 32bit size channels ...

While doing this (and mainly when looking at the adis16400) drivers it
felt that the burst variables belong to the per chip `adis_data`
structure. As seen in the adis16400 driver, some drivers might support
multiple devices with different burst sizes.

For now, it does not feel necessary to wrap these variables in a
`adis_burst` structure but I don't see any problem in doing so if
required...

Nuno Sá (4):
  iio: adis: Move burst mode into adis_data
  iio: adis16400: Drop adis_burst usage
  iio: adis16475: Drop adis_burst usage
  iio: adis. Drop adis_burst struct

 drivers/iio/imu/adis16400.c   | 32 +++++++++++++-------------------
 drivers/iio/imu/adis16475.c   | 18 +++---------------
 drivers/iio/imu/adis_buffer.c | 12 +++++-------
 include/linux/iio/imu/adis.h  | 26 +++++++++-----------------
 4 files changed, 30 insertions(+), 58 deletions(-)

Comments

Jonathan Cameron Sept. 19, 2020, 1:21 p.m. UTC | #1
On Thu, 17 Sep 2020 17:52:19 +0200
Nuno Sá <nuno.sa@analog.com> wrote:

> This series refactors the ADIS burst mode. The 2 main ideas of the
> refactor are:
> 
> 1. As discussed in previous patches, there's no point in
> enabling/disabling burst mode at runtime. Hence, we can drop the `en`
> variable.
> 2. Replace the `extra_len` by `burst_len` where users have now to
> explicitly define the size of the burst buffer. The point is to remove
> the following line from the lib:
> 
> ```
> /* All but the timestamp channel */
> burst_length = (indio_dev->num_channels - 1) * sizeof(u16);
> ```
> 
> The library should not assume that a timestamp channel is defined.
> Moreover, most parts also include some diagnostic data, crc, etc.. in
> the burst buffer that needed to be included in an `extra_len` variable
> which is not that nice. On top of this, some devices already start to
> have some 32bit size channels ...
> 
> While doing this (and mainly when looking at the adis16400) drivers it
> felt that the burst variables belong to the per chip `adis_data`
> structure. As seen in the adis16400 driver, some drivers might support
> multiple devices with different burst sizes.
> 
> For now, it does not feel necessary to wrap these variables in a
> `adis_burst` structure but I don't see any problem in doing so if
> required...

Looks good to me as it stands.

Series applied to the togreg branch of iio.git.

Thanks,

Jonathan

> 
> Nuno Sá (4):
>   iio: adis: Move burst mode into adis_data
>   iio: adis16400: Drop adis_burst usage
>   iio: adis16475: Drop adis_burst usage
>   iio: adis. Drop adis_burst struct
> 
>  drivers/iio/imu/adis16400.c   | 32 +++++++++++++-------------------
>  drivers/iio/imu/adis16475.c   | 18 +++---------------
>  drivers/iio/imu/adis_buffer.c | 12 +++++-------
>  include/linux/iio/imu/adis.h  | 26 +++++++++-----------------
>  4 files changed, 30 insertions(+), 58 deletions(-)
>