mbox series

[v5,0/6] Migrate STX104 to the regmap API

Message ID cover.1680790580.git.william.gray@linaro.org (mailing list archive)
Headers show
Series Migrate STX104 to the regmap API | expand

Message

William Breathitt Gray April 6, 2023, 2:40 p.m. UTC
Changes in v5:
 - Explicitly check for negative val for IIO_CHAN_INFO_RAW case in
   stx104_write_raw(); this avoids the explicit case previously used
 - Use U16_MAX rather than hardcoding unsigned 16-bit maximum value
 - Improve ADC conversion comment format and use proper SI units format
Changes in v4:
 - Fix race conditions in stx104_read_raw() and stx104_write_raw() by
   utilizing a mutex
 - Improve indentation in stx104_write_raw() by bailing out early if
   chan->output is false in for the IIO_CHAN_INFO_RAW case
 - Remove regmap_config max_register lines as superfluous
 - Utilize BIT() for gain calculation in stx104_read_raw()
Changes in v3:
 - Add STX104_ prefixes to defines to avoid potential name classes
 - Rename SAME_CHANNEL() to STX104_SINGLE_CHANNEL() to convey intention
   better
 - Utilize u8_encode_bits() to define STX104_SOFTWARE_TRIGGER
 - Adjust to utilize reg_base members in regmap_config structures
 - Fix off-by-one errors in aio_data_wr_ranges[], aio_data_rd_ranges[],
   and aio_data_regmap_config max_register
 - Inline gpio_config initialization to avoid zeroing it at declaration
 - Add blank lines between register map init blocks for clarity
 - Utilize regmap_read_poll_timeout() for ADC conversion status poll
Changes in v2:
 - Relocate struct stx104_iio for the sake of a clearer patch diff
 - Replace FIELD_PREP() and FIELD_GET() with u8_encode_bits() and
   u8_get_bits()

The regmap API supports IO port accessors so we can take advantage of
regmap abstractions rather than handling access to the device registers
directly in the driver.

To make the git history cleaner, precursor patches to use a define
rather than hardcoded limit and to improve indentation in
stx104_write_raw(), and a follow-up patch to utilize
regmap_read_poll_timeout() for polling the ADC conversion status are
included.

William Breathitt Gray (6):
  iio: addac: stx104: Fix race condition for stx104_write_raw()
  iio: addac: stx104: Fix race condition when converting
    analog-to-digital
  iio: addac: stx104: Use define rather than hardcoded limit for write
    val
  iio: addac: stx104: Improve indentation in stx104_write_raw()
  iio: addac: stx104: Migrate to the regmap API
  iio: addac: stx104: Use regmap_read_poll_timeout() for conversion poll

 drivers/iio/addac/Kconfig  |   2 +
 drivers/iio/addac/stx104.c | 460 +++++++++++++++++++++----------------
 2 files changed, 264 insertions(+), 198 deletions(-)


base-commit: f73df43e957a6fc705a9bd6d143585bdf1b13365

Comments

Jonathan Cameron April 7, 2023, 4:49 p.m. UTC | #1
On Thu,  6 Apr 2023 10:40:09 -0400
William Breathitt Gray <william.gray@linaro.org> wrote:

Series applied to the togreg branch of iio.git and pushed out initially as
testing.  If anyone wants to offer tags / remaining comments there will
still be a few days before I push this out in a non rebasing form.

Thanks,

Jonathan


> Changes in v5:
>  - Explicitly check for negative val for IIO_CHAN_INFO_RAW case in
>    stx104_write_raw(); this avoids the explicit case previously used
>  - Use U16_MAX rather than hardcoding unsigned 16-bit maximum value
>  - Improve ADC conversion comment format and use proper SI units format
> Changes in v4:
>  - Fix race conditions in stx104_read_raw() and stx104_write_raw() by
>    utilizing a mutex
>  - Improve indentation in stx104_write_raw() by bailing out early if
>    chan->output is false in for the IIO_CHAN_INFO_RAW case
>  - Remove regmap_config max_register lines as superfluous
>  - Utilize BIT() for gain calculation in stx104_read_raw()
> Changes in v3:
>  - Add STX104_ prefixes to defines to avoid potential name classes
>  - Rename SAME_CHANNEL() to STX104_SINGLE_CHANNEL() to convey intention
>    better
>  - Utilize u8_encode_bits() to define STX104_SOFTWARE_TRIGGER
>  - Adjust to utilize reg_base members in regmap_config structures
>  - Fix off-by-one errors in aio_data_wr_ranges[], aio_data_rd_ranges[],
>    and aio_data_regmap_config max_register
>  - Inline gpio_config initialization to avoid zeroing it at declaration
>  - Add blank lines between register map init blocks for clarity
>  - Utilize regmap_read_poll_timeout() for ADC conversion status poll
> Changes in v2:
>  - Relocate struct stx104_iio for the sake of a clearer patch diff
>  - Replace FIELD_PREP() and FIELD_GET() with u8_encode_bits() and
>    u8_get_bits()
> 
> The regmap API supports IO port accessors so we can take advantage of
> regmap abstractions rather than handling access to the device registers
> directly in the driver.
> 
> To make the git history cleaner, precursor patches to use a define
> rather than hardcoded limit and to improve indentation in
> stx104_write_raw(), and a follow-up patch to utilize
> regmap_read_poll_timeout() for polling the ADC conversion status are
> included.
> 
> William Breathitt Gray (6):
>   iio: addac: stx104: Fix race condition for stx104_write_raw()
>   iio: addac: stx104: Fix race condition when converting
>     analog-to-digital
>   iio: addac: stx104: Use define rather than hardcoded limit for write
>     val
>   iio: addac: stx104: Improve indentation in stx104_write_raw()
>   iio: addac: stx104: Migrate to the regmap API
>   iio: addac: stx104: Use regmap_read_poll_timeout() for conversion poll
> 
>  drivers/iio/addac/Kconfig  |   2 +
>  drivers/iio/addac/stx104.c | 460 +++++++++++++++++++++----------------
>  2 files changed, 264 insertions(+), 198 deletions(-)
> 
> 
> base-commit: f73df43e957a6fc705a9bd6d143585bdf1b13365