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@xxxxxxxxxxxxxx> --- 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 barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox