From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Babic Date: Fri, 12 Sep 2014 10:17:43 +0200 Subject: [U-Boot] [PATCH] imx: imx6q/dlsabreauto: Add PMIC Pfuze100 support In-Reply-To: <1410328333-24326-1-git-send-email-B37916@freescale.com> References: <1410328333-24326-1-git-send-email-B37916@freescale.com> Message-ID: <5412AC27.2020100@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Ye, On 10/09/2014 07:52, Ye.Li wrote: > Initialize the Pfuze100 at board late init. > > Signed-off-by: Ye.Li > --- > board/freescale/mx6qsabreauto/mx6qsabreauto.c | 52 ++++++++++++++++++++++++- > include/configs/mx6qsabreauto.h | 6 +++ > 2 files changed, 57 insertions(+), 1 deletions(-) > > diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c > index bfb9b6a..76b024b 100644 > --- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c > +++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (C) 2012 Freescale Semiconductor, Inc. > + * Copyright (C) 2012-2014 Freescale Semiconductor, Inc. > * > * Author: Fabio Estevam > * > @@ -23,6 +23,8 @@ > #include > #include > #include > +#include > +#include > > DECLARE_GLOBAL_DATA_PTR; > > @@ -43,6 +45,8 @@ DECLARE_GLOBAL_DATA_PTR; > > #define PC MUX_PAD_CTRL(I2C_PAD_CTRL) > > +#define I2C_PMIC 1 > + > int dram_init(void) > { > gd->ram_size = (phys_size_t)CONFIG_DDR_MB * 1024 * 1024; > @@ -259,6 +263,51 @@ int board_init(void) > return 0; > } > > +static int pfuze_init(void) > +{ > + struct pmic *p; > + int ret; > + unsigned int reg; > + > + ret = power_pfuze100_init(I2C_PMIC); > + if (ret) > + return ret; > + > + p = pmic_get("PFUZE100"); > + ret = pmic_probe(p); > + if (ret) > + return ret; > + > + pmic_reg_read(p, PFUZE100_DEVICEID, ®); > + printf("PMIC: PFUZE100 ID=0x%02x\n", reg); > + > + /* Set SW1AB stanby volage to 0.975V */ > + pmic_reg_read(p, PFUZE100_SW1ABSTBY, ®); > + reg &= ~0x3f; > + reg |= 0x1b; > + pmic_reg_write(p, PFUZE100_SW1ABSTBY, reg); > + > + /* Set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */ > + pmic_reg_read(p, PUZE_100_SW1ABCONF, ®); > + reg &= ~0xc0; > + reg |= 0x40; > + pmic_reg_write(p, PUZE_100_SW1ABCONF, reg); > + > + /* Set SW1C standby voltage to 0.975V */ > + pmic_reg_read(p, PFUZE100_SW1CSTBY, ®); > + reg &= ~0x3f; > + reg |= 0x1b; > + pmic_reg_write(p, PFUZE100_SW1CSTBY, reg); > + > + /* Set SW1C/VDDSOC step ramp up time from 16us to 4us/25mV */ > + pmic_reg_read(p, PFUZE100_SW1CCONF, ®); > + reg &= ~0xc0; > + reg |= 0x40; > + pmic_reg_write(p, PFUZE100_SW1CCONF, reg); > + > + return 0; > +} The initialization, with the exception of VGEN3/VGEN5, is identical to the sabresd. Any possibility to improve code and factorize the function for sabre* boards ? Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel 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 =====================================================================