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

hwmon: (lm93) 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
6579d589 40ebdb92

+66 -88
+66 -88
drivers/hwmon/lm93.c
··· 207 207 * Client-specific data 208 208 */ 209 209 struct lm93_data { 210 - struct device *hwmon_dev; 210 + struct i2c_client *client; 211 211 212 212 struct mutex update_lock; 213 213 unsigned long last_updated; /* In jiffies */ ··· 919 919 920 920 static struct lm93_data *lm93_update_device(struct device *dev) 921 921 { 922 - struct i2c_client *client = to_i2c_client(dev); 923 - struct lm93_data *data = i2c_get_clientdata(client); 922 + struct lm93_data *data = dev_get_drvdata(dev); 923 + struct i2c_client *client = data->client; 924 924 const unsigned long interval = HZ + (HZ / 2); 925 925 926 926 mutex_lock(&data->update_lock); ··· 1158 1158 const char *buf, size_t count) 1159 1159 { 1160 1160 int nr = (to_sensor_dev_attr(attr))->index; 1161 - struct i2c_client *client = to_i2c_client(dev); 1162 - struct lm93_data *data = i2c_get_clientdata(client); 1161 + struct lm93_data *data = dev_get_drvdata(dev); 1162 + struct i2c_client *client = data->client; 1163 1163 int vccp = nr - 6; 1164 1164 long vid; 1165 1165 unsigned long val; ··· 1239 1239 const char *buf, size_t count) 1240 1240 { 1241 1241 int nr = (to_sensor_dev_attr(attr))->index; 1242 - struct i2c_client *client = to_i2c_client(dev); 1243 - struct lm93_data *data = i2c_get_clientdata(client); 1242 + struct lm93_data *data = dev_get_drvdata(dev); 1243 + struct i2c_client *client = data->client; 1244 1244 int vccp = nr - 6; 1245 1245 long vid; 1246 1246 unsigned long val; ··· 1323 1323 const char *buf, size_t count) 1324 1324 { 1325 1325 int nr = (to_sensor_dev_attr(attr))->index; 1326 - struct i2c_client *client = to_i2c_client(dev); 1327 - struct lm93_data *data = i2c_get_clientdata(client); 1326 + struct lm93_data *data = dev_get_drvdata(dev); 1327 + struct i2c_client *client = data->client; 1328 1328 long val; 1329 1329 int err; 1330 1330 ··· 1358 1358 const char *buf, size_t count) 1359 1359 { 1360 1360 int nr = (to_sensor_dev_attr(attr))->index; 1361 - struct i2c_client *client = to_i2c_client(dev); 1362 - struct lm93_data *data = i2c_get_clientdata(client); 1361 + struct lm93_data *data = dev_get_drvdata(dev); 1362 + struct i2c_client *client = data->client; 1363 1363 long val; 1364 1364 int err; 1365 1365 ··· 1394 1394 const char *buf, size_t count) 1395 1395 { 1396 1396 int nr = (to_sensor_dev_attr(attr))->index; 1397 - struct i2c_client *client = to_i2c_client(dev); 1398 - struct lm93_data *data = i2c_get_clientdata(client); 1397 + struct lm93_data *data = dev_get_drvdata(dev); 1398 + struct i2c_client *client = data->client; 1399 1399 long val; 1400 1400 int err; 1401 1401 ··· 1430 1430 const char *buf, size_t count) 1431 1431 { 1432 1432 int nr = (to_sensor_dev_attr(attr))->index; 1433 - struct i2c_client *client = to_i2c_client(dev); 1434 - struct lm93_data *data = i2c_get_clientdata(client); 1433 + struct lm93_data *data = dev_get_drvdata(dev); 1434 + struct i2c_client *client = data->client; 1435 1435 long val; 1436 1436 int err; 1437 1437 ··· 1469 1469 const char *buf, size_t count) 1470 1470 { 1471 1471 int nr = (to_sensor_dev_attr(attr))->index; 1472 - struct i2c_client *client = to_i2c_client(dev); 1473 - struct lm93_data *data = i2c_get_clientdata(client); 1472 + struct lm93_data *data = dev_get_drvdata(dev); 1473 + struct i2c_client *client = data->client; 1474 1474 unsigned long val; 1475 1475 int err; 1476 1476 ··· 1520 1520 struct sensor_device_attribute_2 *s_attr = to_sensor_dev_attr_2(attr); 1521 1521 int nr = s_attr->index; 1522 1522 int ofs = s_attr->nr; 1523 - struct i2c_client *client = to_i2c_client(dev); 1524 - struct lm93_data *data = i2c_get_clientdata(client); 1523 + struct lm93_data *data = dev_get_drvdata(dev); 1524 + struct i2c_client *client = data->client; 1525 1525 unsigned long val; 1526 1526 int err; 1527 1527 ··· 1632 1632 const char *buf, size_t count) 1633 1633 { 1634 1634 int nr = (to_sensor_dev_attr(attr))->index; 1635 - struct i2c_client *client = to_i2c_client(dev); 1636 - struct lm93_data *data = i2c_get_clientdata(client); 1635 + struct lm93_data *data = dev_get_drvdata(dev); 1636 + struct i2c_client *client = data->client; 1637 1637 u8 reg, ctl4; 1638 1638 unsigned long val; 1639 1639 int err; ··· 1680 1680 const char *buf, size_t count) 1681 1681 { 1682 1682 int nr = (to_sensor_dev_attr(attr))->index; 1683 - struct i2c_client *client = to_i2c_client(dev); 1684 - struct lm93_data *data = i2c_get_clientdata(client); 1683 + struct lm93_data *data = dev_get_drvdata(dev); 1684 + struct i2c_client *client = data->client; 1685 1685 u8 reg; 1686 1686 unsigned long val; 1687 1687 int err; ··· 1741 1741 const char *buf, size_t count) 1742 1742 { 1743 1743 int nr = (to_sensor_dev_attr(attr))->index; 1744 - struct i2c_client *client = to_i2c_client(dev); 1745 - struct lm93_data *data = i2c_get_clientdata(client); 1744 + struct lm93_data *data = dev_get_drvdata(dev); 1745 + struct i2c_client *client = data->client; 1746 1746 unsigned long val; 1747 1747 int err; 1748 1748 ··· 1824 1824 const char *buf, size_t count) 1825 1825 { 1826 1826 int nr = (to_sensor_dev_attr(attr))->index; 1827 - struct i2c_client *client = to_i2c_client(dev); 1828 - struct lm93_data *data = i2c_get_clientdata(client); 1827 + struct lm93_data *data = dev_get_drvdata(dev); 1828 + struct i2c_client *client = data->client; 1829 1829 unsigned long val; 1830 1830 int err; 1831 1831 ··· 1880 1880 const char *buf, size_t count) 1881 1881 { 1882 1882 int nr = (to_sensor_dev_attr(attr))->index; 1883 - struct i2c_client *client = to_i2c_client(dev); 1884 - struct lm93_data *data = i2c_get_clientdata(client); 1883 + struct lm93_data *data = dev_get_drvdata(dev); 1884 + struct i2c_client *client = data->client; 1885 1885 u8 ctl2, ctl4; 1886 1886 unsigned long val; 1887 1887 int err; ··· 1928 1928 const char *buf, size_t count) 1929 1929 { 1930 1930 int nr = (to_sensor_dev_attr(attr))->index; 1931 - struct i2c_client *client = to_i2c_client(dev); 1932 - struct lm93_data *data = i2c_get_clientdata(client); 1931 + struct lm93_data *data = dev_get_drvdata(dev); 1932 + struct i2c_client *client = data->client; 1933 1933 u8 ctl2; 1934 1934 unsigned long val; 1935 1935 int err; ··· 2006 2006 const char *buf, size_t count) 2007 2007 { 2008 2008 int nr = (to_sensor_dev_attr(attr))->index; 2009 - struct i2c_client *client = to_i2c_client(dev); 2010 - struct lm93_data *data = i2c_get_clientdata(client); 2009 + struct lm93_data *data = dev_get_drvdata(dev); 2010 + struct i2c_client *client = data->client; 2011 2011 u8 ctl4; 2012 2012 unsigned long val; 2013 2013 int err; ··· 2046 2046 const char *buf, size_t count) 2047 2047 { 2048 2048 int nr = (to_sensor_dev_attr(attr))->index; 2049 - struct i2c_client *client = to_i2c_client(dev); 2050 - struct lm93_data *data = i2c_get_clientdata(client); 2049 + struct lm93_data *data = dev_get_drvdata(dev); 2050 + struct i2c_client *client = data->client; 2051 2051 unsigned long val; 2052 2052 int err; 2053 2053 ··· 2087 2087 const char *buf, size_t count) 2088 2088 { 2089 2089 int nr = (to_sensor_dev_attr(attr))->index; 2090 - struct i2c_client *client = to_i2c_client(dev); 2091 - struct lm93_data *data = i2c_get_clientdata(client); 2090 + struct lm93_data *data = dev_get_drvdata(dev); 2091 + struct i2c_client *client = data->client; 2092 2092 u8 ctl3, ctl4; 2093 2093 unsigned long val; 2094 2094 int err; ··· 2130 2130 const char *buf, size_t count) 2131 2131 { 2132 2132 int nr = (to_sensor_dev_attr(attr))->index; 2133 - struct i2c_client *client = to_i2c_client(dev); 2134 - struct lm93_data *data = i2c_get_clientdata(client); 2133 + struct lm93_data *data = dev_get_drvdata(dev); 2134 + struct i2c_client *client = data->client; 2135 2135 u8 ctl3; 2136 2136 unsigned long val; 2137 2137 int err; ··· 2168 2168 struct device_attribute *attr, 2169 2169 const char *buf, size_t count) 2170 2170 { 2171 - struct i2c_client *client = to_i2c_client(dev); 2172 - struct lm93_data *data = i2c_get_clientdata(client); 2171 + struct lm93_data *data = dev_get_drvdata(dev); 2172 + struct i2c_client *client = data->client; 2173 2173 u8 ramp; 2174 2174 unsigned long val; 2175 2175 int err; ··· 2202 2202 struct device_attribute *attr, 2203 2203 const char *buf, size_t count) 2204 2204 { 2205 - struct i2c_client *client = to_i2c_client(dev); 2206 - struct lm93_data *data = i2c_get_clientdata(client); 2205 + struct lm93_data *data = dev_get_drvdata(dev); 2206 + struct i2c_client *client = data->client; 2207 2207 u8 ramp; 2208 2208 unsigned long val; 2209 2209 int err; ··· 2270 2270 const char *buf, size_t count) 2271 2271 { 2272 2272 int nr = (to_sensor_dev_attr(attr))->index; 2273 - struct i2c_client *client = to_i2c_client(dev); 2274 - struct lm93_data *data = i2c_get_clientdata(client); 2273 + struct lm93_data *data = dev_get_drvdata(dev); 2274 + struct i2c_client *client = data->client; 2275 2275 unsigned long val; 2276 2276 int err; 2277 2277 ··· 2308 2308 const char *buf, size_t count) 2309 2309 { 2310 2310 int nr = (to_sensor_dev_attr(attr))->index; 2311 - struct i2c_client *client = to_i2c_client(dev); 2312 - struct lm93_data *data = i2c_get_clientdata(client); 2311 + struct lm93_data *data = dev_get_drvdata(dev); 2312 + struct i2c_client *client = data->client; 2313 2313 unsigned long val; 2314 2314 int err; 2315 2315 ··· 2351 2351 const char *buf, size_t count) 2352 2352 { 2353 2353 int nr = (to_sensor_dev_attr(attr))->index; 2354 - struct i2c_client *client = to_i2c_client(dev); 2355 - struct lm93_data *data = i2c_get_clientdata(client); 2354 + struct lm93_data *data = dev_get_drvdata(dev); 2355 + struct i2c_client *client = data->client; 2356 2356 u8 tmp; 2357 2357 unsigned long val; 2358 2358 int err; ··· 2390 2390 struct device_attribute *attr, 2391 2391 const char *buf, size_t count) 2392 2392 { 2393 - struct i2c_client *client = to_i2c_client(dev); 2394 - struct lm93_data *data = i2c_get_clientdata(client); 2393 + struct lm93_data *data = dev_get_drvdata(dev); 2394 + struct i2c_client *client = data->client; 2395 2395 unsigned long val; 2396 2396 int err; 2397 2397 ··· 2423 2423 struct device_attribute *attr, 2424 2424 const char *buf, size_t count) 2425 2425 { 2426 - struct i2c_client *client = to_i2c_client(dev); 2427 - struct lm93_data *data = i2c_get_clientdata(client); 2426 + struct lm93_data *data = dev_get_drvdata(dev); 2427 + struct i2c_client *client = data->client; 2428 2428 unsigned long val; 2429 2429 int err; 2430 2430 ··· 2631 2631 NULL 2632 2632 }; 2633 2633 2634 - static struct attribute_group lm93_attr_grp = { 2635 - .attrs = lm93_attrs, 2636 - }; 2634 + ATTRIBUTE_GROUPS(lm93); 2637 2635 2638 2636 static void lm93_init_client(struct i2c_client *client) 2639 2637 { ··· 2724 2726 static int lm93_probe(struct i2c_client *client, 2725 2727 const struct i2c_device_id *id) 2726 2728 { 2729 + struct device *dev = &client->dev; 2727 2730 struct lm93_data *data; 2728 - int err, func; 2731 + struct device *hwmon_dev; 2732 + int func; 2729 2733 void (*update)(struct lm93_data *, struct i2c_client *); 2730 2734 2731 2735 /* choose update routine based on bus capabilities */ 2732 2736 func = i2c_get_functionality(client->adapter); 2733 2737 if (((LM93_SMBUS_FUNC_FULL & func) == LM93_SMBUS_FUNC_FULL) && 2734 2738 (!disable_block)) { 2735 - dev_dbg(&client->dev, "using SMBus block data transactions\n"); 2739 + dev_dbg(dev, "using SMBus block data transactions\n"); 2736 2740 update = lm93_update_client_full; 2737 2741 } else if ((LM93_SMBUS_FUNC_MIN & func) == LM93_SMBUS_FUNC_MIN) { 2738 - dev_dbg(&client->dev, 2739 - "disabled SMBus block data transactions\n"); 2742 + dev_dbg(dev, "disabled SMBus block data transactions\n"); 2740 2743 update = lm93_update_client_min; 2741 2744 } else { 2742 - dev_dbg(&client->dev, 2743 - "detect failed, smbus byte and/or word data not supported!\n"); 2745 + dev_dbg(dev, "detect failed, smbus byte and/or word data not supported!\n"); 2744 2746 return -ENODEV; 2745 2747 } 2746 2748 2747 - data = devm_kzalloc(&client->dev, sizeof(struct lm93_data), GFP_KERNEL); 2749 + data = devm_kzalloc(dev, sizeof(struct lm93_data), GFP_KERNEL); 2748 2750 if (!data) 2749 2751 return -ENOMEM; 2750 - i2c_set_clientdata(client, data); 2751 2752 2752 2753 /* housekeeping */ 2754 + data->client = client; 2753 2755 data->update = update; 2754 2756 mutex_init(&data->update_lock); 2755 2757 2756 2758 /* initialize the chip */ 2757 2759 lm93_init_client(client); 2758 2760 2759 - err = sysfs_create_group(&client->dev.kobj, &lm93_attr_grp); 2760 - if (err) 2761 - return err; 2762 - 2763 - /* Register hwmon driver class */ 2764 - data->hwmon_dev = hwmon_device_register(&client->dev); 2765 - if (!IS_ERR(data->hwmon_dev)) 2766 - return 0; 2767 - 2768 - err = PTR_ERR(data->hwmon_dev); 2769 - dev_err(&client->dev, "error registering hwmon device.\n"); 2770 - sysfs_remove_group(&client->dev.kobj, &lm93_attr_grp); 2771 - return err; 2772 - } 2773 - 2774 - static int lm93_remove(struct i2c_client *client) 2775 - { 2776 - struct lm93_data *data = i2c_get_clientdata(client); 2777 - 2778 - hwmon_device_unregister(data->hwmon_dev); 2779 - sysfs_remove_group(&client->dev.kobj, &lm93_attr_grp); 2780 - 2781 - return 0; 2761 + hwmon_dev = devm_hwmon_device_register_with_groups(dev, client->name, 2762 + data, 2763 + lm93_groups); 2764 + return PTR_ERR_OR_ZERO(hwmon_dev); 2782 2765 } 2783 2766 2784 2767 static const struct i2c_device_id lm93_id[] = { ··· 2775 2796 .name = "lm93", 2776 2797 }, 2777 2798 .probe = lm93_probe, 2778 - .remove = lm93_remove, 2779 2799 .id_table = lm93_id, 2780 2800 .detect = lm93_detect, 2781 2801 .address_list = normal_i2c,