[U-Boot] [PATCH v3 37/54] dm: power: Add a function to set up all regulators
Simon Glass
sjg at chromium.org
Sat Jul 18 01:57:24 CEST 2015
On 1 July 2015 at 03:44, Przemyslaw Marczak <p.marczak at samsung.com> wrote:
> 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
Applied to u-boot-dm.
More information about the U-Boot
mailing list