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

mfd: tps80031: Convert to devm_i2c_new_dummy_device

Move from i2c_new_dummy() to devm_i2c_new_dummy_device(). So, we now get
an ERRPTR which we use in error handling and we can skip removal of the
created devices.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

authored by

Wolfram Sang and committed by
Lee Jones
a604e5b2 624e3fce

+8 -15
+8 -15
drivers/mfd/tps80031.c
··· 437 437 if (tps80031_slave_address[i] == client->addr) 438 438 tps80031->clients[i] = client; 439 439 else 440 - tps80031->clients[i] = i2c_new_dummy(client->adapter, 441 - tps80031_slave_address[i]); 442 - if (!tps80031->clients[i]) { 440 + tps80031->clients[i] = devm_i2c_new_dummy_device(&client->dev, 441 + client->adapter, tps80031_slave_address[i]); 442 + if (IS_ERR(tps80031->clients[i])) { 443 443 dev_err(&client->dev, "can't attach client %d\n", i); 444 - ret = -ENOMEM; 445 - goto fail_client_reg; 444 + return PTR_ERR(tps80031->clients[i]); 446 445 } 447 446 448 447 i2c_set_clientdata(tps80031->clients[i], tps80031); ··· 451 452 ret = PTR_ERR(tps80031->regmap[i]); 452 453 dev_err(&client->dev, 453 454 "regmap %d init failed, err %d\n", i, ret); 454 - goto fail_client_reg; 455 + return ret; 455 456 } 456 457 } 457 458 ··· 460 461 if (ret < 0) { 461 462 dev_err(&client->dev, 462 463 "Silicon version number read failed: %d\n", ret); 463 - goto fail_client_reg; 464 + return ret; 464 465 } 465 466 466 467 ret = tps80031_read(&client->dev, TPS80031_SLAVE_ID3, ··· 468 469 if (ret < 0) { 469 470 dev_err(&client->dev, 470 471 "Silicon eeprom version read failed: %d\n", ret); 471 - goto fail_client_reg; 472 + return ret; 472 473 } 473 474 474 475 dev_info(&client->dev, "ES version 0x%02x and EPROM version 0x%02x\n", ··· 481 482 ret = tps80031_irq_init(tps80031, client->irq, pdata->irq_base); 482 483 if (ret) { 483 484 dev_err(&client->dev, "IRQ init failed: %d\n", ret); 484 - goto fail_client_reg; 485 + return ret; 485 486 } 486 487 487 488 tps80031_pupd_init(tps80031, pdata); ··· 505 506 506 507 fail_mfd_add: 507 508 regmap_del_irq_chip(client->irq, tps80031->irq_data); 508 - 509 - fail_client_reg: 510 - for (i = 0; i < TPS80031_NUM_SLAVES; i++) { 511 - if (tps80031->clients[i] && (tps80031->clients[i] != client)) 512 - i2c_unregister_device(tps80031->clients[i]); 513 - } 514 509 return ret; 515 510 } 516 511