aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/hwmon/pmbus5
-rw-r--r--Documentation/hwmon/zl610015
-rw-r--r--drivers/hwmon/Kconfig4
-rw-r--r--drivers/hwmon/acpi_power_meter.c6
-rw-r--r--drivers/hwmon/adcxx.c2
-rw-r--r--drivers/hwmon/adm1031.c2
-rw-r--r--drivers/hwmon/adm9240.c2
-rw-r--r--drivers/hwmon/adt7411.c2
-rw-r--r--drivers/hwmon/adt7462.c28
-rw-r--r--drivers/hwmon/adt7470.c26
-rw-r--r--drivers/hwmon/adt7475.c20
-rw-r--r--drivers/hwmon/amc6821.c14
-rw-r--r--drivers/hwmon/applesmc.c6
-rw-r--r--drivers/hwmon/asc7621.c24
-rw-r--r--drivers/hwmon/ds620.c2
-rw-r--r--drivers/hwmon/emc1403.c6
-rw-r--r--drivers/hwmon/emc2103.c10
-rw-r--r--drivers/hwmon/emc6w201.c6
-rw-r--r--drivers/hwmon/f71882fg.c32
-rw-r--r--drivers/hwmon/f75375s.c309
-rw-r--r--drivers/hwmon/g760a.c2
-rw-r--r--drivers/hwmon/gpio-fan.c6
-rw-r--r--drivers/hwmon/ibmaem.c2
-rw-r--r--drivers/hwmon/it87.c34
-rw-r--r--drivers/hwmon/jc42.c4
-rw-r--r--drivers/hwmon/lm73.c2
-rw-r--r--drivers/hwmon/lm75.c25
-rw-r--r--drivers/hwmon/lm75.h5
-rw-r--r--drivers/hwmon/lm80.c70
-rw-r--r--drivers/hwmon/lm90.c10
-rw-r--r--drivers/hwmon/lm95241.c8
-rw-r--r--drivers/hwmon/lm95245.c8
-rw-r--r--drivers/hwmon/ltc4261.c1
-rw-r--r--drivers/hwmon/max1111.c2
-rw-r--r--drivers/hwmon/max16065.c2
-rw-r--r--drivers/hwmon/max6639.c8
-rw-r--r--drivers/hwmon/max6642.c2
-rw-r--r--drivers/hwmon/pc87427.c6
-rw-r--r--drivers/hwmon/pmbus/Kconfig9
-rw-r--r--drivers/hwmon/pmbus/adm1275.c71
-rw-r--r--drivers/hwmon/pmbus/pmbus.c2
-rw-r--r--drivers/hwmon/pmbus/zl6100.c43
-rw-r--r--drivers/hwmon/sht15.c2
-rw-r--r--drivers/hwmon/tmp102.c2
-rw-r--r--drivers/hwmon/tmp401.c10
-rw-r--r--drivers/hwmon/w83627ehf.c22
-rw-r--r--drivers/hwmon/w83791d.c8
-rw-r--r--drivers/hwmon/w83792d.c2
-rw-r--r--drivers/hwmon/w83793.c2
-rw-r--r--drivers/hwmon/w83795.c32
50 files changed, 588 insertions, 335 deletions
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus
index 15ac911ce51b..d28b591753d1 100644
--- a/Documentation/hwmon/pmbus
+++ b/Documentation/hwmon/pmbus
@@ -2,9 +2,8 @@ Kernel driver pmbus
2==================== 2====================
3 3
4Supported chips: 4Supported chips:
5 * Ericsson BMR45X series 5 * Ericsson BMR453, BMR454
6 DC/DC Converter 6 Prefixes: 'bmr453', 'bmr454'
7 Prefixes: 'bmr450', 'bmr451', 'bmr453', 'bmr454'
8 Addresses scanned: - 7 Addresses scanned: -
9 Datasheet: 8 Datasheet:
10 http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146395 9 http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146395
diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100
index 7617798b5c97..51f76a189fee 100644
--- a/Documentation/hwmon/zl6100
+++ b/Documentation/hwmon/zl6100
@@ -6,6 +6,10 @@ Supported chips:
6 Prefix: 'zl2004' 6 Prefix: 'zl2004'
7 Addresses scanned: - 7 Addresses scanned: -
8 Datasheet: http://www.intersil.com/data/fn/fn6847.pdf 8 Datasheet: http://www.intersil.com/data/fn/fn6847.pdf
9 * Intersil / Zilker Labs ZL2005
10 Prefix: 'zl2005'
11 Addresses scanned: -
12 Datasheet: http://www.intersil.com/data/fn/fn6848.pdf
9 * Intersil / Zilker Labs ZL2006 13 * Intersil / Zilker Labs ZL2006
10 Prefix: 'zl2006' 14 Prefix: 'zl2006'
11 Addresses scanned: - 15 Addresses scanned: -
@@ -30,6 +34,17 @@ Supported chips:
30 Prefix: 'zl6105' 34 Prefix: 'zl6105'
31 Addresses scanned: - 35 Addresses scanned: -
32 Datasheet: http://www.intersil.com/data/fn/fn6906.pdf 36 Datasheet: http://www.intersil.com/data/fn/fn6906.pdf
37 * Ericsson BMR450, BMR451
38 Prefix: 'bmr450', 'bmr451'
39 Addresses scanned: -
40 Datasheet:
41http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146401
42 * Ericsson BMR462, BMR463, BMR464
43 Prefixes: 'bmr462', 'bmr463', 'bmr464'
44 Addresses scanned: -
45 Datasheet:
46http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256
47
33 48
34Author: Guenter Roeck <guenter.roeck@ericsson.com> 49Author: Guenter Roeck <guenter.roeck@ericsson.com>
35 50
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 91be41f60809..cb351d358387 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -367,11 +367,11 @@ config SENSORS_F71882FG
367 will be called f71882fg. 367 will be called f71882fg.
368 368
369config SENSORS_F75375S 369config SENSORS_F75375S
370 tristate "Fintek F75375S/SP and F75373" 370 tristate "Fintek F75375S/SP, F75373 and F75387"
371 depends on I2C 371 depends on I2C
372 help 372 help
373 If you say yes here you get support for hardware monitoring 373 If you say yes here you get support for hardware monitoring
374 features of the Fintek F75375S/SP and F75373 374 features of the Fintek F75375S/SP, F75373 and F75387
375 375
376 This driver can also be built as a module. If so, the module 376 This driver can also be built as a module. If so, the module
377 will be called f75375s. 377 will be called f75375s.
diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
index 66f67293341e..522860ab6ce8 100644
--- a/drivers/hwmon/acpi_power_meter.c
+++ b/drivers/hwmon/acpi_power_meter.c
@@ -170,7 +170,7 @@ static ssize_t set_avg_interval(struct device *dev,
170 unsigned long long data; 170 unsigned long long data;
171 acpi_status status; 171 acpi_status status;
172 172
173 res = strict_strtoul(buf, 10, &temp); 173 res = kstrtoul(buf, 10, &temp);
174 if (res) 174 if (res)
175 return res; 175 return res;
176 176
@@ -241,7 +241,7 @@ static ssize_t set_cap(struct device *dev, struct device_attribute *devattr,
241 unsigned long long data; 241 unsigned long long data;
242 acpi_status status; 242 acpi_status status;
243 243
244 res = strict_strtoul(buf, 10, &temp); 244 res = kstrtoul(buf, 10, &temp);
245 if (res) 245 if (res)
246 return res; 246 return res;
247 247
@@ -311,7 +311,7 @@ static ssize_t set_trip(struct device *dev, struct device_attribute *devattr,
311 int res; 311 int res;
312 unsigned long temp; 312 unsigned long temp;
313 313
314 res = strict_strtoul(buf, 10, &temp); 314 res = kstrtoul(buf, 10, &temp);
315 if (res) 315 if (res)
316 return res; 316 return res;
317 317
diff --git a/drivers/hwmon/adcxx.c b/drivers/hwmon/adcxx.c
index b2cacbe707a8..ceb24a365176 100644
--- a/drivers/hwmon/adcxx.c
+++ b/drivers/hwmon/adcxx.c
@@ -125,7 +125,7 @@ static ssize_t adcxx_set_max(struct device *dev,
125 struct adcxx *adc = spi_get_drvdata(spi); 125 struct adcxx *adc = spi_get_drvdata(spi);
126 unsigned long value; 126 unsigned long value;
127 127
128 if (strict_strtoul(buf, 10, &value)) 128 if (kstrtoul(buf, 10, &value))
129 return -EINVAL; 129 return -EINVAL;
130 130
131 if (mutex_lock_interruptible(&adc->lock)) 131 if (mutex_lock_interruptible(&adc->lock))
diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c
index 0683e6be662c..e6291dafa4ca 100644
--- a/drivers/hwmon/adm1031.c
+++ b/drivers/hwmon/adm1031.c
@@ -767,7 +767,7 @@ static ssize_t set_update_interval(struct device *dev,
767 int i, err; 767 int i, err;
768 u8 reg; 768 u8 reg;
769 769
770 err = strict_strtoul(buf, 10, &val); 770 err = kstrtoul(buf, 10, &val);
771 if (err) 771 if (err)
772 return err; 772 return err;
773 773
diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c
index 9e234b981b83..3f63f5f9741d 100644
--- a/drivers/hwmon/adm9240.c
+++ b/drivers/hwmon/adm9240.c
@@ -503,7 +503,7 @@ static ssize_t chassis_clear(struct device *dev,
503 struct adm9240_data *data = i2c_get_clientdata(client); 503 struct adm9240_data *data = i2c_get_clientdata(client);
504 unsigned long val; 504 unsigned long val;
505 505
506 if (strict_strtoul(buf, 10, &val) || val != 0) 506 if (kstrtoul(buf, 10, &val) || val != 0)
507 return -EINVAL; 507 return -EINVAL;
508 508
509 mutex_lock(&data->update_lock); 509 mutex_lock(&data->update_lock);
diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c
index 5cc3e3784b42..5b02f7a91018 100644
--- a/drivers/hwmon/adt7411.c
+++ b/drivers/hwmon/adt7411.c
@@ -197,7 +197,7 @@ static ssize_t adt7411_set_bit(struct device *dev,
197 int ret; 197 int ret;
198 unsigned long flag; 198 unsigned long flag;
199 199
200 ret = strict_strtoul(buf, 0, &flag); 200 ret = kstrtoul(buf, 0, &flag);
201 if (ret || flag > 1) 201 if (ret || flag > 1)
202 return -EINVAL; 202 return -EINVAL;
203 203
diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c
index 2af0c7b6b4e4..7a1494846cfd 100644
--- a/drivers/hwmon/adt7462.c
+++ b/drivers/hwmon/adt7462.c
@@ -833,7 +833,7 @@ static ssize_t set_temp_min(struct device *dev,
833 struct adt7462_data *data = i2c_get_clientdata(client); 833 struct adt7462_data *data = i2c_get_clientdata(client);
834 long temp; 834 long temp;
835 835
836 if (strict_strtol(buf, 10, &temp) || !temp_enabled(data, attr->index)) 836 if (kstrtol(buf, 10, &temp) || !temp_enabled(data, attr->index))
837 return -EINVAL; 837 return -EINVAL;
838 838
839 temp = DIV_ROUND_CLOSEST(temp, 1000) + 64; 839 temp = DIV_ROUND_CLOSEST(temp, 1000) + 64;
@@ -871,7 +871,7 @@ static ssize_t set_temp_max(struct device *dev,
871 struct adt7462_data *data = i2c_get_clientdata(client); 871 struct adt7462_data *data = i2c_get_clientdata(client);
872 long temp; 872 long temp;
873 873
874 if (strict_strtol(buf, 10, &temp) || !temp_enabled(data, attr->index)) 874 if (kstrtol(buf, 10, &temp) || !temp_enabled(data, attr->index))
875 return -EINVAL; 875 return -EINVAL;
876 876
877 temp = DIV_ROUND_CLOSEST(temp, 1000) + 64; 877 temp = DIV_ROUND_CLOSEST(temp, 1000) + 64;
@@ -935,7 +935,7 @@ static ssize_t set_volt_max(struct device *dev,
935 int x = voltage_multiplier(data, attr->index); 935 int x = voltage_multiplier(data, attr->index);
936 long temp; 936 long temp;
937 937
938 if (strict_strtol(buf, 10, &temp) || !x) 938 if (kstrtol(buf, 10, &temp) || !x)
939 return -EINVAL; 939 return -EINVAL;
940 940
941 temp *= 1000; /* convert mV to uV */ 941 temp *= 1000; /* convert mV to uV */
@@ -977,7 +977,7 @@ static ssize_t set_volt_min(struct device *dev,
977 int x = voltage_multiplier(data, attr->index); 977 int x = voltage_multiplier(data, attr->index);
978 long temp; 978 long temp;
979 979
980 if (strict_strtol(buf, 10, &temp) || !x) 980 if (kstrtol(buf, 10, &temp) || !x)
981 return -EINVAL; 981 return -EINVAL;
982 982
983 temp *= 1000; /* convert mV to uV */ 983 temp *= 1000; /* convert mV to uV */
@@ -1066,7 +1066,7 @@ static ssize_t set_fan_min(struct device *dev,
1066 struct adt7462_data *data = i2c_get_clientdata(client); 1066 struct adt7462_data *data = i2c_get_clientdata(client);
1067 long temp; 1067 long temp;
1068 1068
1069 if (strict_strtol(buf, 10, &temp) || !temp || 1069 if (kstrtol(buf, 10, &temp) || !temp ||
1070 !fan_enabled(data, attr->index)) 1070 !fan_enabled(data, attr->index))
1071 return -EINVAL; 1071 return -EINVAL;
1072 1072
@@ -1115,7 +1115,7 @@ static ssize_t set_force_pwm_max(struct device *dev,
1115 long temp; 1115 long temp;
1116 u8 reg; 1116 u8 reg;
1117 1117
1118 if (strict_strtol(buf, 10, &temp)) 1118 if (kstrtol(buf, 10, &temp))
1119 return -EINVAL; 1119 return -EINVAL;
1120 1120
1121 mutex_lock(&data->lock); 1121 mutex_lock(&data->lock);
@@ -1147,7 +1147,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr,
1147 struct adt7462_data *data = i2c_get_clientdata(client); 1147 struct adt7462_data *data = i2c_get_clientdata(client);
1148 long temp; 1148 long temp;
1149 1149
1150 if (strict_strtol(buf, 10, &temp)) 1150 if (kstrtol(buf, 10, &temp))
1151 return -EINVAL; 1151 return -EINVAL;
1152 1152
1153 temp = SENSORS_LIMIT(temp, 0, 255); 1153 temp = SENSORS_LIMIT(temp, 0, 255);
@@ -1177,7 +1177,7 @@ static ssize_t set_pwm_max(struct device *dev,
1177 struct adt7462_data *data = i2c_get_clientdata(client); 1177 struct adt7462_data *data = i2c_get_clientdata(client);
1178 long temp; 1178 long temp;
1179 1179
1180 if (strict_strtol(buf, 10, &temp)) 1180 if (kstrtol(buf, 10, &temp))
1181 return -EINVAL; 1181 return -EINVAL;
1182 1182
1183 temp = SENSORS_LIMIT(temp, 0, 255); 1183 temp = SENSORS_LIMIT(temp, 0, 255);
@@ -1209,7 +1209,7 @@ static ssize_t set_pwm_min(struct device *dev,
1209 struct adt7462_data *data = i2c_get_clientdata(client); 1209 struct adt7462_data *data = i2c_get_clientdata(client);
1210 long temp; 1210 long temp;
1211 1211
1212 if (strict_strtol(buf, 10, &temp)) 1212 if (kstrtol(buf, 10, &temp))
1213 return -EINVAL; 1213 return -EINVAL;
1214 1214
1215 temp = SENSORS_LIMIT(temp, 0, 255); 1215 temp = SENSORS_LIMIT(temp, 0, 255);
@@ -1243,7 +1243,7 @@ static ssize_t set_pwm_hyst(struct device *dev,
1243 struct adt7462_data *data = i2c_get_clientdata(client); 1243 struct adt7462_data *data = i2c_get_clientdata(client);
1244 long temp; 1244 long temp;
1245 1245
1246 if (strict_strtol(buf, 10, &temp)) 1246 if (kstrtol(buf, 10, &temp))
1247 return -EINVAL; 1247 return -EINVAL;
1248 1248
1249 temp = DIV_ROUND_CLOSEST(temp, 1000); 1249 temp = DIV_ROUND_CLOSEST(temp, 1000);
@@ -1289,7 +1289,7 @@ static ssize_t set_pwm_tmax(struct device *dev,
1289 int tmin, trange_value; 1289 int tmin, trange_value;
1290 long trange; 1290 long trange;
1291 1291
1292 if (strict_strtol(buf, 10, &trange)) 1292 if (kstrtol(buf, 10, &trange))
1293 return -EINVAL; 1293 return -EINVAL;
1294 1294
1295 /* trange = tmax - tmin */ 1295 /* trange = tmax - tmin */
@@ -1330,7 +1330,7 @@ static ssize_t set_pwm_tmin(struct device *dev,
1330 struct adt7462_data *data = i2c_get_clientdata(client); 1330 struct adt7462_data *data = i2c_get_clientdata(client);
1331 long temp; 1331 long temp;
1332 1332
1333 if (strict_strtol(buf, 10, &temp)) 1333 if (kstrtol(buf, 10, &temp))
1334 return -EINVAL; 1334 return -EINVAL;
1335 1335
1336 temp = DIV_ROUND_CLOSEST(temp, 1000) + 64; 1336 temp = DIV_ROUND_CLOSEST(temp, 1000) + 64;
@@ -1387,7 +1387,7 @@ static ssize_t set_pwm_auto(struct device *dev,
1387 struct adt7462_data *data = i2c_get_clientdata(client); 1387 struct adt7462_data *data = i2c_get_clientdata(client);
1388 long temp; 1388 long temp;
1389 1389
1390 if (strict_strtol(buf, 10, &temp)) 1390 if (kstrtol(buf, 10, &temp))
1391 return -EINVAL; 1391 return -EINVAL;
1392 1392
1393 switch (temp) { 1393 switch (temp) {
@@ -1446,7 +1446,7 @@ static ssize_t set_pwm_auto_temp(struct device *dev,
1446 struct adt7462_data *data = i2c_get_clientdata(client); 1446 struct adt7462_data *data = i2c_get_clientdata(client);
1447 long temp; 1447 long temp;
1448 1448
1449 if (strict_strtol(buf, 10, &temp)) 1449 if (kstrtol(buf, 10, &temp))
1450 return -EINVAL; 1450 return -EINVAL;
1451 1451
1452 temp = cvt_auto_temp(temp); 1452 temp = cvt_auto_temp(temp);
diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c
index c6d1ce059aea..5e10c79f2dfd 100644
--- a/drivers/hwmon/adt7470.c
+++ b/drivers/hwmon/adt7470.c
@@ -449,7 +449,7 @@ static ssize_t set_auto_update_interval(struct device *dev,
449 struct adt7470_data *data = i2c_get_clientdata(client); 449 struct adt7470_data *data = i2c_get_clientdata(client);
450 long temp; 450 long temp;
451 451
452 if (strict_strtol(buf, 10, &temp)) 452 if (kstrtol(buf, 10, &temp))
453 return -EINVAL; 453 return -EINVAL;
454 454
455 temp = SENSORS_LIMIT(temp, 0, 60000); 455 temp = SENSORS_LIMIT(temp, 0, 60000);
@@ -478,7 +478,7 @@ static ssize_t set_num_temp_sensors(struct device *dev,
478 struct adt7470_data *data = i2c_get_clientdata(client); 478 struct adt7470_data *data = i2c_get_clientdata(client);
479 long temp; 479 long temp;
480 480
481 if (strict_strtol(buf, 10, &temp)) 481 if (kstrtol(buf, 10, &temp))
482 return -EINVAL; 482 return -EINVAL;
483 483
484 temp = SENSORS_LIMIT(temp, -1, 10); 484 temp = SENSORS_LIMIT(temp, -1, 10);
@@ -511,7 +511,7 @@ static ssize_t set_temp_min(struct device *dev,
511 struct adt7470_data *data = i2c_get_clientdata(client); 511 struct adt7470_data *data = i2c_get_clientdata(client);
512 long temp; 512 long temp;
513 513
514 if (strict_strtol(buf, 10, &temp)) 514 if (kstrtol(buf, 10, &temp))
515 return -EINVAL; 515 return -EINVAL;
516 516
517 temp = DIV_ROUND_CLOSEST(temp, 1000); 517 temp = DIV_ROUND_CLOSEST(temp, 1000);
@@ -545,7 +545,7 @@ static ssize_t set_temp_max(struct device *dev,
545 struct adt7470_data *data = i2c_get_clientdata(client); 545 struct adt7470_data *data = i2c_get_clientdata(client);
546 long temp; 546 long temp;
547 547
548 if (strict_strtol(buf, 10, &temp)) 548 if (kstrtol(buf, 10, &temp))
549 return -EINVAL; 549 return -EINVAL;
550 550
551 temp = DIV_ROUND_CLOSEST(temp, 1000); 551 temp = DIV_ROUND_CLOSEST(temp, 1000);
@@ -600,7 +600,7 @@ static ssize_t set_fan_max(struct device *dev,
600 struct adt7470_data *data = i2c_get_clientdata(client); 600 struct adt7470_data *data = i2c_get_clientdata(client);
601 long temp; 601 long temp;
602 602
603 if (strict_strtol(buf, 10, &temp) || !temp) 603 if (kstrtol(buf, 10, &temp) || !temp)
604 return -EINVAL; 604 return -EINVAL;
605 605
606 temp = FAN_RPM_TO_PERIOD(temp); 606 temp = FAN_RPM_TO_PERIOD(temp);
@@ -637,7 +637,7 @@ static ssize_t set_fan_min(struct device *dev,
637 struct adt7470_data *data = i2c_get_clientdata(client); 637 struct adt7470_data *data = i2c_get_clientdata(client);
638 long temp; 638 long temp;
639 639
640 if (strict_strtol(buf, 10, &temp) || !temp) 640 if (kstrtol(buf, 10, &temp) || !temp)
641 return -EINVAL; 641 return -EINVAL;
642 642
643 temp = FAN_RPM_TO_PERIOD(temp); 643 temp = FAN_RPM_TO_PERIOD(temp);
@@ -682,7 +682,7 @@ static ssize_t set_force_pwm_max(struct device *dev,
682 long temp; 682 long temp;
683 u8 reg; 683 u8 reg;
684 684
685 if (strict_strtol(buf, 10, &temp)) 685 if (kstrtol(buf, 10, &temp))
686 return -EINVAL; 686 return -EINVAL;
687 687
688 mutex_lock(&data->lock); 688 mutex_lock(&data->lock);
@@ -714,7 +714,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr,
714 struct adt7470_data *data = i2c_get_clientdata(client); 714 struct adt7470_data *data = i2c_get_clientdata(client);
715 long temp; 715 long temp;
716 716
717 if (strict_strtol(buf, 10, &temp)) 717 if (kstrtol(buf, 10, &temp))
718 return -EINVAL; 718 return -EINVAL;
719 719
720 temp = SENSORS_LIMIT(temp, 0, 255); 720 temp = SENSORS_LIMIT(temp, 0, 255);
@@ -746,7 +746,7 @@ static ssize_t set_pwm_max(struct device *dev,
746 struct adt7470_data *data = i2c_get_clientdata(client); 746 struct adt7470_data *data = i2c_get_clientdata(client);
747 long temp; 747 long temp;
748 748
749 if (strict_strtol(buf, 10, &temp)) 749 if (kstrtol(buf, 10, &temp))
750 return -EINVAL; 750 return -EINVAL;
751 751
752 temp = SENSORS_LIMIT(temp, 0, 255); 752 temp = SENSORS_LIMIT(temp, 0, 255);
@@ -779,7 +779,7 @@ static ssize_t set_pwm_min(struct device *dev,
779 struct adt7470_data *data = i2c_get_clientdata(client); 779 struct adt7470_data *data = i2c_get_clientdata(client);
780 long temp; 780 long temp;
781 781
782 if (strict_strtol(buf, 10, &temp)) 782 if (kstrtol(buf, 10, &temp))
783 return -EINVAL; 783 return -EINVAL;
784 784
785 temp = SENSORS_LIMIT(temp, 0, 255); 785 temp = SENSORS_LIMIT(temp, 0, 255);
@@ -822,7 +822,7 @@ static ssize_t set_pwm_tmin(struct device *dev,
822 struct adt7470_data *data = i2c_get_clientdata(client); 822 struct adt7470_data *data = i2c_get_clientdata(client);
823 long temp; 823 long temp;
824 824
825 if (strict_strtol(buf, 10, &temp)) 825 if (kstrtol(buf, 10, &temp))
826 return -EINVAL; 826 return -EINVAL;
827 827
828 temp = DIV_ROUND_CLOSEST(temp, 1000); 828 temp = DIV_ROUND_CLOSEST(temp, 1000);
@@ -859,7 +859,7 @@ static ssize_t set_pwm_auto(struct device *dev,
859 long temp; 859 long temp;
860 u8 reg; 860 u8 reg;
861 861
862 if (strict_strtol(buf, 10, &temp)) 862 if (kstrtol(buf, 10, &temp))
863 return -EINVAL; 863 return -EINVAL;
864 864
865 if (attr->index % 2) 865 if (attr->index % 2)
@@ -919,7 +919,7 @@ static ssize_t set_pwm_auto_temp(struct device *dev,
919 long temp; 919 long temp;
920 u8 reg; 920 u8 reg;
921 921
922 if (strict_strtol(buf, 10, &temp)) 922 if (kstrtol(buf, 10, &temp))
923 return -EINVAL; 923 return -EINVAL;
924 924
925 temp = cvt_auto_temp(temp); 925 temp = cvt_auto_temp(temp);
diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
index b5fcd87931cb..7dab3547fee5 100644
--- a/drivers/hwmon/adt7475.c
+++ b/drivers/hwmon/adt7475.c
@@ -343,7 +343,7 @@ static ssize_t set_voltage(struct device *dev, struct device_attribute *attr,
343 unsigned char reg; 343 unsigned char reg;
344 long val; 344 long val;
345 345
346 if (strict_strtol(buf, 10, &val)) 346 if (kstrtol(buf, 10, &val))
347 return -EINVAL; 347 return -EINVAL;
348 348
349 mutex_lock(&data->lock); 349 mutex_lock(&data->lock);
@@ -432,7 +432,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *attr,
432 int temp; 432 int temp;
433 long val; 433 long val;
434 434
435 if (strict_strtol(buf, 10, &val)) 435 if (kstrtol(buf, 10, &val))
436 return -EINVAL; 436 return -EINVAL;
437 437
438 mutex_lock(&data->lock); 438 mutex_lock(&data->lock);
@@ -546,7 +546,7 @@ static ssize_t set_point2(struct device *dev, struct device_attribute *attr,
546 int temp; 546 int temp;
547 long val; 547 long val;
548 548
549 if (strict_strtol(buf, 10, &val)) 549 if (kstrtol(buf, 10, &val))
550 return -EINVAL; 550 return -EINVAL;
551 551
552 mutex_lock(&data->lock); 552 mutex_lock(&data->lock);
@@ -602,7 +602,7 @@ static ssize_t set_tach(struct device *dev, struct device_attribute *attr,
602 struct adt7475_data *data = i2c_get_clientdata(client); 602 struct adt7475_data *data = i2c_get_clientdata(client);
603 unsigned long val; 603 unsigned long val;
604 604
605 if (strict_strtoul(buf, 10, &val)) 605 if (kstrtoul(buf, 10, &val))
606 return -EINVAL; 606 return -EINVAL;
607 607
608 mutex_lock(&data->lock); 608 mutex_lock(&data->lock);
@@ -653,7 +653,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
653 unsigned char reg = 0; 653 unsigned char reg = 0;
654 long val; 654 long val;
655 655
656 if (strict_strtol(buf, 10, &val)) 656 if (kstrtol(buf, 10, &val))
657 return -EINVAL; 657 return -EINVAL;
658 658
659 mutex_lock(&data->lock); 659 mutex_lock(&data->lock);
@@ -758,7 +758,7 @@ static ssize_t set_pwmchan(struct device *dev, struct device_attribute *attr,
758 int r; 758 int r;
759 long val; 759 long val;
760 760
761 if (strict_strtol(buf, 10, &val)) 761 if (kstrtol(buf, 10, &val))
762 return -EINVAL; 762 return -EINVAL;
763 763
764 mutex_lock(&data->lock); 764 mutex_lock(&data->lock);
@@ -781,7 +781,7 @@ static ssize_t set_pwmctrl(struct device *dev, struct device_attribute *attr,
781 int r; 781 int r;
782 long val; 782 long val;
783 783
784 if (strict_strtol(buf, 10, &val)) 784 if (kstrtol(buf, 10, &val))
785 return -EINVAL; 785 return -EINVAL;
786 786
787 mutex_lock(&data->lock); 787 mutex_lock(&data->lock);
@@ -819,7 +819,7 @@ static ssize_t set_pwmfreq(struct device *dev, struct device_attribute *attr,
819 int out; 819 int out;
820 long val; 820 long val;
821 821
822 if (strict_strtol(buf, 10, &val)) 822 if (kstrtol(buf, 10, &val))
823 return -EINVAL; 823 return -EINVAL;
824 824
825 out = find_nearest(val, pwmfreq_table, ARRAY_SIZE(pwmfreq_table)); 825 out = find_nearest(val, pwmfreq_table, ARRAY_SIZE(pwmfreq_table));
@@ -853,7 +853,7 @@ static ssize_t set_pwm_at_crit(struct device *dev,
853 struct adt7475_data *data = i2c_get_clientdata(client); 853 struct adt7475_data *data = i2c_get_clientdata(client);
854 long val; 854 long val;
855 855
856 if (strict_strtol(buf, 10, &val)) 856 if (kstrtol(buf, 10, &val))
857 return -EINVAL; 857 return -EINVAL;
858 if (val != 0 && val != 1) 858 if (val != 0 && val != 1)
859 return -EINVAL; 859 return -EINVAL;
@@ -883,7 +883,7 @@ static ssize_t set_vrm(struct device *dev, struct device_attribute *devattr,
883 struct adt7475_data *data = dev_get_drvdata(dev); 883 struct adt7475_data *data = dev_get_drvdata(dev);
884 long val; 884 long val;
885 885
886 if (strict_strtol(buf, 10, &val)) 886 if (kstrtol(buf, 10, &val))
887 return -EINVAL; 887 return -EINVAL;
888 if (val < 0 || val > 255) 888 if (val < 0 || val > 255)
889 return -EINVAL; 889 return -EINVAL;
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
index 4033974d1bb3..89a6b9da0ec3 100644
--- a/drivers/hwmon/amc6821.c
+++ b/drivers/hwmon/amc6821.c
@@ -238,7 +238,7 @@ static ssize_t set_temp(
238 int ix = to_sensor_dev_attr(attr)->index; 238 int ix = to_sensor_dev_attr(attr)->index;
239 long val; 239 long val;
240 240
241 int ret = strict_strtol(buf, 10, &val); 241 int ret = kstrtol(buf, 10, &val);
242 if (ret) 242 if (ret)
243 return ret; 243 return ret;
244 val = SENSORS_LIMIT(val / 1000, -128, 127); 244 val = SENSORS_LIMIT(val / 1000, -128, 127);
@@ -327,7 +327,7 @@ static ssize_t set_pwm1(
327 struct i2c_client *client = to_i2c_client(dev); 327 struct i2c_client *client = to_i2c_client(dev);
328 struct amc6821_data *data = i2c_get_clientdata(client); 328 struct amc6821_data *data = i2c_get_clientdata(client);
329 long val; 329 long val;
330 int ret = strict_strtol(buf, 10, &val); 330 int ret = kstrtol(buf, 10, &val);
331 if (ret) 331 if (ret)
332 return ret; 332 return ret;
333 333
@@ -356,7 +356,7 @@ static ssize_t set_pwm1_enable(
356 struct i2c_client *client = to_i2c_client(dev); 356 struct i2c_client *client = to_i2c_client(dev);
357 struct amc6821_data *data = i2c_get_clientdata(client); 357 struct amc6821_data *data = i2c_get_clientdata(client);
358 long val; 358 long val;
359 int config = strict_strtol(buf, 10, &val); 359 int config = kstrtol(buf, 10, &val);
360 if (config) 360 if (config)
361 return config; 361 return config;
362 362
@@ -477,7 +477,7 @@ static ssize_t set_temp_auto_point_temp(
477 u8 reg; 477 u8 reg;
478 int dpwm; 478 int dpwm;
479 long val; 479 long val;
480 int ret = strict_strtol(buf, 10, &val); 480 int ret = kstrtol(buf, 10, &val);
481 if (ret) 481 if (ret)
482 return ret; 482 return ret;
483 483
@@ -556,7 +556,7 @@ static ssize_t set_pwm1_auto_point_pwm(
556 struct amc6821_data *data = i2c_get_clientdata(client); 556 struct amc6821_data *data = i2c_get_clientdata(client);
557 int dpwm; 557 int dpwm;
558 long val; 558 long val;
559 int ret = strict_strtol(buf, 10, &val); 559 int ret = kstrtol(buf, 10, &val);
560 if (ret) 560 if (ret)
561 return ret; 561 return ret;
562 562
@@ -623,7 +623,7 @@ static ssize_t set_fan(
623 struct amc6821_data *data = i2c_get_clientdata(client); 623 struct amc6821_data *data = i2c_get_clientdata(client);
624 long val; 624 long val;
625 int ix = to_sensor_dev_attr(attr)->index; 625 int ix = to_sensor_dev_attr(attr)->index;
626 int ret = strict_strtol(buf, 10, &val); 626 int ret = kstrtol(buf, 10, &val);
627 if (ret) 627 if (ret)
628 return ret; 628 return ret;
629 val = 1 > val ? 0xFFFF : 6000000/val; 629 val = 1 > val ? 0xFFFF : 6000000/val;
@@ -665,7 +665,7 @@ static ssize_t set_fan1_div(
665 struct i2c_client *client = to_i2c_client(dev); 665 struct i2c_client *client = to_i2c_client(dev);
666 struct amc6821_data *data = i2c_get_clientdata(client); 666 struct amc6821_data *data = i2c_get_clientdata(client);
667 long val; 667 long val;
668 int config = strict_strtol(buf, 10, &val); 668 int config = kstrtol(buf, 10, &val);
669 if (config) 669 if (config)
670 return config; 670 return config;
671 671
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
index 4c0743660e9c..b9895531240d 100644
--- a/drivers/hwmon/applesmc.c
+++ b/drivers/hwmon/applesmc.c
@@ -782,7 +782,7 @@ static ssize_t applesmc_store_fan_speed(struct device *dev,
782 char newkey[5]; 782 char newkey[5];
783 u8 buffer[2]; 783 u8 buffer[2];
784 784
785 if (strict_strtoul(sysfsbuf, 10, &speed) < 0 || speed >= 0x4000) 785 if (kstrtoul(sysfsbuf, 10, &speed) < 0 || speed >= 0x4000)
786 return -EINVAL; /* Bigger than a 14-bit value */ 786 return -EINVAL; /* Bigger than a 14-bit value */
787 787
788 sprintf(newkey, fan_speed_fmt[to_option(attr)], to_index(attr)); 788 sprintf(newkey, fan_speed_fmt[to_option(attr)], to_index(attr));
@@ -822,7 +822,7 @@ static ssize_t applesmc_store_fan_manual(struct device *dev,
822 unsigned long input; 822 unsigned long input;
823 u16 val; 823 u16 val;
824 824
825 if (strict_strtoul(sysfsbuf, 10, &input) < 0) 825 if (kstrtoul(sysfsbuf, 10, &input) < 0)
826 return -EINVAL; 826 return -EINVAL;
827 827
828 ret = applesmc_read_key(FANS_MANUAL, buffer, 2); 828 ret = applesmc_read_key(FANS_MANUAL, buffer, 2);
@@ -977,7 +977,7 @@ static ssize_t applesmc_key_at_index_store(struct device *dev,
977{ 977{
978 unsigned long newkey; 978 unsigned long newkey;
979 979
980 if (strict_strtoul(sysfsbuf, 10, &newkey) < 0 980 if (kstrtoul(sysfsbuf, 10, &newkey) < 0
981 || newkey >= smcreg.key_count) 981 || newkey >= smcreg.key_count)
982 return -EINVAL; 982 return -EINVAL;
983 983
diff --git a/drivers/hwmon/asc7621.c b/drivers/hwmon/asc7621.c
index d2596cec18b5..3efd32449982 100644
--- a/drivers/hwmon/asc7621.c
+++ b/drivers/hwmon/asc7621.c
@@ -188,7 +188,7 @@ static ssize_t store_u8(struct device *dev, struct device_attribute *attr,
188 SETUP_STORE_data_param(dev, attr); 188 SETUP_STORE_data_param(dev, attr);
189 long reqval; 189 long reqval;
190 190
191 if (strict_strtol(buf, 10, &reqval)) 191 if (kstrtol(buf, 10, &reqval))
192 return -EINVAL; 192 return -EINVAL;
193 193
194 reqval = SENSORS_LIMIT(reqval, 0, 255); 194 reqval = SENSORS_LIMIT(reqval, 0, 255);
@@ -221,7 +221,7 @@ static ssize_t store_bitmask(struct device *dev,
221 long reqval; 221 long reqval;
222 u8 currval; 222 u8 currval;
223 223
224 if (strict_strtol(buf, 10, &reqval)) 224 if (kstrtol(buf, 10, &reqval))
225 return -EINVAL; 225 return -EINVAL;
226 226
227 reqval = SENSORS_LIMIT(reqval, 0, param->mask[0]); 227 reqval = SENSORS_LIMIT(reqval, 0, param->mask[0]);
@@ -265,7 +265,7 @@ static ssize_t store_fan16(struct device *dev,
265 SETUP_STORE_data_param(dev, attr); 265 SETUP_STORE_data_param(dev, attr);
266 long reqval; 266 long reqval;
267 267
268 if (strict_strtol(buf, 10, &reqval)) 268 if (kstrtol(buf, 10, &reqval))
269 return -EINVAL; 269 return -EINVAL;
270 270
271 /* If a minimum RPM of zero is requested, then we set the register to 271 /* If a minimum RPM of zero is requested, then we set the register to
@@ -338,7 +338,7 @@ static ssize_t store_in8(struct device *dev, struct device_attribute *attr,
338 long reqval; 338 long reqval;
339 u8 nr = sda->index; 339 u8 nr = sda->index;
340 340
341 if (strict_strtol(buf, 10, &reqval)) 341 if (kstrtol(buf, 10, &reqval))
342 return -EINVAL; 342 return -EINVAL;
343 343
344 reqval = SENSORS_LIMIT(reqval, 0, 0xffff); 344 reqval = SENSORS_LIMIT(reqval, 0, 0xffff);
@@ -371,7 +371,7 @@ static ssize_t store_temp8(struct device *dev,
371 long reqval; 371 long reqval;
372 s8 temp; 372 s8 temp;
373 373
374 if (strict_strtol(buf, 10, &reqval)) 374 if (kstrtol(buf, 10, &reqval))
375 return -EINVAL; 375 return -EINVAL;
376 376
377 reqval = SENSORS_LIMIT(reqval, -127000, 127000); 377 reqval = SENSORS_LIMIT(reqval, -127000, 127000);
@@ -427,7 +427,7 @@ static ssize_t store_temp62(struct device *dev,
427 long reqval, i, f; 427 long reqval, i, f;
428 s8 temp; 428 s8 temp;
429 429
430 if (strict_strtol(buf, 10, &reqval)) 430 if (kstrtol(buf, 10, &reqval))
431 return -EINVAL; 431 return -EINVAL;
432 432
433 reqval = SENSORS_LIMIT(reqval, -32000, 31750); 433 reqval = SENSORS_LIMIT(reqval, -32000, 31750);
@@ -482,7 +482,7 @@ static ssize_t store_ap2_temp(struct device *dev,
482 int i; 482 int i;
483 u8 currval, newval = 0; 483 u8 currval, newval = 0;
484 484
485 if (strict_strtol(buf, 10, &reqval)) 485 if (kstrtol(buf, 10, &reqval))
486 return -EINVAL; 486 return -EINVAL;
487 487
488 mutex_lock(&data->update_lock); 488 mutex_lock(&data->update_lock);
@@ -538,7 +538,7 @@ static ssize_t store_pwm_ac(struct device *dev,
538 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 538 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
539 }; 539 };
540 540
541 if (strict_strtoul(buf, 10, &reqval)) 541 if (kstrtoul(buf, 10, &reqval))
542 return -EINVAL; 542 return -EINVAL;
543 543
544 if (reqval > 31) 544 if (reqval > 31)
@@ -601,7 +601,7 @@ static ssize_t store_pwm_enable(struct device *dev,
601 long reqval; 601 long reqval;
602 u8 currval, config, altbit, newval, minoff = 255; 602 u8 currval, config, altbit, newval, minoff = 255;
603 603
604 if (strict_strtol(buf, 10, &reqval)) 604 if (kstrtol(buf, 10, &reqval))
605 return -EINVAL; 605 return -EINVAL;
606 606
607 switch (reqval) { 607 switch (reqval) {
@@ -675,7 +675,7 @@ static ssize_t store_pwm_freq(struct device *dev,
675 u8 currval, newval = 255; 675 u8 currval, newval = 255;
676 int i; 676 int i;
677 677
678 if (strict_strtoul(buf, 10, &reqval)) 678 if (kstrtoul(buf, 10, &reqval))
679 return -EINVAL; 679 return -EINVAL;
680 680
681 for (i = 0; i < ARRAY_SIZE(asc7621_pwm_freq_map); i++) { 681 for (i = 0; i < ARRAY_SIZE(asc7621_pwm_freq_map); i++) {
@@ -724,7 +724,7 @@ static ssize_t store_pwm_ast(struct device *dev,
724 u8 currval, newval = 255; 724 u8 currval, newval = 255;
725 u32 i; 725 u32 i;
726 726
727 if (strict_strtol(buf, 10, &reqval)) 727 if (kstrtol(buf, 10, &reqval))
728 return -EINVAL; 728 return -EINVAL;
729 729
730 for (i = 0; i < ARRAY_SIZE(asc7621_pwm_auto_spinup_map); i++) { 730 for (i = 0; i < ARRAY_SIZE(asc7621_pwm_auto_spinup_map); i++) {
@@ -771,7 +771,7 @@ static ssize_t store_temp_st(struct device *dev,
771 u8 currval, newval = 255; 771 u8 currval, newval = 255;
772 u32 i; 772 u32 i;
773 773
774 if (strict_strtol(buf, 10, &reqval)) 774 if (kstrtol(buf, 10, &reqval))
775 return -EINVAL; 775 return -EINVAL;
776 776
777 for (i = 0; i < ARRAY_SIZE(asc7621_temp_smoothing_time_map); i++) { 777 for (i = 0; i < ARRAY_SIZE(asc7621_temp_smoothing_time_map); i++) {
diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c
index 225ae4f36583..300c3d4d67df 100644
--- a/drivers/hwmon/ds620.c
+++ b/drivers/hwmon/ds620.c
@@ -161,7 +161,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *da,
161 struct i2c_client *client = to_i2c_client(dev); 161 struct i2c_client *client = to_i2c_client(dev);
162 struct ds620_data *data = i2c_get_clientdata(client); 162 struct ds620_data *data = i2c_get_clientdata(client);
163 163
164 res = strict_strtol(buf, 10, &val); 164 res = kstrtol(buf, 10, &val);
165 165
166 if (res) 166 if (res)
167 return res; 167 return res;
diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c
index cd2a6e437aec..270ffab711cb 100644
--- a/drivers/hwmon/emc1403.c
+++ b/drivers/hwmon/emc1403.c
@@ -80,7 +80,7 @@ static ssize_t store_temp(struct device *dev,
80 unsigned long val; 80 unsigned long val;
81 int retval; 81 int retval;
82 82
83 if (strict_strtoul(buf, 10, &val)) 83 if (kstrtoul(buf, 10, &val))
84 return -EINVAL; 84 return -EINVAL;
85 retval = i2c_smbus_write_byte_data(client, sda->index, 85 retval = i2c_smbus_write_byte_data(client, sda->index,
86 DIV_ROUND_CLOSEST(val, 1000)); 86 DIV_ROUND_CLOSEST(val, 1000));
@@ -98,7 +98,7 @@ static ssize_t store_bit(struct device *dev,
98 unsigned long val; 98 unsigned long val;
99 int retval; 99 int retval;
100 100
101 if (strict_strtoul(buf, 10, &val)) 101 if (kstrtoul(buf, 10, &val))
102 return -EINVAL; 102 return -EINVAL;
103 103
104 mutex_lock(&data->mutex); 104 mutex_lock(&data->mutex);
@@ -151,7 +151,7 @@ static ssize_t store_hyst(struct device *dev,
151 int hyst; 151 int hyst;
152 unsigned long val; 152 unsigned long val;
153 153
154 if (strict_strtoul(buf, 10, &val)) 154 if (kstrtoul(buf, 10, &val))
155 return -EINVAL; 155 return -EINVAL;
156 156
157 mutex_lock(&data->mutex); 157 mutex_lock(&data->mutex);
diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c
index af914ad93ece..848a2b0bc83f 100644
--- a/drivers/hwmon/emc2103.c
+++ b/drivers/hwmon/emc2103.c
@@ -244,7 +244,7 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *da,
244 struct emc2103_data *data = i2c_get_clientdata(client); 244 struct emc2103_data *data = i2c_get_clientdata(client);
245 long val; 245 long val;
246 246
247 int result = strict_strtol(buf, 10, &val); 247 int result = kstrtol(buf, 10, &val);
248 if (result < 0) 248 if (result < 0)
249 return -EINVAL; 249 return -EINVAL;
250 250
@@ -268,7 +268,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *da,
268 struct emc2103_data *data = i2c_get_clientdata(client); 268 struct emc2103_data *data = i2c_get_clientdata(client);
269 long val; 269 long val;
270 270
271 int result = strict_strtol(buf, 10, &val); 271 int result = kstrtol(buf, 10, &val);
272 if (result < 0) 272 if (result < 0)
273 return -EINVAL; 273 return -EINVAL;
274 274
@@ -314,7 +314,7 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *da,
314 int new_range_bits, old_div = 8 / data->fan_multiplier; 314 int new_range_bits, old_div = 8 / data->fan_multiplier;
315 long new_div; 315 long new_div;
316 316
317 int status = strict_strtol(buf, 10, &new_div); 317 int status = kstrtol(buf, 10, &new_div);
318 if (status < 0) 318 if (status < 0)
319 return -EINVAL; 319 return -EINVAL;
320 320
@@ -388,7 +388,7 @@ static ssize_t set_fan_target(struct device *dev, struct device_attribute *da,
388 struct i2c_client *client = to_i2c_client(dev); 388 struct i2c_client *client = to_i2c_client(dev);
389 long rpm_target; 389 long rpm_target;
390 390
391 int result = strict_strtol(buf, 10, &rpm_target); 391 int result = kstrtol(buf, 10, &rpm_target);
392 if (result < 0) 392 if (result < 0)
393 return -EINVAL; 393 return -EINVAL;
394 394
@@ -434,7 +434,7 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute *da,
434 long new_value; 434 long new_value;
435 u8 conf_reg; 435 u8 conf_reg;
436 436
437 int result = strict_strtol(buf, 10, &new_value); 437 int result = kstrtol(buf, 10, &new_value);
438 if (result < 0) 438 if (result < 0)
439 return -EINVAL; 439 return -EINVAL;
440 440
diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c
index 0064432f361f..6ebb9b738c9c 100644
--- a/drivers/hwmon/emc6w201.c
+++ b/drivers/hwmon/emc6w201.c
@@ -212,7 +212,7 @@ static ssize_t set_in(struct device *dev, struct device_attribute *devattr,
212 long val; 212 long val;
213 u8 reg; 213 u8 reg;
214 214
215 err = strict_strtol(buf, 10, &val); 215 err = kstrtol(buf, 10, &val);
216 if (err < 0) 216 if (err < 0)
217 return err; 217 return err;
218 218
@@ -249,7 +249,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *devattr,
249 long val; 249 long val;
250 u8 reg; 250 u8 reg;
251 251
252 err = strict_strtol(buf, 10, &val); 252 err = kstrtol(buf, 10, &val);
253 if (err < 0) 253 if (err < 0)
254 return err; 254 return err;
255 255
@@ -291,7 +291,7 @@ static ssize_t set_fan(struct device *dev, struct device_attribute *devattr,
291 int err; 291 int err;
292 unsigned long val; 292 unsigned long val;
293 293
294 err = strict_strtoul(buf, 10, &val); 294 err = kstrtoul(buf, 10, &val);
295 if (err < 0) 295 if (err < 0)
296 return err; 296 return err;
297 297
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c
index 59dd881c71d8..e50305819f01 100644
--- a/drivers/hwmon/f71882fg.c
+++ b/drivers/hwmon/f71882fg.c
@@ -1333,7 +1333,7 @@ static ssize_t store_fan_full_speed(struct device *dev,
1333 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1333 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1334 long val; 1334 long val;
1335 1335
1336 err = strict_strtol(buf, 10, &val); 1336 err = kstrtol(buf, 10, &val);
1337 if (err) 1337 if (err)
1338 return err; 1338 return err;
1339 1339
@@ -1367,7 +1367,7 @@ static ssize_t store_fan_beep(struct device *dev, struct device_attribute
1367 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1367 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1368 unsigned long val; 1368 unsigned long val;
1369 1369
1370 err = strict_strtoul(buf, 10, &val); 1370 err = kstrtoul(buf, 10, &val);
1371 if (err) 1371 if (err)
1372 return err; 1372 return err;
1373 1373
@@ -1420,7 +1420,7 @@ static ssize_t store_in_max(struct device *dev, struct device_attribute
1420 int err; 1420 int err;
1421 long val; 1421 long val;
1422 1422
1423 err = strict_strtol(buf, 10, &val); 1423 err = kstrtol(buf, 10, &val);
1424 if (err) 1424 if (err)
1425 return err; 1425 return err;
1426 1426
@@ -1454,7 +1454,7 @@ static ssize_t store_in_beep(struct device *dev, struct device_attribute
1454 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1454 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1455 unsigned long val; 1455 unsigned long val;
1456 1456
1457 err = strict_strtoul(buf, 10, &val); 1457 err = kstrtoul(buf, 10, &val);
1458 if (err) 1458 if (err)
1459 return err; 1459 return err;
1460 1460
@@ -1524,7 +1524,7 @@ static ssize_t store_temp_max(struct device *dev, struct device_attribute
1524 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1524 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1525 long val; 1525 long val;
1526 1526
1527 err = strict_strtol(buf, 10, &val); 1527 err = kstrtol(buf, 10, &val);
1528 if (err) 1528 if (err)
1529 return err; 1529 return err;
1530 1530
@@ -1566,7 +1566,7 @@ static ssize_t store_temp_max_hyst(struct device *dev, struct device_attribute
1566 u8 reg; 1566 u8 reg;
1567 long val; 1567 long val;
1568 1568
1569 err = strict_strtol(buf, 10, &val); 1569 err = kstrtol(buf, 10, &val);
1570 if (err) 1570 if (err)
1571 return err; 1571 return err;
1572 1572
@@ -1609,7 +1609,7 @@ static ssize_t store_temp_crit(struct device *dev, struct device_attribute
1609 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1609 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1610 long val; 1610 long val;
1611 1611
1612 err = strict_strtol(buf, 10, &val); 1612 err = kstrtol(buf, 10, &val);
1613 if (err) 1613 if (err)
1614 return err; 1614 return err;
1615 1615
@@ -1670,7 +1670,7 @@ static ssize_t store_temp_beep(struct device *dev, struct device_attribute
1670 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1670 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1671 unsigned long val; 1671 unsigned long val;
1672 1672
1673 err = strict_strtoul(buf, 10, &val); 1673 err = kstrtoul(buf, 10, &val);
1674 if (err) 1674 if (err)
1675 return err; 1675 return err;
1676 1676
@@ -1737,7 +1737,7 @@ static ssize_t store_pwm(struct device *dev,
1737 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1737 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1738 long val; 1738 long val;
1739 1739
1740 err = strict_strtol(buf, 10, &val); 1740 err = kstrtol(buf, 10, &val);
1741 if (err) 1741 if (err)
1742 return err; 1742 return err;
1743 1743
@@ -1788,7 +1788,7 @@ static ssize_t store_simple_pwm(struct device *dev,
1788 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1788 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1789 long val; 1789 long val;
1790 1790
1791 err = strict_strtol(buf, 10, &val); 1791 err = kstrtol(buf, 10, &val);
1792 if (err) 1792 if (err)
1793 return err; 1793 return err;
1794 1794
@@ -1835,7 +1835,7 @@ static ssize_t store_pwm_enable(struct device *dev, struct device_attribute
1835 int err, nr = to_sensor_dev_attr_2(devattr)->index; 1835 int err, nr = to_sensor_dev_attr_2(devattr)->index;
1836 long val; 1836 long val;
1837 1837
1838 err = strict_strtol(buf, 10, &val); 1838 err = kstrtol(buf, 10, &val);
1839 if (err) 1839 if (err)
1840 return err; 1840 return err;
1841 1841
@@ -1915,7 +1915,7 @@ static ssize_t store_pwm_auto_point_pwm(struct device *dev,
1915 int point = to_sensor_dev_attr_2(devattr)->nr; 1915 int point = to_sensor_dev_attr_2(devattr)->nr;
1916 long val; 1916 long val;
1917 1917
1918 err = strict_strtol(buf, 10, &val); 1918 err = kstrtol(buf, 10, &val);
1919 if (err) 1919 if (err)
1920 return err; 1920 return err;
1921 1921
@@ -1969,7 +1969,7 @@ static ssize_t store_pwm_auto_point_temp_hyst(struct device *dev,
1969 u8 reg; 1969 u8 reg;
1970 long val; 1970 long val;
1971 1971
1972 err = strict_strtol(buf, 10, &val); 1972 err = kstrtol(buf, 10, &val);
1973 if (err) 1973 if (err)
1974 return err; 1974 return err;
1975 1975
@@ -2015,7 +2015,7 @@ static ssize_t store_pwm_interpolate(struct device *dev,
2015 int err, nr = to_sensor_dev_attr_2(devattr)->index; 2015 int err, nr = to_sensor_dev_attr_2(devattr)->index;
2016 unsigned long val; 2016 unsigned long val;
2017 2017
2018 err = strict_strtoul(buf, 10, &val); 2018 err = kstrtoul(buf, 10, &val);
2019 if (err) 2019 if (err)
2020 return err; 2020 return err;
2021 2021
@@ -2055,7 +2055,7 @@ static ssize_t store_pwm_auto_point_channel(struct device *dev,
2055 int err, nr = to_sensor_dev_attr_2(devattr)->index; 2055 int err, nr = to_sensor_dev_attr_2(devattr)->index;
2056 long val; 2056 long val;
2057 2057
2058 err = strict_strtol(buf, 10, &val); 2058 err = kstrtol(buf, 10, &val);
2059 if (err) 2059 if (err)
2060 return err; 2060 return err;
2061 2061
@@ -2106,7 +2106,7 @@ static ssize_t store_pwm_auto_point_temp(struct device *dev,
2106 int point = to_sensor_dev_attr_2(devattr)->nr; 2106 int point = to_sensor_dev_attr_2(devattr)->nr;
2107 long val; 2107 long val;
2108 2108
2109 err = strict_strtol(buf, 10, &val); 2109 err = kstrtol(buf, 10, &val);
2110 if (err) 2110 if (err)
2111 return err; 2111 return err;
2112 2112
diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
index 95cbfb3a7077..eedf574ab539 100644
--- a/drivers/hwmon/f75375s.c
+++ b/drivers/hwmon/f75375s.c
@@ -1,16 +1,19 @@
1/* 1/*
2 * f75375s.c - driver for the Fintek F75375/SP and F75373 2 * f75375s.c - driver for the Fintek F75375/SP, F75373 and
3 * hardware monitoring features 3 * F75387SG/RG hardware monitoring features
4 * Copyright (C) 2006-2007 Riku Voipio 4 * Copyright (C) 2006-2007 Riku Voipio
5 * 5 *
6 * Datasheets available at: 6 * Datasheets available at:
7 * 7 *
8 * f75375: 8 * f75375:
9 * http://www.fintek.com.tw/files/productfiles/F75375_V026P.pdf 9 * http://www.fintek.com.tw/files/productfiles/F75375_V026P.pdf
10 * 10 *
11 * f75373: 11 * f75373:
12 * http://www.fintek.com.tw/files/productfiles/F75373_V025P.pdf 12 * http://www.fintek.com.tw/files/productfiles/F75373_V025P.pdf
13 * 13 *
14 * f75387:
15 * http://www.fintek.com.tw/files/productfiles/F75387_V027P.pdf
16 *
14 * This program is free software; you can redistribute it and/or modify 17 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 18 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or 19 * the Free Software Foundation; either version 2 of the License, or
@@ -40,7 +43,7 @@
40/* Addresses to scan */ 43/* Addresses to scan */
41static const unsigned short normal_i2c[] = { 0x2d, 0x2e, I2C_CLIENT_END }; 44static const unsigned short normal_i2c[] = { 0x2d, 0x2e, I2C_CLIENT_END };
42 45
43enum chips { f75373, f75375 }; 46enum chips { f75373, f75375, f75387 };
44 47
45/* Fintek F75375 registers */ 48/* Fintek F75375 registers */
46#define F75375_REG_CONFIG0 0x0 49#define F75375_REG_CONFIG0 0x0
@@ -59,6 +62,7 @@ enum chips { f75373, f75375 };
59#define F75375_REG_VOLT_LOW(nr) (0x21 + (nr) * 2) 62#define F75375_REG_VOLT_LOW(nr) (0x21 + (nr) * 2)
60 63
61#define F75375_REG_TEMP(nr) (0x14 + (nr)) 64#define F75375_REG_TEMP(nr) (0x14 + (nr))
65#define F75387_REG_TEMP11_LSB(nr) (0x1a + (nr))
62#define F75375_REG_TEMP_HIGH(nr) (0x28 + (nr) * 2) 66#define F75375_REG_TEMP_HIGH(nr) (0x28 + (nr) * 2)
63#define F75375_REG_TEMP_HYST(nr) (0x29 + (nr) * 2) 67#define F75375_REG_TEMP_HYST(nr) (0x29 + (nr) * 2)
64 68
@@ -78,8 +82,11 @@ enum chips { f75373, f75375 };
78#define F75375_REG_PWM1_DROP_DUTY 0x6B 82#define F75375_REG_PWM1_DROP_DUTY 0x6B
79#define F75375_REG_PWM2_DROP_DUTY 0x6C 83#define F75375_REG_PWM2_DROP_DUTY 0x6C
80 84
81#define FAN_CTRL_LINEAR(nr) (4 + nr) 85#define F75375_FAN_CTRL_LINEAR(nr) (4 + nr)
86#define F75387_FAN_CTRL_LINEAR(nr) (1 + ((nr) * 4))
82#define FAN_CTRL_MODE(nr) (4 + ((nr) * 2)) 87#define FAN_CTRL_MODE(nr) (4 + ((nr) * 2))
88#define F75387_FAN_DUTY_MODE(nr) (2 + ((nr) * 4))
89#define F75387_FAN_MANU_MODE(nr) ((nr) * 4)
83 90
84/* 91/*
85 * Data structures and manipulation thereof 92 * Data structures and manipulation thereof
@@ -102,13 +109,18 @@ struct f75375_data {
102 u8 in_min[4]; 109 u8 in_min[4];
103 u16 fan[2]; 110 u16 fan[2];
104 u16 fan_min[2]; 111 u16 fan_min[2];
105 u16 fan_full[2]; 112 u16 fan_max[2];
106 u16 fan_exp[2]; 113 u16 fan_target[2];
107 u8 fan_timer; 114 u8 fan_timer;
108 u8 pwm[2]; 115 u8 pwm[2];
109 u8 pwm_mode[2]; 116 u8 pwm_mode[2];
110 u8 pwm_enable[2]; 117 u8 pwm_enable[2];
111 s8 temp[2]; 118 /*
119 * f75387: For remote temperature reading, it uses signed 11-bit
120 * values with LSB = 0.125 degree Celsius, left-justified in 16-bit
121 * registers. For original 8-bit temp readings, the LSB just is 0.
122 */
123 s16 temp11[2];
112 s8 temp_high[2]; 124 s8 temp_high[2];
113 s8 temp_max_hyst[2]; 125 s8 temp_max_hyst[2];
114}; 126};
@@ -122,6 +134,7 @@ static int f75375_remove(struct i2c_client *client);
122static const struct i2c_device_id f75375_id[] = { 134static const struct i2c_device_id f75375_id[] = {
123 { "f75373", f75373 }, 135 { "f75373", f75373 },
124 { "f75375", f75375 }, 136 { "f75375", f75375 },
137 { "f75387", f75387 },
125 { } 138 { }
126}; 139};
127MODULE_DEVICE_TABLE(i2c, f75375_id); 140MODULE_DEVICE_TABLE(i2c, f75375_id);
@@ -146,8 +159,8 @@ static inline int f75375_read8(struct i2c_client *client, u8 reg)
146/* in most cases, should be called while holding update_lock */ 159/* in most cases, should be called while holding update_lock */
147static inline u16 f75375_read16(struct i2c_client *client, u8 reg) 160static inline u16 f75375_read16(struct i2c_client *client, u8 reg)
148{ 161{
149 return ((i2c_smbus_read_byte_data(client, reg) << 8) 162 return (i2c_smbus_read_byte_data(client, reg) << 8)
150 | i2c_smbus_read_byte_data(client, reg + 1)); 163 | i2c_smbus_read_byte_data(client, reg + 1);
151} 164}
152 165
153static inline void f75375_write8(struct i2c_client *client, u8 reg, 166static inline void f75375_write8(struct i2c_client *client, u8 reg,
@@ -181,11 +194,11 @@ static struct f75375_data *f75375_update_device(struct device *dev)
181 f75375_read8(client, F75375_REG_TEMP_HIGH(nr)); 194 f75375_read8(client, F75375_REG_TEMP_HIGH(nr));
182 data->temp_max_hyst[nr] = 195 data->temp_max_hyst[nr] =
183 f75375_read8(client, F75375_REG_TEMP_HYST(nr)); 196 f75375_read8(client, F75375_REG_TEMP_HYST(nr));
184 data->fan_full[nr] = 197 data->fan_max[nr] =
185 f75375_read16(client, F75375_REG_FAN_FULL(nr)); 198 f75375_read16(client, F75375_REG_FAN_FULL(nr));
186 data->fan_min[nr] = 199 data->fan_min[nr] =
187 f75375_read16(client, F75375_REG_FAN_MIN(nr)); 200 f75375_read16(client, F75375_REG_FAN_MIN(nr));
188 data->fan_exp[nr] = 201 data->fan_target[nr] =
189 f75375_read16(client, F75375_REG_FAN_EXP(nr)); 202 f75375_read16(client, F75375_REG_FAN_EXP(nr));
190 data->pwm[nr] = f75375_read8(client, 203 data->pwm[nr] = f75375_read8(client,
191 F75375_REG_FAN_PWM_DUTY(nr)); 204 F75375_REG_FAN_PWM_DUTY(nr));
@@ -205,8 +218,14 @@ static struct f75375_data *f75375_update_device(struct device *dev)
205 if (time_after(jiffies, data->last_updated + 2 * HZ) 218 if (time_after(jiffies, data->last_updated + 2 * HZ)
206 || !data->valid) { 219 || !data->valid) {
207 for (nr = 0; nr < 2; nr++) { 220 for (nr = 0; nr < 2; nr++) {
208 data->temp[nr] = 221 /* assign MSB, therefore shift it by 8 bits */
209 f75375_read8(client, F75375_REG_TEMP(nr)); 222 data->temp11[nr] =
223 f75375_read8(client, F75375_REG_TEMP(nr)) << 8;
224 if (data->kind == f75387)
225 /* merge F75387's temperature LSB (11-bit) */
226 data->temp11[nr] |=
227 f75375_read8(client,
228 F75387_REG_TEMP11_LSB(nr));
210 data->fan[nr] = 229 data->fan[nr] =
211 f75375_read16(client, F75375_REG_FAN(nr)); 230 f75375_read16(client, F75375_REG_FAN(nr));
212 } 231 }
@@ -226,14 +245,14 @@ static inline u16 rpm_from_reg(u16 reg)
226{ 245{
227 if (reg == 0 || reg == 0xffff) 246 if (reg == 0 || reg == 0xffff)
228 return 0; 247 return 0;
229 return (1500000 / reg); 248 return 1500000 / reg;
230} 249}
231 250
232static inline u16 rpm_to_reg(int rpm) 251static inline u16 rpm_to_reg(int rpm)
233{ 252{
234 if (rpm < 367 || rpm > 0xffff) 253 if (rpm < 367 || rpm > 0xffff)
235 return 0xffff; 254 return 0xffff;
236 return (1500000 / rpm); 255 return 1500000 / rpm;
237} 256}
238 257
239static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr, 258static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
@@ -242,7 +261,12 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
242 int nr = to_sensor_dev_attr(attr)->index; 261 int nr = to_sensor_dev_attr(attr)->index;
243 struct i2c_client *client = to_i2c_client(dev); 262 struct i2c_client *client = to_i2c_client(dev);
244 struct f75375_data *data = i2c_get_clientdata(client); 263 struct f75375_data *data = i2c_get_clientdata(client);
245 int val = simple_strtoul(buf, NULL, 10); 264 unsigned long val;
265 int err;
266
267 err = kstrtoul(buf, 10, &val);
268 if (err < 0)
269 return err;
246 270
247 mutex_lock(&data->update_lock); 271 mutex_lock(&data->update_lock);
248 data->fan_min[nr] = rpm_to_reg(val); 272 data->fan_min[nr] = rpm_to_reg(val);
@@ -251,17 +275,22 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
251 return count; 275 return count;
252} 276}
253 277
254static ssize_t set_fan_exp(struct device *dev, struct device_attribute *attr, 278static ssize_t set_fan_target(struct device *dev, struct device_attribute *attr,
255 const char *buf, size_t count) 279 const char *buf, size_t count)
256{ 280{
257 int nr = to_sensor_dev_attr(attr)->index; 281 int nr = to_sensor_dev_attr(attr)->index;
258 struct i2c_client *client = to_i2c_client(dev); 282 struct i2c_client *client = to_i2c_client(dev);
259 struct f75375_data *data = i2c_get_clientdata(client); 283 struct f75375_data *data = i2c_get_clientdata(client);
260 int val = simple_strtoul(buf, NULL, 10); 284 unsigned long val;
285 int err;
286
287 err = kstrtoul(buf, 10, &val);
288 if (err < 0)
289 return err;
261 290
262 mutex_lock(&data->update_lock); 291 mutex_lock(&data->update_lock);
263 data->fan_exp[nr] = rpm_to_reg(val); 292 data->fan_target[nr] = rpm_to_reg(val);
264 f75375_write16(client, F75375_REG_FAN_EXP(nr), data->fan_exp[nr]); 293 f75375_write16(client, F75375_REG_FAN_EXP(nr), data->fan_target[nr]);
265 mutex_unlock(&data->update_lock); 294 mutex_unlock(&data->update_lock);
266 return count; 295 return count;
267} 296}
@@ -272,7 +301,12 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
272 int nr = to_sensor_dev_attr(attr)->index; 301 int nr = to_sensor_dev_attr(attr)->index;
273 struct i2c_client *client = to_i2c_client(dev); 302 struct i2c_client *client = to_i2c_client(dev);
274 struct f75375_data *data = i2c_get_clientdata(client); 303 struct f75375_data *data = i2c_get_clientdata(client);
275 int val = simple_strtoul(buf, NULL, 10); 304 unsigned long val;
305 int err;
306
307 err = kstrtoul(buf, 10, &val);
308 if (err < 0)
309 return err;
276 310
277 mutex_lock(&data->update_lock); 311 mutex_lock(&data->update_lock);
278 data->pwm[nr] = SENSORS_LIMIT(val, 0, 255); 312 data->pwm[nr] = SENSORS_LIMIT(val, 0, 255);
@@ -294,28 +328,54 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
294 struct f75375_data *data = i2c_get_clientdata(client); 328 struct f75375_data *data = i2c_get_clientdata(client);
295 u8 fanmode; 329 u8 fanmode;
296 330
297 if (val < 0 || val > 4) 331 if (val < 0 || val > 3)
298 return -EINVAL; 332 return -EINVAL;
299 333
300 fanmode = f75375_read8(client, F75375_REG_FAN_TIMER); 334 fanmode = f75375_read8(client, F75375_REG_FAN_TIMER);
301 fanmode &= ~(3 << FAN_CTRL_MODE(nr)); 335 if (data->kind == f75387) {
302 336 /* clear each fanX_mode bit before setting them properly */
303 switch (val) { 337 fanmode &= ~(1 << F75387_FAN_DUTY_MODE(nr));
304 case 0: /* Full speed */ 338 fanmode &= ~(1 << F75387_FAN_MANU_MODE(nr));
305 fanmode |= (3 << FAN_CTRL_MODE(nr)); 339 switch (val) {
306 data->pwm[nr] = 255; 340 case 0: /* full speed */
307 f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr), 341 fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
308 data->pwm[nr]); 342 fanmode |= (1 << F75387_FAN_DUTY_MODE(nr));
309 break; 343 data->pwm[nr] = 255;
310 case 1: /* PWM */ 344 f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
311 fanmode |= (3 << FAN_CTRL_MODE(nr)); 345 data->pwm[nr]);
312 break; 346 break;
313 case 2: /* AUTOMATIC*/ 347 case 1: /* PWM */
314 fanmode |= (2 << FAN_CTRL_MODE(nr)); 348 fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
315 break; 349 fanmode |= (1 << F75387_FAN_DUTY_MODE(nr));
316 case 3: /* fan speed */ 350 break;
317 break; 351 case 2: /* AUTOMATIC*/
352 fanmode |= (1 << F75387_FAN_DUTY_MODE(nr));
353 break;
354 case 3: /* fan speed */
355 fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
356 break;
357 }
358 } else {
359 /* clear each fanX_mode bit before setting them properly */
360 fanmode &= ~(3 << FAN_CTRL_MODE(nr));
361 switch (val) {
362 case 0: /* full speed */
363 fanmode |= (3 << FAN_CTRL_MODE(nr));
364 data->pwm[nr] = 255;
365 f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
366 data->pwm[nr]);
367 break;
368 case 1: /* PWM */
369 fanmode |= (3 << FAN_CTRL_MODE(nr));
370 break;
371 case 2: /* AUTOMATIC*/
372 fanmode |= (2 << FAN_CTRL_MODE(nr));
373 break;
374 case 3: /* fan speed */
375 break;
376 }
318 } 377 }
378
319 f75375_write8(client, F75375_REG_FAN_TIMER, fanmode); 379 f75375_write8(client, F75375_REG_FAN_TIMER, fanmode);
320 data->pwm_enable[nr] = val; 380 data->pwm_enable[nr] = val;
321 return 0; 381 return 0;
@@ -327,8 +387,12 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute *attr,
327 int nr = to_sensor_dev_attr(attr)->index; 387 int nr = to_sensor_dev_attr(attr)->index;
328 struct i2c_client *client = to_i2c_client(dev); 388 struct i2c_client *client = to_i2c_client(dev);
329 struct f75375_data *data = i2c_get_clientdata(client); 389 struct f75375_data *data = i2c_get_clientdata(client);
330 int val = simple_strtoul(buf, NULL, 10); 390 unsigned long val;
331 int err = 0; 391 int err;
392
393 err = kstrtoul(buf, 10, &val);
394 if (err < 0)
395 return err;
332 396
333 mutex_lock(&data->update_lock); 397 mutex_lock(&data->update_lock);
334 err = set_pwm_enable_direct(client, nr, val); 398 err = set_pwm_enable_direct(client, nr, val);
@@ -342,20 +406,39 @@ static ssize_t set_pwm_mode(struct device *dev, struct device_attribute *attr,
342 int nr = to_sensor_dev_attr(attr)->index; 406 int nr = to_sensor_dev_attr(attr)->index;
343 struct i2c_client *client = to_i2c_client(dev); 407 struct i2c_client *client = to_i2c_client(dev);
344 struct f75375_data *data = i2c_get_clientdata(client); 408 struct f75375_data *data = i2c_get_clientdata(client);
345 int val = simple_strtoul(buf, NULL, 10); 409 unsigned long val;
346 u8 conf = 0; 410 int err;
411 u8 conf;
412 char reg, ctrl;
413
414 err = kstrtoul(buf, 10, &val);
415 if (err < 0)
416 return err;
347 417
348 if (!(val == 0 || val == 1)) 418 if (!(val == 0 || val == 1))
349 return -EINVAL; 419 return -EINVAL;
350 420
421 /* F75373 does not support DC (linear voltage) fan control mode */
422 if (data->kind == f75373 && val == 0)
423 return -EINVAL;
424
425 /* take care for different registers */
426 if (data->kind == f75387) {
427 reg = F75375_REG_FAN_TIMER;
428 ctrl = F75387_FAN_CTRL_LINEAR(nr);
429 } else {
430 reg = F75375_REG_CONFIG1;
431 ctrl = F75375_FAN_CTRL_LINEAR(nr);
432 }
433
351 mutex_lock(&data->update_lock); 434 mutex_lock(&data->update_lock);
352 conf = f75375_read8(client, F75375_REG_CONFIG1); 435 conf = f75375_read8(client, reg);
353 conf &= ~(1 << FAN_CTRL_LINEAR(nr)); 436 conf &= ~(1 << ctrl);
354 437
355 if (val == 0) 438 if (val == 0)
356 conf |= (1 << FAN_CTRL_LINEAR(nr)) ; 439 conf |= (1 << ctrl);
357 440
358 f75375_write8(client, F75375_REG_CONFIG1, conf); 441 f75375_write8(client, reg, conf);
359 data->pwm_mode[nr] = val; 442 data->pwm_mode[nr] = val;
360 mutex_unlock(&data->update_lock); 443 mutex_unlock(&data->update_lock);
361 return count; 444 return count;
@@ -410,7 +493,13 @@ static ssize_t set_in_max(struct device *dev, struct device_attribute *attr,
410 int nr = to_sensor_dev_attr(attr)->index; 493 int nr = to_sensor_dev_attr(attr)->index;
411 struct i2c_client *client = to_i2c_client(dev); 494 struct i2c_client *client = to_i2c_client(dev);
412 struct f75375_data *data = i2c_get_clientdata(client); 495 struct f75375_data *data = i2c_get_clientdata(client);
413 int val = simple_strtoul(buf, NULL, 10); 496 unsigned long val;
497 int err;
498
499 err = kstrtoul(buf, 10, &val);
500 if (err < 0)
501 return err;
502
414 val = SENSORS_LIMIT(VOLT_TO_REG(val), 0, 0xff); 503 val = SENSORS_LIMIT(VOLT_TO_REG(val), 0, 0xff);
415 mutex_lock(&data->update_lock); 504 mutex_lock(&data->update_lock);
416 data->in_max[nr] = val; 505 data->in_max[nr] = val;
@@ -425,7 +514,13 @@ static ssize_t set_in_min(struct device *dev, struct device_attribute *attr,
425 int nr = to_sensor_dev_attr(attr)->index; 514 int nr = to_sensor_dev_attr(attr)->index;
426 struct i2c_client *client = to_i2c_client(dev); 515 struct i2c_client *client = to_i2c_client(dev);
427 struct f75375_data *data = i2c_get_clientdata(client); 516 struct f75375_data *data = i2c_get_clientdata(client);
428 int val = simple_strtoul(buf, NULL, 10); 517 unsigned long val;
518 int err;
519
520 err = kstrtoul(buf, 10, &val);
521 if (err < 0)
522 return err;
523
429 val = SENSORS_LIMIT(VOLT_TO_REG(val), 0, 0xff); 524 val = SENSORS_LIMIT(VOLT_TO_REG(val), 0, 0xff);
430 mutex_lock(&data->update_lock); 525 mutex_lock(&data->update_lock);
431 data->in_min[nr] = val; 526 data->in_min[nr] = val;
@@ -435,13 +530,14 @@ static ssize_t set_in_min(struct device *dev, struct device_attribute *attr,
435} 530}
436#define TEMP_FROM_REG(val) ((val) * 1000) 531#define TEMP_FROM_REG(val) ((val) * 1000)
437#define TEMP_TO_REG(val) ((val) / 1000) 532#define TEMP_TO_REG(val) ((val) / 1000)
533#define TEMP11_FROM_REG(reg) ((reg) / 32 * 125)
438 534
439static ssize_t show_temp(struct device *dev, struct device_attribute *attr, 535static ssize_t show_temp11(struct device *dev, struct device_attribute *attr,
440 char *buf) 536 char *buf)
441{ 537{
442 int nr = to_sensor_dev_attr(attr)->index; 538 int nr = to_sensor_dev_attr(attr)->index;
443 struct f75375_data *data = f75375_update_device(dev); 539 struct f75375_data *data = f75375_update_device(dev);
444 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[nr])); 540 return sprintf(buf, "%d\n", TEMP11_FROM_REG(data->temp11[nr]));
445} 541}
446 542
447static ssize_t show_temp_max(struct device *dev, struct device_attribute *attr, 543static ssize_t show_temp_max(struct device *dev, struct device_attribute *attr,
@@ -466,7 +562,13 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
466 int nr = to_sensor_dev_attr(attr)->index; 562 int nr = to_sensor_dev_attr(attr)->index;
467 struct i2c_client *client = to_i2c_client(dev); 563 struct i2c_client *client = to_i2c_client(dev);
468 struct f75375_data *data = i2c_get_clientdata(client); 564 struct f75375_data *data = i2c_get_clientdata(client);
469 int val = simple_strtol(buf, NULL, 10); 565 unsigned long val;
566 int err;
567
568 err = kstrtoul(buf, 10, &val);
569 if (err < 0)
570 return err;
571
470 val = SENSORS_LIMIT(TEMP_TO_REG(val), 0, 127); 572 val = SENSORS_LIMIT(TEMP_TO_REG(val), 0, 127);
471 mutex_lock(&data->update_lock); 573 mutex_lock(&data->update_lock);
472 data->temp_high[nr] = val; 574 data->temp_high[nr] = val;
@@ -481,7 +583,13 @@ static ssize_t set_temp_max_hyst(struct device *dev,
481 int nr = to_sensor_dev_attr(attr)->index; 583 int nr = to_sensor_dev_attr(attr)->index;
482 struct i2c_client *client = to_i2c_client(dev); 584 struct i2c_client *client = to_i2c_client(dev);
483 struct f75375_data *data = i2c_get_clientdata(client); 585 struct f75375_data *data = i2c_get_clientdata(client);
484 int val = simple_strtol(buf, NULL, 10); 586 unsigned long val;
587 int err;
588
589 err = kstrtoul(buf, 10, &val);
590 if (err < 0)
591 return err;
592
485 val = SENSORS_LIMIT(TEMP_TO_REG(val), 0, 127); 593 val = SENSORS_LIMIT(TEMP_TO_REG(val), 0, 127);
486 mutex_lock(&data->update_lock); 594 mutex_lock(&data->update_lock);
487 data->temp_max_hyst[nr] = val; 595 data->temp_max_hyst[nr] = val;
@@ -502,8 +610,8 @@ static ssize_t show_##thing(struct device *dev, struct device_attribute *attr, \
502 610
503show_fan(fan); 611show_fan(fan);
504show_fan(fan_min); 612show_fan(fan_min);
505show_fan(fan_full); 613show_fan(fan_max);
506show_fan(fan_exp); 614show_fan(fan_target);
507 615
508static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_in, NULL, 0); 616static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_in, NULL, 0);
509static SENSOR_DEVICE_ATTR(in0_max, S_IRUGO|S_IWUSR, 617static SENSOR_DEVICE_ATTR(in0_max, S_IRUGO|S_IWUSR,
@@ -525,28 +633,28 @@ static SENSOR_DEVICE_ATTR(in3_max, S_IRUGO|S_IWUSR,
525 show_in_max, set_in_max, 3); 633 show_in_max, set_in_max, 3);
526static SENSOR_DEVICE_ATTR(in3_min, S_IRUGO|S_IWUSR, 634static SENSOR_DEVICE_ATTR(in3_min, S_IRUGO|S_IWUSR,
527 show_in_min, set_in_min, 3); 635 show_in_min, set_in_min, 3);
528static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0); 636static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp11, NULL, 0);
529static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO|S_IWUSR, 637static SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IRUGO|S_IWUSR,
530 show_temp_max_hyst, set_temp_max_hyst, 0); 638 show_temp_max_hyst, set_temp_max_hyst, 0);
531static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO|S_IWUSR, 639static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO|S_IWUSR,
532 show_temp_max, set_temp_max, 0); 640 show_temp_max, set_temp_max, 0);
533static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1); 641static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp11, NULL, 1);
534static SENSOR_DEVICE_ATTR(temp2_max_hyst, S_IRUGO|S_IWUSR, 642static SENSOR_DEVICE_ATTR(temp2_max_hyst, S_IRUGO|S_IWUSR,
535 show_temp_max_hyst, set_temp_max_hyst, 1); 643 show_temp_max_hyst, set_temp_max_hyst, 1);
536static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO|S_IWUSR, 644static SENSOR_DEVICE_ATTR(temp2_max, S_IRUGO|S_IWUSR,
537 show_temp_max, set_temp_max, 1); 645 show_temp_max, set_temp_max, 1);
538static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0); 646static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0);
539static SENSOR_DEVICE_ATTR(fan1_full, S_IRUGO, show_fan_full, NULL, 0); 647static SENSOR_DEVICE_ATTR(fan1_max, S_IRUGO, show_fan_max, NULL, 0);
540static SENSOR_DEVICE_ATTR(fan1_min, S_IRUGO|S_IWUSR, 648static SENSOR_DEVICE_ATTR(fan1_min, S_IRUGO|S_IWUSR,
541 show_fan_min, set_fan_min, 0); 649 show_fan_min, set_fan_min, 0);
542static SENSOR_DEVICE_ATTR(fan1_exp, S_IRUGO|S_IWUSR, 650static SENSOR_DEVICE_ATTR(fan1_target, S_IRUGO|S_IWUSR,
543 show_fan_exp, set_fan_exp, 0); 651 show_fan_target, set_fan_target, 0);
544static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1); 652static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1);
545static SENSOR_DEVICE_ATTR(fan2_full, S_IRUGO, show_fan_full, NULL, 1); 653static SENSOR_DEVICE_ATTR(fan2_max, S_IRUGO, show_fan_max, NULL, 1);
546static SENSOR_DEVICE_ATTR(fan2_min, S_IRUGO|S_IWUSR, 654static SENSOR_DEVICE_ATTR(fan2_min, S_IRUGO|S_IWUSR,
547 show_fan_min, set_fan_min, 1); 655 show_fan_min, set_fan_min, 1);
548static SENSOR_DEVICE_ATTR(fan2_exp, S_IRUGO|S_IWUSR, 656static SENSOR_DEVICE_ATTR(fan2_target, S_IRUGO|S_IWUSR,
549 show_fan_exp, set_fan_exp, 1); 657 show_fan_target, set_fan_target, 1);
550static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO|S_IWUSR, 658static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO|S_IWUSR,
551 show_pwm, set_pwm, 0); 659 show_pwm, set_pwm, 0);
552static SENSOR_DEVICE_ATTR(pwm1_enable, S_IRUGO|S_IWUSR, 660static SENSOR_DEVICE_ATTR(pwm1_enable, S_IRUGO|S_IWUSR,
@@ -568,13 +676,13 @@ static struct attribute *f75375_attributes[] = {
568 &sensor_dev_attr_temp2_max.dev_attr.attr, 676 &sensor_dev_attr_temp2_max.dev_attr.attr,
569 &sensor_dev_attr_temp2_max_hyst.dev_attr.attr, 677 &sensor_dev_attr_temp2_max_hyst.dev_attr.attr,
570 &sensor_dev_attr_fan1_input.dev_attr.attr, 678 &sensor_dev_attr_fan1_input.dev_attr.attr,
571 &sensor_dev_attr_fan1_full.dev_attr.attr, 679 &sensor_dev_attr_fan1_max.dev_attr.attr,
572 &sensor_dev_attr_fan1_min.dev_attr.attr, 680 &sensor_dev_attr_fan1_min.dev_attr.attr,
573 &sensor_dev_attr_fan1_exp.dev_attr.attr, 681 &sensor_dev_attr_fan1_target.dev_attr.attr,
574 &sensor_dev_attr_fan2_input.dev_attr.attr, 682 &sensor_dev_attr_fan2_input.dev_attr.attr,
575 &sensor_dev_attr_fan2_full.dev_attr.attr, 683 &sensor_dev_attr_fan2_max.dev_attr.attr,
576 &sensor_dev_attr_fan2_min.dev_attr.attr, 684 &sensor_dev_attr_fan2_min.dev_attr.attr,
577 &sensor_dev_attr_fan2_exp.dev_attr.attr, 685 &sensor_dev_attr_fan2_target.dev_attr.attr,
578 &sensor_dev_attr_pwm1.dev_attr.attr, 686 &sensor_dev_attr_pwm1.dev_attr.attr,
579 &sensor_dev_attr_pwm1_enable.dev_attr.attr, 687 &sensor_dev_attr_pwm1_enable.dev_attr.attr,
580 &sensor_dev_attr_pwm1_mode.dev_attr.attr, 688 &sensor_dev_attr_pwm1_mode.dev_attr.attr,
@@ -604,6 +712,51 @@ static void f75375_init(struct i2c_client *client, struct f75375_data *data,
604 struct f75375s_platform_data *f75375s_pdata) 712 struct f75375s_platform_data *f75375s_pdata)
605{ 713{
606 int nr; 714 int nr;
715
716 if (!f75375s_pdata) {
717 u8 conf, mode;
718 int nr;
719
720 conf = f75375_read8(client, F75375_REG_CONFIG1);
721 mode = f75375_read8(client, F75375_REG_FAN_TIMER);
722 for (nr = 0; nr < 2; nr++) {
723 if (data->kind == f75387) {
724 bool manu, duty;
725
726 if (!(conf & (1 << F75387_FAN_CTRL_LINEAR(nr))))
727 data->pwm_mode[nr] = 1;
728
729 manu = ((mode >> F75387_FAN_MANU_MODE(nr)) & 1);
730 duty = ((mode >> F75387_FAN_DUTY_MODE(nr)) & 1);
731 if (manu && duty)
732 /* speed */
733 data->pwm_enable[nr] = 3;
734 else if (!manu && duty)
735 /* automatic */
736 data->pwm_enable[nr] = 2;
737 else
738 /* manual */
739 data->pwm_enable[nr] = 1;
740 } else {
741 if (!(conf & (1 << F75375_FAN_CTRL_LINEAR(nr))))
742 data->pwm_mode[nr] = 1;
743
744 switch ((mode >> FAN_CTRL_MODE(nr)) & 3) {
745 case 0: /* speed */
746 data->pwm_enable[nr] = 3;
747 break;
748 case 1: /* automatic */
749 data->pwm_enable[nr] = 2;
750 break;
751 default: /* manual */
752 data->pwm_enable[nr] = 1;
753 break;
754 }
755 }
756 }
757 return;
758 }
759
607 set_pwm_enable_direct(client, 0, f75375s_pdata->pwm_enable[0]); 760 set_pwm_enable_direct(client, 0, f75375s_pdata->pwm_enable[0]);
608 set_pwm_enable_direct(client, 1, f75375s_pdata->pwm_enable[1]); 761 set_pwm_enable_direct(client, 1, f75375s_pdata->pwm_enable[1]);
609 for (nr = 0; nr < 2; nr++) { 762 for (nr = 0; nr < 2; nr++) {
@@ -624,14 +777,16 @@ static int f75375_probe(struct i2c_client *client,
624 if (!i2c_check_functionality(client->adapter, 777 if (!i2c_check_functionality(client->adapter,
625 I2C_FUNC_SMBUS_BYTE_DATA)) 778 I2C_FUNC_SMBUS_BYTE_DATA))
626 return -EIO; 779 return -EIO;
627 if (!(data = kzalloc(sizeof(struct f75375_data), GFP_KERNEL))) 780 data = kzalloc(sizeof(struct f75375_data), GFP_KERNEL);
781 if (!data)
628 return -ENOMEM; 782 return -ENOMEM;
629 783
630 i2c_set_clientdata(client, data); 784 i2c_set_clientdata(client, data);
631 mutex_init(&data->update_lock); 785 mutex_init(&data->update_lock);
632 data->kind = id->driver_data; 786 data->kind = id->driver_data;
633 787
634 if ((err = sysfs_create_group(&client->dev.kobj, &f75375_group))) 788 err = sysfs_create_group(&client->dev.kobj, &f75375_group);
789 if (err)
635 goto exit_free; 790 goto exit_free;
636 791
637 if (data->kind == f75375) { 792 if (data->kind == f75375) {
@@ -653,8 +808,7 @@ static int f75375_probe(struct i2c_client *client,
653 goto exit_remove; 808 goto exit_remove;
654 } 809 }
655 810
656 if (f75375s_pdata != NULL) 811 f75375_init(client, data, f75375s_pdata);
657 f75375_init(client, data, f75375s_pdata);
658 812
659 return 0; 813 return 0;
660 814
@@ -685,10 +839,15 @@ static int f75375_detect(struct i2c_client *client,
685 839
686 vendid = f75375_read16(client, F75375_REG_VENDOR); 840 vendid = f75375_read16(client, F75375_REG_VENDOR);
687 chipid = f75375_read16(client, F75375_CHIP_ID); 841 chipid = f75375_read16(client, F75375_CHIP_ID);
688 if (chipid == 0x0306 && vendid == 0x1934) 842 if (vendid != 0x1934)
843 return -ENODEV;
844
845 if (chipid == 0x0306)
689 name = "f75375"; 846 name = "f75375";
690 else if (chipid == 0x0204 && vendid == 0x1934) 847 else if (chipid == 0x0204)
691 name = "f75373"; 848 name = "f75373";
849 else if (chipid == 0x0410)
850 name = "f75387";
692 else 851 else
693 return -ENODEV; 852 return -ENODEV;
694 853
@@ -711,7 +870,7 @@ static void __exit sensors_f75375_exit(void)
711 870
712MODULE_AUTHOR("Riku Voipio"); 871MODULE_AUTHOR("Riku Voipio");
713MODULE_LICENSE("GPL"); 872MODULE_LICENSE("GPL");
714MODULE_DESCRIPTION("F75373/F75375 hardware monitoring driver"); 873MODULE_DESCRIPTION("F75373/F75375/F75387 hardware monitoring driver");
715 874
716module_init(sensors_f75375_init); 875module_init(sensors_f75375_init);
717module_exit(sensors_f75375_exit); 876module_exit(sensors_f75375_exit);
diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c
index 1d6a6fa31fb4..781277ddbaa5 100644
--- a/drivers/hwmon/g760a.c
+++ b/drivers/hwmon/g760a.c
@@ -166,7 +166,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *da,
166 struct g760a_data *data = g760a_update_client(dev); 166 struct g760a_data *data = g760a_update_client(dev);
167 unsigned long val; 167 unsigned long val;
168 168
169 if (strict_strtoul(buf, 10, &val)) 169 if (kstrtoul(buf, 10, &val))
170 return -EINVAL; 170 return -EINVAL;
171 171
172 mutex_lock(&data->update_lock); 172 mutex_lock(&data->update_lock);
diff --git a/drivers/hwmon/gpio-fan.c b/drivers/hwmon/gpio-fan.c
index 9ba38f318ffb..2ce8c44a0e07 100644
--- a/drivers/hwmon/gpio-fan.c
+++ b/drivers/hwmon/gpio-fan.c
@@ -224,7 +224,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
224 int speed_index; 224 int speed_index;
225 int ret = count; 225 int ret = count;
226 226
227 if (strict_strtoul(buf, 10, &pwm) || pwm > 255) 227 if (kstrtoul(buf, 10, &pwm) || pwm > 255)
228 return -EINVAL; 228 return -EINVAL;
229 229
230 mutex_lock(&fan_data->lock); 230 mutex_lock(&fan_data->lock);
@@ -257,7 +257,7 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute *attr,
257 struct gpio_fan_data *fan_data = dev_get_drvdata(dev); 257 struct gpio_fan_data *fan_data = dev_get_drvdata(dev);
258 unsigned long val; 258 unsigned long val;
259 259
260 if (strict_strtoul(buf, 10, &val) || val > 1) 260 if (kstrtoul(buf, 10, &val) || val > 1)
261 return -EINVAL; 261 return -EINVAL;
262 262
263 if (fan_data->pwm_enable == val) 263 if (fan_data->pwm_enable == val)
@@ -314,7 +314,7 @@ static ssize_t set_rpm(struct device *dev, struct device_attribute *attr,
314 unsigned long rpm; 314 unsigned long rpm;
315 int ret = count; 315 int ret = count;
316 316
317 if (strict_strtoul(buf, 10, &rpm)) 317 if (kstrtoul(buf, 10, &rpm))
318 return -EINVAL; 318 return -EINVAL;
319 319
320 mutex_lock(&fan_data->lock); 320 mutex_lock(&fan_data->lock);
diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c
index 6a967d7dbdee..cc2981f749a6 100644
--- a/drivers/hwmon/ibmaem.c
+++ b/drivers/hwmon/ibmaem.c
@@ -904,7 +904,7 @@ static ssize_t aem_set_power_period(struct device *dev,
904 unsigned long temp; 904 unsigned long temp;
905 int res; 905 int res;
906 906
907 res = strict_strtoul(buf, 10, &temp); 907 res = kstrtoul(buf, 10, &temp);
908 if (res) 908 if (res)
909 return res; 909 return res;
910 910
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index d912649fac50..38c0b87676de 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -444,7 +444,7 @@ static ssize_t set_in_min(struct device *dev, struct device_attribute *attr,
444 struct it87_data *data = dev_get_drvdata(dev); 444 struct it87_data *data = dev_get_drvdata(dev);
445 unsigned long val; 445 unsigned long val;
446 446
447 if (strict_strtoul(buf, 10, &val) < 0) 447 if (kstrtoul(buf, 10, &val) < 0)
448 return -EINVAL; 448 return -EINVAL;
449 449
450 mutex_lock(&data->update_lock); 450 mutex_lock(&data->update_lock);
@@ -463,7 +463,7 @@ static ssize_t set_in_max(struct device *dev, struct device_attribute *attr,
463 struct it87_data *data = dev_get_drvdata(dev); 463 struct it87_data *data = dev_get_drvdata(dev);
464 unsigned long val; 464 unsigned long val;
465 465
466 if (strict_strtoul(buf, 10, &val) < 0) 466 if (kstrtoul(buf, 10, &val) < 0)
467 return -EINVAL; 467 return -EINVAL;
468 468
469 mutex_lock(&data->update_lock); 469 mutex_lock(&data->update_lock);
@@ -539,7 +539,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
539 struct it87_data *data = dev_get_drvdata(dev); 539 struct it87_data *data = dev_get_drvdata(dev);
540 long val; 540 long val;
541 541
542 if (strict_strtol(buf, 10, &val) < 0) 542 if (kstrtol(buf, 10, &val) < 0)
543 return -EINVAL; 543 return -EINVAL;
544 544
545 mutex_lock(&data->update_lock); 545 mutex_lock(&data->update_lock);
@@ -557,7 +557,7 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *attr,
557 struct it87_data *data = dev_get_drvdata(dev); 557 struct it87_data *data = dev_get_drvdata(dev);
558 long val; 558 long val;
559 559
560 if (strict_strtol(buf, 10, &val) < 0) 560 if (kstrtol(buf, 10, &val) < 0)
561 return -EINVAL; 561 return -EINVAL;
562 562
563 mutex_lock(&data->update_lock); 563 mutex_lock(&data->update_lock);
@@ -604,7 +604,7 @@ static ssize_t set_sensor(struct device *dev, struct device_attribute *attr,
604 long val; 604 long val;
605 u8 reg; 605 u8 reg;
606 606
607 if (strict_strtol(buf, 10, &val) < 0) 607 if (kstrtol(buf, 10, &val) < 0)
608 return -EINVAL; 608 return -EINVAL;
609 609
610 reg = it87_read_value(data, IT87_REG_TEMP_ENABLE); 610 reg = it87_read_value(data, IT87_REG_TEMP_ENABLE);
@@ -718,7 +718,7 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
718 long val; 718 long val;
719 u8 reg; 719 u8 reg;
720 720
721 if (strict_strtol(buf, 10, &val) < 0) 721 if (kstrtol(buf, 10, &val) < 0)
722 return -EINVAL; 722 return -EINVAL;
723 723
724 mutex_lock(&data->update_lock); 724 mutex_lock(&data->update_lock);
@@ -751,7 +751,7 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
751 int min; 751 int min;
752 u8 old; 752 u8 old;
753 753
754 if (strict_strtoul(buf, 10, &val) < 0) 754 if (kstrtoul(buf, 10, &val) < 0)
755 return -EINVAL; 755 return -EINVAL;
756 756
757 mutex_lock(&data->update_lock); 757 mutex_lock(&data->update_lock);
@@ -820,7 +820,7 @@ static ssize_t set_pwm_enable(struct device *dev,
820 struct it87_data *data = dev_get_drvdata(dev); 820 struct it87_data *data = dev_get_drvdata(dev);
821 long val; 821 long val;
822 822
823 if (strict_strtol(buf, 10, &val) < 0 || val < 0 || val > 2) 823 if (kstrtol(buf, 10, &val) < 0 || val < 0 || val > 2)
824 return -EINVAL; 824 return -EINVAL;
825 825
826 /* Check trip points before switching to automatic mode */ 826 /* Check trip points before switching to automatic mode */
@@ -866,7 +866,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
866 struct it87_data *data = dev_get_drvdata(dev); 866 struct it87_data *data = dev_get_drvdata(dev);
867 long val; 867 long val;
868 868
869 if (strict_strtol(buf, 10, &val) < 0 || val < 0 || val > 255) 869 if (kstrtol(buf, 10, &val) < 0 || val < 0 || val > 255)
870 return -EINVAL; 870 return -EINVAL;
871 871
872 mutex_lock(&data->update_lock); 872 mutex_lock(&data->update_lock);
@@ -900,7 +900,7 @@ static ssize_t set_pwm_freq(struct device *dev,
900 unsigned long val; 900 unsigned long val;
901 int i; 901 int i;
902 902
903 if (strict_strtoul(buf, 10, &val) < 0) 903 if (kstrtoul(buf, 10, &val) < 0)
904 return -EINVAL; 904 return -EINVAL;
905 905
906 /* Search for the nearest available frequency */ 906 /* Search for the nearest available frequency */
@@ -949,7 +949,7 @@ static ssize_t set_pwm_temp_map(struct device *dev,
949 return -EINVAL; 949 return -EINVAL;
950 } 950 }
951 951
952 if (strict_strtol(buf, 10, &val) < 0) 952 if (kstrtol(buf, 10, &val) < 0)
953 return -EINVAL; 953 return -EINVAL;
954 954
955 switch (val) { 955 switch (val) {
@@ -1001,7 +1001,7 @@ static ssize_t set_auto_pwm(struct device *dev,
1001 int point = sensor_attr->index; 1001 int point = sensor_attr->index;
1002 long val; 1002 long val;
1003 1003
1004 if (strict_strtol(buf, 10, &val) < 0 || val < 0 || val > 255) 1004 if (kstrtol(buf, 10, &val) < 0 || val < 0 || val > 255)
1005 return -EINVAL; 1005 return -EINVAL;
1006 1006
1007 mutex_lock(&data->update_lock); 1007 mutex_lock(&data->update_lock);
@@ -1034,7 +1034,7 @@ static ssize_t set_auto_temp(struct device *dev,
1034 int point = sensor_attr->index; 1034 int point = sensor_attr->index;
1035 long val; 1035 long val;
1036 1036
1037 if (strict_strtol(buf, 10, &val) < 0 || val < -128000 || val > 127000) 1037 if (kstrtol(buf, 10, &val) < 0 || val < -128000 || val > 127000)
1038 return -EINVAL; 1038 return -EINVAL;
1039 1039
1040 mutex_lock(&data->update_lock); 1040 mutex_lock(&data->update_lock);
@@ -1126,7 +1126,7 @@ static ssize_t set_fan16_min(struct device *dev, struct device_attribute *attr,
1126 struct it87_data *data = dev_get_drvdata(dev); 1126 struct it87_data *data = dev_get_drvdata(dev);
1127 long val; 1127 long val;
1128 1128
1129 if (strict_strtol(buf, 10, &val) < 0) 1129 if (kstrtol(buf, 10, &val) < 0)
1130 return -EINVAL; 1130 return -EINVAL;
1131 1131
1132 mutex_lock(&data->update_lock); 1132 mutex_lock(&data->update_lock);
@@ -1180,7 +1180,7 @@ static ssize_t clear_intrusion(struct device *dev, struct device_attribute
1180 long val; 1180 long val;
1181 int config; 1181 int config;
1182 1182
1183 if (strict_strtol(buf, 10, &val) < 0 || val != 0) 1183 if (kstrtol(buf, 10, &val) < 0 || val != 0)
1184 return -EINVAL; 1184 return -EINVAL;
1185 1185
1186 mutex_lock(&data->update_lock); 1186 mutex_lock(&data->update_lock);
@@ -1231,7 +1231,7 @@ static ssize_t set_beep(struct device *dev, struct device_attribute *attr,
1231 struct it87_data *data = dev_get_drvdata(dev); 1231 struct it87_data *data = dev_get_drvdata(dev);
1232 long val; 1232 long val;
1233 1233
1234 if (strict_strtol(buf, 10, &val) < 0 1234 if (kstrtol(buf, 10, &val) < 0
1235 || (val != 0 && val != 1)) 1235 || (val != 0 && val != 1))
1236 return -EINVAL; 1236 return -EINVAL;
1237 1237
@@ -1278,7 +1278,7 @@ static ssize_t store_vrm_reg(struct device *dev, struct device_attribute *attr,
1278 struct it87_data *data = dev_get_drvdata(dev); 1278 struct it87_data *data = dev_get_drvdata(dev);
1279 unsigned long val; 1279 unsigned long val;
1280 1280
1281 if (strict_strtoul(buf, 10, &val) < 0) 1281 if (kstrtoul(buf, 10, &val) < 0)
1282 return -EINVAL; 1282 return -EINVAL;
1283 1283
1284 data->vrm = val; 1284 data->vrm = val;
diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
index 1a92951f4031..28c09eead36b 100644
--- a/drivers/hwmon/jc42.c
+++ b/drivers/hwmon/jc42.c
@@ -309,7 +309,7 @@ static ssize_t set_##value(struct device *dev, \
309 struct jc42_data *data = i2c_get_clientdata(client); \ 309 struct jc42_data *data = i2c_get_clientdata(client); \
310 int err, ret = count; \ 310 int err, ret = count; \
311 long val; \ 311 long val; \
312 if (strict_strtol(buf, 10, &val) < 0) \ 312 if (kstrtol(buf, 10, &val) < 0) \
313 return -EINVAL; \ 313 return -EINVAL; \
314 mutex_lock(&data->update_lock); \ 314 mutex_lock(&data->update_lock); \
315 data->value = jc42_temp_to_reg(val, data->extended); \ 315 data->value = jc42_temp_to_reg(val, data->extended); \
@@ -337,7 +337,7 @@ static ssize_t set_temp_crit_hyst(struct device *dev,
337 int err; 337 int err;
338 int ret = count; 338 int ret = count;
339 339
340 if (strict_strtoul(buf, 10, &val) < 0) 340 if (kstrtoul(buf, 10, &val) < 0)
341 return -EINVAL; 341 return -EINVAL;
342 342
343 diff = jc42_temp_from_reg(data->temp_crit) - val; 343 diff = jc42_temp_from_reg(data->temp_crit) - val;
diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c
index 9e64d96620d3..9c8093c4b307 100644
--- a/drivers/hwmon/lm73.c
+++ b/drivers/hwmon/lm73.c
@@ -50,7 +50,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *da,
50 long temp; 50 long temp;
51 short value; 51 short value;
52 52
53 int status = strict_strtol(buf, 10, &temp); 53 int status = kstrtol(buf, 10, &temp);
54 if (status < 0) 54 if (status < 0)
55 return status; 55 return status;
56 56
diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index 1888dd0fc05f..b3311b1d3d92 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -93,6 +93,10 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *da,
93{ 93{
94 struct sensor_device_attribute *attr = to_sensor_dev_attr(da); 94 struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
95 struct lm75_data *data = lm75_update_device(dev); 95 struct lm75_data *data = lm75_update_device(dev);
96
97 if (IS_ERR(data))
98 return PTR_ERR(data);
99
96 return sprintf(buf, "%d\n", 100 return sprintf(buf, "%d\n",
97 LM75_TEMP_FROM_REG(data->temp[attr->index])); 101 LM75_TEMP_FROM_REG(data->temp[attr->index]));
98} 102}
@@ -107,7 +111,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *da,
107 long temp; 111 long temp;
108 int error; 112 int error;
109 113
110 error = strict_strtol(buf, 10, &temp); 114 error = kstrtol(buf, 10, &temp);
111 if (error) 115 if (error)
112 return error; 116 return error;
113 117
@@ -402,6 +406,7 @@ static struct lm75_data *lm75_update_device(struct device *dev)
402{ 406{
403 struct i2c_client *client = to_i2c_client(dev); 407 struct i2c_client *client = to_i2c_client(dev);
404 struct lm75_data *data = i2c_get_clientdata(client); 408 struct lm75_data *data = i2c_get_clientdata(client);
409 struct lm75_data *ret = data;
405 410
406 mutex_lock(&data->update_lock); 411 mutex_lock(&data->update_lock);
407 412
@@ -414,19 +419,23 @@ static struct lm75_data *lm75_update_device(struct device *dev)
414 int status; 419 int status;
415 420
416 status = lm75_read_value(client, LM75_REG_TEMP[i]); 421 status = lm75_read_value(client, LM75_REG_TEMP[i]);
417 if (status < 0) 422 if (unlikely(status < 0)) {
418 dev_dbg(&client->dev, "reg %d, err %d\n", 423 dev_dbg(dev,
419 LM75_REG_TEMP[i], status); 424 "LM75: Failed to read value: reg %d, error %d\n",
420 else 425 LM75_REG_TEMP[i], status);
421 data->temp[i] = status; 426 ret = ERR_PTR(status);
427 data->valid = 0;
428 goto abort;
429 }
430 data->temp[i] = status;
422 } 431 }
423 data->last_updated = jiffies; 432 data->last_updated = jiffies;
424 data->valid = 1; 433 data->valid = 1;
425 } 434 }
426 435
436abort:
427 mutex_unlock(&data->update_lock); 437 mutex_unlock(&data->update_lock);
428 438 return ret;
429 return data;
430} 439}
431 440
432/*-----------------------------------------------------------------------*/ 441/*-----------------------------------------------------------------------*/
diff --git a/drivers/hwmon/lm75.h b/drivers/hwmon/lm75.h
index e547a3eb4de3..89aa9098ba5b 100644
--- a/drivers/hwmon/lm75.h
+++ b/drivers/hwmon/lm75.h
@@ -1,6 +1,6 @@
1/* 1/*
2 lm75.h - Part of lm_sensors, Linux kernel modules for hardware 2 lm75.h - Part of lm_sensors, Linux kernel modules for hardware
3 monitoring 3 monitoring
4 Copyright (c) 2003 Mark M. Hoffman <mhoffman@lightlink.com> 4 Copyright (c) 2003 Mark M. Hoffman <mhoffman@lightlink.com>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
@@ -37,7 +37,7 @@
37static inline u16 LM75_TEMP_TO_REG(long temp) 37static inline u16 LM75_TEMP_TO_REG(long temp)
38{ 38{
39 int ntemp = SENSORS_LIMIT(temp, LM75_TEMP_MIN, LM75_TEMP_MAX); 39 int ntemp = SENSORS_LIMIT(temp, LM75_TEMP_MIN, LM75_TEMP_MAX);
40 ntemp += (ntemp<0 ? -250 : 250); 40 ntemp += (ntemp < 0 ? -250 : 250);
41 return (u16)((ntemp / 500) << 7); 41 return (u16)((ntemp / 500) << 7);
42} 42}
43 43
@@ -47,4 +47,3 @@ static inline int LM75_TEMP_FROM_REG(u16 reg)
47 guarantee arithmetic shift and preserve the sign */ 47 guarantee arithmetic shift and preserve the sign */
48 return ((s16)reg / 128) * 500; 48 return ((s16)reg / 128) * 500;
49} 49}
50
diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c
index 18a0e6c5fe88..0891b38ffec0 100644
--- a/drivers/hwmon/lm80.c
+++ b/drivers/hwmon/lm80.c
@@ -66,19 +66,19 @@ static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
66 these macros are called: arguments may be evaluated more than once. 66 these macros are called: arguments may be evaluated more than once.
67 Fixing this is just not worth it. */ 67 Fixing this is just not worth it. */
68 68
69#define IN_TO_REG(val) (SENSORS_LIMIT(((val)+5)/10,0,255)) 69#define IN_TO_REG(val) (SENSORS_LIMIT(((val) + 5) / 10, 0, 255))
70#define IN_FROM_REG(val) ((val)*10) 70#define IN_FROM_REG(val) ((val) * 10)
71 71
72static inline unsigned char FAN_TO_REG(unsigned rpm, unsigned div) 72static inline unsigned char FAN_TO_REG(unsigned rpm, unsigned div)
73{ 73{
74 if (rpm == 0) 74 if (rpm == 0)
75 return 255; 75 return 255;
76 rpm = SENSORS_LIMIT(rpm, 1, 1000000); 76 rpm = SENSORS_LIMIT(rpm, 1, 1000000);
77 return SENSORS_LIMIT((1350000 + rpm*div / 2) / (rpm*div), 1, 254); 77 return SENSORS_LIMIT((1350000 + rpm * div / 2) / (rpm * div), 1, 254);
78} 78}
79 79
80#define FAN_FROM_REG(val,div) ((val)==0?-1:\ 80#define FAN_FROM_REG(val, div) ((val) == 0 ? -1 : \
81 (val)==255?0:1350000/((div)*(val))) 81 (val) == 255 ? 0 : 1350000/((div) * (val)))
82 82
83static inline long TEMP_FROM_REG(u16 temp) 83static inline long TEMP_FROM_REG(u16 temp)
84{ 84{
@@ -93,10 +93,11 @@ static inline long TEMP_FROM_REG(u16 temp)
93 return res / 10; 93 return res / 10;
94} 94}
95 95
96#define TEMP_LIMIT_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*1000) 96#define TEMP_LIMIT_FROM_REG(val) (((val) > 0x80 ? \
97 (val) - 0x100 : (val)) * 1000)
97 98
98#define TEMP_LIMIT_TO_REG(val) SENSORS_LIMIT((val)<0?\ 99#define TEMP_LIMIT_TO_REG(val) SENSORS_LIMIT((val) < 0 ? \
99 ((val)-500)/1000:((val)+500)/1000,0,255) 100 ((val) - 500) / 1000 : ((val) + 500) / 1000, 0, 255)
100 101
101#define DIV_FROM_REG(val) (1 << (val)) 102#define DIV_FROM_REG(val) (1 << (val))
102 103
@@ -164,7 +165,8 @@ static struct i2c_driver lm80_driver = {
164 */ 165 */
165 166
166#define show_in(suffix, value) \ 167#define show_in(suffix, value) \
167static ssize_t show_in_##suffix(struct device *dev, struct device_attribute *attr, char *buf) \ 168static ssize_t show_in_##suffix(struct device *dev, \
169 struct device_attribute *attr, char *buf) \
168{ \ 170{ \
169 int nr = to_sensor_dev_attr(attr)->index; \ 171 int nr = to_sensor_dev_attr(attr)->index; \
170 struct lm80_data *data = lm80_update_device(dev); \ 172 struct lm80_data *data = lm80_update_device(dev); \
@@ -175,14 +177,14 @@ show_in(max, in_max)
175show_in(input, in) 177show_in(input, in)
176 178
177#define set_in(suffix, value, reg) \ 179#define set_in(suffix, value, reg) \
178static ssize_t set_in_##suffix(struct device *dev, struct device_attribute *attr, const char *buf, \ 180static ssize_t set_in_##suffix(struct device *dev, \
179 size_t count) \ 181 struct device_attribute *attr, const char *buf, size_t count) \
180{ \ 182{ \
181 int nr = to_sensor_dev_attr(attr)->index; \ 183 int nr = to_sensor_dev_attr(attr)->index; \
182 struct i2c_client *client = to_i2c_client(dev); \ 184 struct i2c_client *client = to_i2c_client(dev); \
183 struct lm80_data *data = i2c_get_clientdata(client); \ 185 struct lm80_data *data = i2c_get_clientdata(client); \
184 long val = simple_strtol(buf, NULL, 10); \ 186 long val = simple_strtol(buf, NULL, 10); \
185 \ 187\
186 mutex_lock(&data->update_lock);\ 188 mutex_lock(&data->update_lock);\
187 data->value[nr] = IN_TO_REG(val); \ 189 data->value[nr] = IN_TO_REG(val); \
188 lm80_write_value(client, reg(nr), data->value[nr]); \ 190 lm80_write_value(client, reg(nr), data->value[nr]); \
@@ -193,7 +195,8 @@ set_in(min, in_min, LM80_REG_IN_MIN)
193set_in(max, in_max, LM80_REG_IN_MAX) 195set_in(max, in_max, LM80_REG_IN_MAX)
194 196
195#define show_fan(suffix, value) \ 197#define show_fan(suffix, value) \
196static ssize_t show_fan_##suffix(struct device *dev, struct device_attribute *attr, char *buf) \ 198static ssize_t show_fan_##suffix(struct device *dev, \
199 struct device_attribute *attr, char *buf) \
197{ \ 200{ \
198 int nr = to_sensor_dev_attr(attr)->index; \ 201 int nr = to_sensor_dev_attr(attr)->index; \
199 struct lm80_data *data = lm80_update_device(dev); \ 202 struct lm80_data *data = lm80_update_device(dev); \
@@ -245,10 +248,18 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
245 DIV_FROM_REG(data->fan_div[nr])); 248 DIV_FROM_REG(data->fan_div[nr]));
246 249
247 switch (val) { 250 switch (val) {
248 case 1: data->fan_div[nr] = 0; break; 251 case 1:
249 case 2: data->fan_div[nr] = 1; break; 252 data->fan_div[nr] = 0;
250 case 4: data->fan_div[nr] = 2; break; 253 break;
251 case 8: data->fan_div[nr] = 3; break; 254 case 2:
255 data->fan_div[nr] = 1;
256 break;
257 case 4:
258 data->fan_div[nr] = 2;
259 break;
260 case 8:
261 data->fan_div[nr] = 3;
262 break;
252 default: 263 default:
253 dev_err(&client->dev, "fan_div value %ld not " 264 dev_err(&client->dev, "fan_div value %ld not "
254 "supported. Choose one of 1, 2, 4 or 8!\n", val); 265 "supported. Choose one of 1, 2, 4 or 8!\n", val);
@@ -268,14 +279,16 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
268 return count; 279 return count;
269} 280}
270 281
271static ssize_t show_temp_input1(struct device *dev, struct device_attribute *attr, char *buf) 282static ssize_t show_temp_input1(struct device *dev,
283 struct device_attribute *attr, char *buf)
272{ 284{
273 struct lm80_data *data = lm80_update_device(dev); 285 struct lm80_data *data = lm80_update_device(dev);
274 return sprintf(buf, "%ld\n", TEMP_FROM_REG(data->temp)); 286 return sprintf(buf, "%ld\n", TEMP_FROM_REG(data->temp));
275} 287}
276 288
277#define show_temp(suffix, value) \ 289#define show_temp(suffix, value) \
278static ssize_t show_temp_##suffix(struct device *dev, struct device_attribute *attr, char *buf) \ 290static ssize_t show_temp_##suffix(struct device *dev, \
291 struct device_attribute *attr, char *buf) \
279{ \ 292{ \
280 struct lm80_data *data = lm80_update_device(dev); \ 293 struct lm80_data *data = lm80_update_device(dev); \
281 return sprintf(buf, "%d\n", TEMP_LIMIT_FROM_REG(data->value)); \ 294 return sprintf(buf, "%d\n", TEMP_LIMIT_FROM_REG(data->value)); \
@@ -286,13 +299,13 @@ show_temp(os_max, temp_os_max);
286show_temp(os_hyst, temp_os_hyst); 299show_temp(os_hyst, temp_os_hyst);
287 300
288#define set_temp(suffix, value, reg) \ 301#define set_temp(suffix, value, reg) \
289static ssize_t set_temp_##suffix(struct device *dev, struct device_attribute *attr, const char *buf, \ 302static ssize_t set_temp_##suffix(struct device *dev, \
290 size_t count) \ 303 struct device_attribute *attr, const char *buf, size_t count) \
291{ \ 304{ \
292 struct i2c_client *client = to_i2c_client(dev); \ 305 struct i2c_client *client = to_i2c_client(dev); \
293 struct lm80_data *data = i2c_get_clientdata(client); \ 306 struct lm80_data *data = i2c_get_clientdata(client); \
294 long val = simple_strtoul(buf, NULL, 10); \ 307 long val = simple_strtoul(buf, NULL, 10); \
295 \ 308\
296 mutex_lock(&data->update_lock); \ 309 mutex_lock(&data->update_lock); \
297 data->value = TEMP_LIMIT_TO_REG(val); \ 310 data->value = TEMP_LIMIT_TO_REG(val); \
298 lm80_write_value(client, reg, data->value); \ 311 lm80_write_value(client, reg, data->value); \
@@ -366,13 +379,13 @@ static SENSOR_DEVICE_ATTR(fan2_div, S_IWUSR | S_IRUGO,
366 show_fan_div, set_fan_div, 1); 379 show_fan_div, set_fan_div, 1);
367static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input1, NULL); 380static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input1, NULL);
368static DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_hot_max, 381static DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_hot_max,
369 set_temp_hot_max); 382 set_temp_hot_max);
370static DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, show_temp_hot_hyst, 383static DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, show_temp_hot_hyst,
371 set_temp_hot_hyst); 384 set_temp_hot_hyst);
372static DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp_os_max, 385static DEVICE_ATTR(temp1_crit, S_IWUSR | S_IRUGO, show_temp_os_max,
373 set_temp_os_max); 386 set_temp_os_max);
374static DEVICE_ATTR(temp1_crit_hyst, S_IWUSR | S_IRUGO, show_temp_os_hyst, 387static DEVICE_ATTR(temp1_crit_hyst, S_IWUSR | S_IRUGO, show_temp_os_hyst,
375 set_temp_os_hyst); 388 set_temp_os_hyst);
376static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); 389static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL);
377static SENSOR_DEVICE_ATTR(in0_alarm, S_IRUGO, show_alarm, NULL, 0); 390static SENSOR_DEVICE_ATTR(in0_alarm, S_IRUGO, show_alarm, NULL, 0);
378static SENSOR_DEVICE_ATTR(in1_alarm, S_IRUGO, show_alarm, NULL, 1); 391static SENSOR_DEVICE_ATTR(in1_alarm, S_IRUGO, show_alarm, NULL, 1);
@@ -459,7 +472,7 @@ static int lm80_detect(struct i2c_client *client, struct i2c_board_info *info)
459 if ((i2c_smbus_read_byte_data(client, i + 0x40) != cur) 472 if ((i2c_smbus_read_byte_data(client, i + 0x40) != cur)
460 || (i2c_smbus_read_byte_data(client, i + 0x80) != cur) 473 || (i2c_smbus_read_byte_data(client, i + 0x80) != cur)
461 || (i2c_smbus_read_byte_data(client, i + 0xc0) != cur)) 474 || (i2c_smbus_read_byte_data(client, i + 0xc0) != cur))
462 return -ENODEV; 475 return -ENODEV;
463 } 476 }
464 477
465 strlcpy(info->type, "lm80", I2C_NAME_SIZE); 478 strlcpy(info->type, "lm80", I2C_NAME_SIZE);
@@ -490,7 +503,8 @@ static int lm80_probe(struct i2c_client *client,
490 data->fan_min[1] = lm80_read_value(client, LM80_REG_FAN_MIN(2)); 503 data->fan_min[1] = lm80_read_value(client, LM80_REG_FAN_MIN(2));
491 504
492 /* Register sysfs hooks */ 505 /* Register sysfs hooks */
493 if ((err = sysfs_create_group(&client->dev.kobj, &lm80_group))) 506 err = sysfs_create_group(&client->dev.kobj, &lm80_group);
507 if (err)
494 goto error_free; 508 goto error_free;
495 509
496 data->hwmon_dev = hwmon_device_register(&client->dev); 510 data->hwmon_dev = hwmon_device_register(&client->dev);
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
index 615bc4f4e530..bdfd675488ae 100644
--- a/drivers/hwmon/lm90.c
+++ b/drivers/hwmon/lm90.c
@@ -730,7 +730,7 @@ static ssize_t set_temp8(struct device *dev, struct device_attribute *devattr,
730 long val; 730 long val;
731 int err; 731 int err;
732 732
733 err = strict_strtol(buf, 10, &val); 733 err = kstrtol(buf, 10, &val);
734 if (err < 0) 734 if (err < 0)
735 return err; 735 return err;
736 736
@@ -798,7 +798,7 @@ static ssize_t set_temp11(struct device *dev, struct device_attribute *devattr,
798 long val; 798 long val;
799 int err; 799 int err;
800 800
801 err = strict_strtol(buf, 10, &val); 801 err = kstrtol(buf, 10, &val);
802 if (err < 0) 802 if (err < 0)
803 return err; 803 return err;
804 804
@@ -859,7 +859,7 @@ static ssize_t set_temphyst(struct device *dev, struct device_attribute *dummy,
859 int err; 859 int err;
860 int temp; 860 int temp;
861 861
862 err = strict_strtol(buf, 10, &val); 862 err = kstrtol(buf, 10, &val);
863 if (err < 0) 863 if (err < 0)
864 return err; 864 return err;
865 865
@@ -912,7 +912,7 @@ static ssize_t set_update_interval(struct device *dev,
912 unsigned long val; 912 unsigned long val;
913 int err; 913 int err;
914 914
915 err = strict_strtoul(buf, 10, &val); 915 err = kstrtoul(buf, 10, &val);
916 if (err) 916 if (err)
917 return err; 917 return err;
918 918
@@ -1080,7 +1080,7 @@ static ssize_t set_pec(struct device *dev, struct device_attribute *dummy,
1080 long val; 1080 long val;
1081 int err; 1081 int err;
1082 1082
1083 err = strict_strtol(buf, 10, &val); 1083 err = kstrtol(buf, 10, &val);
1084 if (err < 0) 1084 if (err < 0)
1085 return err; 1085 return err;
1086 1086
diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c
index 513901d592a9..70bca671e083 100644
--- a/drivers/hwmon/lm95241.c
+++ b/drivers/hwmon/lm95241.c
@@ -169,7 +169,7 @@ static ssize_t set_type(struct device *dev, struct device_attribute *attr,
169 int shift; 169 int shift;
170 u8 mask = to_sensor_dev_attr(attr)->index; 170 u8 mask = to_sensor_dev_attr(attr)->index;
171 171
172 if (strict_strtoul(buf, 10, &val) < 0) 172 if (kstrtoul(buf, 10, &val) < 0)
173 return -EINVAL; 173 return -EINVAL;
174 if (val != 1 && val != 2) 174 if (val != 1 && val != 2)
175 return -EINVAL; 175 return -EINVAL;
@@ -216,7 +216,7 @@ static ssize_t set_min(struct device *dev, struct device_attribute *attr,
216 struct lm95241_data *data = i2c_get_clientdata(client); 216 struct lm95241_data *data = i2c_get_clientdata(client);
217 long val; 217 long val;
218 218
219 if (strict_strtol(buf, 10, &val) < 0) 219 if (kstrtol(buf, 10, &val) < 0)
220 return -EINVAL; 220 return -EINVAL;
221 if (val < -128000) 221 if (val < -128000)
222 return -EINVAL; 222 return -EINVAL;
@@ -254,7 +254,7 @@ static ssize_t set_max(struct device *dev, struct device_attribute *attr,
254 struct lm95241_data *data = i2c_get_clientdata(client); 254 struct lm95241_data *data = i2c_get_clientdata(client);
255 long val; 255 long val;
256 256
257 if (strict_strtol(buf, 10, &val) < 0) 257 if (kstrtol(buf, 10, &val) < 0)
258 return -EINVAL; 258 return -EINVAL;
259 if (val >= 256000) 259 if (val >= 256000)
260 return -EINVAL; 260 return -EINVAL;
@@ -290,7 +290,7 @@ static ssize_t set_interval(struct device *dev, struct device_attribute *attr,
290 struct lm95241_data *data = i2c_get_clientdata(client); 290 struct lm95241_data *data = i2c_get_clientdata(client);
291 unsigned long val; 291 unsigned long val;
292 292
293 if (strict_strtoul(buf, 10, &val) < 0) 293 if (kstrtoul(buf, 10, &val) < 0)
294 return -EINVAL; 294 return -EINVAL;
295 295
296 data->interval = val * HZ / 1000; 296 data->interval = val * HZ / 1000;
diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c
index dce9e68241e6..5e5fc1b0ace1 100644
--- a/drivers/hwmon/lm95245.c
+++ b/drivers/hwmon/lm95245.c
@@ -254,7 +254,7 @@ static ssize_t set_limit(struct device *dev, struct device_attribute *attr,
254 int index = to_sensor_dev_attr(attr)->index; 254 int index = to_sensor_dev_attr(attr)->index;
255 unsigned long val; 255 unsigned long val;
256 256
257 if (strict_strtoul(buf, 10, &val) < 0) 257 if (kstrtoul(buf, 10, &val) < 0)
258 return -EINVAL; 258 return -EINVAL;
259 259
260 val /= 1000; 260 val /= 1000;
@@ -279,7 +279,7 @@ static ssize_t set_crit_hyst(struct device *dev, struct device_attribute *attr,
279 struct lm95245_data *data = i2c_get_clientdata(client); 279 struct lm95245_data *data = i2c_get_clientdata(client);
280 unsigned long val; 280 unsigned long val;
281 281
282 if (strict_strtoul(buf, 10, &val) < 0) 282 if (kstrtoul(buf, 10, &val) < 0)
283 return -EINVAL; 283 return -EINVAL;
284 284
285 val /= 1000; 285 val /= 1000;
@@ -316,7 +316,7 @@ static ssize_t set_type(struct device *dev, struct device_attribute *attr,
316 struct lm95245_data *data = i2c_get_clientdata(client); 316 struct lm95245_data *data = i2c_get_clientdata(client);
317 unsigned long val; 317 unsigned long val;
318 318
319 if (strict_strtoul(buf, 10, &val) < 0) 319 if (kstrtoul(buf, 10, &val) < 0)
320 return -EINVAL; 320 return -EINVAL;
321 if (val != 1 && val != 2) 321 if (val != 1 && val != 2)
322 return -EINVAL; 322 return -EINVAL;
@@ -363,7 +363,7 @@ static ssize_t set_interval(struct device *dev, struct device_attribute *attr,
363 struct lm95245_data *data = i2c_get_clientdata(client); 363 struct lm95245_data *data = i2c_get_clientdata(client);
364 unsigned long val; 364 unsigned long val;
365 365
366 if (strict_strtoul(buf, 10, &val) < 0) 366 if (kstrtoul(buf, 10, &val) < 0)
367 return -EINVAL; 367 return -EINVAL;
368 368
369 mutex_lock(&data->update_lock); 369 mutex_lock(&data->update_lock);
diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c
index 4b50601027d3..ce5235560f01 100644
--- a/drivers/hwmon/ltc4261.c
+++ b/drivers/hwmon/ltc4261.c
@@ -85,6 +85,7 @@ static struct ltc4261_data *ltc4261_update_device(struct device *dev)
85 "Failed to read ADC value: error %d\n", 85 "Failed to read ADC value: error %d\n",
86 val); 86 val);
87 ret = ERR_PTR(val); 87 ret = ERR_PTR(val);
88 data->valid = 0;
88 goto abort; 89 goto abort;
89 } 90 }
90 data->regs[i] = val; 91 data->regs[i] = val;
diff --git a/drivers/hwmon/max1111.c b/drivers/hwmon/max1111.c
index c97b78ef9116..84ef3a898707 100644
--- a/drivers/hwmon/max1111.c
+++ b/drivers/hwmon/max1111.c
@@ -6,7 +6,7 @@
6 * Copyright (C) 2004-2005 Richard Purdie 6 * Copyright (C) 2004-2005 Richard Purdie
7 * 7 *
8 * Copyright (C) 2008 Marvell International Ltd. 8 * Copyright (C) 2008 Marvell International Ltd.
9 * Eric Miao <eric.miao@marvell.com> 9 * Eric Miao <eric.miao@marvell.com>
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as 12 * it under the terms of the GNU General Public License version 2 as
diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c
index 385886a4f224..f8e323ac6cb3 100644
--- a/drivers/hwmon/max16065.c
+++ b/drivers/hwmon/max16065.c
@@ -230,7 +230,7 @@ static ssize_t max16065_set_limit(struct device *dev,
230 int err; 230 int err;
231 int limit; 231 int limit;
232 232
233 err = strict_strtoul(buf, 10, &val); 233 err = kstrtoul(buf, 10, &val);
234 if (unlikely(err < 0)) 234 if (unlikely(err < 0))
235 return err; 235 return err;
236 236
diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
index f20d9978ee78..e10a092c603c 100644
--- a/drivers/hwmon/max6639.c
+++ b/drivers/hwmon/max6639.c
@@ -208,7 +208,7 @@ static ssize_t set_temp_max(struct device *dev,
208 unsigned long val; 208 unsigned long val;
209 int res; 209 int res;
210 210
211 res = strict_strtoul(buf, 10, &val); 211 res = kstrtoul(buf, 10, &val);
212 if (res) 212 if (res)
213 return res; 213 return res;
214 214
@@ -241,7 +241,7 @@ static ssize_t set_temp_crit(struct device *dev,
241 unsigned long val; 241 unsigned long val;
242 int res; 242 int res;
243 243
244 res = strict_strtoul(buf, 10, &val); 244 res = kstrtoul(buf, 10, &val);
245 if (res) 245 if (res)
246 return res; 246 return res;
247 247
@@ -275,7 +275,7 @@ static ssize_t set_temp_emergency(struct device *dev,
275 unsigned long val; 275 unsigned long val;
276 int res; 276 int res;
277 277
278 res = strict_strtoul(buf, 10, &val); 278 res = kstrtoul(buf, 10, &val);
279 if (res) 279 if (res)
280 return res; 280 return res;
281 281
@@ -308,7 +308,7 @@ static ssize_t set_pwm(struct device *dev,
308 unsigned long val; 308 unsigned long val;
309 int res; 309 int res;
310 310
311 res = strict_strtoul(buf, 10, &val); 311 res = kstrtoul(buf, 10, &val);
312 if (res) 312 if (res)
313 return res; 313 return res;
314 314
diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c
index e855d3b0bd1f..209e8a526eb1 100644
--- a/drivers/hwmon/max6642.c
+++ b/drivers/hwmon/max6642.c
@@ -234,7 +234,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
234 struct max6642_data *data = i2c_get_clientdata(client); 234 struct max6642_data *data = i2c_get_clientdata(client);
235 struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(attr); 235 struct sensor_device_attribute_2 *attr2 = to_sensor_dev_attr_2(attr);
236 236
237 err = strict_strtoul(buf, 10, &val); 237 err = kstrtoul(buf, 10, &val);
238 if (err < 0) 238 if (err < 0)
239 return err; 239 return err;
240 240
diff --git a/drivers/hwmon/pc87427.c b/drivers/hwmon/pc87427.c
index 8da2181630b1..cb35461d52d9 100644
--- a/drivers/hwmon/pc87427.c
+++ b/drivers/hwmon/pc87427.c
@@ -418,7 +418,7 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute
418 unsigned long val; 418 unsigned long val;
419 int iobase = data->address[LD_FAN]; 419 int iobase = data->address[LD_FAN];
420 420
421 if (strict_strtoul(buf, 10, &val) < 0) 421 if (kstrtoul(buf, 10, &val) < 0)
422 return -EINVAL; 422 return -EINVAL;
423 423
424 mutex_lock(&data->lock); 424 mutex_lock(&data->lock);
@@ -572,7 +572,7 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute
572 int nr = to_sensor_dev_attr(devattr)->index; 572 int nr = to_sensor_dev_attr(devattr)->index;
573 unsigned long val; 573 unsigned long val;
574 574
575 if (strict_strtoul(buf, 10, &val) < 0 || val > 2) 575 if (kstrtoul(buf, 10, &val) < 0 || val > 2)
576 return -EINVAL; 576 return -EINVAL;
577 /* Can't go to automatic mode if it isn't configured */ 577 /* Can't go to automatic mode if it isn't configured */
578 if (val == 2 && !(data->pwm_auto_ok & (1 << nr))) 578 if (val == 2 && !(data->pwm_auto_ok & (1 << nr)))
@@ -604,7 +604,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute
604 int iobase = data->address[LD_FAN]; 604 int iobase = data->address[LD_FAN];
605 u8 mode; 605 u8 mode;
606 606
607 if (strict_strtoul(buf, 10, &val) < 0 || val > 0xff) 607 if (kstrtoul(buf, 10, &val) < 0 || val > 0xff)
608 return -EINVAL; 608 return -EINVAL;
609 609
610 mutex_lock(&data->lock); 610 mutex_lock(&data->lock);
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
index 4b26f51920ba..cfec923f42b7 100644
--- a/drivers/hwmon/pmbus/Kconfig
+++ b/drivers/hwmon/pmbus/Kconfig
@@ -19,8 +19,8 @@ config SENSORS_PMBUS
19 default y 19 default y
20 help 20 help
21 If you say yes here you get hardware monitoring support for generic 21 If you say yes here you get hardware monitoring support for generic
22 PMBus devices, including but not limited to ADP4000, BMR450, BMR451, 22 PMBus devices, including but not limited to ADP4000, BMR453, BMR454,
23 BMR453, BMR454, NCP4200, and NCP4208. 23 NCP4200, and NCP4208.
24 24
25 This driver can also be built as a module. If so, the module will 25 This driver can also be built as a module. If so, the module will
26 be called pmbus. 26 be called pmbus.
@@ -113,8 +113,9 @@ config SENSORS_ZL6100
113 default n 113 default n
114 help 114 help
115 If you say yes here you get hardware monitoring support for Intersil 115 If you say yes here you get hardware monitoring support for Intersil
116 ZL2004, ZL2006, ZL2008, ZL2105, ZL2106, ZL6100, and ZL6105 Digital 116 ZL2004, ZL2005, ZL2006, ZL2008, ZL2105, ZL2106, ZL6100, and ZL6105
117 DC/DC Controllers. 117 Digital DC/DC Controllers, as well as for Ericsson BMR450, BMR451,
118 BMR462, BMR463, and BMR464.
118 119
119 This driver can also be built as a module. If so, the module will 120 This driver can also be built as a module. If so, the module will
120 be called zl6100. 121 be called zl6100.
diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c
index 980a4d9d5028..81c7c2ead6f3 100644
--- a/drivers/hwmon/pmbus/adm1275.c
+++ b/drivers/hwmon/pmbus/adm1275.c
@@ -170,35 +170,71 @@ static int adm1275_read_byte_data(struct i2c_client *client, int page, int reg)
170 return ret; 170 return ret;
171} 171}
172 172
173static const struct i2c_device_id adm1275_id[] = {
174 { "adm1275", adm1275 },
175 { "adm1276", adm1276 },
176 { }
177};
178MODULE_DEVICE_TABLE(i2c, adm1275_id);
179
173static int adm1275_probe(struct i2c_client *client, 180static int adm1275_probe(struct i2c_client *client,
174 const struct i2c_device_id *id) 181 const struct i2c_device_id *id)
175{ 182{
183 u8 block_buffer[I2C_SMBUS_BLOCK_MAX + 1];
176 int config, device_config; 184 int config, device_config;
177 int ret; 185 int ret;
178 struct pmbus_driver_info *info; 186 struct pmbus_driver_info *info;
179 struct adm1275_data *data; 187 struct adm1275_data *data;
188 const struct i2c_device_id *mid;
180 189
181 if (!i2c_check_functionality(client->adapter, 190 if (!i2c_check_functionality(client->adapter,
182 I2C_FUNC_SMBUS_READ_BYTE_DATA)) 191 I2C_FUNC_SMBUS_READ_BYTE_DATA
192 | I2C_FUNC_SMBUS_BLOCK_DATA))
183 return -ENODEV; 193 return -ENODEV;
184 194
185 data = kzalloc(sizeof(struct adm1275_data), GFP_KERNEL); 195 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, block_buffer);
186 if (!data) 196 if (ret < 0) {
187 return -ENOMEM; 197 dev_err(&client->dev, "Failed to read Manufacturer ID\n");
198 return ret;
199 }
200 if (ret != 3 || strncmp(block_buffer, "ADI", 3)) {
201 dev_err(&client->dev, "Unsupported Manufacturer ID\n");
202 return -ENODEV;
203 }
188 204
189 config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG); 205 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, block_buffer);
190 if (config < 0) { 206 if (ret < 0) {
191 ret = config; 207 dev_err(&client->dev, "Failed to read Manufacturer Model\n");
192 goto err_mem; 208 return ret;
209 }
210 for (mid = adm1275_id; mid->name[0]; mid++) {
211 if (!strncasecmp(mid->name, block_buffer, strlen(mid->name)))
212 break;
213 }
214 if (!mid->name[0]) {
215 dev_err(&client->dev, "Unsupported device\n");
216 return -ENODEV;
193 } 217 }
194 218
219 if (id->driver_data != mid->driver_data)
220 dev_notice(&client->dev,
221 "Device mismatch: Configured %s, detected %s\n",
222 id->name, mid->name);
223
224 config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG);
225 if (config < 0)
226 return config;
227
195 device_config = i2c_smbus_read_byte_data(client, ADM1275_DEVICE_CONFIG); 228 device_config = i2c_smbus_read_byte_data(client, ADM1275_DEVICE_CONFIG);
196 if (device_config < 0) { 229 if (device_config < 0)
197 ret = device_config; 230 return device_config;
198 goto err_mem; 231
199 } 232 data = kzalloc(sizeof(struct adm1275_data), GFP_KERNEL);
233 if (!data)
234 return -ENOMEM;
235
236 data->id = mid->driver_data;
200 237
201 data->id = id->driver_data;
202 info = &data->info; 238 info = &data->info;
203 239
204 info->pages = 1; 240 info->pages = 1;
@@ -233,7 +269,7 @@ static int adm1275_probe(struct i2c_client *client,
233 if (device_config & ADM1275_IOUT_WARN2_SELECT) 269 if (device_config & ADM1275_IOUT_WARN2_SELECT)
234 data->have_oc_fault = true; 270 data->have_oc_fault = true;
235 271
236 switch (id->driver_data) { 272 switch (data->id) {
237 case adm1275: 273 case adm1275:
238 if (config & ADM1275_VIN_VOUT_SELECT) 274 if (config & ADM1275_VIN_VOUT_SELECT)
239 info->func[0] |= 275 info->func[0] |=
@@ -281,13 +317,6 @@ static int adm1275_remove(struct i2c_client *client)
281 return 0; 317 return 0;
282} 318}
283 319
284static const struct i2c_device_id adm1275_id[] = {
285 { "adm1275", adm1275 },
286 { "adm1276", adm1276 },
287 { }
288};
289MODULE_DEVICE_TABLE(i2c, adm1275_id);
290
291static struct i2c_driver adm1275_driver = { 320static struct i2c_driver adm1275_driver = {
292 .driver = { 321 .driver = {
293 .name = "adm1275", 322 .name = "adm1275",
diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
index 995e873197e3..18a385e753d7 100644
--- a/drivers/hwmon/pmbus/pmbus.c
+++ b/drivers/hwmon/pmbus/pmbus.c
@@ -200,8 +200,6 @@ static int pmbus_remove(struct i2c_client *client)
200 */ 200 */
201static const struct i2c_device_id pmbus_id[] = { 201static const struct i2c_device_id pmbus_id[] = {
202 {"adp4000", 1}, 202 {"adp4000", 1},
203 {"bmr450", 1},
204 {"bmr451", 1},
205 {"bmr453", 1}, 203 {"bmr453", 1},
206 {"bmr454", 1}, 204 {"bmr454", 1},
207 {"ncp4200", 1}, 205 {"ncp4200", 1},
diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c
index 2bc980006f83..48c7b4a716ae 100644
--- a/drivers/hwmon/pmbus/zl6100.c
+++ b/drivers/hwmon/pmbus/zl6100.c
@@ -28,7 +28,7 @@
28#include <linux/delay.h> 28#include <linux/delay.h>
29#include "pmbus.h" 29#include "pmbus.h"
30 30
31enum chips { zl2004, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 }; 31enum chips { zl2004, zl2005, zl2006, zl2008, zl2105, zl2106, zl6100, zl6105 };
32 32
33struct zl6100_data { 33struct zl6100_data {
34 int id; 34 int id;
@@ -38,8 +38,11 @@ struct zl6100_data {
38 38
39#define to_zl6100_data(x) container_of(x, struct zl6100_data, info) 39#define to_zl6100_data(x) container_of(x, struct zl6100_data, info)
40 40
41#define ZL6100_MFR_CONFIG 0xd0
41#define ZL6100_DEVICE_ID 0xe4 42#define ZL6100_DEVICE_ID 0xe4
42 43
44#define ZL6100_MFR_XTEMP_ENABLE (1 << 7)
45
43#define ZL6100_WAIT_TIME 1000 /* uS */ 46#define ZL6100_WAIT_TIME 1000 /* uS */
44 47
45static ushort delay = ZL6100_WAIT_TIME; 48static ushort delay = ZL6100_WAIT_TIME;
@@ -65,6 +68,19 @@ static int zl6100_read_word_data(struct i2c_client *client, int page, int reg)
65 if (page || reg >= PMBUS_VIRT_BASE) 68 if (page || reg >= PMBUS_VIRT_BASE)
66 return -ENXIO; 69 return -ENXIO;
67 70
71 if (data->id == zl2005) {
72 /*
73 * Limit register detection is not reliable on ZL2005.
74 * Make sure registers are not erroneously detected.
75 */
76 switch (reg) {
77 case PMBUS_VOUT_OV_WARN_LIMIT:
78 case PMBUS_VOUT_UV_WARN_LIMIT:
79 case PMBUS_IOUT_OC_WARN_LIMIT:
80 return -ENXIO;
81 }
82 }
83
68 zl6100_wait(data); 84 zl6100_wait(data);
69 ret = pmbus_read_word_data(client, page, reg); 85 ret = pmbus_read_word_data(client, page, reg);
70 data->access = ktime_get(); 86 data->access = ktime_get();
@@ -122,7 +138,13 @@ static int zl6100_write_byte(struct i2c_client *client, int page, u8 value)
122} 138}
123 139
124static const struct i2c_device_id zl6100_id[] = { 140static const struct i2c_device_id zl6100_id[] = {
141 {"bmr450", zl2005},
142 {"bmr451", zl2005},
143 {"bmr462", zl2008},
144 {"bmr463", zl2008},
145 {"bmr464", zl2008},
125 {"zl2004", zl2004}, 146 {"zl2004", zl2004},
147 {"zl2005", zl2005},
126 {"zl2006", zl2006}, 148 {"zl2006", zl2006},
127 {"zl2008", zl2008}, 149 {"zl2008", zl2008},
128 {"zl2105", zl2105}, 150 {"zl2105", zl2105},
@@ -143,7 +165,7 @@ static int zl6100_probe(struct i2c_client *client,
143 const struct i2c_device_id *mid; 165 const struct i2c_device_id *mid;
144 166
145 if (!i2c_check_functionality(client->adapter, 167 if (!i2c_check_functionality(client->adapter,
146 I2C_FUNC_SMBUS_READ_BYTE_DATA 168 I2C_FUNC_SMBUS_READ_WORD_DATA
147 | I2C_FUNC_SMBUS_READ_BLOCK_DATA)) 169 | I2C_FUNC_SMBUS_READ_BLOCK_DATA))
148 return -ENODEV; 170 return -ENODEV;
149 171
@@ -177,8 +199,9 @@ static int zl6100_probe(struct i2c_client *client,
177 data->id = mid->driver_data; 199 data->id = mid->driver_data;
178 200
179 /* 201 /*
180 * ZL2008, ZL2105, and ZL6100 are known to require a wait time 202 * ZL2005, ZL2008, ZL2105, and ZL6100 are known to require a wait time
181 * between I2C accesses. ZL2004 and ZL6105 are known to be safe. 203 * between I2C accesses. ZL2004 and ZL6105 are known to be safe.
204 * Other chips have not yet been tested.
182 * 205 *
183 * Only clear the wait time for chips known to be safe. The wait time 206 * Only clear the wait time for chips known to be safe. The wait time
184 * can be cleared later for additional chips if tests show that it 207 * can be cleared later for additional chips if tests show that it
@@ -190,12 +213,9 @@ static int zl6100_probe(struct i2c_client *client,
190 /* 213 /*
191 * Since there was a direct I2C device access above, wait before 214 * Since there was a direct I2C device access above, wait before
192 * accessing the chip again. 215 * accessing the chip again.
193 * Set the timestamp, wait, then set it again. This should provide
194 * enough buffer time to be safe.
195 */ 216 */
196 data->access = ktime_get(); 217 data->access = ktime_get();
197 zl6100_wait(data); 218 zl6100_wait(data);
198 data->access = ktime_get();
199 219
200 info = &data->info; 220 info = &data->info;
201 221
@@ -203,7 +223,16 @@ static int zl6100_probe(struct i2c_client *client,
203 info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT 223 info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
204 | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT 224 | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
205 | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT 225 | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
206 | PMBUS_HAVE_TEMP | PMBUS_HAVE_TEMP2 | PMBUS_HAVE_STATUS_TEMP; 226 | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
227
228 ret = i2c_smbus_read_word_data(client, ZL6100_MFR_CONFIG);
229 if (ret < 0)
230 goto err_mem;
231 if (ret & ZL6100_MFR_XTEMP_ENABLE)
232 info->func[0] |= PMBUS_HAVE_TEMP2;
233
234 data->access = ktime_get();
235 zl6100_wait(data);
207 236
208 info->read_word_data = zl6100_read_word_data; 237 info->read_word_data = zl6100_read_word_data;
209 info->read_byte_data = zl6100_read_byte_data; 238 info->read_byte_data = zl6100_read_byte_data;
diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
index fe4104c6b764..6ddeae049058 100644
--- a/drivers/hwmon/sht15.c
+++ b/drivers/hwmon/sht15.c
@@ -683,7 +683,7 @@ static ssize_t sht15_store_heater(struct device *dev,
683 long value; 683 long value;
684 u8 status; 684 u8 status;
685 685
686 if (strict_strtol(buf, 10, &value)) 686 if (kstrtol(buf, 10, &value))
687 return -EINVAL; 687 return -EINVAL;
688 688
689 mutex_lock(&data->read_lock); 689 mutex_lock(&data->read_lock);
diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
index 643aa8c94535..c08eee21d76e 100644
--- a/drivers/hwmon/tmp102.c
+++ b/drivers/hwmon/tmp102.c
@@ -112,7 +112,7 @@ static ssize_t tmp102_set_temp(struct device *dev,
112 long val; 112 long val;
113 int status; 113 int status;
114 114
115 if (strict_strtol(buf, 10, &val) < 0) 115 if (kstrtol(buf, 10, &val) < 0)
116 return -EINVAL; 116 return -EINVAL;
117 val = SENSORS_LIMIT(val, -256000, 255000); 117 val = SENSORS_LIMIT(val, -256000, 255000);
118 118
diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c
index ad8d535235c5..8b9a77486d57 100644
--- a/drivers/hwmon/tmp401.c
+++ b/drivers/hwmon/tmp401.c
@@ -334,7 +334,7 @@ static ssize_t store_temp_min(struct device *dev, struct device_attribute
334 long val; 334 long val;
335 u16 reg; 335 u16 reg;
336 336
337 if (strict_strtol(buf, 10, &val)) 337 if (kstrtol(buf, 10, &val))
338 return -EINVAL; 338 return -EINVAL;
339 339
340 reg = tmp401_temp_to_register(val, data->config); 340 reg = tmp401_temp_to_register(val, data->config);
@@ -361,7 +361,7 @@ static ssize_t store_temp_max(struct device *dev, struct device_attribute
361 long val; 361 long val;
362 u16 reg; 362 u16 reg;
363 363
364 if (strict_strtol(buf, 10, &val)) 364 if (kstrtol(buf, 10, &val))
365 return -EINVAL; 365 return -EINVAL;
366 366
367 reg = tmp401_temp_to_register(val, data->config); 367 reg = tmp401_temp_to_register(val, data->config);
@@ -388,7 +388,7 @@ static ssize_t store_temp_crit(struct device *dev, struct device_attribute
388 long val; 388 long val;
389 u8 reg; 389 u8 reg;
390 390
391 if (strict_strtol(buf, 10, &val)) 391 if (kstrtol(buf, 10, &val))
392 return -EINVAL; 392 return -EINVAL;
393 393
394 reg = tmp401_crit_temp_to_register(val, data->config); 394 reg = tmp401_crit_temp_to_register(val, data->config);
@@ -413,7 +413,7 @@ static ssize_t store_temp_crit_hyst(struct device *dev, struct device_attribute
413 long val; 413 long val;
414 u8 reg; 414 u8 reg;
415 415
416 if (strict_strtol(buf, 10, &val)) 416 if (kstrtol(buf, 10, &val))
417 return -EINVAL; 417 return -EINVAL;
418 418
419 if (data->config & TMP401_CONFIG_RANGE) 419 if (data->config & TMP401_CONFIG_RANGE)
@@ -447,7 +447,7 @@ static ssize_t reset_temp_history(struct device *dev,
447{ 447{
448 long val; 448 long val;
449 449
450 if (strict_strtol(buf, 10, &val)) 450 if (kstrtol(buf, 10, &val))
451 return -EINVAL; 451 return -EINVAL;
452 452
453 if (val != 1) { 453 if (val != 1) {
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
index 93f5fc7d6059..0e0af0445222 100644
--- a/drivers/hwmon/w83627ehf.c
+++ b/drivers/hwmon/w83627ehf.c
@@ -937,7 +937,7 @@ store_in_##reg(struct device *dev, struct device_attribute *attr, \
937 int nr = sensor_attr->index; \ 937 int nr = sensor_attr->index; \
938 unsigned long val; \ 938 unsigned long val; \
939 int err; \ 939 int err; \
940 err = strict_strtoul(buf, 10, &val); \ 940 err = kstrtoul(buf, 10, &val); \
941 if (err < 0) \ 941 if (err < 0) \
942 return err; \ 942 return err; \
943 mutex_lock(&data->update_lock); \ 943 mutex_lock(&data->update_lock); \
@@ -1054,7 +1054,7 @@ store_fan_min(struct device *dev, struct device_attribute *attr,
1054 unsigned int reg; 1054 unsigned int reg;
1055 u8 new_div; 1055 u8 new_div;
1056 1056
1057 err = strict_strtoul(buf, 10, &val); 1057 err = kstrtoul(buf, 10, &val);
1058 if (err < 0) 1058 if (err < 0)
1059 return err; 1059 return err;
1060 1060
@@ -1199,7 +1199,7 @@ store_##reg(struct device *dev, struct device_attribute *attr, \
1199 int nr = sensor_attr->index; \ 1199 int nr = sensor_attr->index; \
1200 int err; \ 1200 int err; \
1201 long val; \ 1201 long val; \
1202 err = strict_strtol(buf, 10, &val); \ 1202 err = kstrtol(buf, 10, &val); \
1203 if (err < 0) \ 1203 if (err < 0) \
1204 return err; \ 1204 return err; \
1205 mutex_lock(&data->update_lock); \ 1205 mutex_lock(&data->update_lock); \
@@ -1324,7 +1324,7 @@ store_pwm_mode(struct device *dev, struct device_attribute *attr,
1324 int err; 1324 int err;
1325 u16 reg; 1325 u16 reg;
1326 1326
1327 err = strict_strtoul(buf, 10, &val); 1327 err = kstrtoul(buf, 10, &val);
1328 if (err < 0) 1328 if (err < 0)
1329 return err; 1329 return err;
1330 1330
@@ -1351,7 +1351,7 @@ store_pwm(struct device *dev, struct device_attribute *attr,
1351 unsigned long val; 1351 unsigned long val;
1352 int err; 1352 int err;
1353 1353
1354 err = strict_strtoul(buf, 10, &val); 1354 err = kstrtoul(buf, 10, &val);
1355 if (err < 0) 1355 if (err < 0)
1356 return err; 1356 return err;
1357 1357
@@ -1376,7 +1376,7 @@ store_pwm_enable(struct device *dev, struct device_attribute *attr,
1376 int err; 1376 int err;
1377 u16 reg; 1377 u16 reg;
1378 1378
1379 err = strict_strtoul(buf, 10, &val); 1379 err = kstrtoul(buf, 10, &val);
1380 if (err < 0) 1380 if (err < 0)
1381 return err; 1381 return err;
1382 1382
@@ -1430,7 +1430,7 @@ store_target_temp(struct device *dev, struct device_attribute *attr,
1430 long val; 1430 long val;
1431 int err; 1431 int err;
1432 1432
1433 err = strict_strtol(buf, 10, &val); 1433 err = kstrtol(buf, 10, &val);
1434 if (err < 0) 1434 if (err < 0)
1435 return err; 1435 return err;
1436 1436
@@ -1455,7 +1455,7 @@ store_tolerance(struct device *dev, struct device_attribute *attr,
1455 long val; 1455 long val;
1456 int err; 1456 int err;
1457 1457
1458 err = strict_strtol(buf, 10, &val); 1458 err = kstrtol(buf, 10, &val);
1459 if (err < 0) 1459 if (err < 0)
1460 return err; 1460 return err;
1461 1461
@@ -1556,7 +1556,7 @@ store_##reg(struct device *dev, struct device_attribute *attr, \
1556 int nr = sensor_attr->index; \ 1556 int nr = sensor_attr->index; \
1557 unsigned long val; \ 1557 unsigned long val; \
1558 int err; \ 1558 int err; \
1559 err = strict_strtoul(buf, 10, &val); \ 1559 err = kstrtoul(buf, 10, &val); \
1560 if (err < 0) \ 1560 if (err < 0) \
1561 return err; \ 1561 return err; \
1562 val = SENSORS_LIMIT(val, 1, 255); \ 1562 val = SENSORS_LIMIT(val, 1, 255); \
@@ -1595,7 +1595,7 @@ store_##reg(struct device *dev, struct device_attribute *attr, \
1595 int nr = sensor_attr->index; \ 1595 int nr = sensor_attr->index; \
1596 unsigned long val; \ 1596 unsigned long val; \
1597 int err; \ 1597 int err; \
1598 err = strict_strtoul(buf, 10, &val); \ 1598 err = kstrtoul(buf, 10, &val); \
1599 if (err < 0) \ 1599 if (err < 0) \
1600 return err; \ 1600 return err; \
1601 val = step_time_to_reg(val, data->pwm_mode[nr]); \ 1601 val = step_time_to_reg(val, data->pwm_mode[nr]); \
@@ -1702,7 +1702,7 @@ clear_caseopen(struct device *dev, struct device_attribute *attr,
1702 unsigned long val; 1702 unsigned long val;
1703 u16 reg, mask; 1703 u16 reg, mask;
1704 1704
1705 if (strict_strtoul(buf, 10, &val) || val != 0) 1705 if (kstrtoul(buf, 10, &val) || val != 0)
1706 return -EINVAL; 1706 return -EINVAL;
1707 1707
1708 mask = to_sensor_dev_attr_2(attr)->nr; 1708 mask = to_sensor_dev_attr_2(attr)->nr;
diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c
index 8c2844e5691c..6e5d0ae594b0 100644
--- a/drivers/hwmon/w83791d.c
+++ b/drivers/hwmon/w83791d.c
@@ -711,7 +711,7 @@ static ssize_t store_pwm(struct device *dev, struct device_attribute *attr,
711 int nr = sensor_attr->index; 711 int nr = sensor_attr->index;
712 unsigned long val; 712 unsigned long val;
713 713
714 if (strict_strtoul(buf, 10, &val)) 714 if (kstrtoul(buf, 10, &val))
715 return -EINVAL; 715 return -EINVAL;
716 716
717 mutex_lock(&data->update_lock); 717 mutex_lock(&data->update_lock);
@@ -756,7 +756,7 @@ static ssize_t store_pwmenable(struct device *dev,
756 u8 val_shift = 0; 756 u8 val_shift = 0;
757 u8 keep_mask = 0; 757 u8 keep_mask = 0;
758 758
759 int ret = strict_strtoul(buf, 10, &val); 759 int ret = kstrtoul(buf, 10, &val);
760 760
761 if (ret || val < 1 || val > 3) 761 if (ret || val < 1 || val > 3)
762 return -EINVAL; 762 return -EINVAL;
@@ -819,7 +819,7 @@ static ssize_t store_temp_target(struct device *dev,
819 unsigned long val; 819 unsigned long val;
820 u8 target_mask; 820 u8 target_mask;
821 821
822 if (strict_strtoul(buf, 10, &val)) 822 if (kstrtoul(buf, 10, &val))
823 return -EINVAL; 823 return -EINVAL;
824 824
825 mutex_lock(&data->update_lock); 825 mutex_lock(&data->update_lock);
@@ -863,7 +863,7 @@ static ssize_t store_temp_tolerance(struct device *dev,
863 u8 val_shift = 0; 863 u8 val_shift = 0;
864 u8 keep_mask = 0; 864 u8 keep_mask = 0;
865 865
866 if (strict_strtoul(buf, 10, &val)) 866 if (kstrtoul(buf, 10, &val))
867 return -EINVAL; 867 return -EINVAL;
868 868
869 switch (nr) { 869 switch (nr) {
diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c
index f3e7130c4cda..9ded133e43f0 100644
--- a/drivers/hwmon/w83792d.c
+++ b/drivers/hwmon/w83792d.c
@@ -749,7 +749,7 @@ store_chassis_clear(struct device *dev, struct device_attribute *attr,
749 unsigned long val; 749 unsigned long val;
750 u8 reg; 750 u8 reg;
751 751
752 if (strict_strtoul(buf, 10, &val) || val != 0) 752 if (kstrtoul(buf, 10, &val) || val != 0)
753 return -EINVAL; 753 return -EINVAL;
754 754
755 mutex_lock(&data->update_lock); 755 mutex_lock(&data->update_lock);
diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c
index 854f9117f1aa..3cc6fef22087 100644
--- a/drivers/hwmon/w83793.c
+++ b/drivers/hwmon/w83793.c
@@ -450,7 +450,7 @@ store_chassis_clear(struct device *dev,
450 unsigned long val; 450 unsigned long val;
451 u8 reg; 451 u8 reg;
452 452
453 if (strict_strtoul(buf, 10, &val) || val != 0) 453 if (kstrtoul(buf, 10, &val) || val != 0)
454 return -EINVAL; 454 return -EINVAL;
455 455
456 mutex_lock(&data->update_lock); 456 mutex_lock(&data->update_lock);
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c
index 845232d7f611..3ee398d0e4c9 100644
--- a/drivers/hwmon/w83795.c
+++ b/drivers/hwmon/w83795.c
@@ -730,7 +730,7 @@ store_beep(struct device *dev, struct device_attribute *attr,
730 u8 beep_bit = 1 << shift; 730 u8 beep_bit = 1 << shift;
731 unsigned long val; 731 unsigned long val;
732 732
733 if (strict_strtoul(buf, 10, &val) < 0) 733 if (kstrtoul(buf, 10, &val) < 0)
734 return -EINVAL; 734 return -EINVAL;
735 if (val != 0 && val != 1) 735 if (val != 0 && val != 1)
736 return -EINVAL; 736 return -EINVAL;
@@ -755,7 +755,7 @@ store_chassis_clear(struct device *dev,
755 struct w83795_data *data = i2c_get_clientdata(client); 755 struct w83795_data *data = i2c_get_clientdata(client);
756 unsigned long val; 756 unsigned long val;
757 757
758 if (strict_strtoul(buf, 10, &val) < 0 || val != 0) 758 if (kstrtoul(buf, 10, &val) < 0 || val != 0)
759 return -EINVAL; 759 return -EINVAL;
760 760
761 mutex_lock(&data->update_lock); 761 mutex_lock(&data->update_lock);
@@ -801,7 +801,7 @@ store_fan_min(struct device *dev, struct device_attribute *attr,
801 struct w83795_data *data = i2c_get_clientdata(client); 801 struct w83795_data *data = i2c_get_clientdata(client);
802 unsigned long val; 802 unsigned long val;
803 803
804 if (strict_strtoul(buf, 10, &val)) 804 if (kstrtoul(buf, 10, &val))
805 return -EINVAL; 805 return -EINVAL;
806 val = fan_to_reg(val); 806 val = fan_to_reg(val);
807 807
@@ -863,7 +863,7 @@ store_pwm(struct device *dev, struct device_attribute *attr,
863 int index = sensor_attr->index; 863 int index = sensor_attr->index;
864 unsigned long val; 864 unsigned long val;
865 865
866 if (strict_strtoul(buf, 10, &val) < 0) 866 if (kstrtoul(buf, 10, &val) < 0)
867 return -EINVAL; 867 return -EINVAL;
868 868
869 mutex_lock(&data->update_lock); 869 mutex_lock(&data->update_lock);
@@ -924,7 +924,7 @@ store_pwm_enable(struct device *dev, struct device_attribute *attr,
924 unsigned long val; 924 unsigned long val;
925 int i; 925 int i;
926 926
927 if (strict_strtoul(buf, 10, &val) < 0) 927 if (kstrtoul(buf, 10, &val) < 0)
928 return -EINVAL; 928 return -EINVAL;
929 if (val < 1 || val > 2) 929 if (val < 1 || val > 2)
930 return -EINVAL; 930 return -EINVAL;
@@ -1021,7 +1021,7 @@ store_temp_src(struct device *dev, struct device_attribute *attr,
1021 unsigned long channel; 1021 unsigned long channel;
1022 u8 val = index / 2; 1022 u8 val = index / 2;
1023 1023
1024 if (strict_strtoul(buf, 10, &channel) < 0 || 1024 if (kstrtoul(buf, 10, &channel) < 0 ||
1025 channel < 1 || channel > 14) 1025 channel < 1 || channel > 14)
1026 return -EINVAL; 1026 return -EINVAL;
1027 1027
@@ -1088,7 +1088,7 @@ store_temp_pwm_enable(struct device *dev, struct device_attribute *attr,
1088 int index = sensor_attr->index; 1088 int index = sensor_attr->index;
1089 unsigned long tmp; 1089 unsigned long tmp;
1090 1090
1091 if (strict_strtoul(buf, 10, &tmp) < 0) 1091 if (kstrtoul(buf, 10, &tmp) < 0)
1092 return -EINVAL; 1092 return -EINVAL;
1093 1093
1094 switch (nr) { 1094 switch (nr) {
@@ -1149,7 +1149,7 @@ store_fanin(struct device *dev, struct device_attribute *attr,
1149 int index = sensor_attr->index; 1149 int index = sensor_attr->index;
1150 unsigned long val; 1150 unsigned long val;
1151 1151
1152 if (strict_strtoul(buf, 10, &val) < 0) 1152 if (kstrtoul(buf, 10, &val) < 0)
1153 return -EINVAL; 1153 return -EINVAL;
1154 1154
1155 mutex_lock(&data->update_lock); 1155 mutex_lock(&data->update_lock);
@@ -1198,7 +1198,7 @@ store_temp_pwm(struct device *dev, struct device_attribute *attr,
1198 unsigned long val; 1198 unsigned long val;
1199 u8 tmp; 1199 u8 tmp;
1200 1200
1201 if (strict_strtoul(buf, 10, &val) < 0) 1201 if (kstrtoul(buf, 10, &val) < 0)
1202 return -EINVAL; 1202 return -EINVAL;
1203 val /= 1000; 1203 val /= 1000;
1204 1204
@@ -1257,7 +1257,7 @@ store_sf4_pwm(struct device *dev, struct device_attribute *attr,
1257 int index = sensor_attr->index; 1257 int index = sensor_attr->index;
1258 unsigned long val; 1258 unsigned long val;
1259 1259
1260 if (strict_strtoul(buf, 10, &val) < 0) 1260 if (kstrtoul(buf, 10, &val) < 0)
1261 return -EINVAL; 1261 return -EINVAL;
1262 1262
1263 mutex_lock(&data->update_lock); 1263 mutex_lock(&data->update_lock);
@@ -1293,7 +1293,7 @@ store_sf4_temp(struct device *dev, struct device_attribute *attr,
1293 int index = sensor_attr->index; 1293 int index = sensor_attr->index;
1294 unsigned long val; 1294 unsigned long val;
1295 1295
1296 if (strict_strtoul(buf, 10, &val) < 0) 1296 if (kstrtoul(buf, 10, &val) < 0)
1297 return -EINVAL; 1297 return -EINVAL;
1298 val /= 1000; 1298 val /= 1000;
1299 1299
@@ -1333,7 +1333,7 @@ store_temp(struct device *dev, struct device_attribute *attr,
1333 struct w83795_data *data = i2c_get_clientdata(client); 1333 struct w83795_data *data = i2c_get_clientdata(client);
1334 long tmp; 1334 long tmp;
1335 1335
1336 if (strict_strtol(buf, 10, &tmp) < 0) 1336 if (kstrtol(buf, 10, &tmp) < 0)
1337 return -EINVAL; 1337 return -EINVAL;
1338 1338
1339 mutex_lock(&data->update_lock); 1339 mutex_lock(&data->update_lock);
@@ -1394,7 +1394,7 @@ store_dts_ext(struct device *dev, struct device_attribute *attr,
1394 struct w83795_data *data = i2c_get_clientdata(client); 1394 struct w83795_data *data = i2c_get_clientdata(client);
1395 long tmp; 1395 long tmp;
1396 1396
1397 if (strict_strtol(buf, 10, &tmp) < 0) 1397 if (kstrtol(buf, 10, &tmp) < 0)
1398 return -EINVAL; 1398 return -EINVAL;
1399 1399
1400 mutex_lock(&data->update_lock); 1400 mutex_lock(&data->update_lock);
@@ -1436,7 +1436,7 @@ store_temp_mode(struct device *dev, struct device_attribute *attr,
1436 unsigned long val; 1436 unsigned long val;
1437 u8 tmp; 1437 u8 tmp;
1438 1438
1439 if (strict_strtoul(buf, 10, &val) < 0) 1439 if (kstrtoul(buf, 10, &val) < 0)
1440 return -EINVAL; 1440 return -EINVAL;
1441 if ((val != 4) && (val != 3)) 1441 if ((val != 4) && (val != 3))
1442 return -EINVAL; 1442 return -EINVAL;
@@ -1512,7 +1512,7 @@ store_in(struct device *dev, struct device_attribute *attr,
1512 u8 tmp; 1512 u8 tmp;
1513 u8 lsb_idx; 1513 u8 lsb_idx;
1514 1514
1515 if (strict_strtoul(buf, 10, &val) < 0) 1515 if (kstrtoul(buf, 10, &val) < 0)
1516 return -EINVAL; 1516 return -EINVAL;
1517 val = in_to_reg(index, val); 1517 val = in_to_reg(index, val);
1518 1518
@@ -1569,7 +1569,7 @@ store_sf_setup(struct device *dev, struct device_attribute *attr,
1569 struct w83795_data *data = i2c_get_clientdata(client); 1569 struct w83795_data *data = i2c_get_clientdata(client);
1570 unsigned long val; 1570 unsigned long val;
1571 1571
1572 if (strict_strtoul(buf, 10, &val) < 0) 1572 if (kstrtoul(buf, 10, &val) < 0)
1573 return -EINVAL; 1573 return -EINVAL;
1574 1574
1575 switch (nr) { 1575 switch (nr) {