Commit db7ecb49 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown

regulator: da9055: Convert to regulator core's simplified DT parsing code

Use regulator core's simplified DT parsing code to simply the driver
implementation.
Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 67ddc68a
...@@ -338,6 +338,8 @@ static const struct regulator_ops da9055_ldo_ops = { ...@@ -338,6 +338,8 @@ static const struct regulator_ops da9055_ldo_ops = {
{\ {\
.reg_desc = {\ .reg_desc = {\
.name = #_id,\ .name = #_id,\
.of_match = of_match_ptr(#_id),\
.regulators_node = of_match_ptr("regulators"),\
.ops = &da9055_ldo_ops,\ .ops = &da9055_ldo_ops,\
.type = REGULATOR_VOLTAGE,\ .type = REGULATOR_VOLTAGE,\
.id = DA9055_ID_##_id,\ .id = DA9055_ID_##_id,\
...@@ -366,6 +368,8 @@ static const struct regulator_ops da9055_ldo_ops = { ...@@ -366,6 +368,8 @@ static const struct regulator_ops da9055_ldo_ops = {
{\ {\
.reg_desc = {\ .reg_desc = {\
.name = #_id,\ .name = #_id,\
.of_match = of_match_ptr(#_id),\
.regulators_node = of_match_ptr("regulators"),\
.ops = &da9055_buck_ops,\ .ops = &da9055_buck_ops,\
.type = REGULATOR_VOLTAGE,\ .type = REGULATOR_VOLTAGE,\
.id = DA9055_ID_##_id,\ .id = DA9055_ID_##_id,\
...@@ -509,59 +513,6 @@ static inline struct da9055_regulator_info *find_regulator_info(int id) ...@@ -509,59 +513,6 @@ static inline struct da9055_regulator_info *find_regulator_info(int id)
return NULL; 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) static int da9055_regulator_probe(struct platform_device *pdev)
{ {
struct regulator_config config = { }; struct regulator_config config = { };
...@@ -582,18 +533,12 @@ static int da9055_regulator_probe(struct platform_device *pdev) ...@@ -582,18 +533,12 @@ static int da9055_regulator_probe(struct platform_device *pdev)
} }
regulator->da9055 = da9055; regulator->da9055 = da9055;
config.dev = &pdev->dev; config.dev = da9055->dev;
config.driver_data = regulator; config.driver_data = regulator;
config.regmap = da9055->regmap; config.regmap = da9055->regmap;
if (pdata) { if (pdata)
config.init_data = pdata->regulators[pdev->id]; 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); ret = da9055_gpio_init(regulator, &config, pdata, pdev->id);
if (ret < 0) if (ret < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment