mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
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: Simon Glass <sjg@chromium.org> Tested-by: Przemyslaw Marczak <p.marczak@samsung.com> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
This commit is contained in:
parent
3b55d30f6f
commit
083fc83a4e
2 changed files with 33 additions and 0 deletions
|
@ -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
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue