• Jonathan Cameron's avatar
    iio:core: add a callback to allow drivers to provide _available attributes · 51239600
    Jonathan Cameron authored
    A large number of attributes can only take a limited range of values.
    Currently in IIO this is handled by directly registering additional
    *_available attributes thus providing this information to userspace.
    
    It is desirable to provide this information via the core for much the same
    reason this was done for the actual channel information attributes in the
    first place.  If it isn't there, then it can only really be accessed from
    userspace.  Other in kernel IIO consumers have no access to what valid
    parameters are.
    
    Two forms are currently supported:
    * list of values in one particular IIO_VAL_* format.
    	e.g. 1.300000 1.500000 1.730000
    * range specification with a step size:
    	e.g. [1.000000 0.500000 2.500000]
    	equivalent to 1.000000 1.5000000 2.000000 2.500000
    
    An addition set of masks are used to allow different sharing rules for the
    *_available attributes generated.
    
    This allows for example:
    
    in_accel_x_offset
    in_accel_y_offset
    in_accel_offset_available.
    
    We could have gone with having a specification for each and every
    info_mask element but that would have meant changing the existing userspace
    ABI.  This approach does not.
    Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
    [forward ported, added some docs and fixed buffer overflows /peda]
    Acked-by: default avatarDaniel Baluta <daniel.baluta@intel.com>
    Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
    Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
    51239600
industrialio-core.c 46.3 KB