From: Jonathan Cameron <jic23@kernel.org>
To: Stephen Boyd <swboyd@chromium.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
Gwendal Grignou <gwendal@chromium.org>
Subject: Re: [PATCH] iio:proximity:sx9324: Fix hardware gain read/write
Date: Sat, 19 Mar 2022 15:26:41 +0000 [thread overview]
Message-ID: <20220319152641.49d8b3e1@jic23-huawei> (raw)
In-Reply-To: <20220318204808.3404542-1-swboyd@chromium.org>
On Fri, 18 Mar 2022 13:48:08 -0700
Stephen Boyd <swboyd@chromium.org> wrote:
Hi Stephen,
> There are four possible gain values according to sx9324_gain_vals[]: 1,
> 2, 4, and 8. When writing and reading the register the values are off by
> one.
> The bits should be set according to this equation:
>
> ilog2(<gain>) + 1
>
> so that a gain of 8 is 0x3 in the register field and a gain of 4 is 0x2
> in the register field, etc. Fix up the functions.
So is the 0 value reserved? I can't find an sx9324 datasheet but he
9320 is online and that seems to be the case there. If so please state
that in this description as well.
>
> Fixes: 4c18a890dff8 ("iio:proximity:sx9324: Add SX9324 support")
> Cc: Gwendal Grignou <gwendal@chromium.org>
> Signed-off-by: Stephen Boyd <swboyd@chromium.org>
> ---
> drivers/iio/proximity/sx9324.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/proximity/sx9324.c b/drivers/iio/proximity/sx9324.c
> index 0d9bbbb50cb4..a3c8e02f5a56 100644
> --- a/drivers/iio/proximity/sx9324.c
> +++ b/drivers/iio/proximity/sx9324.c
> @@ -379,7 +379,10 @@ static int sx9324_read_gain(struct sx_common_data *data,
> if (ret)
> return ret;
>
> - *val = 1 << FIELD_GET(SX9324_REG_PROX_CTRL0_GAIN_MASK, regval);
> + regval = FIELD_GET(SX9324_REG_PROX_CTRL0_GAIN_MASK, regval);
> + if (regval)
If 0 is reserved then I'd return and error code here to indicate
we don't know what the gain is rather than carrying on regardless.
Or is this going to cause problems as it will be an ABI change (error
return possible when it wasn't really before)?
> + regval--;
> + *val = 1 << regval;
>
> return IIO_VAL_INT;
> }
> @@ -725,7 +728,7 @@ static int sx9324_write_gain(struct sx_common_data *data,
> unsigned int gain, reg;
> int ret;
>
> - gain = ilog2(val);
> + gain = ilog2(val) + 1;
> reg = SX9324_REG_PROX_CTRL0 + chan->channel / 2;
> gain = FIELD_PREP(SX9324_REG_PROX_CTRL0_GAIN_MASK, gain);
>
>
> base-commit: a8ee3b32f5da6c77a5ccc0e42c2250d61ba54fe0
next prev parent reply other threads:[~2022-03-19 15:19 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-18 20:48 [PATCH] iio:proximity:sx9324: Fix hardware gain read/write Stephen Boyd
2022-03-19 15:26 ` Jonathan Cameron [this message]
2022-03-21 18:36 ` Stephen Boyd
2022-03-22 20:38 ` Jonathan Cameron
2022-03-22 21:57 ` Stephen Boyd
2022-03-27 15:47 ` Jonathan Cameron
2022-03-27 22:16 ` Andy Shevchenko
2022-03-28 16:49 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220319152641.49d8b3e1@jic23-huawei \
--to=jic23@kernel.org \
--cc=gwendal@chromium.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox