Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwmon: Allow writing of negative trigger temperatures

- replace differing temperature variable types by long
- use strtol() instead of strtoul() for conversion

Signed-off-by: Christian Hohnstaedt <chohnstaedt@innominate.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>

authored by

Christian Hohnstaedt and committed by
Mark M. Hoffman
5bfedac0 dcf3b5fb

+20 -20
+1 -1
drivers/hwmon/ad7418.c
··· 172 172 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 173 173 struct i2c_client *client = to_i2c_client(dev); 174 174 struct ad7418_data *data = i2c_get_clientdata(client); 175 - int temp = simple_strtol(buf, NULL, 10); 175 + long temp = simple_strtol(buf, NULL, 10); 176 176 177 177 mutex_lock(&data->lock); 178 178 data->temp[attr->index] = LM75_TEMP_TO_REG(temp);
+1 -1
drivers/hwmon/adm1021.c
··· 162 162 { \ 163 163 struct i2c_client *client = to_i2c_client(dev); \ 164 164 struct adm1021_data *data = i2c_get_clientdata(client); \ 165 - int temp = simple_strtoul(buf, NULL, 10); \ 165 + long temp = simple_strtol(buf, NULL, 10); \ 166 166 \ 167 167 mutex_lock(&data->update_lock); \ 168 168 data->value = TEMP_TO_REG(temp); \
+2 -2
drivers/hwmon/asb100.c
··· 143 143 144 144 /* TEMP: 0.001C/bit (-128C to +127C) 145 145 REG: 1C/bit, two's complement */ 146 - static u8 TEMP_TO_REG(int temp) 146 + static u8 TEMP_TO_REG(long temp) 147 147 { 148 148 int ntemp = SENSORS_LIMIT(temp, ASB100_TEMP_MIN, ASB100_TEMP_MAX); 149 149 ntemp += (ntemp<0 ? -500 : 500); ··· 448 448 { \ 449 449 struct i2c_client *client = to_i2c_client(dev); \ 450 450 struct asb100_data *data = i2c_get_clientdata(client); \ 451 - unsigned long val = simple_strtoul(buf, NULL, 10); \ 451 + long val = simple_strtol(buf, NULL, 10); \ 452 452 \ 453 453 mutex_lock(&data->update_lock); \ 454 454 switch (nr) { \
+1 -1
drivers/hwmon/ds1621.c
··· 151 151 struct sensor_device_attribute *attr = to_sensor_dev_attr(da); 152 152 struct i2c_client *client = to_i2c_client(dev); 153 153 struct ds1621_data *data = ds1621_update_client(dev); 154 - u16 val = LM75_TEMP_TO_REG(simple_strtoul(buf, NULL, 10)); 154 + u16 val = LM75_TEMP_TO_REG(simple_strtol(buf, NULL, 10)); 155 155 156 156 mutex_lock(&data->update_lock); 157 157 data->temp[attr->index] = val;
+1 -1
drivers/hwmon/lm75.c
··· 95 95 struct i2c_client *client = to_i2c_client(dev); 96 96 struct lm75_data *data = i2c_get_clientdata(client); 97 97 int nr = attr->index; 98 - unsigned long temp = simple_strtoul(buf, NULL, 10); 98 + long temp = simple_strtol(buf, NULL, 10); 99 99 100 100 mutex_lock(&data->update_lock); 101 101 data->temp[nr] = LM75_TEMP_TO_REG(temp);
+1 -1
drivers/hwmon/lm75.h
··· 33 33 34 34 /* TEMP: 0.001C/bit (-55C to +125C) 35 35 REG: (0.5C/bit, two's complement) << 7 */ 36 - static inline u16 LM75_TEMP_TO_REG(int temp) 36 + static inline u16 LM75_TEMP_TO_REG(long temp) 37 37 { 38 38 int ntemp = SENSORS_LIMIT(temp, LM75_TEMP_MIN, LM75_TEMP_MAX); 39 39 ntemp += (ntemp<0 ? -250 : 250);
+1 -1
drivers/hwmon/lm77.c
··· 138 138 { \ 139 139 struct i2c_client *client = to_i2c_client(dev); \ 140 140 struct lm77_data *data = i2c_get_clientdata(client); \ 141 - long val = simple_strtoul(buf, NULL, 10); \ 141 + long val = simple_strtol(buf, NULL, 10); \ 142 142 \ 143 143 mutex_lock(&data->update_lock); \ 144 144 data->value = val; \
+5 -5
drivers/hwmon/lm93.c
··· 413 413 414 414 /* TEMP: 1/1000 degrees C (-128C to +127C) 415 415 REG: 1C/bit, two's complement */ 416 - static u8 LM93_TEMP_TO_REG(int temp) 416 + static u8 LM93_TEMP_TO_REG(long temp) 417 417 { 418 418 int ntemp = SENSORS_LIMIT(temp, LM93_TEMP_MIN, LM93_TEMP_MAX); 419 419 ntemp += (ntemp<0 ? -500 : 500); ··· 1268 1268 int nr = (to_sensor_dev_attr(attr))->index; 1269 1269 struct i2c_client *client = to_i2c_client(dev); 1270 1270 struct lm93_data *data = i2c_get_clientdata(client); 1271 - u32 val = simple_strtoul(buf, NULL, 10); 1271 + long val = simple_strtol(buf, NULL, 10); 1272 1272 1273 1273 mutex_lock(&data->update_lock); 1274 1274 data->temp_lim[nr].min = LM93_TEMP_TO_REG(val); ··· 1298 1298 int nr = (to_sensor_dev_attr(attr))->index; 1299 1299 struct i2c_client *client = to_i2c_client(dev); 1300 1300 struct lm93_data *data = i2c_get_clientdata(client); 1301 - u32 val = simple_strtoul(buf, NULL, 10); 1301 + long val = simple_strtol(buf, NULL, 10); 1302 1302 1303 1303 mutex_lock(&data->update_lock); 1304 1304 data->temp_lim[nr].max = LM93_TEMP_TO_REG(val); ··· 1329 1329 int nr = (to_sensor_dev_attr(attr))->index; 1330 1330 struct i2c_client *client = to_i2c_client(dev); 1331 1331 struct lm93_data *data = i2c_get_clientdata(client); 1332 - u32 val = simple_strtoul(buf, NULL, 10); 1332 + long val = simple_strtol(buf, NULL, 10); 1333 1333 1334 1334 mutex_lock(&data->update_lock); 1335 1335 data->block10.base[nr] = LM93_TEMP_TO_REG(val); ··· 1360 1360 int nr = (to_sensor_dev_attr(attr))->index; 1361 1361 struct i2c_client *client = to_i2c_client(dev); 1362 1362 struct lm93_data *data = i2c_get_clientdata(client); 1363 - u32 val = simple_strtoul(buf, NULL, 10); 1363 + long val = simple_strtol(buf, NULL, 10); 1364 1364 1365 1365 mutex_lock(&data->update_lock); 1366 1366 data->boost[nr] = LM93_TEMP_TO_REG(val);
+3 -3
drivers/hwmon/w83627ehf.c
··· 223 223 } 224 224 225 225 static inline s8 226 - temp1_to_reg(int temp, int min, int max) 226 + temp1_to_reg(long temp, int min, int max) 227 227 { 228 228 if (temp <= min) 229 229 return min / 1000; ··· 805 805 const char *buf, size_t count) \ 806 806 { \ 807 807 struct w83627ehf_data *data = dev_get_drvdata(dev); \ 808 - u32 val = simple_strtoul(buf, NULL, 10); \ 808 + long val = simple_strtol(buf, NULL, 10); \ 809 809 \ 810 810 mutex_lock(&data->update_lock); \ 811 811 data->temp1_##reg = temp1_to_reg(val, -128000, 127000); \ ··· 840 840 struct w83627ehf_data *data = dev_get_drvdata(dev); \ 841 841 struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr); \ 842 842 int nr = sensor_attr->index; \ 843 - u32 val = simple_strtoul(buf, NULL, 10); \ 843 + long val = simple_strtol(buf, NULL, 10); \ 844 844 \ 845 845 mutex_lock(&data->update_lock); \ 846 846 data->reg[nr] = LM75_TEMP_TO_REG(val); \
+3 -3
drivers/hwmon/w83627hf.c
··· 263 263 264 264 /* TEMP: 0.001C/bit (-128C to +127C) 265 265 REG: 1C/bit, two's complement */ 266 - static u8 TEMP_TO_REG(int temp) 266 + static u8 TEMP_TO_REG(long temp) 267 267 { 268 268 int ntemp = SENSORS_LIMIT(temp, TEMP_MIN, TEMP_MAX); 269 269 ntemp += (ntemp<0 ? -500 : 500); ··· 642 642 store_temp_##reg (struct device *dev, const char *buf, size_t count, int nr) \ 643 643 { \ 644 644 struct w83627hf_data *data = dev_get_drvdata(dev); \ 645 - u32 val; \ 645 + long val; \ 646 646 \ 647 - val = simple_strtoul(buf, NULL, 10); \ 647 + val = simple_strtol(buf, NULL, 10); \ 648 648 \ 649 649 mutex_lock(&data->update_lock); \ 650 650 \
+1 -1
drivers/hwmon/w83781d.c
··· 410 410 struct sensor_device_attribute *attr = to_sensor_dev_attr(da); \ 411 411 struct w83781d_data *data = dev_get_drvdata(dev); \ 412 412 int nr = attr->index; \ 413 - s32 val; \ 413 + long val; \ 414 414 \ 415 415 val = simple_strtol(buf, NULL, 10); \ 416 416 \