Re: [PATCH v2] iio: light: vcnl4035: Fix swapped raw channel readings

From: Jonathan Cameron

Date: Fri Nov 13 2026 - 20:34:20 EST


On Fri, 13 Nov 2026 22:26:09 +0000
Hungyu Lin <dennylin0707@xxxxxxxxx> wrote:

> The IIO_LIGHT channel has channel number 0 and the IIO_INTENSITY
> channel has channel number 1. vcnl4035_read_info_raw() selects the ALS
> register for a nonzero channel number, so in_illuminance_raw returns
> the white-channel sample and in_intensity_both_raw returns the ALS
> sample. This also causes the illuminance scale to be applied to a
> white-channel sample.
>
> Table 13 of the VCNL4035X01 datasheet [1] lists 0x0b as the ALS
> data register and 0x0c as the white data register.
>
> Select the ALS data register for IIO_LIGHT and the white data register
> for the intensity channel.
>
> Fixes: 55707294c4eb ("iio: light: Add support for vishay vcnl4035")
> Link: https://www.vishay.com/docs/84251/vcnl4035x01.pdf [1]
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Hungyu Lin <dennylin0707@xxxxxxxxx>

Addressed Andy's comments and indeed even without looking the datasheet
the code is clearly backwards, so applied to the fixes-togreg branch of iio.git.
> ---
> Changes in v2:
> - Reference the datasheet's register table in the commit message.
>
> v1: https://lore.kernel.org/r/20261113110123.96084-1-dennylin0707@xxxxxxxxx/
>
> drivers/iio/light/vcnl4035.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/light/vcnl4035.c b/drivers/iio/light/vcnl4035.c
> index f1cc75245001..4bbb3b458eb5 100644
> --- a/drivers/iio/light/vcnl4035.c
> +++ b/drivers/iio/light/vcnl4035.c
> @@ -156,7 +156,7 @@ static int vcnl4035_read_info_raw(struct iio_dev *indio_dev,
> if (!iio_device_claim_direct(indio_dev))
> return -EBUSY;
>
> - if (chan->channel)
> + if (chan->type == IIO_LIGHT)
> reg = VCNL4035_ALS_DATA;
> else
> reg = VCNL4035_WHITE_DATA;
>
> base-commit: 9752760146e642f3e4a2ec860f8767fa72030d2c