* [U-Boot] [PATCH v5 1/3] pmic:pfuz100 add switch mode and more registers
2015-01-27 2:14 [U-Boot] [PATCH v5 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
@ 2015-01-27 2:14 ` Peng Fan
2015-01-29 17:48 ` Stefano Babic
2015-01-27 2:14 ` [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
2015-01-27 2:14 ` [U-Boot] [PATCH v5 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan
2 siblings, 1 reply; 10+ messages in thread
From: Peng Fan @ 2015-01-27 2:14 UTC (permalink / raw)
To: u-boot
Add more pfuze register offset.
And switch mode definition.
Add a macro SWITCH_SIZE
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
Reviewed-by: Stefano Babic <sbabic@denx.de>
---
Changes v5:
add "Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>" and
"Reviewed-by: Stefano Babic <sbabic@denx.de>"
define a SWITCH_SIZE macro to replace constant in patch 2/3
Changes v4:
none
Changes v3:
none
Changes v2:
none
include/power/pfuze100_pmic.h | 55 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/include/power/pfuze100_pmic.h b/include/power/pfuze100_pmic.h
index 1118489..41aa3c4 100644
--- a/include/power/pfuze100_pmic.h
+++ b/include/power/pfuze100_pmic.h
@@ -16,14 +16,34 @@ enum {
PFUZE100_SW1ABVOL = 0x20,
PFUZE100_SW1ABSTBY = 0x21,
+ PFUZE100_SW1ABOFF = 0x22,
+ PFUZE100_SW1ABMODE = 0x23,
PUZE_100_SW1ABCONF = 0x24,
PFUZE100_SW1CVOL = 0x2e,
PFUZE100_SW1CSTBY = 0x2f,
+ PFUZE100_SW1COFF = 0x30,
+ PFUZE100_SW1CMODE = 0x31,
PFUZE100_SW1CCONF = 0x32,
PFUZE100_SW2VOL = 0x35,
+ PFUZE100_SW2STBY = 0x36,
+ PFUZE100_SW2OFF = 0x37,
+ PFUZE100_SW2MODE = 0x38,
+ PFUZE100_SW2CONF = 0x39,
PFUZE100_SW3AVOL = 0x3c,
+ PFUZE100_SW3ASTBY = 0x3D,
+ PFUZE100_SW3AOFF = 0x3E,
+ PFUZE100_SW3AMODE = 0x3F,
+ PFUZE100_SW3ACONF = 0x40,
PFUZE100_SW3BVOL = 0x43,
+ PFUZE100_SW3BSTBY = 0x44,
+ PFUZE100_SW3BOFF = 0x45,
+ PFUZE100_SW3BMODE = 0x46,
+ PFUZE100_SW3BCONF = 0x47,
PFUZE100_SW4VOL = 0x4a,
+ PFUZE100_SW4STBY = 0x4b,
+ PFUZE100_SW4OFF = 0x4c,
+ PFUZE100_SW4MODE = 0x4d,
+ PFUZE100_SW4CONF = 0x4e,
PFUZE100_SWBSTCON1 = 0x66,
PFUZE100_VREFDDRCON = 0x6a,
PFUZE100_VSNVSVOL = 0x6b,
@@ -177,5 +197,40 @@ enum {
#define SWBST_MODE_AUTO (2 << 2)
#define SWBST_MODE_APS (2 << 3)
+/*
+ * Regulator Mode Control
+ *
+ * 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
+ * @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.
+ *
+ * SWxMODE[3:0]
+ * Normal Mode | Standby Mode | value
+ * OFF OFF 0x0
+ * PWM OFF 0x1
+ * PFM OFF 0x3
+ * APS OFF 0x4
+ * PWM PWM 0x5
+ * PWM APS 0x6
+ * APS APS 0x8
+ * APS PFM 0xc
+ * PWM PFM 0xd
+ */
+#define OFF_OFF 0x0
+#define PWM_OFF 0x1
+#define PFM_OFF 0x3
+#define APS_OFF 0x4
+#define PWM_PWM 0x5
+#define PWM_APS 0x6
+#define APS_APS 0x8
+#define APS_PFM 0xc
+#define PWM_PFM 0xd
+
+#define SWITCH_SIZE 0x7
+
int power_pfuze100_init(unsigned char bus);
#endif
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread* [U-Boot] [PATCH v5 1/3] pmic:pfuz100 add switch mode and more registers
2015-01-27 2:14 ` [U-Boot] [PATCH v5 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
@ 2015-01-29 17:48 ` Stefano Babic
0 siblings, 0 replies; 10+ messages in thread
From: Stefano Babic @ 2015-01-29 17:48 UTC (permalink / raw)
To: u-boot
On 27/01/2015 03:14, Peng Fan wrote:
> Add more pfuze register offset.
> And switch mode definition.
> Add a macro SWITCH_SIZE
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
> Reviewed-by: Stefano Babic <sbabic@denx.de>
> ---
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init
2015-01-27 2:14 [U-Boot] [PATCH v5 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
2015-01-27 2:14 ` [U-Boot] [PATCH v5 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
@ 2015-01-27 2:14 ` Peng Fan
2015-01-29 17:48 ` Stefano Babic
2015-01-27 2:14 ` [U-Boot] [PATCH v5 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan
2 siblings, 1 reply; 10+ messages in thread
From: Peng Fan @ 2015-01-27 2:14 UTC (permalink / raw)
To: u-boot
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>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
---
Changes v5:
Add Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
replace the constant 7 using macro SWITCH_SIZE which defined in header file.
Include "errno.h" to avoid compile error.
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 | 38 ++++++++++++++++++++++++++++++++++++++
board/freescale/common/pfuze.h | 1 +
2 files changed, 39 insertions(+)
diff --git a/board/freescale/common/pfuze.c b/board/freescale/common/pfuze.c
index 2cd1794..4980bf7 100644
--- a/board/freescale/common/pfuze.c
+++ b/board/freescale/common/pfuze.c
@@ -5,9 +5,47 @@
*/
#include <common.h>
+#include <errno.h>
#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 * SWITCH_SIZE, mode);
+ if (ret < 0) {
+ printf("Set switch 0x%x mode error!\n",
+ offset + i * SWITCH_SIZE);
+ 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
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread* [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init
2015-01-27 2:14 ` [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
@ 2015-01-29 17:48 ` Stefano Babic
2015-02-11 1:59 ` Peng Fan
0 siblings, 1 reply; 10+ messages in thread
From: Stefano Babic @ 2015-01-29 17:48 UTC (permalink / raw)
To: u-boot
On 27/01/2015 03:14, 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>
> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
> ---
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init
2015-01-29 17:48 ` Stefano Babic
@ 2015-02-11 1:59 ` Peng Fan
2015-02-11 11:41 ` Stefano Babic
0 siblings, 1 reply; 10+ messages in thread
From: Peng Fan @ 2015-02-11 1:59 UTC (permalink / raw)
To: u-boot
Hi, Stefano
On 1/30/2015 1:48 AM, Stefano Babic wrote:
> On 27/01/2015 03:14, 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>
>> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
>> ---
> Applied to u-boot-imx, thanks !
I did not see this patch applied to u-boot-imx, I saw only patch 1/3 is
applied. Do you miss this one?
>
> Best regards,
> Stefano Babic
>
>
>
Regards,
Peng.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init
2015-02-11 1:59 ` Peng Fan
@ 2015-02-11 11:41 ` Stefano Babic
0 siblings, 0 replies; 10+ messages in thread
From: Stefano Babic @ 2015-02-11 11:41 UTC (permalink / raw)
To: u-boot
Hi Peng,
On 11/02/2015 02:59, Peng Fan wrote:
> Hi, Stefano
>
> On 1/30/2015 1:48 AM, Stefano Babic wrote:
>> On 27/01/2015 03:14, 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>
>>> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
>>> ---
>> Applied to u-boot-imx, thanks !
> I did not see this patch applied to u-boot-imx, I saw only patch 1/3 is
> applied. Do you miss this one?
>>
I see. I have applied only patches that are assigned to me (in
patchwork), in this case only Patch 1/3. Patch 2 and 3 were still
assigned to Przemyslaw (but we have his ACK). I assign the patches to me
and I will apply them.
However, something bad happened. No idea how it could happen, but
applying patch1/3, the define for SWITCH_SIZE disappeared - see in file.
I cannot find a valid reason for that. I fix it myself, and I start
rebuilding to check breakage before pushing on the server.
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v5 3/3] imx:mx6 set normal APS and standby PFM mode
2015-01-27 2:14 [U-Boot] [PATCH v5 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
2015-01-27 2:14 ` [U-Boot] [PATCH v5 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
2015-01-27 2:14 ` [U-Boot] [PATCH v5 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
@ 2015-01-27 2:14 ` Peng Fan
2015-01-29 17:48 ` Stefano Babic
2 siblings, 1 reply; 10+ messages in thread
From: Peng Fan @ 2015-01-27 2:14 UTC (permalink / raw)
To: u-boot
To normal mode, use APS switching mode.
To standy mode, use PFM switching mode.
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
---
Changes v5:
Add Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
Changes v4:
none
Changes v3:
Following Fabio's comments, correct return value
Changes v2:
none
board/freescale/mx6qsabreauto/mx6qsabreauto.c | 6 ++++++
board/freescale/mx6sabresd/mx6sabresd.c | 6 +++++-
board/freescale/mx6sxsabresd/mx6sxsabresd.c | 6 +++++-
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
index 59387ff..b12e74e 100644
--- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c
+++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
@@ -29,6 +29,7 @@
#include <asm/arch/crm_regs.h>
#include <pca953x.h>
#include <power/pmic.h>
+#include <power/pfuze100_pmic.h>
#include "../common/pfuze.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -515,11 +516,16 @@ int board_spi_cs_gpio(unsigned bus, unsigned cs)
int power_init_board(void)
{
struct pmic *p;
+ unsigned int ret;
p = pfuze_common_init(I2C_PMIC);
if (!p)
return -ENODEV;
+ ret = pfuze_mode_init(p, APS_PFM);
+ if (ret < 0)
+ return ret;
+
return 0;
}
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index 2f7198d..bb2dd96 100644
--- a/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/board/freescale/mx6sabresd/mx6sabresd.c
@@ -631,12 +631,16 @@ int board_init(void)
int power_init_board(void)
{
struct pmic *p;
- unsigned int reg;
+ unsigned int reg, ret;
p = pfuze_common_init(I2C_PMIC);
if (!p)
return -ENODEV;
+ ret = pfuze_mode_init(p, APS_PFM);
+ if (ret < 0)
+ return ret;
+
/* Increase VGEN3 from 2.5 to 2.8V */
pmic_reg_read(p, PFUZE100_VGEN3VOL, ®);
reg &= ~LDO_VOL_MASK;
diff --git a/board/freescale/mx6sxsabresd/mx6sxsabresd.c b/board/freescale/mx6sxsabresd/mx6sxsabresd.c
index a2c9aae..2ff960e 100644
--- a/board/freescale/mx6sxsabresd/mx6sxsabresd.c
+++ b/board/freescale/mx6sxsabresd/mx6sxsabresd.c
@@ -199,12 +199,16 @@ static struct i2c_pads_info i2c_pad_info1 = {
int power_init_board(void)
{
struct pmic *p;
- unsigned int reg;
+ unsigned int reg, ret;
p = pfuze_common_init(I2C_PMIC);
if (!p)
return -ENODEV;
+ ret = pfuze_mode_init(p, APS_PFM);
+ if (ret < 0)
+ return ret;
+
/* Enable power of VGEN5 3V3, needed for SD3 */
pmic_reg_read(p, PFUZE100_VGEN5VOL, ®);
reg &= ~LDO_VOL_MASK;
--
1.8.4
^ permalink raw reply related [flat|nested] 10+ messages in thread* [U-Boot] [PATCH v5 3/3] imx:mx6 set normal APS and standby PFM mode
2015-01-27 2:14 ` [U-Boot] [PATCH v5 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan
@ 2015-01-29 17:48 ` Stefano Babic
2015-02-11 2:01 ` Peng Fan
0 siblings, 1 reply; 10+ messages in thread
From: Stefano Babic @ 2015-01-29 17:48 UTC (permalink / raw)
To: u-boot
On 27/01/2015 03:14, Peng Fan wrote:
> To normal mode, use APS switching mode.
> To standy mode, use PFM switching mode.
>
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
> ---
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v5 3/3] imx:mx6 set normal APS and standby PFM mode
2015-01-29 17:48 ` Stefano Babic
@ 2015-02-11 2:01 ` Peng Fan
0 siblings, 0 replies; 10+ messages in thread
From: Peng Fan @ 2015-02-11 2:01 UTC (permalink / raw)
To: u-boot
Hi, Stefano
On 1/30/2015 1:48 AM, Stefano Babic wrote:
> On 27/01/2015 03:14, Peng Fan wrote:
>> To normal mode, use APS switching mode.
>> To standy mode, use PFM switching mode.
>>
>> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
>> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
>> ---
> Applied to u-boot-imx, thanks !
Did you miss this patch? I also did not see this one applied.
>
> Best regards,
> Stefano Babic
>
>
>
Regards,
Peng.
^ permalink raw reply [flat|nested] 10+ messages in thread