regulator: da9055: Convert to regulator core's simplified DT parsing code
authorAxel Lin <axel.lin@ingics.com>
Tue, 12 Mar 2019 15:47:59 +0000 (23:47 +0800)
committerMark Brown <broonie@kernel.org>
Fri, 15 Mar 2019 16:29:50 +0000 (16:29 +0000)
Use regulator core's simplified DT parsing code to simply the driver
implementation.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/da9055-regulator.c

index 3ade4b8d204ebfa4f0d04e31c4f91f810f348e45..bcbc2fbd7fea11a06fb04f45204ca3f0c6f8d2d6 100644 (file)
@@ -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,\
@@ -509,59 +513,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 = { };
@@ -582,18 +533,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)