Re: [PATCH] iio: light: tsl2772: fix ALS calibscale readback
From: Jonathan Cameron
Date: Sun Jul 26 2026 - 22:16:17 EST
On Fri, 24 Jul 2026 23:46:01 +0000
Yuanshen Cao <alex.caoys@xxxxxxxxx> wrote:
> The read_raw() implementation uses IIO_LIGHT to distinguish between the
> ambient light and proximity channels when handling
> IIO_CHAN_INFO_CALIBSCALE.
>
> However, the ALS channel is registered as IIO_INTENSITY, while
> write_raw() correctly writes to IIO_INTENSITY. As a result, reading
> in_intensity0_calibscale incorrectly returns the proximity gain instead
> of the ALS gain.
>
> This causes the following user-visible behavior:
> - Writing in_intensity0_calibscale appears to have no effect because the
> readback reports the proximity gain.
> - Writing in_proximity0_calibscale causes both in_proximity0_calibscale
> and in_intensity0_calibscale to report the same value.
>
> Fix this by checking for IIO_INTENSITY in read_raw(), matching the
> channel definition and the existing write_raw() implementation.
>
> Signed-off-by: Yuanshen Cao <alex.caoys@xxxxxxxxx>
Hi,
Fix looks good and the explanation correct. Was this an AI found
one, or did you either spot this whilst reading the code or best
of all saw it in practice and went looking for what is wrong?
Give it is fix, what is missing is a suitable Fixes tag.
Please see if you can figure out what that should be.
No need to send a v2 unless anything else comes up in review.
Just reply to this thread with the Fixes tag so I'll get it
when I use b4 to pick up the patch
Thanks,
Jonathan
> ---
> drivers/iio/light/tsl2772.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/light/tsl2772.c b/drivers/iio/light/tsl2772.c
> index 244f44379c36..2287585711c6 100644
> --- a/drivers/iio/light/tsl2772.c
> +++ b/drivers/iio/light/tsl2772.c
> @@ -1274,7 +1274,7 @@ static int tsl2772_read_raw(struct iio_dev *indio_dev,
> }
> break;
> case IIO_CHAN_INFO_CALIBSCALE:
> - if (chan->type == IIO_LIGHT)
> + if (chan->type == IIO_INTENSITY)
> *val = tsl2772_als_gain[chip->settings.als_gain];
> else
> *val = tsl2772_prox_gain[chip->settings.prox_gain];
>
> ---
> base-commit: 1590cf0329716306e948a8fc29f1d3ee87d3989f
> change-id: 20260724-tsl2772-calibscale-fix-0cc42518d5fc
>
> Best regards,
> --
> Yuanshen Cao <alex.caoys@xxxxxxxxx>
>