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 Tue, 28 Jun 2022 14:21:06 +0200
Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote:

> 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.

Thanks Andy!

Applied, patches 2-16 with suggested modifications (except the one where
I disagreed on make vs makes). 

I'll pick up patch 1 in a few weeks if no feedback to suggest otherwise.
Patch 17 needs the roadtest framework to go upstream.

Given how useful roadtest was I'm hopeful that will progress!

Thanks,

Jonathan

> 
> > 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
> >  
> 
> 




[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