iio: adc: ti-ads8344: Fix channel selection
authorGregory CLEMENT <gregory.clement@bootlin.com>
Thu, 30 Apr 2020 13:05:47 +0000 (15:05 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 3 May 2020 13:09:25 +0000 (14:09 +0100)
During initial submission the selection of the channel was done using
the scan_index member of the iio_chan_spec structure. It was an abuse
because this member is supposed to be used with a buffer so it was
removed.

However there was still the need to be able to known how to select a
channel, the correct member to store this information is address.

Thanks to this it is possible to select any other channel than the
channel 0.

Fixes: 8dd2d7c0fed7 ("iio: adc: Add driver for the TI ADS8344 A/DC chips")
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ti-ads8344.c

index abe4b56c847c7db3c362f0c1d5fea0159dacf74b..8a8792010c20b3dfe77e4dc79bb333cd9d038d30 100644 (file)
@@ -32,16 +32,17 @@ struct ads8344 {
        u8 rx_buf[3];
 };
 
-#define ADS8344_VOLTAGE_CHANNEL(chan, si)                              \
+#define ADS8344_VOLTAGE_CHANNEL(chan, addr)                            \
        {                                                               \
                .type = IIO_VOLTAGE,                                    \
                .indexed = 1,                                           \
                .channel = chan,                                        \
                .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),           \
                .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),   \
+               .address = addr,                                        \
        }
 
-#define ADS8344_VOLTAGE_CHANNEL_DIFF(chan1, chan2, si)                 \
+#define ADS8344_VOLTAGE_CHANNEL_DIFF(chan1, chan2, addr)               \
        {                                                               \
                .type = IIO_VOLTAGE,                                    \
                .indexed = 1,                                           \
@@ -50,6 +51,7 @@ struct ads8344 {
                .differential = 1,                                      \
                .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),           \
                .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),   \
+               .address = addr,                                        \
        }
 
 static const struct iio_chan_spec ads8344_channels[] = {
@@ -105,7 +107,7 @@ static int ads8344_read_raw(struct iio_dev *iio,
        switch (mask) {
        case IIO_CHAN_INFO_RAW:
                mutex_lock(&adc->lock);
-               *value = ads8344_adc_conversion(adc, channel->scan_index,
+               *value = ads8344_adc_conversion(adc, channel->address,
                                                channel->differential);
                mutex_unlock(&adc->lock);
                if (*value < 0)