On 5/14/19 9:37 AM, Sudeep Holla wrote:
> On Wed, May 08, 2019 at 11:46:35AM -0700, Florian Fainelli wrote:
>> If the SCMI firmware implementation is reporting values in a scale that
>> is different from the HWMON units, we need to scale up or down the value
>> according to how far appart they are.
>>
>> Signed-off-by: Florian Fainelli <[email protected]>
>> ---
>>  drivers/hwmon/scmi-hwmon.c | 45 ++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 45 insertions(+)
>>
>> diff --git a/drivers/hwmon/scmi-hwmon.c b/drivers/hwmon/scmi-hwmon.c
>> index a80183a488c5..2c7b87edf5aa 100644
>> --- a/drivers/hwmon/scmi-hwmon.c
>> +++ b/drivers/hwmon/scmi-hwmon.c
>> @@ -18,6 +18,47 @@ struct scmi_sensors {
>>      const struct scmi_sensor_info **info[hwmon_max];
>>  };
>>  
>> +static inline u64 __pow10(u8 x)
>> +{
>> +    u64 r = 1;
>> +
>> +    while (x--)
>> +            r *= 10;
>> +
>> +    return r;
>> +}
>> +
>> +static int scmi_hwmon_scale(const struct scmi_sensor_info *sensor, u64 
>> *value)
>> +{
>> +    s8 scale = sensor->scale;
>> +    u64 f;
>> +
>> +    switch (sensor->type) {
>> +    case TEMPERATURE_C:
>> +    case VOLTAGE:
>> +    case CURRENT:
>> +            scale += 3;
>> +            break;
>> +    case POWER:
>> +    case ENERGY:
>> +            scale += 6;
>> +            break;
>> +    default:
>> +            break;
>> +    }
>> +
> 
> I was applying this and wanted to check if we can add a check for scale=0
> here and return early here to above the below check and __pow10(0) ?

Doing an early check for scale == 0 sounds like a good idea,good catch!
Feel free to amend the patch directly when you apply it.

> 
> Let me know if you agree. I can fix up. Also I will try to test it on
> Juno if firmware behaves correctly :)

Great, thanks.
-- 
Florian

Reply via email to