lkml.org 
[lkml]   [2019]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] hwmon: (adt7475) Make volt2reg return same reg as reg2volt input
On Fri, Dec 06, 2019 at 11:54:30AM +1300, Luuk Paulussen wrote:
> reg2volt returns the voltage that matches a given register value.
> Converting this back the other way with volt2reg didn't return the same
> register value because it used truncation instead of rounding.
>
> This meant that values read from sysfs could not be written back to sysfs
> to set back the same register value.
>
> With this change, volt2reg will return the same value for every voltage
> previously returned by reg2volt (for the set of possible input values)
>
> Signed-off-by: Luuk Paulussen <luuk.paulussen@alliedtelesis.co.nz>
> ---
> drivers/hwmon/adt7475.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
> index 6c64d50c9aae..5eed7dd2f16d 100644
> --- a/drivers/hwmon/adt7475.c
> +++ b/drivers/hwmon/adt7475.c
> @@ -294,9 +294,10 @@ static inline u16 volt2reg(int channel, long volt, u8 bypass_attn)
> long reg;
>
> if (bypass_attn & (1 << channel))
> - reg = (volt * 1024) / 2250;
> + reg = DIV_ROUND_CLOSEST((volt * 1024), 2250);

Unnecessary ( )

> else
> - reg = (volt * r[1] * 1024) / ((r[0] + r[1]) * 2250);
> + reg = DIV_ROUND_CLOSEST((volt * r[1] * 1024),
> + ((r[0] + r[1]) * 2250));

More unnecessary ( )

Otherwise good catch.

Guenter

> return clamp_val(reg, 0, 1023) & (0xff << 2);
> }
>
> --
> 2.24.0
>

\
 
 \ /
  Last update: 2019-12-05 23:59    [W:0.033 / U:3.968 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site