Re: [PATCH v3 00/17] staging/iio: Clean up AD7746 CDC driver and move from staging.

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

 



On Sun, Jun 26, 2022 at 2:20 PM Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>
> From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
>
> Changes since v2:  Thanks to Andy Shevchenko for review
> - Fix the horrible mess I made of a rebase that meant v2 didn't build
>   mid patch set.
> - Fix various build issues I'd missed due to wrong make file (fails to
>   update variables after moving them, missing unaligned include,
>   failure to cleanup staging driver Kconfig / Makefile)
> - Change new ABI to _zeropoint and add more the description to hopefully
>   add clarify to what this is. I don't think it's going to be a particularly
>   common bit of ABI, but still good to get it right.


For non-commented patches (except 17th):
Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx>
For commented, in case you address the comments I suggested, you may
also add a tag.

> Note that the --no-renames was used to preserve full code listing
> for the actual move out of staging to aid review. The ad7746 file is
> moved with no changes.
>
> diff --git a/drivers/staging/iio/cdc/ad7746.c b/drivers/iio/cdc/ad7746.c
> similarity index 100%
> rename from drivers/staging/iio/cdc/ad7746.c
> rename to drivers/iio/cdc/ad7746.c
>
> This started out as an experiment with Vincent Whitchurch's roadtest
> testing framework [1] and that worked well so I carried on cleaning up the
> driver.  Note that if you are using roadtest rebased to current
> kernel, add CONFIG_UML_RANDOM as suggested by Vincent in reply
> to v2 of this series.  I still saw one freeze but with that config
> element added roadtest runs the tests successfully the vast majority
> of the time.
>
> Mostly this is standard tidy up, move to new interfaces, then move the driver
> out of staging, but there are a few other things in here.
>
> 1) Precision improvement for IIO_VAL_FRACTIONAL_LOG2.
>    The ad7746 is a 24 bit sensor and this highlighted that 9 decimal
>    places wasn't enough to keep the error introduced by
>    _raw * _scale from growing too large over the whole range (I couldn't
>    write a sensible test for it).  So I've proposed increasing the precision
>    of the calculation used to provide the sysfs attributes with this value
>    type and printing a few more decimal places (12), but only if overflow
>    will not occur due to val[0] > ULLONG_MAX / PICO
> 2) _zeropoint ABI addition.  This driver had an odd use of _offset for
>    the case of differential channels that applied the offset to both
>    of the differential pair (hence userspace shouldn't not apply it when
>    converting to the base units. That isn't inline with the existing
>    documentation for _offset and it wasn't clear to me that it made sense
>    at all.  To avoid confusion I've added this new ABI (_zeropoint) for this.
> 3) roadtest file - note this is not a complete test set for the driver and
>    mainly focused on the main channel reads and places I thought I might
>    have broken things whilst working on the driver.  Given roadtest isn't
>    upstream yet this test will have to wait. That doesn't block merging
>    the rest of the series.
>
> My conclusion on roadtest - Very useful indeed. I'd encourage others to
> consider developing some basic sanity tests for drivers they are working on.
> Hopefully my python code isn't too hideous to understand at least!
> Vincent, it might be worth thinking about some generic code to handle the
> 'variants' on correct ABI like I introduce here because I switched from
> a shared by type scale to an individual one per channel for the voltages.
> Both were ABI compliant so that sort of change is fine most of the time
> though we have to be careful with it.
>
> All comments welcome.  Note there may be changes that make more sense
> to do after moving this out of staging as long as there are no ABI changes involved
> etc.  Feel free to highlight those sorts of changes as well as anything more
> significant.
>
> [1] https://lore.kernel.org/all/20220311162445.346685-9-vincent.whitchurch@xxxxxxxx/
>
> Jonathan Cameron (17):
>   iio: core: Increase precision of IIO_VAL_FRACTIONAL_LOG2 when possible
>   iio: ABI: Fix wrong format of differential capacitance channel ABI.
>   staging: iio: cdc: ad7746: Use explicit be24 handling.
>   staging: iio: cdc: ad7746: Push handling of supply voltage scale to
>     userspace.
>   staging: iio: cdc: ad7746: Use local buffer for multi byte reads.
>   staging: iio: cdc: ad7746: Factor out ad7746_read_channel()
>   staging: iio: cdc: ad7764: Push locking down into case statements in
>     read/write_raw
>   staging: iio: cdc: ad7746: Break up use of chan->address and use
>     FIELD_PREP etc
>   staging: iio: cdc: ad7746: Drop unused i2c_set_clientdata()
>   staging: iio: cdc: ad7746: Use _raw and _scale for temperature
>     channels.
>   iio: core: Introduce _zeropoint for differential channels
>   staging: iio: cdc: ad7746: Switch from _offset to _zeropoint for
>     differential channels.
>   staging: iio: cdc: ad7746: Use read_avail() rather than opencoding.
>   staging: iio: ad7746: White space cleanup
>   iio: cdc: ad7746: Add device specific ABI documentation.
>   iio: cdc: ad7746: Move driver out of staging.
>   RFC: iio: cdc: ad7746: Add roadtest
>
>  Documentation/ABI/testing/sysfs-bus-iio       |  21 +-
>  .../ABI/testing/sysfs-bus-iio-cdc-ad7746      |  11 +
>  drivers/iio/cdc/Kconfig                       |  10 +
>  drivers/iio/cdc/Makefile                      |   1 +
>  drivers/iio/cdc/ad7746.c                      | 820 ++++++++++++++++++
>  drivers/iio/industrialio-core.c               |  32 +-
>  drivers/staging/iio/Kconfig                   |   1 -
>  drivers/staging/iio/Makefile                  |   1 -
>  drivers/staging/iio/cdc/Kconfig               |  17 -
>  drivers/staging/iio/cdc/Makefile              |   6 -
>  drivers/staging/iio/cdc/ad7746.c              | 767 ----------------
>  include/linux/iio/types.h                     |   1 +
>  .../roadtest/tests/iio/cdc/__init__.py        |   0
>  .../roadtest/roadtest/tests/iio/cdc/config    |   1 +
>  .../roadtest/tests/iio/cdc/test_ad7746.py     | 323 +++++++
>  15 files changed, 1211 insertions(+), 801 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-cdc-ad7746
>  create mode 100644 drivers/iio/cdc/ad7746.c
>  delete mode 100644 drivers/staging/iio/cdc/Kconfig
>  delete mode 100644 drivers/staging/iio/cdc/Makefile
>  delete mode 100644 drivers/staging/iio/cdc/ad7746.c
>  create mode 100644 tools/testing/roadtest/roadtest/tests/iio/cdc/__init__.py
>  create mode 100644 tools/testing/roadtest/roadtest/tests/iio/cdc/config
>  create mode 100644 tools/testing/roadtest/roadtest/tests/iio/cdc/test_ad7746.py
>
> --
> 2.36.1
>


-- 
With Best Regards,
Andy Shevchenko



[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