Commit 7560dc0a authored by Guenter Roeck's avatar Guenter Roeck

hwmon: (lm63) Fix smatch warnings

smatch complains as follows when checking lm63.c.

drivers/hwmon/lm63.c:594 set_temp11() warn:
		'65504' 65504 can't fit into 32767 'data->temp11[nr]'
drivers/hwmon/lm63.c:596 set_temp11() warn:
		'32768' 32768 can't fit into 32767 'data->temp11[nr]'

Fix by using DIV_ROUND_CLOSEST and clamp_val to convert the values.
While we are at it, modify other macros as well for consistency and
to make the code easier to understand.
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 034b44b4
...@@ -126,24 +126,17 @@ static const unsigned short normal_i2c[] = { 0x18, 0x4c, 0x4e, I2C_CLIENT_END }; ...@@ -126,24 +126,17 @@ static const unsigned short normal_i2c[] = { 0x18, 0x4c, 0x4e, I2C_CLIENT_END };
#define FAN_TO_REG(val) ((val) <= 82 ? 0xFFFC : \ #define FAN_TO_REG(val) ((val) <= 82 ? 0xFFFC : \
(5400000 / (val)) & 0xFFFC) (5400000 / (val)) & 0xFFFC)
#define TEMP8_FROM_REG(reg) ((reg) * 1000) #define TEMP8_FROM_REG(reg) ((reg) * 1000)
#define TEMP8_TO_REG(val) ((val) <= -128000 ? -128 : \ #define TEMP8_TO_REG(val) DIV_ROUND_CLOSEST(clamp_val((val), -128000, \
(val) >= 127000 ? 127 : \ 127000), 1000)
(val) < 0 ? ((val) - 500) / 1000 : \ #define TEMP8U_TO_REG(val) DIV_ROUND_CLOSEST(clamp_val((val), 0, \
((val) + 500) / 1000) 255000), 1000)
#define TEMP8U_TO_REG(val) ((val) <= 0 ? 0 : \
(val) >= 255000 ? 255 : \
((val) + 500) / 1000)
#define TEMP11_FROM_REG(reg) ((reg) / 32 * 125) #define TEMP11_FROM_REG(reg) ((reg) / 32 * 125)
#define TEMP11_TO_REG(val) ((val) <= -128000 ? 0x8000 : \ #define TEMP11_TO_REG(val) (DIV_ROUND_CLOSEST(clamp_val((val), -128000, \
(val) >= 127875 ? 0x7FE0 : \ 127875), 125) * 32)
(val) < 0 ? ((val) - 62) / 125 * 32 : \ #define TEMP11U_TO_REG(val) (DIV_ROUND_CLOSEST(clamp_val((val), 0, \
((val) + 62) / 125 * 32) 255875), 125) * 32)
#define TEMP11U_TO_REG(val) ((val) <= 0 ? 0 : \ #define HYST_TO_REG(val) DIV_ROUND_CLOSEST(clamp_val((val), 0, 127000), \
(val) >= 255875 ? 0xFFE0 : \ 1000)
((val) + 62) / 125 * 32)
#define HYST_TO_REG(val) ((val) <= 0 ? 0 : \
(val) >= 127000 ? 127 : \
((val) + 500) / 1000)
#define UPDATE_INTERVAL(max, rate) \ #define UPDATE_INTERVAL(max, rate) \
((1000 << (LM63_MAX_CONVRATE - (rate))) / (max)) ((1000 << (LM63_MAX_CONVRATE - (rate))) / (max))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment