Commit c8231a9af8147f8a401fc55931ec44abfb937660 ("iio: mxs-lradc: compute temperature from channel 8 and 9") merged channel 8 and channel 9 to create an IIO_TEMP channel. It changed the number of LRADC channels, which could cause incompatibility with previous device-tree declarations, and also makes it illogical (e.g. channel 15 is <&lradc 14>). Add channel 9 as a copy of channel 8. Reading channel 9 has the same output as reading channel 8. Signed-off-by: Robert Hodaszi <robert.hodaszi@xxxxxxxx> --- drivers/staging/iio/adc/mxs-lradc.c | 61 +++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c index 52d7517..25c0519 100644 --- a/drivers/staging/iio/adc/mxs-lradc.c +++ b/drivers/staging/iio/adc/mxs-lradc.c @@ -1376,8 +1376,8 @@ static const struct iio_buffer_setup_ops mxs_lradc_buffer_ops = { * Driver initialization */ -#define MXS_ADC_CHAN(idx, chan_type) { \ - .type = (chan_type), \ +#define MXS_ADC_VOLTAGE_CHAN(idx) { \ + .type = IIO_VOLTAGE, \ .indexed = 1, \ .scan_index = (idx), \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ @@ -1391,32 +1391,41 @@ static const struct iio_buffer_setup_ops mxs_lradc_buffer_ops = { }, \ } +#define MXS_ADC_TEMP_CHAN(idx) { \ + .type = IIO_TEMP, \ + .indexed = 1, \ + .scan_index = (idx), \ + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ + BIT(IIO_CHAN_INFO_SCALE) | \ + BIT(IIO_CHAN_INFO_OFFSET), \ + .channel = (idx), \ + .address = (idx), \ + .scan_type = { \ + .sign = 'u', \ + .realbits = 18, \ + .storagebits = 32, \ + }, \ +} + static const struct iio_chan_spec mxs_lradc_chan_spec[] = { - MXS_ADC_CHAN(0, IIO_VOLTAGE), - MXS_ADC_CHAN(1, IIO_VOLTAGE), - MXS_ADC_CHAN(2, IIO_VOLTAGE), - MXS_ADC_CHAN(3, IIO_VOLTAGE), - MXS_ADC_CHAN(4, IIO_VOLTAGE), - MXS_ADC_CHAN(5, IIO_VOLTAGE), - MXS_ADC_CHAN(6, IIO_VOLTAGE), - MXS_ADC_CHAN(7, IIO_VOLTAGE), /* VBATT */ + MXS_ADC_VOLTAGE_CHAN(0), + MXS_ADC_VOLTAGE_CHAN(1), + MXS_ADC_VOLTAGE_CHAN(2), + MXS_ADC_VOLTAGE_CHAN(3), + MXS_ADC_VOLTAGE_CHAN(4), + MXS_ADC_VOLTAGE_CHAN(5), + MXS_ADC_VOLTAGE_CHAN(6), + MXS_ADC_VOLTAGE_CHAN(7), /* VBATT */ /* Combined Temperature sensors */ - { - .type = IIO_TEMP, - .indexed = 1, - .scan_index = 8, - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | - BIT(IIO_CHAN_INFO_OFFSET) | - BIT(IIO_CHAN_INFO_SCALE), - .channel = 8, - .scan_type = {.sign = 'u', .realbits = 18, .storagebits = 32,}, - }, - MXS_ADC_CHAN(10, IIO_VOLTAGE), /* VDDIO */ - MXS_ADC_CHAN(11, IIO_VOLTAGE), /* VTH */ - MXS_ADC_CHAN(12, IIO_VOLTAGE), /* VDDA */ - MXS_ADC_CHAN(13, IIO_VOLTAGE), /* VDDD */ - MXS_ADC_CHAN(14, IIO_VOLTAGE), /* VBG */ - MXS_ADC_CHAN(15, IIO_VOLTAGE), /* VDD5V */ + MXS_ADC_TEMP_CHAN(8), + /* CH 9 is the same as CH 8. Declared to fix following channel indexes */ + MXS_ADC_TEMP_CHAN(9), + MXS_ADC_VOLTAGE_CHAN(10), /* VDDIO */ + MXS_ADC_VOLTAGE_CHAN(11), /* VTH */ + MXS_ADC_VOLTAGE_CHAN(12), /* VDDA */ + MXS_ADC_VOLTAGE_CHAN(13), /* VDDD */ + MXS_ADC_VOLTAGE_CHAN(14), /* VBG */ + MXS_ADC_VOLTAGE_CHAN(15), /* VDD5V */ }; static int mxs_lradc_hw_init(struct mxs_lradc *lradc) -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html