regulator: 88pm8607: 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: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a48f127519
commit
e66264273f
|
@ -235,6 +235,8 @@ static const struct regulator_ops pm8606_preg_ops = {
|
|||
{ \
|
||||
.desc = { \
|
||||
.name = "PREG", \
|
||||
.of_match = of_match_ptr("PREG"), \
|
||||
.regulators_node = of_match_ptr("regulators"), \
|
||||
.ops = &pm8606_preg_ops, \
|
||||
.type = REGULATOR_CURRENT, \
|
||||
.id = PM8606_ID_PREG, \
|
||||
|
@ -249,6 +251,8 @@ static const struct regulator_ops pm8606_preg_ops = {
|
|||
{ \
|
||||
.desc = { \
|
||||
.name = #vreg, \
|
||||
.of_match = of_match_ptr(#vreg), \
|
||||
.regulators_node = of_match_ptr("regulators"), \
|
||||
.ops = &pm8607_regulator_ops, \
|
||||
.type = REGULATOR_VOLTAGE, \
|
||||
.id = PM8607_ID_##vreg, \
|
||||
|
@ -270,6 +274,8 @@ static const struct regulator_ops pm8606_preg_ops = {
|
|||
{ \
|
||||
.desc = { \
|
||||
.name = "LDO" #_id, \
|
||||
.of_match = of_match_ptr("LDO" #_id), \
|
||||
.regulators_node = of_match_ptr("regulators"), \
|
||||
.ops = &pm8607_regulator_ops, \
|
||||
.type = REGULATOR_VOLTAGE, \
|
||||
.id = PM8607_ID_LDO##_id, \
|
||||
|
@ -309,36 +315,6 @@ static struct pm8607_regulator_info pm8606_regulator_info[] = {
|
|||
PM8606_PREG(PREREGULATORB, 5),
|
||||
};
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static int pm8607_regulator_dt_init(struct platform_device *pdev,
|
||||
struct pm8607_regulator_info *info,
|
||||
struct regulator_config *config)
|
||||
{
|
||||
struct device_node *nproot, *np;
|
||||
nproot = pdev->dev.parent->of_node;
|
||||
if (!nproot)
|
||||
return -ENODEV;
|
||||
nproot = of_get_child_by_name(nproot, "regulators");
|
||||
if (!nproot) {
|
||||
dev_err(&pdev->dev, "failed to find regulators node\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
for_each_child_of_node(nproot, np) {
|
||||
if (of_node_name_eq(np, info->desc.name)) {
|
||||
config->init_data =
|
||||
of_get_regulator_init_data(&pdev->dev, np,
|
||||
&info->desc);
|
||||
config->of_node = np;
|
||||
break;
|
||||
}
|
||||
}
|
||||
of_node_put(nproot);
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#define pm8607_regulator_dt_init(x, y, z) (-1)
|
||||
#endif
|
||||
|
||||
static int pm8607_regulator_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent);
|
||||
|
@ -373,12 +349,11 @@ static int pm8607_regulator_probe(struct platform_device *pdev)
|
|||
if ((i == PM8607_ID_BUCK3) && chip->buck3_double)
|
||||
info->slope_double = 1;
|
||||
|
||||
config.dev = &pdev->dev;
|
||||
config.dev = chip->dev;
|
||||
config.driver_data = info;
|
||||
|
||||
if (pm8607_regulator_dt_init(pdev, info, &config))
|
||||
if (pdata)
|
||||
config.init_data = pdata;
|
||||
if (pdata)
|
||||
config.init_data = pdata;
|
||||
|
||||
if (chip->id == CHIP_PM8607)
|
||||
config.regmap = chip->regmap;
|
||||
|
|
Loading…
Reference in a new issue