diff options
author | Guenter Roeck <linux@roeck-us.net> | 2014-06-25 11:08:35 -0400 |
---|---|---|
committer | Guenter Roeck <linux@roeck-us.net> | 2014-08-04 10:01:36 -0400 |
commit | 7560dc0a6d45dbf0d32eb56172dd5062753a8dcc (patch) | |
tree | d634a14d17c21714da9d168fc3311f04dee58514 | |
parent | 034b44b4a22371c5bcbfb602a5420f3b75939dd8 (diff) |
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: Guenter Roeck <linux@roeck-us.net>
-rw-r--r-- | drivers/hwmon/lm63.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c index 848b9611151f..33bfdb444138 100644 --- a/drivers/hwmon/lm63.c +++ b/drivers/hwmon/lm63.c | |||
@@ -126,24 +126,17 @@ static const unsigned short normal_i2c[] = { 0x18, 0x4c, 0x4e, I2C_CLIENT_END }; | |||
126 | #define FAN_TO_REG(val) ((val) <= 82 ? 0xFFFC : \ | 126 | #define FAN_TO_REG(val) ((val) <= 82 ? 0xFFFC : \ |
127 | (5400000 / (val)) & 0xFFFC) | 127 | (5400000 / (val)) & 0xFFFC) |
128 | #define TEMP8_FROM_REG(reg) ((reg) * 1000) | 128 | #define TEMP8_FROM_REG(reg) ((reg) * 1000) |
129 | #define TEMP8_TO_REG(val) ((val) <= -128000 ? -128 : \ | 129 | #define TEMP8_TO_REG(val) DIV_ROUND_CLOSEST(clamp_val((val), -128000, \ |
130 | (val) >= 127000 ? 127 : \ | 130 | 127000), 1000) |
131 | (val) < 0 ? ((val) - 500) / 1000 : \ | 131 | #define TEMP8U_TO_REG(val) DIV_ROUND_CLOSEST(clamp_val((val), 0, \ |
132 | ((val) + 500) / 1000) | 132 | 255000), 1000) |
133 | #define TEMP8U_TO_REG(val) ((val) <= 0 ? 0 : \ | ||
134 | (val) >= 255000 ? 255 : \ | ||
135 | ((val) + 500) / 1000) | ||
136 | #define TEMP11_FROM_REG(reg) ((reg) / 32 * 125) | 133 | #define TEMP11_FROM_REG(reg) ((reg) / 32 * 125) |
137 | #define TEMP11_TO_REG(val) ((val) <= -128000 ? 0x8000 : \ | 134 | #define TEMP11_TO_REG(val) (DIV_ROUND_CLOSEST(clamp_val((val), -128000, \ |
138 | (val) >= 127875 ? 0x7FE0 : \ | 135 | 127875), 125) * 32) |
139 | (val) < 0 ? ((val) - 62) / 125 * 32 : \ | 136 | #define TEMP11U_TO_REG(val) (DIV_ROUND_CLOSEST(clamp_val((val), 0, \ |
140 | ((val) + 62) / 125 * 32) | 137 | 255875), 125) * 32) |
141 | #define TEMP11U_TO_REG(val) ((val) <= 0 ? 0 : \ | 138 | #define HYST_TO_REG(val) DIV_ROUND_CLOSEST(clamp_val((val), 0, 127000), \ |
142 | (val) >= 255875 ? 0xFFE0 : \ | 139 | 1000) |
143 | ((val) + 62) / 125 * 32) | ||
144 | #define HYST_TO_REG(val) ((val) <= 0 ? 0 : \ | ||
145 | (val) >= 127000 ? 127 : \ | ||
146 | ((val) + 500) / 1000) | ||
147 | 140 | ||
148 | #define UPDATE_INTERVAL(max, rate) \ | 141 | #define UPDATE_INTERVAL(max, rate) \ |
149 | ((1000 << (LM63_MAX_CONVRATE - (rate))) / (max)) | 142 | ((1000 << (LM63_MAX_CONVRATE - (rate))) / (max)) |