Use regulator core's simplified DT parsing code to simply the driver
implementation.

Signed-off-by: Axel Lin <axel....@ingics.com>
---
 drivers/regulator/da9055-regulator.c | 67 +++-------------------------
 1 file changed, 6 insertions(+), 61 deletions(-)

diff --git a/drivers/regulator/da9055-regulator.c 
b/drivers/regulator/da9055-regulator.c
index 3c6fac793658..b7b4dddf5509 100644
--- a/drivers/regulator/da9055-regulator.c
+++ b/drivers/regulator/da9055-regulator.c
@@ -338,6 +338,8 @@ static const struct regulator_ops da9055_ldo_ops = {
 {\
        .reg_desc = {\
                .name = #_id,\
+               .of_match = of_match_ptr(#_id),\
+               .regulators_node = of_match_ptr("regulators"),\
                .ops = &da9055_ldo_ops,\
                .type = REGULATOR_VOLTAGE,\
                .id = DA9055_ID_##_id,\
@@ -366,6 +368,8 @@ static const struct regulator_ops da9055_ldo_ops = {
 {\
        .reg_desc = {\
                .name = #_id,\
+               .of_match = of_match_ptr(#_id),\
+               .regulators_node = of_match_ptr("regulators"),\
                .ops = &da9055_buck_ops,\
                .type = REGULATOR_VOLTAGE,\
                .id = DA9055_ID_##_id,\
@@ -507,59 +511,6 @@ static inline struct da9055_regulator_info 
*find_regulator_info(int id)
        return NULL;
 }
 
-#ifdef CONFIG_OF
-static struct of_regulator_match da9055_reg_matches[] = {
-       { .name = "BUCK1", },
-       { .name = "BUCK2", },
-       { .name = "LDO1", },
-       { .name = "LDO2", },
-       { .name = "LDO3", },
-       { .name = "LDO4", },
-       { .name = "LDO5", },
-       { .name = "LDO6", },
-};
-
-static int da9055_regulator_dt_init(struct platform_device *pdev,
-                                   struct da9055_regulator *regulator,
-                                   struct regulator_config *config,
-                                   int regid)
-{
-       struct device_node *nproot, *np;
-       int ret;
-
-       nproot = of_node_get(pdev->dev.parent->of_node);
-       if (!nproot)
-               return -ENODEV;
-
-       np = of_get_child_by_name(nproot, "regulators");
-       if (!np)
-               return -ENODEV;
-
-       ret = of_regulator_match(&pdev->dev, np, &da9055_reg_matches[regid], 1);
-       of_node_put(nproot);
-       if (ret < 0) {
-               dev_err(&pdev->dev, "Error matching regulator: %d\n", ret);
-               return ret;
-       }
-
-       config->init_data = da9055_reg_matches[regid].init_data;
-       config->of_node = da9055_reg_matches[regid].of_node;
-
-       if (!config->of_node)
-               return -ENODEV;
-
-       return 0;
-}
-#else
-static inline int da9055_regulator_dt_init(struct platform_device *pdev,
-                                      struct da9055_regulator *regulator,
-                                      struct regulator_config *config,
-                                      int regid)
-{
-       return -ENODEV;
-}
-#endif /* CONFIG_OF */
-
 static int da9055_regulator_probe(struct platform_device *pdev)
 {
        struct regulator_config config = { };
@@ -580,18 +531,12 @@ static int da9055_regulator_probe(struct platform_device 
*pdev)
        }
 
        regulator->da9055 = da9055;
-       config.dev = &pdev->dev;
+       config.dev = da9055->dev;
        config.driver_data = regulator;
        config.regmap = da9055->regmap;
 
-       if (pdata) {
+       if (pdata)
                config.init_data = pdata->regulators[pdev->id];
-       } else {
-               ret = da9055_regulator_dt_init(pdev, regulator, &config,
-                                              pdev->id);
-               if (ret < 0)
-                       return ret;
-       }
 
        ret = da9055_gpio_init(regulator, &config, pdata, pdev->id);
        if (ret < 0)
-- 
2.17.1

Reply via email to