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

From: Florian Fainelli
Date: Wed May 08 2019 - 14:47:48 EST

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).

Changes in v5:
- overflow check would not work, so check specifically for an absolute
scale being greater than 19 to avoid returning an incorrect power of
10 factor
- fixed incorrect value argument passed to scmi_hwmon_scale().
- Added Guenter's Reviewed-by tag on the first patch

Changes in v4:
- deal with overflow in the caller of __pow10() as suggested by Guenter
which makes us rework a bit how the value argument/return value are
- don't harcode the latest power of 10 factor to be 18, just rely on
overflowing the u64 value instead

Changes in v3:

- add a local __pow10 function to scmi-hwmon.c while a plan to provide
a generic function is figured out.
- add check on power > 18 which would overflow a 64-bit unsigned integer
- use div64_u64() to properly divide a 64-bit quantity with an unsigned
64-bit quantity

Changes in v2:

- added a helper function in kernel.h: __pow10()
- made the scale in scmi_sensor_info an s8 type, added defines for
checking the sign bit and sign extending with a mask
- simplify computations in hwmon driver

Florian Fainelli (2):
firmware: arm_scmi: Fetch and store sensor scale
hwmon: scmi: Scale values to target desired HWMON units

drivers/firmware/arm_scmi/sensors.c | 6 ++++
drivers/hwmon/scmi-hwmon.c | 45 +++++++++++++++++++++++++++++
include/linux/scmi_protocol.h | 1 +
3 files changed, 52 insertions(+)