From: Slawomir Stepien <sst@poczta.fm>
To: Guenter Roeck <linux@roeck-us.net>
Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org,
jdelvare@suse.com, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, przemyslaw.cencner@nokia.com,
krzysztof.adamski@nokia.com, alexander.sverdlin@nokia.com,
slawomir.stepien@nokia.com
Subject: Re: [PATCH 4/7] hwmon: (lm90) Add support for 2nd remote channel's offset register
Date: Mon, 6 Jun 2022 14:14:30 +0200 [thread overview]
Message-ID: <Yp3vpgR8jbyzWmiq@t480s.localdomain> (raw)
In-Reply-To: <5f471f82-83b1-aea4-ea25-e51c0672c8ff@roeck-us.net>
On cze 05, 2022 23:50, Guenter Roeck wrote:
> On 6/5/22 23:30, Slawomir Stepien wrote:
> > On cze 05, 2022 11:03, Guenter Roeck wrote:
> > > On Wed, May 25, 2022 at 09:36:54AM +0200, Slawomir Stepien wrote:
> > > > From: Slawomir Stepien <slawomir.stepien@nokia.com>
> > > >
> > > > The ADT7461 supports offset register for both remote channels it has.
> > >
> > > ADT7481
> >
> > Oops. I will fix that in new version.
> >
> > > > Both registers have the same bit width (resolution).
> > > >
> > > > In the code, this device has LM90_HAVE_TEMP3 and LM90_HAVE_OFFSET flags,
> > > > but the support of second remote channel's offset is missing. Add that
> > > > implementation.
> > > >
> > > > Signed-off-by: Slawomir Stepien <slawomir.stepien@nokia.com>
> > > > ---
> > > > drivers/hwmon/lm90.c | 37 ++++++++++++++++++++++++++++++++-----
> > > > 1 file changed, 32 insertions(+), 5 deletions(-)
> > > >
> > > > diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
> > > > index 02b211a4e571..d226f1dea2ba 100644
> > > > --- a/drivers/hwmon/lm90.c
> > > > +++ b/drivers/hwmon/lm90.c
> > > > @@ -153,6 +153,8 @@ enum chips { adm1023, adm1032, adt7461, adt7461a, adt7481,
> > > > #define LM90_REG_REMOTE_TEMPL 0x10
> > > > #define LM90_REG_REMOTE_OFFSH 0x11
> > > > #define LM90_REG_REMOTE_OFFSL 0x12
> > > > +#define LM90_REG_REMOTE2_OFFSH 0x34
> > > > +#define LM90_REG_REMOTE2_OFFSL 0x35
> > >
> > > I don't think those are needed.
> >
> > In lm90_temp_write() (unlike in lm90_update_limits()) the remote channel is *not* set. I find
>
> ... unless lm90_set_temp() is used to write the values. If I recall correctly
> I didn't do that because selecting the remote channel seemed unnecessary.
I think that modifying lm90_set_temp() to support offsets is a bit messy:
1. The offset on all supported devices is always on two bytes. Unlike the temperature, where
sometimes it is just on one (but if more than one byte, then we set reg_remote_ext). With this also
'regs' in lm90_set_temp() will be back as 2 dimensional array OR additional high and low indexes for
REMOTE_OFFSET and REMOTE2_OFFSET should be added (that will also caused bits glueing on write/read).
2. For offset the calls lm90_temp_from/to_reg should have 0 as flags (1st argument) - that would be
an additional if in lm90_set_temp() OR clear&restore of the flags before&after the call..
Maybe, Guenter you will be happy with something like this (new functions):
static int lm90_get_temp_offset(struct lm90_data *data, int index)
{
int res = lm90_temp_get_resolution(data, index);
return lm90_temp_from_reg(0, data->temp[index], res);
}
static int lm90_set_temp_offset(struct lm90_data *data, int index, int channel, long val)
{
int err;
static const u8 regs[][2] = {
[REMOTE_OFFSET] = {LM90_REG_REMOTE_OFFSH, LM90_REG_REMOTE_OFFSL},
[REMOTE2_OFFSET] = {LM90_REG_REMOTE_OFFSH, LM90_REG_REMOTE_OFFSL},
};
u8 regh = regs[index][0];
u8 regl = regs[index][1];
val = lm90_temp_to_reg(0, val, lm90_temp_get_resolution(data, index));
if (channel > 1)
lm90_select_remote_channel(data, true);
err = lm90_write16(data->client, regh, regl, val);
if (channel > 1)
lm90_select_remote_channel(data, false);
if (err)
return err;
data->temp[index] = val;
return 0;
}
And new channel->index translator:
static const s8 lm90_temp_offset_index[MAX_CHANNELS] = {
-1, REMOTE_OFFSET, REMOTE2_OFFSET
};
Having that, we can use that functions in hwmon's read/write attrs but also while paring the
device-tree channel nodes.
Maybe I missed something and using lm90_set_temp() will not be messy?
What do you think?
--
Slawomir Stepien
next prev parent reply other threads:[~2022-06-06 12:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-25 7:36 Extend the device-tree binding for lm90 Slawomir Stepien
2022-05-25 7:36 ` [PATCH 1/7] dt-bindings: hwmon: Add compatible string for ADT7481 in lm90 Slawomir Stepien
2022-05-26 1:54 ` Rob Herring
2022-06-05 17:52 ` Guenter Roeck
2022-05-25 7:36 ` [PATCH 2/7] dt-bindings: hwmon: Allow specifying channels for lm90 Slawomir Stepien
2022-05-26 1:55 ` Rob Herring
2022-06-05 17:53 ` Guenter Roeck
2022-05-25 7:36 ` [PATCH 3/7] hwmon: (lm90) Add compatible entry for adt7481 Slawomir Stepien
2022-06-05 17:54 ` Guenter Roeck
2022-05-25 7:36 ` [PATCH 4/7] hwmon: (lm90) Add support for 2nd remote channel's offset register Slawomir Stepien
2022-06-05 18:03 ` Guenter Roeck
2022-06-06 6:30 ` Slawomir Stepien
2022-06-06 6:50 ` Guenter Roeck
2022-06-06 6:56 ` Slawomir Stepien
2022-06-06 12:14 ` Slawomir Stepien [this message]
2022-06-06 14:15 ` Guenter Roeck
2022-05-25 7:36 ` [PATCH 5/7] hwmon: (lm90) Define maximum number of channels that are supported Slawomir Stepien
2022-06-05 18:05 ` Guenter Roeck
2022-05-25 7:36 ` [PATCH 6/7] hwmon: (lm90) Read the channel's label from device-tree Slawomir Stepien
2022-06-05 18:06 ` Guenter Roeck
2022-05-25 7:36 ` [PATCH 7/7] hwmon: (lm90) Read the channel's temperature offset " Slawomir Stepien
2022-06-05 18:10 ` Guenter Roeck
2022-06-06 6:32 ` Slawomir Stepien
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=Yp3vpgR8jbyzWmiq@t480s.localdomain \
--to=sst@poczta.fm \
--cc=alexander.sverdlin@nokia.com \
--cc=devicetree@vger.kernel.org \
--cc=jdelvare@suse.com \
--cc=krzysztof.adamski@nokia.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=przemyslaw.cencner@nokia.com \
--cc=robh+dt@kernel.org \
--cc=slawomir.stepien@nokia.com \
/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