Re: [PATCH] iio: temperature: max30208: fix wrong scale value
From: Salah Triki
Date: Tue Apr 28 2026 - 10:08:45 EST
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.
What do you think?
Best regards,
--
Salah Triki