From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Date: Thu, 15 Jan 2015 18:07:08 +0800 Subject: [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init In-Reply-To: <54B781C4.9000605@samsung.com> References: <1420722038-22884-1-git-send-email-Peng.Fan@freescale.com> <1420722038-22884-3-git-send-email-Peng.Fan@freescale.com> <54B781C4.9000605@samsung.com> Message-ID: <54B7914C.3040606@freescale.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, Przemyslaw 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 >> --- >> 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 >> #include >> > > 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? > This is a good suggestion that configure each regulator with it's own requirement. I'll add a new function pfuze_regulator_mode_set to set each regulator's mode according input parameter, and also keep pfuze_mode_init to configure all regulators. I'll sent out v2 patch soon. >> +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 > Thanks, Peng.