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 <sjg@chromium.org>
Tested-by: default avatarPrzemyslaw Marczak <p.marczak@samsung.com>
Acked-by: default avatarPrzemyslaw Marczak <p.marczak@samsung.com>
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)
continue;
if (verbose)
regulator_show(dev, ret);
}
return ret;
}
UCLASS_DRIVER(regulator) = {
.id = UCLASS_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