@@ -189,9 +189,8 @@
.datasheet_name = "SAR_ADC_CH"#_chan, \
}
-#define MESON_SAR_ADC_TEMP_CHAN(_chan) { \
+#define MESON_SAR_ADC_TEMP_CHAN() { \
.type = IIO_TEMP, \
- .channel = _chan, \
.address = MESON_SAR_ADC_VOLTAGE_AND_TEMP_CHANNEL, \
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \
BIT(IIO_CHAN_INFO_AVERAGE_RAW), \
@@ -234,19 +233,7 @@ static const struct iio_chan_spec meson_sar_adc_iio_channels[] = {
MESON_SAR_ADC_CHAN(6),
MESON_SAR_ADC_CHAN(7),
IIO_CHAN_SOFT_TIMESTAMP(8),
-};
-
-static const struct iio_chan_spec meson_sar_adc_and_temp_iio_channels[] = {
- MESON_SAR_ADC_CHAN(0),
- MESON_SAR_ADC_CHAN(1),
- MESON_SAR_ADC_CHAN(2),
- MESON_SAR_ADC_CHAN(3),
- MESON_SAR_ADC_CHAN(4),
- MESON_SAR_ADC_CHAN(5),
- MESON_SAR_ADC_CHAN(6),
- MESON_SAR_ADC_CHAN(7),
- MESON_SAR_ADC_TEMP_CHAN(8),
- IIO_CHAN_SOFT_TIMESTAMP(9),
+ MESON_SAR_ADC_TEMP_CHAN(), /* must be the last item */
};
struct meson_sar_adc_param {
@@ -1242,15 +1229,11 @@ static int meson_sar_adc_probe(struct platform_device *pdev)
return ret;
}
- if (priv->temperature_sensor_calibrated) {
- indio_dev->channels = meson_sar_adc_and_temp_iio_channels;
- indio_dev->num_channels =
- ARRAY_SIZE(meson_sar_adc_and_temp_iio_channels);
- } else {
- indio_dev->channels = meson_sar_adc_iio_channels;
- indio_dev->num_channels =
- ARRAY_SIZE(meson_sar_adc_iio_channels);
- }
+ indio_dev->channels = meson_sar_adc_iio_channels;
+ indio_dev->num_channels = ARRAY_SIZE(meson_sar_adc_iio_channels);
+ /* last item is temp channel */
+ if (!priv->temperature_sensor_calibrated)
+ indio_dev->num_channels--;
ret = meson_sar_adc_init(indio_dev);
if (ret)
Instead of having several similar channel arrays which are different only by one item unite the arrays and put the unique item in the end. Signed-off-by: George Stark <GNStark@sberdevices.ru> --- drivers/iio/adc/meson_saradc.c | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-)