Re: [PATCH] iio: temperature: max30208: fix wrong scale value
From: Jonathan Cameron
Date: Tue Apr 28 2026 - 11:37:57 EST
On Tue, 28 Apr 2026 14:36:00 +0100
Salah Triki <salah.triki@xxxxxxxxx> wrote:
> On Tue, Apr 28, 2026 at 02:00:48PM +0300, Andy Shevchenko wrote:
> > On Tue, Apr 28, 2026 at 09:54:15AM +0100, Salah Triki wrote:
> > > The driver currently returns a scale of 5 for IIO_CHAN_INFO_SCALE, which
> > > leads to incorrect temperature readings.
> > >
> > > According to the MAX30208 datasheet, the temperature resolution is 0.005°C
> > > per LSB. Using IIO_VAL_FRACTIONAL with 5/1000 correctly represents this
> > > 16-bit resolution.
> > >
> > > Fix the scale value to ensure user space tools report the temperature
> > > correctly in Celsius.
> >
> > > Fixes: 9ee95ae4cffd ("iio: temperature: Add driver support for Maxim
> > > MAX30208")
> >
> > The tags should go with 1 tag per one (single) line. Do not wrap them.
>
> Sorry about that, I will fix the tag wrapping in v2.
>
> >
> > > Signed-off-by: Salah Triki <salah.triki@xxxxxxxxx>
> >
> > ...
> >
> > > case IIO_CHAN_INFO_SCALE:
> > > *val = 5;
> > > - return IIO_VAL_INT;
> > > + *val2 = 1000;
> > > + return IIO_VAL_FRACTIONAL;
> >
> > Isn't it an ABI change?
> >
>
> Yes, it technically changes the value exposed to user space. However, the
> current scale (5) is objectively incorrect according to the datasheet
> (0.005°C per LSB).
>
> With the current scale, a raw reading of 5000 (25°C) is reported as
> 25000°C by user space tools. This makes the driver practically unusable
> for standard IIO consumers without custom workarounds. Since the driver is
> relatively recent, I believe fixing it now to match the hardware
> specification is preferable to keeping a broken ABI.
>
Yes. It's fine to fix completely wrong ABI like this. It can get messier
in more subtle corners but out by a factor of 1000 is an easy one!
Jonathan
> What do you think?
>
> Best regards,
> --
> Salah Triki
>