All of lore.kernel.org
 help / color / mirror / Atom feed
From: Li Ye-B37916 <b37916@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/4] imx: mx6: Set Pfuze mode to decrease power number for DSM
Date: Wed, 5 Nov 2014 17:34:50 +0800	[thread overview]
Message-ID: <5459EF3A.6080008@freescale.com> (raw)
In-Reply-To: <5458F755.7060008@samsung.com>

Hi Przemyslaw,

On 11/4/2014 11:57 PM, Przemyslaw Marczak wrote:
> Hello Ye Li,
>
> On 09/10/2014 11:08 AM, Ye.Li wrote:
>> Set all switches APS mode in normal and PFM mode in standby. So when
>> mx6 entering DSM mode, the power number can be decreased. There is
>> no impact for mx6 in run mode.
>>
>> Changes for boards:
>> -mx6 sabreauto
>> -mx6 sabresd
>> -mx6slevk
>> -mx6sxsabresd
>>
>> Signed-off-by: Ye.Li <B37916@freescale.com>
>> ---
>>   board/freescale/mx6qsabreauto/mx6qsabreauto.c |   36 +++++++++++++++++++++++++
>>   board/freescale/mx6sabresd/mx6sabresd.c       |   36 +++++++++++++++++++++++++
>>   board/freescale/mx6slevk/mx6slevk.c           |   36 +++++++++++++++++++++++++
>>   board/freescale/mx6sxsabresd/mx6sxsabresd.c   |   36 +++++++++++++++++++++++++
>>   4 files changed, 144 insertions(+), 0 deletions(-)
>>
>> diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
>> index 76b024b..9e79915 100644
>> --- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c
>> +++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
>> @@ -263,6 +263,37 @@ int board_init(void)
>>       return 0;
>>   }
>>
>> +/* set all switches APS in normal and PFM mode in standby */
>
> I think that the "chip" is quite misleading.
> Just use chipid and check the real value instead of using it as bool.
> And the PF100 DEVICEID should be defined in pf100 header.
>
Accept. Will change it in next version.

>> +static int pfuze_setup_mode(struct pmic *p, int chip)
>> +{
>> +    unsigned char offset, i, switch_num, value;
>> +
>> +    if (!chip) {
>> +        /* pfuze100 */
>> +        switch_num = 6;
>> +        offset = 0x31;
>> +    } else {
>> +        /* pfuze200 */
>> +        switch_num = 4;
>> +        offset = 0x38;
>> +    }
>> +
>> +    value = 0xc;
>
> If you change "magic" values (e.g. 0xc) with proper defines in pmic header, then it could be reused in the future and the code will be more readable.
>
Ok.

>> +    if (pmic_reg_write(p, 0x23, value)) {
>> +        printf("Set SW1AB mode error!\n");
>> +        return -1;
>> +    }
>> +
>> +    for (i = 0; i < switch_num - 1; i++) {
>> +        if (pmic_reg_write(p, offset + i * 7, value)) {
>> +            printf("Set switch%x mode error!\n", offset);
>> +            return -1;
>> +        }
>> +    }
>> +
>> +    return 0;
>> +}
>
> The function above is duplicated few times in each board code.
> Why not make it common and just one?
>

I already have made it as a common function in v4. The patch you reviewed seems not the latest one.  I will address your other comments and send out v5.

