[RFC PATCH 00/11] IIO: Add core support for _available interfaces

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

 



Dear All,

Firstly this is an RFC rather than a final proposal for a couple of reasons
1) Others may have better idea of the the interface, particularly wrt to te
   range attributes (we are restricted by existing userspace interface for
   the list of available options one).
2) I've only converted a small number of drivers and honestly I suspect I've
   broken some of them trying to avoid multiple coppies of the same data.
3) The range version isn't documented yet.

In brief what I propose here has come up a few times in the depths of random
driver reviews: An interface to tell the subsystem what values are possible
for a given info_mask element.  This is then exported to userspace with the
same interface as was being used by the 'custom' attributes previously deployed
to indicate this stuff.  It is importantly also available to inkernel
consumers of the IIO channels.

There are two forms:

1. The conventional list of values.  A flat array is provided by the driver
with either one element (IIO_VAL_INT) or two (IIO_VAL_INT_PLUS etc) per value.
Note this array must be constant at the time of passing to ensure no race
conditions occur.

2. A new range approach. The format for this is open to discussion.
In this proposal 3 (single or pairs of) values are provided in a flat array.
These provide inclusive end markers and a step size between them.
Thus [0..1..3] is the equivalent of 0 1 2 3.

I would envision that many more of our info_mask elements will have
_available attributes than currently, many of which will make use of this
second interface.

The actual conversions of drivers is only painful in the 'clever' common
library ones.  The solution proposed here for the AD_SD drivers is clunky
but I can't immediately see how to do things in a cleaner fashion.

Anyhow, all comments welcome!  Whilst I think we need an interface
to provide this functionality, I am far from fixed on this necessarily
being the right way to do it.  It's just the best one I've thought up
yet.

Jonathan

Jonathan Cameron (11):
  iio:core: add a callback to allow drivers to provide _available
    attributes
  staging:iio:dummy driver: Add example usecases for the new *_available
    interface.
  iio:accel:bma180 use new read_avail to replace *_available attrs.
  iio:accel:kxsd9 use new read_avail to replace accel_scan_available.
  iio:st sensors: remove custom sampling frequence attribute in favour
    of core support.
  iio: ad_sigma_delta provide macro parameters for available info masks
  iio:adc:ad7793: use samp_freq element of info_mask_shared_by_all.
  iio:adc:ad7793: Use the read_avail callback to provide the scale and
    sampling frequency interfaces.
  iio:adc:ad7791 Provide sampling frequency and scale_available access
    via core.
  staging:iio:adc:ad7192 use infomask* to provide access to sampling
    frequency and scale_available
  iio:adc:mcp3422: use core to provide _available information rather
    than custom attrs.

 drivers/iio/accel/bma180.c                      |  61 +++---
 drivers/iio/accel/kxsd9.c                       |  52 ++---
 drivers/iio/accel/st_accel_core.c               |  12 +-
 drivers/iio/adc/ad7791.c                        | 106 ++++-----
 drivers/iio/adc/ad7793.c                        | 275 ++++++++++++------------
 drivers/iio/adc/mcp3422.c                       |  72 ++++---
 drivers/iio/common/st_sensors/st_sensors_core.c |  29 ---
 drivers/iio/gyro/st_gyro_core.c                 |  12 +-
 drivers/iio/industrialio-core.c                 | 209 ++++++++++++++++--
 drivers/iio/magnetometer/st_magn_core.c         |  12 +-
 drivers/iio/pressure/st_pressure_core.c         |  27 ++-
 drivers/staging/iio/adc/ad7192.c                | 166 ++++++--------
 drivers/staging/iio/adc/ad7780.c                |   2 +-
 drivers/staging/iio/iio_simple_dummy.c          |  29 ++-
 include/linux/iio/adc/ad_sigma_delta.h          |  47 +++-
 include/linux/iio/common/st_sensors.h           |  15 +-
 include/linux/iio/iio.h                         |  11 +
 include/linux/iio/types.h                       |   5 +
 18 files changed, 696 insertions(+), 446 deletions(-)

-- 
1.8.4.2

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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