public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/3] pmic:pfuze support buck regulator mode switch
@ 2015-01-08 13:00 Peng Fan
  2015-01-08 13:00 ` [U-Boot] [PATCH 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Peng Fan @ 2015-01-08 13:00 UTC (permalink / raw)
  To: u-boot

This patch set is to support buck regulator can working in different
switching modes.

To improve system efficiency the buck regulators can operate
in different switching modes.

patch 1/3 is to add related bit definitions and registers.
patch 2/3 is to implement the switching mode init function.
patch 3/3 is to add related mode init function in board code.

mx6slevk board is not included in this patch set, since power and i2c
interface are not implemented for it. Future patch will cover this to add
PAD setting, power_init_board and etc.

Peng Fan (3):
  pmic:pfuz100 add switch mode and more registers
  pmic:pfuze implement pmic_mode_init
  imx:mx6 set normal APS and standby PFM mode

 board/freescale/common/pfuze.c                | 36 ++++++++++++++++++
 board/freescale/common/pfuze.h                |  1 +
 board/freescale/mx6qsabreauto/mx6qsabreauto.c |  5 +++
 board/freescale/mx6sabresd/mx6sabresd.c       |  6 ++-
 board/freescale/mx6sxsabresd/mx6sxsabresd.c   |  6 ++-
 include/power/pfuze100_pmic.h                 | 53 +++++++++++++++++++++++++++
 6 files changed, 105 insertions(+), 2 deletions(-)

-- 
1.8.4

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 1/3] pmic:pfuz100 add switch mode and more registers
  2015-01-08 13:00 [U-Boot] [PATCH 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
@ 2015-01-08 13:00 ` Peng Fan
  2015-01-08 13:00 ` [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
  2015-01-08 13:00 ` [U-Boot] [PATCH 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan
  2 siblings, 0 replies; 7+ messages in thread
From: Peng Fan @ 2015-01-08 13:00 UTC (permalink / raw)
  To: u-boot

Add more pfuze register offset.
And switch mode definition.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
---
 include/power/pfuze100_pmic.h | 53 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/include/power/pfuze100_pmic.h b/include/power/pfuze100_pmic.h
index 1118489..7474afb 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,38 @@ 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
+
 int power_pfuze100_init(unsigned char bus);
 #endif
-- 
1.8.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init
  2015-01-08 13:00 [U-Boot] [PATCH 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
  2015-01-08 13:00 ` [U-Boot] [PATCH 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
@ 2015-01-08 13:00 ` Peng Fan
  2015-01-15  9:00   ` Przemyslaw Marczak
  2015-01-08 13:00 ` [U-Boot] [PATCH 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan
  2 siblings, 1 reply; 7+ messages in thread
From: Peng Fan @ 2015-01-08 13:00 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>
---
 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>
 
+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
-- 
1.8.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 3/3] imx:mx6 set normal APS and standby PFM mode
  2015-01-08 13:00 [U-Boot] [PATCH 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
  2015-01-08 13:00 ` [U-Boot] [PATCH 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
  2015-01-08 13:00 ` [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
@ 2015-01-08 13:00 ` Peng Fan
  2 siblings, 0 replies; 7+ messages in thread
From: Peng Fan @ 2015-01-08 13:00 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>
---
 board/freescale/mx6qsabreauto/mx6qsabreauto.c | 5 +++++
 board/freescale/mx6sabresd/mx6sabresd.c       | 6 +++++-
 board/freescale/mx6sxsabresd/mx6sxsabresd.c   | 6 +++++-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
index 59387ff..b29ff2b 100644
--- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c
+++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
@@ -515,11 +515,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 -EIO;
+
 	return 0;
 }
 
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index 2f7198d..59544d9 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 -EIO;
+
 	/* Increase VGEN3 from 2.5 to 2.8V */
 	pmic_reg_read(p, PFUZE100_VGEN3VOL, &reg);
 	reg &= ~LDO_VOL_MASK;
diff --git a/board/freescale/mx6sxsabresd/mx6sxsabresd.c b/board/freescale/mx6sxsabresd/mx6sxsabresd.c
index 5cc58ac..fbf3337 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 -EIO;
+
 	/* Enable power of VGEN5 3V3, needed for SD3 */
 	pmic_reg_read(p, PFUZE100_VGEN5VOL, &reg);
 	reg &= ~LDO_VOL_MASK;
-- 
1.8.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init
  2015-01-08 13:00 ` [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
@ 2015-01-15  9:00   ` Przemyslaw Marczak
  2015-01-15 10:07     ` Peng Fan
  2015-01-16  2:07     ` Peng Fan
  0 siblings, 2 replies; 7+ messages in thread
From: Przemyslaw Marczak @ 2015-01-15  9:00 UTC (permalink / raw)
  To: u-boot

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@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@samsung.com>

Best regards,
-- 
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init
  2015-01-15  9:00   ` Przemyslaw Marczak
@ 2015-01-15 10:07     ` Peng Fan
  2015-01-16  2:07     ` Peng Fan
  1 sibling, 0 replies; 7+ messages in thread
From: Peng Fan @ 2015-01-15 10:07 UTC (permalink / raw)
  To: u-boot

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 <Peng.Fan@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?
>
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 <p.marczak@samsung.com>
>
Thanks,
Peng.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init
  2015-01-15  9:00   ` Przemyslaw Marczak
  2015-01-15 10:07     ` Peng Fan
@ 2015-01-16  2:07     ` Peng Fan
  1 sibling, 0 replies; 7+ messages in thread
From: Peng Fan @ 2015-01-16  2:07 UTC (permalink / raw)
  To: u-boot

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@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@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.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-01-16  2:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-08 13:00 [U-Boot] [PATCH 0/3] pmic:pfuze support buck regulator mode switch Peng Fan
2015-01-08 13:00 ` [U-Boot] [PATCH 1/3] pmic:pfuz100 add switch mode and more registers Peng Fan
2015-01-08 13:00 ` [U-Boot] [PATCH 2/3] pmic:pfuze implement pmic_mode_init Peng Fan
2015-01-15  9:00   ` Przemyslaw Marczak
2015-01-15 10:07     ` Peng Fan
2015-01-16  2:07     ` Peng Fan
2015-01-08 13:00 ` [U-Boot] [PATCH 3/3] imx:mx6 set normal APS and standby PFM mode Peng Fan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox