• David Lechner's avatar
    iio: add support for multiple scan types per channel · d8f2bb50
    David Lechner authored
    This adds new fields to the iio_channel structure to support multiple
    scan types per channel. This is useful for devices that support multiple
    resolution modes or other modes that require different data formats of
    the raw data.
    
    To make use of this, drivers need to implement the new callback
    get_current_scan_type() to resolve the scan type for a given channel
    based on the current state of the driver. There is a new scan_type_ext
    field in the iio_channel structure that should be used to store the
    scan types for any channel that has more than one. There is also a new
    flag has_ext_scan_type that acts as a type discriminator for the
    scan_type/ext_scan_type union. A union is used so that we don't grow
    the size of the iio_channel structure and also makes it clear that
    scan_type and ext_scan_type are mutually exclusive.
    
    The buffer code is the only code in the IIO core code that is using the
    scan_type field. This patch updates the buffer code to use the new
    iio_channel_validate_scan_type() function to ensure it is returning the
    correct scan type for the current state of the device when reading the
    sysfs attributes. The buffer validation code is also update to validate
    any additional scan types that are set in the scan_type_ext field. Part
    of that code is refactored to a new function to avoid duplication.
    
    Some userspace tools may need to be updated to re-read the scan type
    after writing any other attribute. During testing, we noticed that we
    had to restart iiod to get it to re-read the scan type after enabling
    oversampling on the ad7380 driver.
    Signed-off-by: default avatarDavid Lechner <dlechner@baylibre.com>
    Reviewed-by: default avatarNuno Sa <nuno.sa@analog.com>
    Link: https://lore.kernel.org/r/20240530-iio-add-support-for-multiple-scan-types-v3-3-cbc4acea2cfa@baylibre.comSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    d8f2bb50
iio.h 32 KB