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 <[email protected]>
---
 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


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to