]> git.baikalelectronics.ru Git - kernel.git/commit
iio:proximity:sx9324: Fix hardware gain read/write
authorStephen Boyd <swboyd@chromium.org>
Thu, 24 Mar 2022 22:29:28 +0000 (15:29 -0700)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 4 Apr 2022 08:19:02 +0000 (09:19 +0100)
commit68999d58d5364c7c41a102ef0134a9581a8b3d73
tree0aa0517222045c96eab7ac56b80ec44281b8679a
parenta2d22d5725eb4b6bf03b2c958226de462c83dfbf
iio:proximity:sx9324: Fix hardware gain read/write

There are four possible gain values according to 'sx9324_gain_vals[]':

1, 2, 4, and 8

The values are off by one when writing and reading the register. The
bits should be set according to this equation:

ilog2(<gain>) + 1

so that a gain of 8 is 0x4 in the register field and a gain of 4 is 0x3
in the register field, etc. Note that a gain of 0 is reserved per the
datasheet. The default gain (SX9324_REG_PROX_CTRL0_GAIN_1) is also
wrong. It should be 0x1 << 3, i.e. 0x8, not 0x80 which is setting the
reserved bit 7.

Fix this all up to properly handle the hardware gain and return errors
for invalid settings.

Fixes: ce8631d0c6fc ("iio:proximity:sx9324: Add SX9324 support")
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
Link: https://lore.kernel.org/r/20220324222928.874522-1-swboyd@chromium.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/proximity/sx9324.c