Re: [PATCH] iio: adc: rockchip_saradc: Add support for RV1106

Jonathan Cameron <[email protected]>
Newsgroups gmane.linux.kernel.iio,gmane.linux.ports.arm.kernel,gmane.linux.ports.arm.rockchip,gmane.linux.kernel
Message-ID <20260815022036.7c47585e@jic23-huawei>
On Mon, 10 Aug 2026 12:08:26 +0300
Vladislav Leonov <vlad-/[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 <vlad-/[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,
>  	},
>  	{ }
>  };
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.