From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> Now that it's upstream, use the resource managed version of i2c_new_dummy(). Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> --- drivers/misc/eeprom/at24.c | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c index 63aa541c9608..9ea196f0749f 100644 --- a/drivers/misc/eeprom/at24.c +++ b/drivers/misc/eeprom/at24.c @@ -507,14 +507,6 @@ static const struct at24_chip_data *at24_get_chip_data(struct device *dev) return cdata; } -static void at24_remove_dummy_clients(struct at24_data *at24) -{ - int i; - - for (i = 1; i < at24->num_addresses; i++) - i2c_unregister_device(at24->client[i].client); -} - static int at24_make_dummy_client(struct at24_data *at24, unsigned int index, struct regmap_config *regmap_config) { @@ -527,8 +519,8 @@ static int at24_make_dummy_client(struct at24_data *at24, unsigned int index, dev = &base_client->dev; addr = base_client->addr + index; - dummy_client = i2c_new_dummy(base_client->adapter, - base_client->addr + index); + dummy_client = devm_i2c_new_dummy_device(dev, base_client->adapter, + base_client->addr + index); if (!dummy_client) { dev_err(dev, "address 0x%02x unavailable\n", addr); return -EADDRINUSE; @@ -693,10 +685,8 @@ static int at24_probe(struct i2c_client *client) /* use dummy devices for multiple-address chips */ for (i = 1; i < num_addresses; i++) { err = at24_make_dummy_client(at24, i, ®map_config); - if (err) { - at24_remove_dummy_clients(at24); + if (err) return err; - } } i2c_set_clientdata(client, at24); @@ -713,7 +703,7 @@ static int at24_probe(struct i2c_client *client) pm_runtime_idle(dev); if (err) { err = -ENODEV; - goto err_clients; + goto err_runtime_pm; } nvmem_config.name = dev_name(dev); @@ -733,7 +723,7 @@ static int at24_probe(struct i2c_client *client) at24->nvmem = devm_nvmem_register(dev, &nvmem_config); if (IS_ERR(at24->nvmem)) { err = PTR_ERR(at24->nvmem); - goto err_clients; + goto err_runtime_pm; } dev_info(dev, "%u byte %s EEPROM, %s, %u bytes/write\n", @@ -742,8 +732,7 @@ static int at24_probe(struct i2c_client *client) return 0; -err_clients: - at24_remove_dummy_clients(at24); +err_runtime_pm: pm_runtime_disable(dev); return err; @@ -751,11 +740,6 @@ static int at24_probe(struct i2c_client *client) static int at24_remove(struct i2c_client *client) { - struct at24_data *at24; - - at24 = i2c_get_clientdata(client); - - at24_remove_dummy_clients(at24); pm_runtime_disable(&client->dev); pm_runtime_set_suspended(&client->dev); -- 2.21.0