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

hwmon: (adt7462) Convert to devm_hwmon_device_register_with_groups

Use ATTRIBUTE_GROUPS macro and devm_hwmon_device_register_with_groups() to
simplify the code a bit.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>

authored by

Axel Lin and committed by
Guenter Roeck
573bfe67 a2cc2428

+42 -64
+42 -64
drivers/hwmon/adt7462.c
··· 202 202 (((value) & prefix##_MASK) >> prefix##_SHIFT) 203 203 204 204 struct adt7462_data { 205 - struct device *hwmon_dev; 206 - struct attribute_group attrs; 205 + struct i2c_client *client; 207 206 struct mutex lock; 208 207 char sensors_valid; 209 208 char limits_valid; ··· 680 681 681 682 static struct adt7462_data *adt7462_update_device(struct device *dev) 682 683 { 683 - struct i2c_client *client = to_i2c_client(dev); 684 - struct adt7462_data *data = i2c_get_clientdata(client); 684 + struct adt7462_data *data = dev_get_drvdata(dev); 685 + struct i2c_client *client = data->client; 685 686 unsigned long local_jiffies = jiffies; 686 687 int i; 687 688 ··· 803 804 size_t count) 804 805 { 805 806 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 806 - struct i2c_client *client = to_i2c_client(dev); 807 - struct adt7462_data *data = i2c_get_clientdata(client); 807 + struct adt7462_data *data = dev_get_drvdata(dev); 808 + struct i2c_client *client = data->client; 808 809 long temp; 809 810 810 811 if (kstrtol(buf, 10, &temp) || !temp_enabled(data, attr->index)) ··· 841 842 size_t count) 842 843 { 843 844 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 844 - struct i2c_client *client = to_i2c_client(dev); 845 - struct adt7462_data *data = i2c_get_clientdata(client); 845 + struct adt7462_data *data = dev_get_drvdata(dev); 846 + struct i2c_client *client = data->client; 846 847 long temp; 847 848 848 849 if (kstrtol(buf, 10, &temp) || !temp_enabled(data, attr->index)) ··· 904 905 size_t count) 905 906 { 906 907 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 907 - struct i2c_client *client = to_i2c_client(dev); 908 - struct adt7462_data *data = i2c_get_clientdata(client); 908 + struct adt7462_data *data = dev_get_drvdata(dev); 909 + struct i2c_client *client = data->client; 909 910 int x = voltage_multiplier(data, attr->index); 910 911 long temp; 911 912 ··· 946 947 size_t count) 947 948 { 948 949 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 949 - struct i2c_client *client = to_i2c_client(dev); 950 - struct adt7462_data *data = i2c_get_clientdata(client); 950 + struct adt7462_data *data = dev_get_drvdata(dev); 951 + struct i2c_client *client = data->client; 951 952 int x = voltage_multiplier(data, attr->index); 952 953 long temp; 953 954 ··· 1036 1037 const char *buf, size_t count) 1037 1038 { 1038 1039 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1039 - struct i2c_client *client = to_i2c_client(dev); 1040 - struct adt7462_data *data = i2c_get_clientdata(client); 1040 + struct adt7462_data *data = dev_get_drvdata(dev); 1041 + struct i2c_client *client = data->client; 1041 1042 long temp; 1042 1043 1043 1044 if (kstrtol(buf, 10, &temp) || !temp || ··· 1084 1085 const char *buf, 1085 1086 size_t count) 1086 1087 { 1087 - struct i2c_client *client = to_i2c_client(dev); 1088 - struct adt7462_data *data = i2c_get_clientdata(client); 1088 + struct adt7462_data *data = dev_get_drvdata(dev); 1089 + struct i2c_client *client = data->client; 1089 1090 long temp; 1090 1091 u8 reg; 1091 1092 ··· 1117 1118 const char *buf, size_t count) 1118 1119 { 1119 1120 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1120 - struct i2c_client *client = to_i2c_client(dev); 1121 - struct adt7462_data *data = i2c_get_clientdata(client); 1121 + struct adt7462_data *data = dev_get_drvdata(dev); 1122 + struct i2c_client *client = data->client; 1122 1123 long temp; 1123 1124 1124 1125 if (kstrtol(buf, 10, &temp)) ··· 1147 1148 const char *buf, 1148 1149 size_t count) 1149 1150 { 1150 - struct i2c_client *client = to_i2c_client(dev); 1151 - struct adt7462_data *data = i2c_get_clientdata(client); 1151 + struct adt7462_data *data = dev_get_drvdata(dev); 1152 + struct i2c_client *client = data->client; 1152 1153 long temp; 1153 1154 1154 1155 if (kstrtol(buf, 10, &temp)) ··· 1179 1180 size_t count) 1180 1181 { 1181 1182 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1182 - struct i2c_client *client = to_i2c_client(dev); 1183 - struct adt7462_data *data = i2c_get_clientdata(client); 1183 + struct adt7462_data *data = dev_get_drvdata(dev); 1184 + struct i2c_client *client = data->client; 1184 1185 long temp; 1185 1186 1186 1187 if (kstrtol(buf, 10, &temp)) ··· 1213 1214 size_t count) 1214 1215 { 1215 1216 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1216 - struct i2c_client *client = to_i2c_client(dev); 1217 - struct adt7462_data *data = i2c_get_clientdata(client); 1217 + struct adt7462_data *data = dev_get_drvdata(dev); 1218 + struct i2c_client *client = data->client; 1218 1219 long temp; 1219 1220 1220 1221 if (kstrtol(buf, 10, &temp)) ··· 1258 1259 { 1259 1260 int temp; 1260 1261 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1261 - struct i2c_client *client = to_i2c_client(dev); 1262 - struct adt7462_data *data = i2c_get_clientdata(client); 1262 + struct adt7462_data *data = dev_get_drvdata(dev); 1263 + struct i2c_client *client = data->client; 1263 1264 int tmin, trange_value; 1264 1265 long trange; 1265 1266 ··· 1299 1300 size_t count) 1300 1301 { 1301 1302 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1302 - struct i2c_client *client = to_i2c_client(dev); 1303 - struct adt7462_data *data = i2c_get_clientdata(client); 1303 + struct adt7462_data *data = dev_get_drvdata(dev); 1304 + struct i2c_client *client = data->client; 1304 1305 long temp; 1305 1306 1306 1307 if (kstrtol(buf, 10, &temp)) ··· 1356 1357 size_t count) 1357 1358 { 1358 1359 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1359 - struct i2c_client *client = to_i2c_client(dev); 1360 - struct adt7462_data *data = i2c_get_clientdata(client); 1360 + struct adt7462_data *data = dev_get_drvdata(dev); 1361 + struct i2c_client *client = data->client; 1361 1362 long temp; 1362 1363 1363 1364 if (kstrtol(buf, 10, &temp)) ··· 1415 1416 size_t count) 1416 1417 { 1417 1418 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 1418 - struct i2c_client *client = to_i2c_client(dev); 1419 - struct adt7462_data *data = i2c_get_clientdata(client); 1419 + struct adt7462_data *data = dev_get_drvdata(dev); 1420 + struct i2c_client *client = data->client; 1420 1421 long temp; 1421 1422 1422 1423 if (kstrtol(buf, 10, &temp)) ··· 1700 1701 static SENSOR_DEVICE_ATTR(pwm4_auto_channels_temp, S_IWUSR | S_IRUGO, 1701 1702 show_pwm_auto_temp, set_pwm_auto_temp, 3); 1702 1703 1703 - static struct attribute *adt7462_attr[] = { 1704 + static struct attribute *adt7462_attrs[] = { 1704 1705 &sensor_dev_attr_temp1_max.dev_attr.attr, 1705 1706 &sensor_dev_attr_temp2_max.dev_attr.attr, 1706 1707 &sensor_dev_attr_temp3_max.dev_attr.attr, ··· 1871 1872 NULL 1872 1873 }; 1873 1874 1875 + ATTRIBUTE_GROUPS(adt7462); 1876 + 1874 1877 /* Return 0 if detection is successful, -ENODEV otherwise */ 1875 1878 static int adt7462_detect(struct i2c_client *client, 1876 1879 struct i2c_board_info *info) ··· 1903 1902 static int adt7462_probe(struct i2c_client *client, 1904 1903 const struct i2c_device_id *id) 1905 1904 { 1905 + struct device *dev = &client->dev; 1906 1906 struct adt7462_data *data; 1907 - int err; 1907 + struct device *hwmon_dev; 1908 1908 1909 - data = devm_kzalloc(&client->dev, sizeof(struct adt7462_data), 1910 - GFP_KERNEL); 1909 + data = devm_kzalloc(dev, sizeof(struct adt7462_data), GFP_KERNEL); 1911 1910 if (!data) 1912 1911 return -ENOMEM; 1913 1912 1914 - i2c_set_clientdata(client, data); 1913 + data->client = client; 1915 1914 mutex_init(&data->lock); 1916 1915 1917 1916 dev_info(&client->dev, "%s chip found\n", client->name); 1918 1917 1919 - /* Register sysfs hooks */ 1920 - data->attrs.attrs = adt7462_attr; 1921 - err = sysfs_create_group(&client->dev.kobj, &data->attrs); 1922 - if (err) 1923 - return err; 1924 - 1925 - data->hwmon_dev = hwmon_device_register(&client->dev); 1926 - if (IS_ERR(data->hwmon_dev)) { 1927 - err = PTR_ERR(data->hwmon_dev); 1928 - goto exit_remove; 1929 - } 1930 - 1931 - return 0; 1932 - 1933 - exit_remove: 1934 - sysfs_remove_group(&client->dev.kobj, &data->attrs); 1935 - return err; 1936 - } 1937 - 1938 - static int adt7462_remove(struct i2c_client *client) 1939 - { 1940 - struct adt7462_data *data = i2c_get_clientdata(client); 1941 - 1942 - hwmon_device_unregister(data->hwmon_dev); 1943 - sysfs_remove_group(&client->dev.kobj, &data->attrs); 1944 - return 0; 1918 + hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name, 1919 + data, 1920 + adt7462_groups); 1921 + return PTR_ERR_OR_ZERO(hwmon_dev); 1945 1922 } 1946 1923 1947 1924 static const struct i2c_device_id adt7462_id[] = { ··· 1934 1955 .name = "adt7462", 1935 1956 }, 1936 1957 .probe = adt7462_probe, 1937 - .remove = adt7462_remove, 1938 1958 .id_table = adt7462_id, 1939 1959 .detect = adt7462_detect, 1940 1960 .address_list = normal_i2c,