hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/hwmon/adt7475.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * adt7475 - Thermal sensor driver for the ADT7475 chip and derivatives
34 * Copyright (C) 2007-2008, Advanced Micro Devices, Inc.
....@@ -6,10 +7,6 @@
67 * Copyright (C) 2009 Jean Delvare <jdelvare@suse.de>
78 *
89 * Derived from the lm83 driver by Jean Delvare
9
- *
10
- * This program is free software; you can redistribute it and/or modify
11
- * it under the terms of the GNU General Public License version 2 as
12
- * published by the Free Software Foundation.
1310 */
1411
1512 #include <linux/module.h>
....@@ -22,6 +19,7 @@
2219 #include <linux/hwmon-vid.h>
2320 #include <linux/err.h>
2421 #include <linux/jiffies.h>
22
+#include <linux/of.h>
2523 #include <linux/util_macros.h>
2624
2725 /* Indexes for the sysfs hooks */
....@@ -168,7 +166,7 @@
168166 };
169167 MODULE_DEVICE_TABLE(i2c, adt7475_id);
170168
171
-static const struct of_device_id adt7475_of_match[] = {
169
+static const struct of_device_id __maybe_unused adt7475_of_match[] = {
172170 {
173171 .compatible = "adi,adt7473",
174172 .data = (void *)adt7473
....@@ -190,12 +188,13 @@
190188 MODULE_DEVICE_TABLE(of, adt7475_of_match);
191189
192190 struct adt7475_data {
193
- struct device *hwmon_dev;
191
+ struct i2c_client *client;
194192 struct mutex lock;
195193
196194 unsigned long measure_updated;
197195 bool valid;
198196
197
+ u8 config2;
199198 u8 config4;
200199 u8 config5;
201200 u8 has_voltage;
....@@ -215,6 +214,7 @@
215214
216215 u8 vid;
217216 u8 vrm;
217
+ const struct attribute_group *groups[9];
218218 };
219219
220220 static struct i2c_driver adt7475_driver;
....@@ -323,7 +323,7 @@
323323 i2c_smbus_write_byte_data(client, reg, val & 0xFF);
324324 }
325325
326
-static ssize_t show_voltage(struct device *dev, struct device_attribute *attr,
326
+static ssize_t voltage_show(struct device *dev, struct device_attribute *attr,
327327 char *buf)
328328 {
329329 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -344,13 +344,14 @@
344344 }
345345 }
346346
347
-static ssize_t set_voltage(struct device *dev, struct device_attribute *attr,
348
- const char *buf, size_t count)
347
+static ssize_t voltage_store(struct device *dev,
348
+ struct device_attribute *attr, const char *buf,
349
+ size_t count)
349350 {
350351
351352 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
352
- struct i2c_client *client = to_i2c_client(dev);
353
- struct adt7475_data *data = i2c_get_clientdata(client);
353
+ struct adt7475_data *data = dev_get_drvdata(dev);
354
+ struct i2c_client *client = data->client;
354355 unsigned char reg;
355356 long val;
356357
....@@ -381,7 +382,7 @@
381382 return count;
382383 }
383384
384
-static ssize_t show_temp(struct device *dev, struct device_attribute *attr,
385
+static ssize_t temp_show(struct device *dev, struct device_attribute *attr,
385386 char *buf)
386387 {
387388 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -439,12 +440,12 @@
439440 return sprintf(buf, "%d\n", out);
440441 }
441442
442
-static ssize_t set_temp(struct device *dev, struct device_attribute *attr,
443
- const char *buf, size_t count)
443
+static ssize_t temp_store(struct device *dev, struct device_attribute *attr,
444
+ const char *buf, size_t count)
444445 {
445446 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
446
- struct i2c_client *client = to_i2c_client(dev);
447
- struct adt7475_data *data = i2c_get_clientdata(client);
447
+ struct adt7475_data *data = dev_get_drvdata(dev);
448
+ struct i2c_client *client = data->client;
448449 unsigned char reg = 0;
449450 u8 out;
450451 int temp;
....@@ -485,10 +486,10 @@
485486 val = (temp - val) / 1000;
486487
487488 if (sattr->index != 1) {
488
- data->temp[HYSTERSIS][sattr->index] &= 0xF0;
489
+ data->temp[HYSTERSIS][sattr->index] &= 0x0F;
489490 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF) << 4;
490491 } else {
491
- data->temp[HYSTERSIS][sattr->index] &= 0x0F;
492
+ data->temp[HYSTERSIS][sattr->index] &= 0xF0;
492493 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF);
493494 }
494495
....@@ -541,12 +542,11 @@
541542 37500, 18800, 12500, 7500, 4700, 3100, 1600, 800,
542543 };
543544
544
-static ssize_t show_temp_st(struct device *dev, struct device_attribute *attr,
545
- char *buf)
545
+static ssize_t temp_st_show(struct device *dev, struct device_attribute *attr,
546
+ char *buf)
546547 {
547548 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
548
- struct i2c_client *client = to_i2c_client(dev);
549
- struct adt7475_data *data = i2c_get_clientdata(client);
549
+ struct adt7475_data *data = dev_get_drvdata(dev);
550550 long val;
551551
552552 switch (sattr->index) {
....@@ -554,11 +554,11 @@
554554 val = data->enh_acoustics[0] & 0xf;
555555 break;
556556 case 1:
557
- val = (data->enh_acoustics[1] >> 4) & 0xf;
557
+ val = data->enh_acoustics[1] & 0xf;
558558 break;
559559 case 2:
560560 default:
561
- val = data->enh_acoustics[1] & 0xf;
561
+ val = (data->enh_acoustics[1] >> 4) & 0xf;
562562 break;
563563 }
564564
....@@ -568,12 +568,13 @@
568568 return sprintf(buf, "0\n");
569569 }
570570
571
-static ssize_t set_temp_st(struct device *dev, struct device_attribute *attr,
572
- const char *buf, size_t count)
571
+static ssize_t temp_st_store(struct device *dev,
572
+ struct device_attribute *attr, const char *buf,
573
+ size_t count)
573574 {
574575 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
575
- struct i2c_client *client = to_i2c_client(dev);
576
- struct adt7475_data *data = i2c_get_clientdata(client);
576
+ struct adt7475_data *data = dev_get_drvdata(dev);
577
+ struct i2c_client *client = data->client;
577578 unsigned char reg;
578579 int shift, idx;
579580 ulong val;
....@@ -628,7 +629,7 @@
628629 53330, 80000
629630 };
630631
631
-static ssize_t show_point2(struct device *dev, struct device_attribute *attr,
632
+static ssize_t point2_show(struct device *dev, struct device_attribute *attr,
632633 char *buf)
633634 {
634635 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -646,11 +647,11 @@
646647 return sprintf(buf, "%d\n", val + autorange_table[out]);
647648 }
648649
649
-static ssize_t set_point2(struct device *dev, struct device_attribute *attr,
650
- const char *buf, size_t count)
650
+static ssize_t point2_store(struct device *dev, struct device_attribute *attr,
651
+ const char *buf, size_t count)
651652 {
652
- struct i2c_client *client = to_i2c_client(dev);
653
- struct adt7475_data *data = i2c_get_clientdata(client);
653
+ struct adt7475_data *data = dev_get_drvdata(dev);
654
+ struct i2c_client *client = data->client;
654655 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
655656 int temp;
656657 long val;
....@@ -689,7 +690,7 @@
689690 return count;
690691 }
691692
692
-static ssize_t show_tach(struct device *dev, struct device_attribute *attr,
693
+static ssize_t tach_show(struct device *dev, struct device_attribute *attr,
693694 char *buf)
694695 {
695696 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -707,13 +708,13 @@
707708 return sprintf(buf, "%d\n", out);
708709 }
709710
710
-static ssize_t set_tach(struct device *dev, struct device_attribute *attr,
711
- const char *buf, size_t count)
711
+static ssize_t tach_store(struct device *dev, struct device_attribute *attr,
712
+ const char *buf, size_t count)
712713 {
713714
714715 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
715
- struct i2c_client *client = to_i2c_client(dev);
716
- struct adt7475_data *data = i2c_get_clientdata(client);
716
+ struct adt7475_data *data = dev_get_drvdata(dev);
717
+ struct i2c_client *client = data->client;
717718 unsigned long val;
718719
719720 if (kstrtoul(buf, 10, &val))
....@@ -730,7 +731,7 @@
730731 return count;
731732 }
732733
733
-static ssize_t show_pwm(struct device *dev, struct device_attribute *attr,
734
+static ssize_t pwm_show(struct device *dev, struct device_attribute *attr,
734735 char *buf)
735736 {
736737 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -742,7 +743,7 @@
742743 return sprintf(buf, "%d\n", data->pwm[sattr->nr][sattr->index]);
743744 }
744745
745
-static ssize_t show_pwmchan(struct device *dev, struct device_attribute *attr,
746
+static ssize_t pwmchan_show(struct device *dev, struct device_attribute *attr,
746747 char *buf)
747748 {
748749 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -754,7 +755,7 @@
754755 return sprintf(buf, "%d\n", data->pwmchan[sattr->index]);
755756 }
756757
757
-static ssize_t show_pwmctrl(struct device *dev, struct device_attribute *attr,
758
+static ssize_t pwmctrl_show(struct device *dev, struct device_attribute *attr,
758759 char *buf)
759760 {
760761 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -766,13 +767,13 @@
766767 return sprintf(buf, "%d\n", data->pwmctl[sattr->index]);
767768 }
768769
769
-static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
770
- const char *buf, size_t count)
770
+static ssize_t pwm_store(struct device *dev, struct device_attribute *attr,
771
+ const char *buf, size_t count)
771772 {
772773
773774 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
774
- struct i2c_client *client = to_i2c_client(dev);
775
- struct adt7475_data *data = i2c_get_clientdata(client);
775
+ struct adt7475_data *data = dev_get_drvdata(dev);
776
+ struct i2c_client *client = data->client;
776777 unsigned char reg = 0;
777778 long val;
778779
....@@ -816,24 +817,24 @@
816817 return count;
817818 }
818819
819
-static ssize_t show_stall_disable(struct device *dev,
820
+static ssize_t stall_disable_show(struct device *dev,
820821 struct device_attribute *attr, char *buf)
821822 {
822823 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
823
- struct i2c_client *client = to_i2c_client(dev);
824
- struct adt7475_data *data = i2c_get_clientdata(client);
824
+ struct adt7475_data *data = dev_get_drvdata(dev);
825
+
825826 u8 mask = BIT(5 + sattr->index);
826827
827828 return sprintf(buf, "%d\n", !!(data->enh_acoustics[0] & mask));
828829 }
829830
830
-static ssize_t set_stall_disable(struct device *dev,
831
- struct device_attribute *attr, const char *buf,
832
- size_t count)
831
+static ssize_t stall_disable_store(struct device *dev,
832
+ struct device_attribute *attr,
833
+ const char *buf, size_t count)
833834 {
834835 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
835
- struct i2c_client *client = to_i2c_client(dev);
836
- struct adt7475_data *data = i2c_get_clientdata(client);
836
+ struct adt7475_data *data = dev_get_drvdata(dev);
837
+ struct i2c_client *client = data->client;
837838 long val;
838839 u8 mask = BIT(5 + sattr->index);
839840
....@@ -911,12 +912,13 @@
911912 return 0;
912913 }
913914
914
-static ssize_t set_pwmchan(struct device *dev, struct device_attribute *attr,
915
- const char *buf, size_t count)
915
+static ssize_t pwmchan_store(struct device *dev,
916
+ struct device_attribute *attr, const char *buf,
917
+ size_t count)
916918 {
917919 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
918
- struct i2c_client *client = to_i2c_client(dev);
919
- struct adt7475_data *data = i2c_get_clientdata(client);
920
+ struct adt7475_data *data = dev_get_drvdata(dev);
921
+ struct i2c_client *client = data->client;
920922 int r;
921923 long val;
922924
....@@ -934,12 +936,13 @@
934936 return count;
935937 }
936938
937
-static ssize_t set_pwmctrl(struct device *dev, struct device_attribute *attr,
938
- const char *buf, size_t count)
939
+static ssize_t pwmctrl_store(struct device *dev,
940
+ struct device_attribute *attr, const char *buf,
941
+ size_t count)
939942 {
940943 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
941
- struct i2c_client *client = to_i2c_client(dev);
942
- struct adt7475_data *data = i2c_get_clientdata(client);
944
+ struct adt7475_data *data = dev_get_drvdata(dev);
945
+ struct i2c_client *client = data->client;
943946 int r;
944947 long val;
945948
....@@ -962,7 +965,7 @@
962965 11, 14, 22, 29, 35, 44, 58, 88, 22500
963966 };
964967
965
-static ssize_t show_pwmfreq(struct device *dev, struct device_attribute *attr,
968
+static ssize_t pwmfreq_show(struct device *dev, struct device_attribute *attr,
966969 char *buf)
967970 {
968971 struct adt7475_data *data = adt7475_update_device(dev);
....@@ -977,12 +980,13 @@
977980 return sprintf(buf, "%d\n", pwmfreq_table[idx]);
978981 }
979982
980
-static ssize_t set_pwmfreq(struct device *dev, struct device_attribute *attr,
981
- const char *buf, size_t count)
983
+static ssize_t pwmfreq_store(struct device *dev,
984
+ struct device_attribute *attr, const char *buf,
985
+ size_t count)
982986 {
983987 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
984
- struct i2c_client *client = to_i2c_client(dev);
985
- struct adt7475_data *data = i2c_get_clientdata(client);
988
+ struct adt7475_data *data = dev_get_drvdata(dev);
989
+ struct i2c_client *client = data->client;
986990 int out;
987991 long val;
988992
....@@ -1021,8 +1025,8 @@
10211025 struct device_attribute *devattr,
10221026 const char *buf, size_t count)
10231027 {
1024
- struct i2c_client *client = to_i2c_client(dev);
1025
- struct adt7475_data *data = i2c_get_clientdata(client);
1028
+ struct adt7475_data *data = dev_get_drvdata(dev);
1029
+ struct i2c_client *client = data->client;
10261030 long val;
10271031
10281032 if (kstrtol(buf, 10, &val))
....@@ -1075,156 +1079,95 @@
10751079 return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm));
10761080 }
10771081
1078
-static SENSOR_DEVICE_ATTR_2(in0_input, S_IRUGO, show_voltage, NULL, INPUT, 0);
1079
-static SENSOR_DEVICE_ATTR_2(in0_max, S_IRUGO | S_IWUSR, show_voltage,
1080
- set_voltage, MAX, 0);
1081
-static SENSOR_DEVICE_ATTR_2(in0_min, S_IRUGO | S_IWUSR, show_voltage,
1082
- set_voltage, MIN, 0);
1083
-static SENSOR_DEVICE_ATTR_2(in0_alarm, S_IRUGO, show_voltage, NULL, ALARM, 0);
1084
-static SENSOR_DEVICE_ATTR_2(in1_input, S_IRUGO, show_voltage, NULL, INPUT, 1);
1085
-static SENSOR_DEVICE_ATTR_2(in1_max, S_IRUGO | S_IWUSR, show_voltage,
1086
- set_voltage, MAX, 1);
1087
-static SENSOR_DEVICE_ATTR_2(in1_min, S_IRUGO | S_IWUSR, show_voltage,
1088
- set_voltage, MIN, 1);
1089
-static SENSOR_DEVICE_ATTR_2(in1_alarm, S_IRUGO, show_voltage, NULL, ALARM, 1);
1090
-static SENSOR_DEVICE_ATTR_2(in2_input, S_IRUGO, show_voltage, NULL, INPUT, 2);
1091
-static SENSOR_DEVICE_ATTR_2(in2_max, S_IRUGO | S_IWUSR, show_voltage,
1092
- set_voltage, MAX, 2);
1093
-static SENSOR_DEVICE_ATTR_2(in2_min, S_IRUGO | S_IWUSR, show_voltage,
1094
- set_voltage, MIN, 2);
1095
-static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, show_voltage, NULL, ALARM, 2);
1096
-static SENSOR_DEVICE_ATTR_2(in3_input, S_IRUGO, show_voltage, NULL, INPUT, 3);
1097
-static SENSOR_DEVICE_ATTR_2(in3_max, S_IRUGO | S_IWUSR, show_voltage,
1098
- set_voltage, MAX, 3);
1099
-static SENSOR_DEVICE_ATTR_2(in3_min, S_IRUGO | S_IWUSR, show_voltage,
1100
- set_voltage, MIN, 3);
1101
-static SENSOR_DEVICE_ATTR_2(in3_alarm, S_IRUGO, show_voltage, NULL, ALARM, 3);
1102
-static SENSOR_DEVICE_ATTR_2(in4_input, S_IRUGO, show_voltage, NULL, INPUT, 4);
1103
-static SENSOR_DEVICE_ATTR_2(in4_max, S_IRUGO | S_IWUSR, show_voltage,
1104
- set_voltage, MAX, 4);
1105
-static SENSOR_DEVICE_ATTR_2(in4_min, S_IRUGO | S_IWUSR, show_voltage,
1106
- set_voltage, MIN, 4);
1107
-static SENSOR_DEVICE_ATTR_2(in4_alarm, S_IRUGO, show_voltage, NULL, ALARM, 8);
1108
-static SENSOR_DEVICE_ATTR_2(in5_input, S_IRUGO, show_voltage, NULL, INPUT, 5);
1109
-static SENSOR_DEVICE_ATTR_2(in5_max, S_IRUGO | S_IWUSR, show_voltage,
1110
- set_voltage, MAX, 5);
1111
-static SENSOR_DEVICE_ATTR_2(in5_min, S_IRUGO | S_IWUSR, show_voltage,
1112
- set_voltage, MIN, 5);
1113
-static SENSOR_DEVICE_ATTR_2(in5_alarm, S_IRUGO, show_voltage, NULL, ALARM, 31);
1114
-static SENSOR_DEVICE_ATTR_2(temp1_input, S_IRUGO, show_temp, NULL, INPUT, 0);
1115
-static SENSOR_DEVICE_ATTR_2(temp1_alarm, S_IRUGO, show_temp, NULL, ALARM, 0);
1116
-static SENSOR_DEVICE_ATTR_2(temp1_fault, S_IRUGO, show_temp, NULL, FAULT, 0);
1117
-static SENSOR_DEVICE_ATTR_2(temp1_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
1118
- MAX, 0);
1119
-static SENSOR_DEVICE_ATTR_2(temp1_min, S_IRUGO | S_IWUSR, show_temp, set_temp,
1120
- MIN, 0);
1121
-static SENSOR_DEVICE_ATTR_2(temp1_offset, S_IRUGO | S_IWUSR, show_temp,
1122
- set_temp, OFFSET, 0);
1123
-static SENSOR_DEVICE_ATTR_2(temp1_auto_point1_temp, S_IRUGO | S_IWUSR,
1124
- show_temp, set_temp, AUTOMIN, 0);
1125
-static SENSOR_DEVICE_ATTR_2(temp1_auto_point2_temp, S_IRUGO | S_IWUSR,
1126
- show_point2, set_point2, 0, 0);
1127
-static SENSOR_DEVICE_ATTR_2(temp1_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
1128
- THERM, 0);
1129
-static SENSOR_DEVICE_ATTR_2(temp1_crit_hyst, S_IRUGO | S_IWUSR, show_temp,
1130
- set_temp, HYSTERSIS, 0);
1131
-static SENSOR_DEVICE_ATTR_2(temp1_smoothing, S_IRUGO | S_IWUSR, show_temp_st,
1132
- set_temp_st, 0, 0);
1133
-static SENSOR_DEVICE_ATTR_2(temp2_input, S_IRUGO, show_temp, NULL, INPUT, 1);
1134
-static SENSOR_DEVICE_ATTR_2(temp2_alarm, S_IRUGO, show_temp, NULL, ALARM, 1);
1135
-static SENSOR_DEVICE_ATTR_2(temp2_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
1136
- MAX, 1);
1137
-static SENSOR_DEVICE_ATTR_2(temp2_min, S_IRUGO | S_IWUSR, show_temp, set_temp,
1138
- MIN, 1);
1139
-static SENSOR_DEVICE_ATTR_2(temp2_offset, S_IRUGO | S_IWUSR, show_temp,
1140
- set_temp, OFFSET, 1);
1141
-static SENSOR_DEVICE_ATTR_2(temp2_auto_point1_temp, S_IRUGO | S_IWUSR,
1142
- show_temp, set_temp, AUTOMIN, 1);
1143
-static SENSOR_DEVICE_ATTR_2(temp2_auto_point2_temp, S_IRUGO | S_IWUSR,
1144
- show_point2, set_point2, 0, 1);
1145
-static SENSOR_DEVICE_ATTR_2(temp2_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
1146
- THERM, 1);
1147
-static SENSOR_DEVICE_ATTR_2(temp2_crit_hyst, S_IRUGO | S_IWUSR, show_temp,
1148
- set_temp, HYSTERSIS, 1);
1149
-static SENSOR_DEVICE_ATTR_2(temp2_smoothing, S_IRUGO | S_IWUSR, show_temp_st,
1150
- set_temp_st, 0, 1);
1151
-static SENSOR_DEVICE_ATTR_2(temp3_input, S_IRUGO, show_temp, NULL, INPUT, 2);
1152
-static SENSOR_DEVICE_ATTR_2(temp3_alarm, S_IRUGO, show_temp, NULL, ALARM, 2);
1153
-static SENSOR_DEVICE_ATTR_2(temp3_fault, S_IRUGO, show_temp, NULL, FAULT, 2);
1154
-static SENSOR_DEVICE_ATTR_2(temp3_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
1155
- MAX, 2);
1156
-static SENSOR_DEVICE_ATTR_2(temp3_min, S_IRUGO | S_IWUSR, show_temp, set_temp,
1157
- MIN, 2);
1158
-static SENSOR_DEVICE_ATTR_2(temp3_offset, S_IRUGO | S_IWUSR, show_temp,
1159
- set_temp, OFFSET, 2);
1160
-static SENSOR_DEVICE_ATTR_2(temp3_auto_point1_temp, S_IRUGO | S_IWUSR,
1161
- show_temp, set_temp, AUTOMIN, 2);
1162
-static SENSOR_DEVICE_ATTR_2(temp3_auto_point2_temp, S_IRUGO | S_IWUSR,
1163
- show_point2, set_point2, 0, 2);
1164
-static SENSOR_DEVICE_ATTR_2(temp3_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
1165
- THERM, 2);
1166
-static SENSOR_DEVICE_ATTR_2(temp3_crit_hyst, S_IRUGO | S_IWUSR, show_temp,
1167
- set_temp, HYSTERSIS, 2);
1168
-static SENSOR_DEVICE_ATTR_2(temp3_smoothing, S_IRUGO | S_IWUSR, show_temp_st,
1169
- set_temp_st, 0, 2);
1170
-static SENSOR_DEVICE_ATTR_2(fan1_input, S_IRUGO, show_tach, NULL, INPUT, 0);
1171
-static SENSOR_DEVICE_ATTR_2(fan1_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
1172
- MIN, 0);
1173
-static SENSOR_DEVICE_ATTR_2(fan1_alarm, S_IRUGO, show_tach, NULL, ALARM, 0);
1174
-static SENSOR_DEVICE_ATTR_2(fan2_input, S_IRUGO, show_tach, NULL, INPUT, 1);
1175
-static SENSOR_DEVICE_ATTR_2(fan2_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
1176
- MIN, 1);
1177
-static SENSOR_DEVICE_ATTR_2(fan2_alarm, S_IRUGO, show_tach, NULL, ALARM, 1);
1178
-static SENSOR_DEVICE_ATTR_2(fan3_input, S_IRUGO, show_tach, NULL, INPUT, 2);
1179
-static SENSOR_DEVICE_ATTR_2(fan3_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
1180
- MIN, 2);
1181
-static SENSOR_DEVICE_ATTR_2(fan3_alarm, S_IRUGO, show_tach, NULL, ALARM, 2);
1182
-static SENSOR_DEVICE_ATTR_2(fan4_input, S_IRUGO, show_tach, NULL, INPUT, 3);
1183
-static SENSOR_DEVICE_ATTR_2(fan4_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
1184
- MIN, 3);
1185
-static SENSOR_DEVICE_ATTR_2(fan4_alarm, S_IRUGO, show_tach, NULL, ALARM, 3);
1186
-static SENSOR_DEVICE_ATTR_2(pwm1, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT,
1187
- 0);
1188
-static SENSOR_DEVICE_ATTR_2(pwm1_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
1189
- set_pwmfreq, INPUT, 0);
1190
-static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
1191
- set_pwmctrl, INPUT, 0);
1192
-static SENSOR_DEVICE_ATTR_2(pwm1_auto_channels_temp, S_IRUGO | S_IWUSR,
1193
- show_pwmchan, set_pwmchan, INPUT, 0);
1194
-static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
1195
- set_pwm, MIN, 0);
1196
-static SENSOR_DEVICE_ATTR_2(pwm1_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm,
1197
- set_pwm, MAX, 0);
1198
-static SENSOR_DEVICE_ATTR_2(pwm1_stall_disable, S_IRUGO | S_IWUSR,
1199
- show_stall_disable, set_stall_disable, 0, 0);
1200
-static SENSOR_DEVICE_ATTR_2(pwm2, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT,
1201
- 1);
1202
-static SENSOR_DEVICE_ATTR_2(pwm2_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
1203
- set_pwmfreq, INPUT, 1);
1204
-static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
1205
- set_pwmctrl, INPUT, 1);
1206
-static SENSOR_DEVICE_ATTR_2(pwm2_auto_channels_temp, S_IRUGO | S_IWUSR,
1207
- show_pwmchan, set_pwmchan, INPUT, 1);
1208
-static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
1209
- set_pwm, MIN, 1);
1210
-static SENSOR_DEVICE_ATTR_2(pwm2_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm,
1211
- set_pwm, MAX, 1);
1212
-static SENSOR_DEVICE_ATTR_2(pwm2_stall_disable, S_IRUGO | S_IWUSR,
1213
- show_stall_disable, set_stall_disable, 0, 1);
1214
-static SENSOR_DEVICE_ATTR_2(pwm3, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT,
1215
- 2);
1216
-static SENSOR_DEVICE_ATTR_2(pwm3_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
1217
- set_pwmfreq, INPUT, 2);
1218
-static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
1219
- set_pwmctrl, INPUT, 2);
1220
-static SENSOR_DEVICE_ATTR_2(pwm3_auto_channels_temp, S_IRUGO | S_IWUSR,
1221
- show_pwmchan, set_pwmchan, INPUT, 2);
1222
-static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
1223
- set_pwm, MIN, 2);
1224
-static SENSOR_DEVICE_ATTR_2(pwm3_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm,
1225
- set_pwm, MAX, 2);
1226
-static SENSOR_DEVICE_ATTR_2(pwm3_stall_disable, S_IRUGO | S_IWUSR,
1227
- show_stall_disable, set_stall_disable, 0, 2);
1082
+static SENSOR_DEVICE_ATTR_2_RO(in0_input, voltage, INPUT, 0);
1083
+static SENSOR_DEVICE_ATTR_2_RW(in0_max, voltage, MAX, 0);
1084
+static SENSOR_DEVICE_ATTR_2_RW(in0_min, voltage, MIN, 0);
1085
+static SENSOR_DEVICE_ATTR_2_RO(in0_alarm, voltage, ALARM, 0);
1086
+static SENSOR_DEVICE_ATTR_2_RO(in1_input, voltage, INPUT, 1);
1087
+static SENSOR_DEVICE_ATTR_2_RW(in1_max, voltage, MAX, 1);
1088
+static SENSOR_DEVICE_ATTR_2_RW(in1_min, voltage, MIN, 1);
1089
+static SENSOR_DEVICE_ATTR_2_RO(in1_alarm, voltage, ALARM, 1);
1090
+static SENSOR_DEVICE_ATTR_2_RO(in2_input, voltage, INPUT, 2);
1091
+static SENSOR_DEVICE_ATTR_2_RW(in2_max, voltage, MAX, 2);
1092
+static SENSOR_DEVICE_ATTR_2_RW(in2_min, voltage, MIN, 2);
1093
+static SENSOR_DEVICE_ATTR_2_RO(in2_alarm, voltage, ALARM, 2);
1094
+static SENSOR_DEVICE_ATTR_2_RO(in3_input, voltage, INPUT, 3);
1095
+static SENSOR_DEVICE_ATTR_2_RW(in3_max, voltage, MAX, 3);
1096
+static SENSOR_DEVICE_ATTR_2_RW(in3_min, voltage, MIN, 3);
1097
+static SENSOR_DEVICE_ATTR_2_RO(in3_alarm, voltage, ALARM, 3);
1098
+static SENSOR_DEVICE_ATTR_2_RO(in4_input, voltage, INPUT, 4);
1099
+static SENSOR_DEVICE_ATTR_2_RW(in4_max, voltage, MAX, 4);
1100
+static SENSOR_DEVICE_ATTR_2_RW(in4_min, voltage, MIN, 4);
1101
+static SENSOR_DEVICE_ATTR_2_RO(in4_alarm, voltage, ALARM, 8);
1102
+static SENSOR_DEVICE_ATTR_2_RO(in5_input, voltage, INPUT, 5);
1103
+static SENSOR_DEVICE_ATTR_2_RW(in5_max, voltage, MAX, 5);
1104
+static SENSOR_DEVICE_ATTR_2_RW(in5_min, voltage, MIN, 5);
1105
+static SENSOR_DEVICE_ATTR_2_RO(in5_alarm, voltage, ALARM, 31);
1106
+static SENSOR_DEVICE_ATTR_2_RO(temp1_input, temp, INPUT, 0);
1107
+static SENSOR_DEVICE_ATTR_2_RO(temp1_alarm, temp, ALARM, 0);
1108
+static SENSOR_DEVICE_ATTR_2_RO(temp1_fault, temp, FAULT, 0);
1109
+static SENSOR_DEVICE_ATTR_2_RW(temp1_max, temp, MAX, 0);
1110
+static SENSOR_DEVICE_ATTR_2_RW(temp1_min, temp, MIN, 0);
1111
+static SENSOR_DEVICE_ATTR_2_RW(temp1_offset, temp, OFFSET, 0);
1112
+static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_point1_temp, temp, AUTOMIN, 0);
1113
+static SENSOR_DEVICE_ATTR_2_RW(temp1_auto_point2_temp, point2, 0, 0);
1114
+static SENSOR_DEVICE_ATTR_2_RW(temp1_crit, temp, THERM, 0);
1115
+static SENSOR_DEVICE_ATTR_2_RW(temp1_crit_hyst, temp, HYSTERSIS, 0);
1116
+static SENSOR_DEVICE_ATTR_2_RW(temp1_smoothing, temp_st, 0, 0);
1117
+static SENSOR_DEVICE_ATTR_2_RO(temp2_input, temp, INPUT, 1);
1118
+static SENSOR_DEVICE_ATTR_2_RO(temp2_alarm, temp, ALARM, 1);
1119
+static SENSOR_DEVICE_ATTR_2_RW(temp2_max, temp, MAX, 1);
1120
+static SENSOR_DEVICE_ATTR_2_RW(temp2_min, temp, MIN, 1);
1121
+static SENSOR_DEVICE_ATTR_2_RW(temp2_offset, temp, OFFSET, 1);
1122
+static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_point1_temp, temp, AUTOMIN, 1);
1123
+static SENSOR_DEVICE_ATTR_2_RW(temp2_auto_point2_temp, point2, 0, 1);
1124
+static SENSOR_DEVICE_ATTR_2_RW(temp2_crit, temp, THERM, 1);
1125
+static SENSOR_DEVICE_ATTR_2_RW(temp2_crit_hyst, temp, HYSTERSIS, 1);
1126
+static SENSOR_DEVICE_ATTR_2_RW(temp2_smoothing, temp_st, 0, 1);
1127
+static SENSOR_DEVICE_ATTR_2_RO(temp3_input, temp, INPUT, 2);
1128
+static SENSOR_DEVICE_ATTR_2_RO(temp3_alarm, temp, ALARM, 2);
1129
+static SENSOR_DEVICE_ATTR_2_RO(temp3_fault, temp, FAULT, 2);
1130
+static SENSOR_DEVICE_ATTR_2_RW(temp3_max, temp, MAX, 2);
1131
+static SENSOR_DEVICE_ATTR_2_RW(temp3_min, temp, MIN, 2);
1132
+static SENSOR_DEVICE_ATTR_2_RW(temp3_offset, temp, OFFSET, 2);
1133
+static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_point1_temp, temp, AUTOMIN, 2);
1134
+static SENSOR_DEVICE_ATTR_2_RW(temp3_auto_point2_temp, point2, 0, 2);
1135
+static SENSOR_DEVICE_ATTR_2_RW(temp3_crit, temp, THERM, 2);
1136
+static SENSOR_DEVICE_ATTR_2_RW(temp3_crit_hyst, temp, HYSTERSIS, 2);
1137
+static SENSOR_DEVICE_ATTR_2_RW(temp3_smoothing, temp_st, 0, 2);
1138
+static SENSOR_DEVICE_ATTR_2_RO(fan1_input, tach, INPUT, 0);
1139
+static SENSOR_DEVICE_ATTR_2_RW(fan1_min, tach, MIN, 0);
1140
+static SENSOR_DEVICE_ATTR_2_RO(fan1_alarm, tach, ALARM, 0);
1141
+static SENSOR_DEVICE_ATTR_2_RO(fan2_input, tach, INPUT, 1);
1142
+static SENSOR_DEVICE_ATTR_2_RW(fan2_min, tach, MIN, 1);
1143
+static SENSOR_DEVICE_ATTR_2_RO(fan2_alarm, tach, ALARM, 1);
1144
+static SENSOR_DEVICE_ATTR_2_RO(fan3_input, tach, INPUT, 2);
1145
+static SENSOR_DEVICE_ATTR_2_RW(fan3_min, tach, MIN, 2);
1146
+static SENSOR_DEVICE_ATTR_2_RO(fan3_alarm, tach, ALARM, 2);
1147
+static SENSOR_DEVICE_ATTR_2_RO(fan4_input, tach, INPUT, 3);
1148
+static SENSOR_DEVICE_ATTR_2_RW(fan4_min, tach, MIN, 3);
1149
+static SENSOR_DEVICE_ATTR_2_RO(fan4_alarm, tach, ALARM, 3);
1150
+static SENSOR_DEVICE_ATTR_2_RW(pwm1, pwm, INPUT, 0);
1151
+static SENSOR_DEVICE_ATTR_2_RW(pwm1_freq, pwmfreq, INPUT, 0);
1152
+static SENSOR_DEVICE_ATTR_2_RW(pwm1_enable, pwmctrl, INPUT, 0);
1153
+static SENSOR_DEVICE_ATTR_2_RW(pwm1_auto_channels_temp, pwmchan, INPUT, 0);
1154
+static SENSOR_DEVICE_ATTR_2_RW(pwm1_auto_point1_pwm, pwm, MIN, 0);
1155
+static SENSOR_DEVICE_ATTR_2_RW(pwm1_auto_point2_pwm, pwm, MAX, 0);
1156
+static SENSOR_DEVICE_ATTR_2_RW(pwm1_stall_disable, stall_disable, 0, 0);
1157
+static SENSOR_DEVICE_ATTR_2_RW(pwm2, pwm, INPUT, 1);
1158
+static SENSOR_DEVICE_ATTR_2_RW(pwm2_freq, pwmfreq, INPUT, 1);
1159
+static SENSOR_DEVICE_ATTR_2_RW(pwm2_enable, pwmctrl, INPUT, 1);
1160
+static SENSOR_DEVICE_ATTR_2_RW(pwm2_auto_channels_temp, pwmchan, INPUT, 1);
1161
+static SENSOR_DEVICE_ATTR_2_RW(pwm2_auto_point1_pwm, pwm, MIN, 1);
1162
+static SENSOR_DEVICE_ATTR_2_RW(pwm2_auto_point2_pwm, pwm, MAX, 1);
1163
+static SENSOR_DEVICE_ATTR_2_RW(pwm2_stall_disable, stall_disable, 0, 1);
1164
+static SENSOR_DEVICE_ATTR_2_RW(pwm3, pwm, INPUT, 2);
1165
+static SENSOR_DEVICE_ATTR_2_RW(pwm3_freq, pwmfreq, INPUT, 2);
1166
+static SENSOR_DEVICE_ATTR_2_RW(pwm3_enable, pwmctrl, INPUT, 2);
1167
+static SENSOR_DEVICE_ATTR_2_RW(pwm3_auto_channels_temp, pwmchan, INPUT, 2);
1168
+static SENSOR_DEVICE_ATTR_2_RW(pwm3_auto_point1_pwm, pwm, MIN, 2);
1169
+static SENSOR_DEVICE_ATTR_2_RW(pwm3_auto_point2_pwm, pwm, MAX, 2);
1170
+static SENSOR_DEVICE_ATTR_2_RW(pwm3_stall_disable, stall_disable, 0, 2);
12281171
12291172 /* Non-standard name, might need revisiting */
12301173 static DEVICE_ATTR_RW(pwm_use_point2_pwm_at_crit);
....@@ -1402,26 +1345,6 @@
14021345 return 0;
14031346 }
14041347
1405
-static void adt7475_remove_files(struct i2c_client *client,
1406
- struct adt7475_data *data)
1407
-{
1408
- sysfs_remove_group(&client->dev.kobj, &adt7475_attr_group);
1409
- if (data->has_fan4)
1410
- sysfs_remove_group(&client->dev.kobj, &fan4_attr_group);
1411
- if (data->has_pwm2)
1412
- sysfs_remove_group(&client->dev.kobj, &pwm2_attr_group);
1413
- if (data->has_voltage & (1 << 0))
1414
- sysfs_remove_group(&client->dev.kobj, &in0_attr_group);
1415
- if (data->has_voltage & (1 << 3))
1416
- sysfs_remove_group(&client->dev.kobj, &in3_attr_group);
1417
- if (data->has_voltage & (1 << 4))
1418
- sysfs_remove_group(&client->dev.kobj, &in4_attr_group);
1419
- if (data->has_voltage & (1 << 5))
1420
- sysfs_remove_group(&client->dev.kobj, &in5_attr_group);
1421
- if (data->has_vid)
1422
- sysfs_remove_group(&client->dev.kobj, &vid_attr_group);
1423
-}
1424
-
14251348 static int adt7475_update_limits(struct i2c_client *client)
14261349 {
14271350 struct adt7475_data *data = i2c_get_clientdata(client);
....@@ -1537,8 +1460,86 @@
15371460 return 0;
15381461 }
15391462
1540
-static int adt7475_probe(struct i2c_client *client,
1541
- const struct i2c_device_id *id)
1463
+static int set_property_bit(const struct i2c_client *client, char *property,
1464
+ u8 *config, u8 bit_index)
1465
+{
1466
+ u32 prop_value = 0;
1467
+ int ret = of_property_read_u32(client->dev.of_node, property,
1468
+ &prop_value);
1469
+
1470
+ if (!ret) {
1471
+ if (prop_value)
1472
+ *config |= (1 << bit_index);
1473
+ else
1474
+ *config &= ~(1 << bit_index);
1475
+ }
1476
+
1477
+ return ret;
1478
+}
1479
+
1480
+static int load_attenuators(const struct i2c_client *client, int chip,
1481
+ struct adt7475_data *data)
1482
+{
1483
+ int ret;
1484
+
1485
+ if (chip == adt7476 || chip == adt7490) {
1486
+ set_property_bit(client, "adi,bypass-attenuator-in0",
1487
+ &data->config4, 4);
1488
+ set_property_bit(client, "adi,bypass-attenuator-in1",
1489
+ &data->config4, 5);
1490
+ set_property_bit(client, "adi,bypass-attenuator-in3",
1491
+ &data->config4, 6);
1492
+ set_property_bit(client, "adi,bypass-attenuator-in4",
1493
+ &data->config4, 7);
1494
+
1495
+ ret = i2c_smbus_write_byte_data(client, REG_CONFIG4,
1496
+ data->config4);
1497
+ if (ret < 0)
1498
+ return ret;
1499
+ } else if (chip == adt7473 || chip == adt7475) {
1500
+ set_property_bit(client, "adi,bypass-attenuator-in1",
1501
+ &data->config2, 5);
1502
+
1503
+ ret = i2c_smbus_write_byte_data(client, REG_CONFIG2,
1504
+ data->config2);
1505
+ if (ret < 0)
1506
+ return ret;
1507
+ }
1508
+
1509
+ return 0;
1510
+}
1511
+
1512
+static int adt7475_set_pwm_polarity(struct i2c_client *client)
1513
+{
1514
+ u32 states[ADT7475_PWM_COUNT];
1515
+ int ret, i;
1516
+ u8 val;
1517
+
1518
+ ret = device_property_read_u32_array(&client->dev,
1519
+ "adi,pwm-active-state", states,
1520
+ ARRAY_SIZE(states));
1521
+ if (ret)
1522
+ return ret;
1523
+
1524
+ for (i = 0; i < ADT7475_PWM_COUNT; i++) {
1525
+ ret = adt7475_read(PWM_CONFIG_REG(i));
1526
+ if (ret < 0)
1527
+ return ret;
1528
+ val = ret;
1529
+ if (states[i])
1530
+ val &= ~BIT(4);
1531
+ else
1532
+ val |= BIT(4);
1533
+
1534
+ ret = i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(i), val);
1535
+ if (ret)
1536
+ return ret;
1537
+ }
1538
+
1539
+ return 0;
1540
+}
1541
+
1542
+static int adt7475_probe(struct i2c_client *client)
15421543 {
15431544 enum chips chip;
15441545 static const char * const names[] = {
....@@ -1549,14 +1550,17 @@
15491550 };
15501551
15511552 struct adt7475_data *data;
1552
- int i, ret = 0, revision;
1553
- u8 config2, config3;
1553
+ struct device *hwmon_dev;
1554
+ int i, ret = 0, revision, group_num = 0;
1555
+ u8 config3;
1556
+ const struct i2c_device_id *id = i2c_match_id(adt7475_id, client);
15541557
15551558 data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
15561559 if (data == NULL)
15571560 return -ENOMEM;
15581561
15591562 mutex_init(&data->lock);
1563
+ data->client = client;
15601564 i2c_set_clientdata(client, data);
15611565
15621566 if (client->dev.of_node)
....@@ -1623,8 +1627,12 @@
16231627 }
16241628
16251629 /* Voltage attenuators can be bypassed, globally or individually */
1626
- config2 = adt7475_read(REG_CONFIG2);
1627
- if (config2 & CONFIG2_ATTN) {
1630
+ data->config2 = adt7475_read(REG_CONFIG2);
1631
+ ret = load_attenuators(client, chip, data);
1632
+ if (ret)
1633
+ dev_warn(&client->dev, "Error configuring attenuator bypass\n");
1634
+
1635
+ if (data->config2 & CONFIG2_ATTN) {
16281636 data->bypass_attn = (0x3 << 3) | 0x3;
16291637 } else {
16301638 data->bypass_attn = ((data->config4 & CONFIG4_ATTN_IN10) >> 4) |
....@@ -1639,6 +1647,10 @@
16391647 for (i = 0; i < ADT7475_PWM_COUNT; i++)
16401648 adt7475_read_pwm(client, i);
16411649
1650
+ ret = adt7475_set_pwm_polarity(client);
1651
+ if (ret && ret != -EINVAL)
1652
+ dev_warn(&client->dev, "Error configuring pwm polarity\n");
1653
+
16421654 /* Start monitoring */
16431655 switch (chip) {
16441656 case adt7475:
....@@ -1650,52 +1662,40 @@
16501662 break;
16511663 }
16521664
1653
- ret = sysfs_create_group(&client->dev.kobj, &adt7475_attr_group);
1654
- if (ret)
1655
- return ret;
1665
+ data->groups[group_num++] = &adt7475_attr_group;
16561666
16571667 /* Features that can be disabled individually */
16581668 if (data->has_fan4) {
1659
- ret = sysfs_create_group(&client->dev.kobj, &fan4_attr_group);
1660
- if (ret)
1661
- goto eremove;
1669
+ data->groups[group_num++] = &fan4_attr_group;
16621670 }
16631671 if (data->has_pwm2) {
1664
- ret = sysfs_create_group(&client->dev.kobj, &pwm2_attr_group);
1665
- if (ret)
1666
- goto eremove;
1672
+ data->groups[group_num++] = &pwm2_attr_group;
16671673 }
16681674 if (data->has_voltage & (1 << 0)) {
1669
- ret = sysfs_create_group(&client->dev.kobj, &in0_attr_group);
1670
- if (ret)
1671
- goto eremove;
1675
+ data->groups[group_num++] = &in0_attr_group;
16721676 }
16731677 if (data->has_voltage & (1 << 3)) {
1674
- ret = sysfs_create_group(&client->dev.kobj, &in3_attr_group);
1675
- if (ret)
1676
- goto eremove;
1678
+ data->groups[group_num++] = &in3_attr_group;
16771679 }
16781680 if (data->has_voltage & (1 << 4)) {
1679
- ret = sysfs_create_group(&client->dev.kobj, &in4_attr_group);
1680
- if (ret)
1681
- goto eremove;
1681
+ data->groups[group_num++] = &in4_attr_group;
16821682 }
16831683 if (data->has_voltage & (1 << 5)) {
1684
- ret = sysfs_create_group(&client->dev.kobj, &in5_attr_group);
1685
- if (ret)
1686
- goto eremove;
1684
+ data->groups[group_num++] = &in5_attr_group;
16871685 }
16881686 if (data->has_vid) {
16891687 data->vrm = vid_which_vrm();
1690
- ret = sysfs_create_group(&client->dev.kobj, &vid_attr_group);
1691
- if (ret)
1692
- goto eremove;
1688
+ data->groups[group_num] = &vid_attr_group;
16931689 }
16941690
1695
- data->hwmon_dev = hwmon_device_register(&client->dev);
1696
- if (IS_ERR(data->hwmon_dev)) {
1697
- ret = PTR_ERR(data->hwmon_dev);
1698
- goto eremove;
1691
+ /* register device with all the acquired attributes */
1692
+ hwmon_dev = devm_hwmon_device_register_with_groups(&client->dev,
1693
+ client->name, data,
1694
+ data->groups);
1695
+
1696
+ if (IS_ERR(hwmon_dev)) {
1697
+ ret = PTR_ERR(hwmon_dev);
1698
+ return ret;
16991699 }
17001700
17011701 dev_info(&client->dev, "%s device, revision %d\n",
....@@ -1717,21 +1717,7 @@
17171717 /* Limits and settings, should never change update more than once */
17181718 ret = adt7475_update_limits(client);
17191719 if (ret)
1720
- goto eremove;
1721
-
1722
- return 0;
1723
-
1724
-eremove:
1725
- adt7475_remove_files(client, data);
1726
- return ret;
1727
-}
1728
-
1729
-static int adt7475_remove(struct i2c_client *client)
1730
-{
1731
- struct adt7475_data *data = i2c_get_clientdata(client);
1732
-
1733
- hwmon_device_unregister(data->hwmon_dev);
1734
- adt7475_remove_files(client, data);
1720
+ return ret;
17351721
17361722 return 0;
17371723 }
....@@ -1742,8 +1728,7 @@
17421728 .name = "adt7475",
17431729 .of_match_table = of_match_ptr(adt7475_of_match),
17441730 },
1745
- .probe = adt7475_probe,
1746
- .remove = adt7475_remove,
1731
+ .probe_new = adt7475_probe,
17471732 .id_table = adt7475_id,
17481733 .detect = adt7475_detect,
17491734 .address_list = normal_i2c,
....@@ -1817,8 +1802,8 @@
18171802
18181803 static int adt7475_update_measure(struct device *dev)
18191804 {
1820
- struct i2c_client *client = to_i2c_client(dev);
1821
- struct adt7475_data *data = i2c_get_clientdata(client);
1805
+ struct adt7475_data *data = dev_get_drvdata(dev);
1806
+ struct i2c_client *client = data->client;
18221807 u16 ext;
18231808 int i;
18241809 int ret;
....@@ -1914,8 +1899,7 @@
19141899
19151900 static struct adt7475_data *adt7475_update_device(struct device *dev)
19161901 {
1917
- struct i2c_client *client = to_i2c_client(dev);
1918
- struct adt7475_data *data = i2c_get_clientdata(client);
1902
+ struct adt7475_data *data = dev_get_drvdata(dev);
19191903 int ret;
19201904
19211905 mutex_lock(&data->lock);