[U-Boot] [PATCH v3 37/54] dm: power: Add a function to set up all regulators
Przemyslaw Marczak
p.marczak at samsung.com
Wed Jul 1 11:44:23 CEST 2015
Hello Simon,
On 06/23/2015 11:38 PM, Simon Glass wrote:
> 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 at chromium.org>
> ---
>
> Changes in v3: None
> Changes in v2: None
>
> drivers/power/regulator/regulator-uclass.c | 22 ++++++++++++++++++++++
> include/power/regulator.h | 11 +++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c
> index 687d3b1..a2d0b9f 100644
> --- a/drivers/power/regulator/regulator-uclass.c
> +++ b/drivers/power/regulator/regulator-uclass.c
> @@ -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",
> diff --git a/include/power/regulator.h b/include/power/regulator.h
> index 86e9c3b..0bdb496 100644
> --- a/include/power/regulator.h
> +++ b/include/power/regulator.h
> @@ -316,6 +316,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 caslls regulator_autoset() for every regulator.
"calls"
> + */
> +int regulators_enable_boot_on(bool verbose);
> +
> +/**
> * regulator_autoset: setup the the voltage/current on a regulator
> *
> * The setup depends on constraints found in device's uclass's platform data
>
Tested on:
- Odroid U3 (odroid_defconfig)
- Sandbox - ut pmic/regulator
Tested-by: Przemyslaw Marczak <p.marczak at samsung.com>
Acked-by: Przemyslaw Marczak <p.marczak at samsung.com>
Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
More information about the U-Boot
mailing list