2023-06-06 16:16:25

by Tim Harvey

[permalink] [raw]
Subject: [PATCH] hwmon: (gsc-hwmon) fix fan pwm temperature scaling

The GSC fan pwm temperature register is in centidegrees celcius but the
Linux hwmon convention is to use milidegrees celcius. Fix the scaling.

Fixes: 3bce5377ef66 ("hwmon: Add Gateworks System Controller support")
Signed-off-by: Tim Harvey <[email protected]>
---
drivers/hwmon/gsc-hwmon.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/hwmon/gsc-hwmon.c b/drivers/hwmon/gsc-hwmon.c
index 73e5d92b200b..1501ceb551e7 100644
--- a/drivers/hwmon/gsc-hwmon.c
+++ b/drivers/hwmon/gsc-hwmon.c
@@ -82,8 +82,8 @@ static ssize_t pwm_auto_point_temp_store(struct device *dev,
if (kstrtol(buf, 10, &temp))
return -EINVAL;

- temp = clamp_val(temp, 0, 10000);
- temp = DIV_ROUND_CLOSEST(temp, 10);
+ temp = clamp_val(temp, 0, 100000);
+ temp = DIV_ROUND_CLOSEST(temp, 100);

regs[0] = temp & 0xff;
regs[1] = (temp >> 8) & 0xff;
@@ -100,7 +100,7 @@ static ssize_t pwm_auto_point_pwm_show(struct device *dev,
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);

- return sprintf(buf, "%d\n", 255 * (50 + (attr->index * 10)) / 100);
+ return sprintf(buf, "%d\n", 255 * (50 + (attr->index * 10)));
}

static SENSOR_DEVICE_ATTR_RO(pwm1_auto_point1_pwm, pwm_auto_point_pwm, 0);
--
2.25.1



2023-06-08 14:06:31

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH] hwmon: (gsc-hwmon) fix fan pwm temperature scaling

On Tue, Jun 06, 2023 at 08:30:04AM -0700, Tim Harvey wrote:
> The GSC fan pwm temperature register is in centidegrees celcius but the
> Linux hwmon convention is to use milidegrees celcius. Fix the scaling.
>
> Fixes: 3bce5377ef66 ("hwmon: Add Gateworks System Controller support")
> Signed-off-by: Tim Harvey <[email protected]>

Applied.

Thanks,
Guenter

> ---
> drivers/hwmon/gsc-hwmon.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hwmon/gsc-hwmon.c b/drivers/hwmon/gsc-hwmon.c
> index 73e5d92b200b..1501ceb551e7 100644
> --- a/drivers/hwmon/gsc-hwmon.c
> +++ b/drivers/hwmon/gsc-hwmon.c
> @@ -82,8 +82,8 @@ static ssize_t pwm_auto_point_temp_store(struct device *dev,
> if (kstrtol(buf, 10, &temp))
> return -EINVAL;
>
> - temp = clamp_val(temp, 0, 10000);
> - temp = DIV_ROUND_CLOSEST(temp, 10);
> + temp = clamp_val(temp, 0, 100000);
> + temp = DIV_ROUND_CLOSEST(temp, 100);
>
> regs[0] = temp & 0xff;
> regs[1] = (temp >> 8) & 0xff;
> @@ -100,7 +100,7 @@ static ssize_t pwm_auto_point_pwm_show(struct device *dev,
> {
> struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
>
> - return sprintf(buf, "%d\n", 255 * (50 + (attr->index * 10)) / 100);
> + return sprintf(buf, "%d\n", 255 * (50 + (attr->index * 10)));
> }
>
> static SENSOR_DEVICE_ATTR_RO(pwm1_auto_point1_pwm, pwm_auto_point_pwm, 0);