iio: adc: ti-ads8344: Fix channel selection

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: 8dd2d7c0fe ("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>
This commit is contained in:
Gregory CLEMENT 2020-04-30 15:05:47 +02:00 committed by Jonathan Cameron
parent 5e4f99a6b7
commit bcfa1e253d
1 changed files with 5 additions and 3 deletions

View File

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