>> +
>>   static int pfuze_init(void)
>>   {
>>       struct pmic *p;
>> @@ -281,6 +312,11 @@ static int pfuze_init(void)
>>       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
>>       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
>>
>> +    if (pfuze_setup_mode(p, (reg & 0xf))) {
>> +        printf("setup pfuze mode error!\n");
>> +        return -1;
>> +    }
>> +
>>       /* Set SW1AB stanby volage to 0.975V */
>>       pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
>>       reg &= ~0x3f;
>> diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
>> index 72d6562..810fe13 100644
>> --- a/board/freescale/mx6sabresd/mx6sabresd.c
>> +++ b/board/freescale/mx6sabresd/mx6sabresd.c
>> @@ -456,6 +456,37 @@ int board_init(void)
>>       return 0;
>>   }
>>
>> +/* set all switches APS in normal and PFM mode in standby */
>> +static int pfuze_setup_mode(struct pmic *p, int chip)
>> +{
>> +    unsigned char offset, i, switch_num, value;
>> +
>> +    if (!chip) {
>> +        /* pfuze100 */
>> +        switch_num = 6;
>> +        offset = 0x31;
>> +    } else {
>> +        /* pfuze200 */
>> +        switch_num = 4;
>> +        offset = 0x38;
>> +    }
>> +
>> +    value = 0xc;
>> +    if (pmic_reg_write(p, 0x23, value)) {
>> +        printf("Set SW1AB mode error!\n");
>> +        return -1;
>> +    }
>> +
>> +    for (i = 0; i < switch_num - 1; i++) {
>> +        if (pmic_reg_write(p, offset + i * 7, value)) {
>> +            printf("Set switch%x mode error!\n", offset);
>> +            return -1;
>> +        }
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>>   static int pfuze_init(void)
>>   {
>>       struct pmic *p;
>> @@ -475,6 +506,11 @@ static int pfuze_init(void)
>>       printf("PMIC:  PFUZE%s ID=0x%02x\n",
>>           ((reg & 0xf) == 0) ? "100" : "200", reg);
>>
>> +    if (pfuze_setup_mode(p, (reg & 0xf))) {
>> +        printf("setup pfuze mode error!\n");
>> +        return -1;
>> +    }
>> +
>>       /* Increase VGEN3 from 2.5 to 2.8V */
>>       pmic_reg_read(p, PFUZE100_VGEN3VOL, &reg);
>>       reg &= ~0xf;
>> diff --git a/board/freescale/mx6slevk/mx6slevk.c b/board/freescale/mx6slevk/mx6slevk.c
>> index 8b6a79c..fe5e37d 100644
>> --- a/board/freescale/mx6slevk/mx6slevk.c
>> +++ b/board/freescale/mx6slevk/mx6slevk.c
>> @@ -195,6 +195,37 @@ int board_init(void)
>>       return 0;
>>   }
>>
>> +/* set all switches APS in normal and PFM mode in standby */
>> +static int pfuze_setup_mode(struct pmic *p, int chip)
>> +{
>> +    unsigned char offset, i, switch_num, value;
>> +
>> +    if (!chip) {
>> +        /* pfuze100 */
>> +        switch_num = 6;
>> +        offset = 0x31;
>> +    } else {
>> +        /* pfuze200 */
>> +        switch_num = 4;
>> +        offset = 0x38;
>> +    }
>> +
>> +    value = 0xc;
>> +    if (pmic_reg_write(p, 0x23, value)) {
>> +        printf("Set SW1AB mode error!\n");
>> +        return -1;
>> +    }
>> +
>> +    for (i = 0; i < switch_num - 1; i++) {
>> +        if (pmic_reg_write(p, offset + i * 7, value)) {
>> +            printf("Set switch%x mode error!\n", offset);
>> +            return -1;
>> +        }
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>>   static int pfuze_init(void)
>>   {
>>       struct pmic *p;
>> @@ -214,6 +245,11 @@ static int pfuze_init(void)
>>       printf("PMIC:  PFUZE%s ID=0x%02x\n",
>>           ((reg & 0xf) == 0) ? "100" : "200", reg);
>>
>> +    if (pfuze_setup_mode(p, (reg & 0xf))) {
>> +        printf("setup pfuze mode error!\n");
>> +        return -1;
>> +    }
>> +
>>       /* Set SW1AB stanby volage to 0.975V */
>>       pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
>>       reg &= ~0x3f;
>> diff --git a/board/freescale/mx6sxsabresd/mx6sxsabresd.c b/board/freescale/mx6sxsabresd/mx6sxsabresd.c
>> index 80d2d99..d6a33cd 100644
>> --- a/board/freescale/mx6sxsabresd/mx6sxsabresd.c
>> +++ b/board/freescale/mx6sxsabresd/mx6sxsabresd.c
>> @@ -170,6 +170,37 @@ struct i2c_pads_info i2c_pad_info1 = {
>>       },
>>   };
>>
>> +/* set all switches APS in normal and PFM mode in standby */
>> +static int pfuze_setup_mode(struct pmic *p, int chip)
>> +{
>> +    unsigned char offset, i, switch_num, value;
>> +
>> +    if (!chip) {
>> +        /* pfuze100 */
>> +        switch_num = 6;
>> +        offset = 0x31;
>> +    } else {
>> +        /* pfuze200 */
>> +        switch_num = 4;
>> +        offset = 0x38;
>> +    }
>> +
>> +    value = 0xc;
>> +    if (pmic_reg_write(p, 0x23, value)) {
>> +        printf("Set SW1AB mode error!\n");
>> +        return -1;
>> +    }
>> +
>> +    for (i = 0; i < switch_num - 1; i++) {
>> +        if (pmic_reg_write(p, offset + i * 7, value)) {
>> +            printf("Set switch%x mode error!\n", offset);
>> +            return -1;
>> +        }
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>>   static int pfuze_init(void)
>>   {
>>       struct pmic *p;
>> @@ -188,6 +219,11 @@ static int pfuze_init(void)
>>       pmic_reg_read(p, PFUZE100_DEVICEID, &reg);
>>       printf("PMIC:  PFUZE100 ID=0x%02x\n", reg);
>>
>> +    if (pfuze_setup_mode(p, (reg & 0xf))) {
>> +        printf("setup pfuze mode error!\n");
>> +        return -1;
>> +    }
>> +
>>       /* Set SW1AB standby voltage to 0.975V */
>>       pmic_reg_read(p, PFUZE100_SW1ABSTBY, &reg);
>>       reg &= ~0x3f;
>>
>
> And as Fabio wrote, please return real error values or use errno instead of "-1".
>
Have fixed it in v4 patch.

> Best regards,

Best regards,
Ye Li

      reply	other threads:[~2014-11-05  9:34 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-10  9:08 [U-Boot] [PATCH 1/4] imx: mx6slevk: Add I2C1 support Ye.Li
2014-09-10  9:08 ` [U-Boot] [PATCH 2/4] imx: mx6slevk: Add PMIC Pfuze support Ye.Li
2014-10-30 10:36   ` Stefano Babic
2014-11-04  9:24     ` Li Ye-B37916
2014-11-04  9:37       ` Li Ye-B37916
2014-11-04 14:09         ` Przemyslaw Marczak
2014-11-05  8:28           ` Li Ye-B37916
2014-11-05  9:27             ` Przemyslaw Marczak
2014-11-04 15:56   ` Przemyslaw Marczak
2014-11-05  8:33     ` Li Ye-B37916
2014-11-05  9:41       ` Przemyslaw Marczak
2014-12-22 12:25       ` Fabio Estevam
2014-09-10  9:08 ` [U-Boot] [PATCH 3/4] imx: mx6sabresd: Add clear print for pfuze200 Ye.Li
2014-09-10  9:08 ` [U-Boot] [PATCH 4/4] imx: mx6: Set Pfuze mode to decrease power number for DSM Ye.Li
2014-09-10 12:14   ` Fabio Estevam
2014-11-04 15:57   ` Przemyslaw Marczak
2014-11-05  9:34     ` Li Ye-B37916 [this message]

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=5459EF3A.6080008@freescale.com \
    --to=b37916@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.