diff options
Diffstat (limited to 'drivers/regulator/core.c')
-rw-r--r-- | drivers/regulator/core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index ac3a9b048e..097f7d779b 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -175,6 +175,7 @@ int of_regulator_register(struct regulator_dev *rd, struct device_node *node) return PTR_ERR(ri); ri->node = node; + node->dev = rd->dev; if (rd->desc->off_on_delay) ri->enable_time_us = rd->desc->off_on_delay; @@ -197,6 +198,7 @@ static struct regulator_internal *of_regulator_get(struct device_d *dev, const c char *propname; struct regulator_internal *ri; struct device_node *node; + int ret; propname = basprintf("%s-supply", supply); @@ -228,6 +230,10 @@ static struct regulator_internal *of_regulator_get(struct device_d *dev, const c goto out; } + ret = of_device_ensure_probed(node); + if (ret) + return ERR_PTR(ret); + list_for_each_entry(ri, ®ulator_list, list) { if (ri->node == node) { dev_dbg(dev, "Using %s regulator from %s\n", |