aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-12-06 02:11:58 -0500
committerMark Brown <broonie@linaro.org>2013-12-09 12:42:18 -0500
commitf5247b401ccfbbf062ca1f4d3eef433f406c39ae (patch)
tree0d60c0d4291d7b8c8ba9ab23572c6c92cc27f1bc
parent6ce4eac1f600b34f2f7f58f9cd8f0503d79e42ae (diff)
regulator: pfuze100: use devm_regulator_register()
Use devm_regulator_register() to make cleanup paths simpler, and remove unnecessary remove(). Signed-off-by: Jingoo Han <jg1.han@samsung.com> Acked-by: Robin Gong <b38343@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r--drivers/regulator/pfuze100-regulator.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
index ba67b2c4e2e7..1d5ef37918f9 100644
--- a/drivers/regulator/pfuze100-regulator.c
+++ b/drivers/regulator/pfuze100-regulator.c
@@ -402,31 +402,18 @@ static int pfuze100_regulator_probe(struct i2c_client *client,
402 config.driver_data = pfuze_chip; 402 config.driver_data = pfuze_chip;
403 config.of_node = match_of_node(i); 403 config.of_node = match_of_node(i);
404 404
405 pfuze_chip->regulators[i] = regulator_register(desc, &config); 405 pfuze_chip->regulators[i] =
406 devm_regulator_register(&client->dev, desc, &config);
406 if (IS_ERR(pfuze_chip->regulators[i])) { 407 if (IS_ERR(pfuze_chip->regulators[i])) {
407 dev_err(&client->dev, "register regulator%s failed\n", 408 dev_err(&client->dev, "register regulator%s failed\n",
408 pfuze100_regulators[i].desc.name); 409 pfuze100_regulators[i].desc.name);
409 ret = PTR_ERR(pfuze_chip->regulators[i]); 410 return PTR_ERR(pfuze_chip->regulators[i]);
410 while (--i >= 0)
411 regulator_unregister(pfuze_chip->regulators[i]);
412 return ret;
413 } 411 }
414 } 412 }
415 413
416 return 0; 414 return 0;
417} 415}
418 416
419static int pfuze100_regulator_remove(struct i2c_client *client)
420{
421 int i;
422 struct pfuze_chip *pfuze_chip = i2c_get_clientdata(client);
423
424 for (i = 0; i < PFUZE100_MAX_REGULATOR; i++)
425 regulator_unregister(pfuze_chip->regulators[i]);
426
427 return 0;
428}
429
430static struct i2c_driver pfuze_driver = { 417static struct i2c_driver pfuze_driver = {
431 .id_table = pfuze_device_id, 418 .id_table = pfuze_device_id,
432 .driver = { 419 .driver = {
@@ -435,7 +422,6 @@ static struct i2c_driver pfuze_driver = {
435 .of_match_table = pfuze_dt_ids, 422 .of_match_table = pfuze_dt_ids,
436 }, 423 },
437 .probe = pfuze100_regulator_probe, 424 .probe = pfuze100_regulator_probe,
438 .remove = pfuze100_regulator_remove,
439}; 425};
440module_i2c_driver(pfuze_driver); 426module_i2c_driver(pfuze_driver);
441 427