[PATCH 09/18] regulator: add device reference to regulator_dev

Marco Felsch m.felsch at pengutronix.de
Mon Sep 28 11:50:32 EDT 2020


It is useful to know the physical device a regulator_dev belongs to.
This is at least needed for the new deep-probe mechanism. It is also
useful for a few regulator drivers to drop their own device_d reference.

Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
---
 drivers/regulator/anatop-regulator.c  | 1 +
 drivers/regulator/bcm2835.c           | 1 +
 drivers/regulator/fixed.c             | 1 +
 drivers/regulator/stm32-pwr.c         | 1 +
 drivers/regulator/stpmic1_regulator.c | 1 +
 include/regulator.h                   | 2 ++
 6 files changed, 7 insertions(+)

diff --git a/drivers/regulator/anatop-regulator.c b/drivers/regulator/anatop-regulator.c
index 7ec9446a0a..917f7e8fdd 100644
--- a/drivers/regulator/anatop-regulator.c
+++ b/drivers/regulator/anatop-regulator.c
@@ -67,6 +67,7 @@ static int anatop_regulator_probe(struct device_d *dev)
 
 	rdev->desc = rdesc;
 	rdev->regmap = syscon_node_to_regmap(anatop_np);
+	rdev->dev = dev;
 	if (IS_ERR(rdev->regmap))
 		return PTR_ERR(rdev->regmap);
 
diff --git a/drivers/regulator/bcm2835.c b/drivers/regulator/bcm2835.c
index ea7cf7fe1e..1b1eeaf3b8 100644
--- a/drivers/regulator/bcm2835.c
+++ b/drivers/regulator/bcm2835.c
@@ -126,6 +126,7 @@ static int regulator_bcm2835_probe(struct device_d *dev)
 		rb->rdesc.ops = &bcm2835_ops;
 		rb->rdev.desc = &rb->rdesc;
 		rb->dev = dev;
+		rb->rdev.dev = dev;
 
 		ret = dev_regulator_register(&rb->rdev, rb->devname, NULL);
 		if (ret)
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 0b1c752493..160a55163f 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -82,6 +82,7 @@ static int regulator_fixed_probe(struct device_d *dev)
 
 	fix->rdesc.ops = &fixed_ops;
 	fix->rdev.desc = &fix->rdesc;
+	fix->rdev.dev = dev;
 
 	if (of_find_property(dev->device_node, "regulator-always-on", NULL) ||
 	    of_find_property(dev->device_node, "regulator-boot-on", NULL)) {
diff --git a/drivers/regulator/stm32-pwr.c b/drivers/regulator/stm32-pwr.c
index 296f95bc4c..a509eb6ae6 100644
--- a/drivers/regulator/stm32-pwr.c
+++ b/drivers/regulator/stm32-pwr.c
@@ -182,6 +182,7 @@ static int stm32_pwr_regulator_probe(struct device_d *dev)
 		priv->dev = dev;
 
 		priv->rdev.desc = &desc->desc;
+		priv->rdev.dev = dev;
 
 		priv->supply = regulator_get(dev, desc->supply_name);
 		if (IS_ERR(priv->supply))
diff --git a/drivers/regulator/stpmic1_regulator.c b/drivers/regulator/stpmic1_regulator.c
index 2b4b729541..60905d394e 100644
--- a/drivers/regulator/stpmic1_regulator.c
+++ b/drivers/regulator/stpmic1_regulator.c
@@ -390,6 +390,7 @@ static int stpmic1_regulator_register(struct device_d *dev, int id,
 
 	cfg->dev = dev;
 	cfg->rdev.desc = &cfg->desc;
+	cfg->rdev.dev = dev;
 	cfg->rdev.regmap = dev_get_regmap(dev->parent, NULL);
 	if (IS_ERR(cfg->rdev.regmap))
 		return PTR_ERR(cfg->rdev.regmap);
diff --git a/include/regulator.h b/include/regulator.h
index a9cb6dedca..44eee7b0ad 100644
--- a/include/regulator.h
+++ b/include/regulator.h
@@ -77,6 +77,8 @@ struct regulator_dev {
 	const struct regulator_desc *desc;
 	struct regmap *regmap;
 	int boot_on;
+	/* the device this regulator device belongs to */
+	struct device_d *dev;
 };
 
 struct regulator_ops {
-- 
2.20.1




More information about the barebox mailing list