Re: [PATCH] iio: light: tsl2772: fix ALS calibscale readback
David Lechner <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/24/26 6:46 PM, Yuanshen Cao 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 <[email protected]> > --- > 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 <[email protected]> > Reviewed-by: David Lechner <[email protected]>