Re: [PATCH v3 0/2] hwmon: scmi: Scale values to target desired HWMON units

From: Florian Fainelli
Date: Wed May 08 2019 - 12:27:24 EST


On 5/8/19 4:35 AM, Sudeep Holla wrote:
> On Tue, May 07, 2019 at 04:09:15PM -0700, Florian Fainelli wrote:
>> Hi Sudeep, Guenter,
>>
>> This patch series adds support for scaling SCMI sensor values read from
>> firmware. Sudeep, let me know if you think we should be treating scale
>> == 0 as a special value to preserve some firmware compatibility (not
>> that this would be desired).
>
> So are we providing raw values from sensors.c and handling conversion
> in hwmon layer ? I was thinking of just providing converted values
> to hwmon just in case if the scaling thing change in future with
> newer versions of SCMI.

These are the reasons why I went with doing the scaling in scmi-hwmon.c:

- scmi-hwmon.c is where we know the target units that should be matching
the HWMON conventions, if we put that scaling into sensors.c that would
be a layering violation IMHO

- within sensors.c we don't have a struct scmi_sensor_info to work with
when called with reading_get, we have a sensor_id, so we would have to
look up the id to struct scmi_sensor_info which is an additional loop,
doing this in scmi-hwmon.c gives us access to that structure directly

- scmi-sensors.c is also the location where the mapping between SCMI
sensor type to HWMON sensor type is done, so if we need to update the
scale from one to the other, we would rather do that where the mapping
is already done, which goes back to the first item.

> I am fine either way, just trying to keep
> hwmon-scmi simpler. I will check if scale = 0 needs to be treated as
> special(I don't think so, but will read the spec)

My concern is not so much with the spec but with assumptions SCMI
firmware writes might have made while populating sensor values. The spec
does not indicate any special treatment about a particular unit power of
10 scale being done or not, and a power of 0 = 1, so that should work okay.

Thanks for taking a look!
--
Florian