Re: [PATCH] iio: adc: rockchip_saradc: Add support for RV1106
Jonathan Cameron <[email protected]>
| Newsgroups | org.infradead.lists.linux-rockchip,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260815022036.7c47585e@jic23-huawei> |
On Mon, 10 Aug 2026 12:08:26 +0300 Vladislav Leonov <[email protected]> wrote: > The Successive Approximation ADC (SARADC) in RV1106 uses the v2 > controller and supports: > - 10-bit resolution > - Up to 1MS/s sampling rate > - 2 single-ended input channels > > "dt-bindings: iio: adc: rockchip-saradc: Add RV1106 compatible" > documents "rockchip,rv1106-saradc" as falling back to > "rockchip,rk3588-saradc" (see Link below). The two IP blocks are not > equivalent, though: per the RV1106 TRM v0.3, chapter 20 (SAR-ADC), > RV1106 only has 2 channels at 10-bit resolution, versus 8 channels > at 12-bit on RK3588. Without a dedicated match entry, the driver > binds via the fallback compatible and uses the RK3588 channel table, > which reports 8 channels instead of 2, and an in_voltage_scale that > is off by exactly 4x (4096 vs 1024 full-scale). > > Add a dedicated compatible/data pair for RV1106 with the correct > 2-channel, 10-bit layout. > > Tested on a custom RV1106-based board, with: > > &saradc { > vref-supply = <&vcc_saradc>; /* 1.8V fixed regulator */ > status = "okay"; > }; > > Before this patch: > # ls /sys/bus/iio/devices/iio:device0/in_voltage*_raw | wc -l > 8 > # cat /sys/bus/iio/devices/iio:device0/in_voltage_scale > 0.439453125 > > After this patch: > # ls /sys/bus/iio/devices/iio:device0/in_voltage*_raw | wc -l > 2 > # cat /sys/bus/iio/devices/iio:device0/in_voltage_scale > 1.757812500 > > Link: https://lore.kernel.org/all/20260714131631.v2.1.0b846080833e4b836793c43fc26d1c6d817cf9b4@changeid/ > Signed-off-by: Vladislav Leonov <[email protected]> Hi Vladislav, Could you also send a fix for the dt-binding as it clearly shouldn't claim the fallback compatible! Whilst I can see why you did here, in general don't reply to an existing series when sending a new one. Your link tag is sufficient to associate the two. I'll give this a little longer on list to let other comment, but looks good to me. Thanks, Jonathan > --- > drivers/iio/adc/rockchip_saradc.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c > index 0f0bf2906af0..5c45fae11890 100644 > --- a/drivers/iio/adc/rockchip_saradc.c > +++ b/drivers/iio/adc/rockchip_saradc.c > @@ -348,6 +348,19 @@ static const struct rockchip_saradc_data rk3588_saradc_data = { > .read = rockchip_saradc_read_v2, > }; > > +static const struct iio_chan_spec rockchip_rv1106_saradc_iio_channels[] = { > + SARADC_CHANNEL(0, "adc0", 10), > + SARADC_CHANNEL(1, "adc1", 10), > +}; > + > +static const struct rockchip_saradc_data rv1106_saradc_data = { > + .channels = rockchip_rv1106_saradc_iio_channels, > + .num_channels = ARRAY_SIZE(rockchip_rv1106_saradc_iio_channels), > + .clk_rate = 1000000, > + .start = rockchip_saradc_start_v2, > + .read = rockchip_saradc_read_v2, > +}; > + > static const struct of_device_id rockchip_saradc_match[] = { > { > .compatible = "rockchip,saradc", > @@ -370,6 +383,9 @@ static const struct of_device_id rockchip_saradc_match[] = { > }, { > .compatible = "rockchip,rk3588-saradc", > .data = &rk3588_saradc_data, > + }, { > + .compatible = "rockchip,rv1106-saradc", > + .data = &rv1106_saradc_data, > }, > { } > }; _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchip