iio: dac: bd79703 Store device address to 'address'
authorMatti Vaittinen <mazziesaccount@gmail.com>
Wed, 2 Apr 2025 06:45:56 +0000 (09:45 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 22 Apr 2025 18:09:57 +0000 (19:09 +0100)
The ROHM BD79703 needs to identify a channel which we are reading from
in the SPI transfers. This can be seen as an address for the device.

For the bd79703 the address is nicely aligned with the channel number,
so the driver uses the channel ID for the SPI transfers. This, however,
does not need to be the case. The iio_chan_spec has a separate 'address'
field, which we can populate directly with this information.

This helps adding new ICs like the ROHM BD79702 where the channel ID is
different from this address to be handled by this driver, so we don't
need to have separate, IC specific mapping for channel numbers <=>
addresses.

Make the 'address' field in the iio_chan_spec to contain the SPI protocol
address for the channel, and use this value in the transfers.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Link: https://patch.msgid.link/e53cb4120d16a3c678e1f391b600af630d6767ce.1743576022.git.mazziesaccount@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/dac/rohm-bd79703.c

index e998ab5..236aa98 100644 (file)
@@ -67,7 +67,7 @@ static int bd79703_write_raw(struct iio_dev *idev,
        if (val < 0 || val >= 1 << BD79703_DAC_BITS)
                return -EINVAL;
 
-       return regmap_write(data->regmap, chan->channel + 1, val);
+       return regmap_write(data->regmap, chan->address, val);
 };
 
 static const struct iio_info bd79703_info = {
@@ -82,7 +82,7 @@ static const struct iio_info bd79703_info = {
        .channel = (_chan),                                     \
        .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),           \
        .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),   \
-       .address = (_chan),                                     \
+       .address = (_chan + 1),                                 \
 }
 
 static const struct iio_chan_spec bd79703_channels[] = {