• Martin Blumenstingl's avatar
    iio: adc: meson-saradc: use the address attribute from iio_chan_spec · 827df057
    Martin Blumenstingl authored
    Until now the "channel" number is identical to how the channel is
    identified inside the (FIFO) registers. In our case we have eight
    channels and the hardware also has eight inputs.
    
    However, there are two special inputs:
    - channel 6 can select between the SAR_ADC_CH6 pad and the chip's
      internal temperature sensor
    - channel 7 can select between SAR_ADC_CH7 and VSS, VDD / 4, VDD / 2,
      VDD * 3 / 4 and VDD.
    
    When programming the registers to read for example the temperature
    sensor we have to select FIFO channel 6, set the correct bit which muxes
    channel 6 to the temperature sensor and then start the ADC measurement
    for channel 6 as usual.
    
    When we add support for the temperature sensor the driver has to know
    about that it has to use FIFO channel 6 to measure using the chip's
    internal temperature sensor. However, in that case the iio_chan_spec
    channel will not be 6 because this is already used for the SAR_ADC_CH6
    pad input. Thus we use iio_chan_spec's address field to store the FIFO
    channel number for each channel.
    Signed-off-by: default avatarMartin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    827df057
meson_saradc.c 33.8 KB