]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: light: al3010: fix incorrect scale for the highest gain range
authorVidhu Sarwal <vidhu.linux@gmail.com>
Sat, 4 Jul 2026 11:52:45 +0000 (17:22 +0530)
committerJonathan Cameron <jic23@kernel.org>
Sat, 4 Jul 2026 23:04:18 +0000 (00:04 +0100)
al3010_scales[] encodes the highest gain range as {0, 1187200}.
For IIO_VAL_INT_PLUS_MICRO, the fractional part must be less than
1000000, so the scale 1.1872 should instead be represented as
{ 1, 187200 }.

Since write_raw() compares the value from userspace against this
table, writing the advertised 1.1872 scale never matches the malformed
entry and returns -EINVAL. As a result, the highest gain range cannot
be selected. Reading the scale in that state also reports the malformed
value.

Fixes: c36b5195ab70 ("iio: light: add Dyna-Image AL3010 driver")
Signed-off-by: Vidhu Sarwal <vidhu.linux@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/light/al3010.c

index d603b4a6b8e8b288e92fa027214db4244752dd22..ca1d7fd6defbc636cb1fa4990db9af619a7f4fc7 100644 (file)
@@ -42,7 +42,7 @@ enum al3xxxx_range {
 };
 
 static const int al3010_scales[][2] = {
-       {0, 1187200}, {0, 296800}, {0, 74200}, {0, 18600}
+       { 1, 187200 }, { 0, 296800 }, { 0, 74200 }, { 0, 18600 },
 };
 
 static const struct regmap_config al3010_regmap_config = {