Browse Source

regulator: core: Try using the parent device for the default regmap

If the device doesn't have a regmap specified by the driver and we can't
find one on the device itself try its parent, providing a useful defualt
for many MFDs.

[Rewrite commit message -- broonie]

Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
AnilKumar Ch 12 years ago
parent
commit
52b84dac43
1 changed files with 3 additions and 1 deletions
  1. 3 1
      drivers/regulator/core.c

+ 3 - 1
drivers/regulator/core.c

@@ -3202,8 +3202,10 @@ regulator_register(const struct regulator_desc *regulator_desc,
 	rdev->desc = regulator_desc;
 	rdev->desc = regulator_desc;
 	if (config->regmap)
 	if (config->regmap)
 		rdev->regmap = config->regmap;
 		rdev->regmap = config->regmap;
-	else
+	else if (dev_get_regmap(dev, NULL))
 		rdev->regmap = dev_get_regmap(dev, NULL);
 		rdev->regmap = dev_get_regmap(dev, NULL);
+	else if (dev->parent)
+		rdev->regmap = dev_get_regmap(dev->parent, NULL);
 	INIT_LIST_HEAD(&rdev->consumer_list);
 	INIT_LIST_HEAD(&rdev->consumer_list);
 	INIT_LIST_HEAD(&rdev->list);
 	INIT_LIST_HEAD(&rdev->list);
 	BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);
 	BLOCKING_INIT_NOTIFIER_HEAD(&rdev->notifier);