Loading drivers/misc/eeprom/at24.c +9 −29 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -527,18 +519,14 @@ 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, 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; } if (IS_ERR(dummy_client)) return PTR_ERR(dummy_client); regmap = devm_regmap_init_i2c(dummy_client, regmap_config); if (IS_ERR(regmap)) { i2c_unregister_device(dummy_client); if (IS_ERR(regmap)) return PTR_ERR(regmap); } at24->client[index].client = dummy_client; at24->client[index].regmap = regmap; Loading Loading @@ -693,11 +681,9 @@ 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); Loading @@ -713,7 +699,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); Loading @@ -733,7 +719,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", Loading @@ -742,8 +728,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; Loading @@ -751,11 +736,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); Loading Loading
drivers/misc/eeprom/at24.c +9 −29 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -527,18 +519,14 @@ 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, 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; } if (IS_ERR(dummy_client)) return PTR_ERR(dummy_client); regmap = devm_regmap_init_i2c(dummy_client, regmap_config); if (IS_ERR(regmap)) { i2c_unregister_device(dummy_client); if (IS_ERR(regmap)) return PTR_ERR(regmap); } at24->client[index].client = dummy_client; at24->client[index].regmap = regmap; Loading Loading @@ -693,11 +681,9 @@ 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); Loading @@ -713,7 +699,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); Loading @@ -733,7 +719,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", Loading @@ -742,8 +728,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; Loading @@ -751,11 +736,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); Loading