[U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init

Peng Fan B51431 at freescale.com
Fri Jan 16 03:07:23 CET 2015


Hi Stefano,

On 1/15/2015 5:00 PM, Przemyslaw Marczak wrote:
> Hello Peg,
>
> On 01/08/2015 02:00 PM, Peng Fan wrote:
>> This patch is to implement pmic_mode_init function, and add prototype
>> in header file.
>>
>> This function is to set switching mode for pmic buck regulators to
>> improve system efficiency.
>>
>> Mode:
>> OFF: The regulator is switched off and the output voltage is discharged.
>> PFM: In this mode, the regulator is always in PFM mode, which
>>       is useful at light loads for optimized efficiency.
>> PWM: In this mode, the regulator is always in PWM mode operation
>>       regardless of load conditions.
>> APS: In this mode, the regulator moves automatically between
>>       pulse skipping mode and PWM mode depending on load conditions.
>>
>> Signed-off-by: Peng Fan <Peng.Fan at freescale.com>
>> ---
>>   board/freescale/common/pfuze.c | 36 
>> ++++++++++++++++++++++++++++++++++++
>>   board/freescale/common/pfuze.h |  1 +
>>   2 files changed, 37 insertions(+)
>>
>> diff --git a/board/freescale/common/pfuze.c 
>> b/board/freescale/common/pfuze.c
>> index 2cd1794..74df69c 100644
>> --- a/board/freescale/common/pfuze.c
>> +++ b/board/freescale/common/pfuze.c
>> @@ -8,6 +8,42 @@
>>   #include <power/pmic.h>
>>   #include <power/pfuze100_pmic.h>
>>
>
> In this function, you set the same operating mode to the all switching 
> regulators, so this will be done for the all boards which will use 
> this pmic call.
> I assume that this is what you want, if not, then maybe adding the 
> regulator number as an argument, could make it more flexible, for the 
> other configurations.
> So what do you think about this?
>
>> +int pfuze_mode_init(struct pmic *p, u32 mode)
>> +{
>> +    unsigned char offset, i, switch_num;
>> +    u32 id, ret;
>> +
>> +    pmic_reg_read(p, PFUZE100_DEVICEID, &id);
>> +    id = id & 0xf;
>> +
>> +    if (id == 0) {
>> +        switch_num = 6;
>> +        offset = PFUZE100_SW1CMODE;
>> +    } else if (id == 1) {
>> +        switch_num = 4;
>> +        offset = PFUZE100_SW2MODE;
>> +    } else {
>> +        printf("Not supported, id=%d\n", id);
>> +        return -1;
>> +    }
>> +
>> +    ret = pmic_reg_write(p, PFUZE100_SW1ABMODE, mode);
>> +    if (ret < 0) {
>> +        printf("Set SW1AB mode error!\n");
>> +        return ret;
>> +    }
>> +
>> +    for (i = 0; i < switch_num - 1; i++) {
>> +        ret = pmic_reg_write(p, offset + i * 7, mode);
>> +        if (ret < 0) {
>> +            printf("Set switch%x mode error!\n", offset + i * 7);
>> +            return ret;
>> +        }
>> +    }
>> +
>> +    return ret;
>> +}
>> +
>>   struct pmic *pfuze_common_init(unsigned char i2cbus)
>>   {
>>       struct pmic *p;
>> diff --git a/board/freescale/common/pfuze.h 
>> b/board/freescale/common/pfuze.h
>> index 7a4126c..53cfc99 100644
>> --- a/board/freescale/common/pfuze.h
>> +++ b/board/freescale/common/pfuze.h
>> @@ -8,5 +8,6 @@
>>   #define __PFUZE_BOARD_HELPER__
>>
>>   struct pmic *pfuze_common_init(unsigned char i2cbus);
>> +int pfuze_mode_init(struct pmic *p, u32 mode);
>>
>>   #endif
>>
> If you don't need such feature, then you have my ACK.
>
> For the patchset:
> Acked-by: Przemyslaw Marczak <p.marczak at samsung.com>
>

Since this patch set is fine for the boards, and the new feature can be 
done in future patch, please review the ldo bypass patches based on this 
patch set.
That v2 patch set is discarded.
> Best regards,
Thanks,
Peng.


More information about the U-Boot mailing list