mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] iio: light: vcnl4035: Fix swapped raw channel readings
@ 2026-11-13 22:26 Hungyu Lin
  2026-11-14  1:34 ` Jonathan Cameron
  0 siblings, 1 reply; 2+ messages in thread
From: Hungyu Lin @ 2026-11-13 22:26 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: David Lechner, Nuno Sá,
	Andy Shevchenko, Parthiban Nallathambi, linux-iio, linux-kernel,
	stable

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@vger.kernel.org
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
Changes in v2:
- Reference the datasheet's register table in the commit message.

v1: https://lore.kernel.org/r/20261113110123.96084-1-dennylin0707@gmail.com/

 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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] iio: light: vcnl4035: Fix swapped raw channel readings
  2026-11-13 22:26 [PATCH v2] iio: light: vcnl4035: Fix swapped raw channel readings Hungyu Lin
@ 2026-11-14  1:34 ` Jonathan Cameron
  0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Cameron @ 2026-11-14  1:34 UTC (permalink / raw)
  To: Hungyu Lin
  Cc: David Lechner, Nuno Sá,
	Andy Shevchenko, Parthiban Nallathambi, linux-iio, linux-kernel,
	stable

On Fri, 13 Nov 2026 22:26:09 +0000
Hungyu Lin <dennylin0707@gmail.com> 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@vger.kernel.org
> Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>

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@gmail.com/
> 
>  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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-14  1:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-13 22:26 [PATCH v2] iio: light: vcnl4035: Fix swapped raw channel readings Hungyu Lin
2026-11-14  1:34 ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®