[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