mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 20:54:03 +02:00
iio: light: al3010: fix incorrect scale for the highest gain range
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: c36b5195ab ("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>
This commit is contained in:
parent
a9f41809bf
commit
aa411adc6c
|
|
@ -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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user