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

hwmon: (w83791d) convert to use devm_i2c_new_dummy_device

And simplify the error handling.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Link: https://lore.kernel.org/r/20190903181256.13450-2-wsa+renesas@sang-engineering.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>

authored by

Wolfram Sang and committed by
Guenter Roeck
358d2071 09fe7870

+9 -23
+9 -23
drivers/hwmon/w83791d.c
··· 1260 1260 struct i2c_adapter *adapter = client->adapter; 1261 1261 struct w83791d_data *data = i2c_get_clientdata(client); 1262 1262 int address = client->addr; 1263 - int i, id, err; 1263 + int i, id; 1264 1264 u8 val; 1265 1265 1266 1266 id = i2c_adapter_id(adapter); ··· 1272 1272 "invalid subclient " 1273 1273 "address %d; must be 0x48-0x4f\n", 1274 1274 force_subclients[i]); 1275 - err = -ENODEV; 1276 - goto error_sc_0; 1275 + return -ENODEV; 1277 1276 } 1278 1277 } 1279 1278 w83791d_write(client, W83791D_REG_I2C_SUBADDR, ··· 1282 1283 1283 1284 val = w83791d_read(client, W83791D_REG_I2C_SUBADDR); 1284 1285 if (!(val & 0x08)) 1285 - data->lm75[0] = i2c_new_dummy(adapter, 0x48 + (val & 0x7)); 1286 + data->lm75[0] = devm_i2c_new_dummy_device(&client->dev, adapter, 1287 + 0x48 + (val & 0x7)); 1286 1288 if (!(val & 0x80)) { 1287 - if ((data->lm75[0] != NULL) && 1289 + if (!IS_ERR(data->lm75[0]) && 1288 1290 ((val & 0x7) == ((val >> 4) & 0x7))) { 1289 1291 dev_err(&client->dev, 1290 1292 "duplicate addresses 0x%x, " 1291 1293 "use force_subclient\n", 1292 1294 data->lm75[0]->addr); 1293 - err = -ENODEV; 1294 - goto error_sc_1; 1295 + return -ENODEV; 1295 1296 } 1296 - data->lm75[1] = i2c_new_dummy(adapter, 1297 - 0x48 + ((val >> 4) & 0x7)); 1297 + data->lm75[1] = devm_i2c_new_dummy_device(&client->dev, adapter, 1298 + 0x48 + ((val >> 4) & 0x7)); 1298 1299 } 1299 1300 1300 1301 return 0; 1301 - 1302 - /* Undo inits in case of errors */ 1303 - 1304 - error_sc_1: 1305 - i2c_unregister_device(data->lm75[0]); 1306 - error_sc_0: 1307 - return err; 1308 1302 } 1309 1303 1310 1304 ··· 1386 1394 /* Register sysfs hooks */ 1387 1395 err = sysfs_create_group(&client->dev.kobj, &w83791d_group); 1388 1396 if (err) 1389 - goto error3; 1397 + return err; 1390 1398 1391 1399 /* Check if pins of fan/pwm 4-5 are in use as GPIO */ 1392 1400 has_fanpwm45 = w83791d_read(client, W83791D_REG_GPIO) & 0x10; ··· 1411 1419 sysfs_remove_group(&client->dev.kobj, &w83791d_group_fanpwm45); 1412 1420 error4: 1413 1421 sysfs_remove_group(&client->dev.kobj, &w83791d_group); 1414 - error3: 1415 - i2c_unregister_device(data->lm75[0]); 1416 - i2c_unregister_device(data->lm75[1]); 1417 1422 return err; 1418 1423 } 1419 1424 ··· 1420 1431 1421 1432 hwmon_device_unregister(data->hwmon_dev); 1422 1433 sysfs_remove_group(&client->dev.kobj, &w83791d_group); 1423 - 1424 - i2c_unregister_device(data->lm75[0]); 1425 - i2c_unregister_device(data->lm75[1]); 1426 1434 1427 1435 return 0; 1428 1436 }