From: Peng Fan <B51431@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 2/3] pmic:pfuze implement pmic_mode_init
Date: Sat, 24 Jan 2015 21:52:25 +0800 [thread overview]
Message-ID: <54C3A399.1070006@freescale.com> (raw)
In-Reply-To: <54C0D136.5010004@denx.de>
Hi, Stefano
On 1/22/2015 6:30 PM, Stefano Babic wrote:
> On 16/01/2015 17:05, 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@freescale.com>
>> ---
>>
>> Changes v4:
>> Take Fabio's comments, fix return value using -EINVAL when error.
>>
>> Changes v3:
>> delete the new feature, it is fine to use the original v1 patch version
>>
>> Changes v2:
>> implement new feature to configure one regulator
>>
>> 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..c2a0105 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>
>>
>> +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 -EINVAL;
>> + }
>> +
>> + 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);
> Even if it looks clear why, I would suggest a define into
> pfuze100_pmic.h such as "SIZEOF_SWITCH (or what you prefer)" and drop
> the constant here.
The switch_num is dynamically set according to deviceid. I think
hardcode it using a macro is not a good idea.
>
>> + 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
>>
> Best regards,
> Stefano Babic
>
Regards,
Peng.
next prev parent reply other threads:[~2015-01-24 13:52 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-16 16:05 [U-Boot] [PATCH v4 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
2015-01-16 16:05 ` [U-Boot] [PATCH v4 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
2015-01-22 10:24 ` Stefano Babic
2015-01-16 16:05 ` [U-Boot] [PATCH v4 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
2015-01-22 10:30 ` Stefano Babic
2015-01-24 13:52 ` Peng Fan [this message]
2015-01-16 16:05 ` [U-Boot] [PATCH v4 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan
2015-01-19 9:26 ` [U-Boot] [PATCH v4 0/3] pmic:pfuze support buck regulator mode switch Przemyslaw Marczak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54C3A399.1070006@freescale.com \
--to=b51431@freescale.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.