Commit 083fc83a authored by Simon Glass's avatar Simon Glass
Browse files

dm: power: Add a function to set up all regulators

The device tree provides information about which regulators should be
on at boot, or always on. Use this to set them up automatically.
Signed-off-by: default avatarSimon Glass <>
Tested-by: default avatarPrzemyslaw Marczak <>
Acked-by: default avatarPrzemyslaw Marczak <>
parent 3b55d30f
......@@ -306,6 +306,28 @@ static int regulator_pre_probe(struct udevice *dev)
return 0;
int regulators_enable_boot_on(bool verbose)
struct udevice *dev;
struct uclass *uc;
int ret;
ret = uclass_get(UCLASS_REGULATOR, &uc);
if (ret)
return ret;
for (uclass_first_device(UCLASS_REGULATOR, &dev);
dev && !ret;
uclass_next_device(&dev)) {
ret = regulator_autoset(dev);
if (ret == -EMEDIUMTYPE)
if (verbose)
regulator_show(dev, ret);
return ret;
UCLASS_DRIVER(regulator) = {
.name = "regulator",
......@@ -315,6 +315,17 @@ int regulator_get_mode(struct udevice *dev);
int regulator_set_mode(struct udevice *dev, int mode_id);
* regulators_enable_boot_on() - enable regulators needed for boot
* This enables all regulators which are marked to be on at boot time. This
* only works for regulators which don't have a range for voltage/current,
* since in that case it is not possible to know which value to use.
* This effectively calls regulator_autoset() for every regulator.
int regulators_enable_boot_on(bool verbose);
* regulator_autoset: setup the voltage/current on a regulator
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment