[PATCH v2] iio: temperature: max30208: fix wrong scale value

From: Salah Triki

Date: Tue Apr 28 2026 - 11:54:36 EST


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.

Although this is a change in the ABI, the current scale is objectively
incorrect. A raw reading of 5000 (25°C) is currently reported as 25000°C,
making the driver unusable with standard IIO tools. Given the magnitude
of the error (factor of 1000) and the fact that the driver is relatively
recent, fixing it to match the hardware specification is necessary.

Fixes: 9ee95ae4cffd ("iio: temperature: Add driver support for Maxim MAX30208")
Signed-off-by: Salah Triki <salah.triki@xxxxxxxxx>
---
Changes in v2:
- Update commit message to justify the ABI change as requested by Andy.
- Fix wrapping of the Fixes tag.

drivers/iio/temperature/max30208.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/temperature/max30208.c b/drivers/iio/temperature/max30208.c
index 720469f9dc36..96f63c4fb2b6 100644
--- a/drivers/iio/temperature/max30208.c
+++ b/drivers/iio/temperature/max30208.c
@@ -163,7 +163,8 @@ static int max30208_read(struct iio_dev *indio_dev,

case IIO_CHAN_INFO_SCALE:
*val = 5;
- return IIO_VAL_INT;
+ *val2 = 1000;
+ return IIO_VAL_FRACTIONAL;

default:
return -EINVAL;
--
2.43.0