Merge branch 'next' of git://git.denx.de/u-boot-blackfin
[oweals/u-boot.git] / drivers / power / regulator / regulator-uclass.c
index 12e141b4adedbda7b2d44b1f3ddfd913eaa9ffb1..4241a4c7f2bd1fbeec6df8ceee7c128f3c2db228 100644 (file)
@@ -138,6 +138,13 @@ int regulator_get_by_devname(const char *devname, struct udevice **devp)
        return uclass_get_device_by_name(UCLASS_REGULATOR, devname, devp);
 }
 
+int device_get_supply_regulator(struct udevice *dev, const char *supply_name,
+                               struct udevice **devp)
+{
+       return uclass_get_device_by_phandle(UCLASS_REGULATOR, dev,
+                                           supply_name, devp);
+}
+
 int regulator_autoset(struct udevice *dev)
 {
        struct dm_regulator_uclass_platdata *uc_pdata;
@@ -256,7 +263,9 @@ static int regulator_post_bind(struct udevice *dev)
        if (!uc_pdata->name) {
                debug("%s: dev: %s has no property 'regulator-name'\n",
                      __func__, dev->name);
-               return -EINVAL;
+               uc_pdata->name = fdt_get_name(blob, offset, NULL);
+               if (!uc_pdata->name)
+                       return -EINVAL;
        }
 
        if (regulator_name_is_unique(dev, uc_pdata->name))
@@ -319,8 +328,10 @@ int regulators_enable_boot_on(bool verbose)
             dev && !ret;
             uclass_next_device(&dev)) {
                ret = regulator_autoset(dev);
-               if (ret == -EMEDIUMTYPE)
+               if (ret == -EMEDIUMTYPE) {
+                       ret = 0;
                        continue;
+               }
                if (verbose)
                        regulator_show(dev, ret);
        }