regulator: tps6586x: Use devm_regulator_register
authorSachin Kamat <sachin.kamat@linaro.org>
Wed, 4 Sep 2013 11:47:50 +0000 (17:17 +0530)
committerMark Brown <broonie@linaro.org>
Mon, 16 Sep 2013 23:28:43 +0000 (00:28 +0100)
devm_* simplifies the code.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/regulator/tps6586x-regulator.c

index 2c9155b..45e5d68 100644 (file)
@@ -379,15 +379,14 @@ static int tps6586x_regulator_probe(struct platform_device *pdev)
                ri = find_regulator_info(id);
                if (!ri) {
                        dev_err(&pdev->dev, "invalid regulator ID specified\n");
-                       err = -EINVAL;
-                       goto fail;
+                       return -EINVAL;
                }
 
                err = tps6586x_regulator_preinit(pdev->dev.parent, ri);
                if (err) {
                        dev_err(&pdev->dev,
                                "regulator %d preinit failed, e %d\n", id, err);
-                       goto fail;
+                       return err;
                }
 
                config.dev = pdev->dev.parent;
@@ -397,12 +396,12 @@ static int tps6586x_regulator_probe(struct platform_device *pdev)
                if (tps6586x_reg_matches)
                        config.of_node = tps6586x_reg_matches[id].of_node;
 
-               rdev[id] = regulator_register(&ri->desc, &config);
+               rdev[id] = devm_regulator_register(&pdev->dev, &ri->desc,
+                                                  &config);
                if (IS_ERR(rdev[id])) {
                        dev_err(&pdev->dev, "failed to register regulator %s\n",
                                        ri->desc.name);
-                       err = PTR_ERR(rdev[id]);
-                       goto fail;
+                       return PTR_ERR(rdev[id]);
                }
 
                if (reg_data) {
@@ -411,30 +410,13 @@ static int tps6586x_regulator_probe(struct platform_device *pdev)
                        if (err < 0) {
                                dev_err(&pdev->dev,
                                        "Slew rate config failed, e %d\n", err);
-                               regulator_unregister(rdev[id]);
-                               goto fail;
+                               return err;
                        }
                }
        }
 
        platform_set_drvdata(pdev, rdev);
        return 0;
-
-fail:
-       while (--id >= 0)
-               regulator_unregister(rdev[id]);
-       return err;
-}
-
-static int tps6586x_regulator_remove(struct platform_device *pdev)
-{
-       struct regulator_dev **rdev = platform_get_drvdata(pdev);
-       int id = TPS6586X_ID_MAX_REGULATOR;
-
-       while (--id >= 0)
-               regulator_unregister(rdev[id]);
-
-       return 0;
 }
 
 static struct platform_driver tps6586x_regulator_driver = {
@@ -443,7 +425,6 @@ static struct platform_driver tps6586x_regulator_driver = {
                .owner  = THIS_MODULE,
        },
        .probe          = tps6586x_regulator_probe,
-       .remove         = tps6586x_regulator_remove,
 };
 
 static int __init tps6586x_regulator_init(void)