@ -23,6 +23,7 @@
# include <common.h>
# include <fdtdec.h>
# include <asm/io.h>
# include <errno.h>
# include <i2c.h>
# include <lcd.h>
# include <netdev.h>
@ -35,6 +36,7 @@
# include <asm/arch/sromc.h>
# include <asm/arch/dp_info.h>
# include <power/pmic.h>
# include <power/max77686_pmic.h>
DECLARE_GLOBAL_DATA_PTR ;
@ -80,12 +82,119 @@ int dram_init(void)
}
# if defined(CONFIG_POWER)
static int pmic_reg_update ( struct pmic * p , int reg , uint regval )
{
u32 val ;
int ret = 0 ;
ret = pmic_reg_read ( p , reg , & val ) ;
if ( ret ) {
debug ( " %s: PMIC %d register read failed \n " , __func__ , reg ) ;
return - 1 ;
}
val | = regval ;
ret = pmic_reg_write ( p , reg , val ) ;
if ( ret ) {
debug ( " %s: PMIC %d register write failed \n " , __func__ , reg ) ;
return - 1 ;
}
return 0 ;
}
int power_init_board ( void )
{
struct pmic * p ;
set_ps_hold_ctrl ( ) ;
i2c_init ( CONFIG_SYS_I2C_SPEED , CONFIG_SYS_I2C_SLAVE ) ;
if ( pmic_init ( I2C_PMIC ) )
return - 1 ;
else
return 0 ;
p = pmic_get ( " MAX77686_PMIC " ) ;
if ( ! p )
return - ENODEV ;
if ( pmic_probe ( p ) )
return - 1 ;
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_32KHZ , MAX77686_32KHCP_EN ) )
return - 1 ;
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_BBAT ,
MAX77686_BBCHOSTEN | MAX77686_BBCVS_3_5V ) )
return - 1 ;
/* VDD_MIF */
if ( pmic_reg_write ( p , MAX77686_REG_PMIC_BUCK1OUT ,
MAX77686_BUCK1OUT_1V ) ) {
debug ( " %s: PMIC %d register write failed \n " , __func__ ,
MAX77686_REG_PMIC_BUCK1OUT ) ;
return - 1 ;
}
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_BUCK1CRTL ,
MAX77686_BUCK1CTRL_EN ) )
return - 1 ;
/* VDD_ARM */
if ( pmic_reg_write ( p , MAX77686_REG_PMIC_BUCK2DVS1 ,
MAX77686_BUCK2DVS1_1_3V ) ) {
debug ( " %s: PMIC %d register write failed \n " , __func__ ,
MAX77686_REG_PMIC_BUCK2DVS1 ) ;
return - 1 ;
}
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_BUCK2CTRL1 ,
MAX77686_BUCK2CTRL_ON ) )
return - 1 ;
/* VDD_INT */
if ( pmic_reg_write ( p , MAX77686_REG_PMIC_BUCK3DVS1 ,
MAX77686_BUCK3DVS1_1_0125V ) ) {
debug ( " %s: PMIC %d register write failed \n " , __func__ ,
MAX77686_REG_PMIC_BUCK3DVS1 ) ;
return - 1 ;
}
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_BUCK3CTRL ,
MAX77686_BUCK3CTRL_ON ) )
return - 1 ;
/* VDD_G3D */
if ( pmic_reg_write ( p , MAX77686_REG_PMIC_BUCK4DVS1 ,
MAX77686_BUCK4DVS1_1_2V ) ) {
debug ( " %s: PMIC %d register write failed \n " , __func__ ,
MAX77686_REG_PMIC_BUCK4DVS1 ) ;
return - 1 ;
}
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_BUCK4CTRL1 ,
MAX77686_BUCK3CTRL_ON ) )
return - 1 ;
/* VDD_LDO2 */
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_LDO2CTRL1 ,
MAX77686_LD02CTRL1_1_5V | EN_LDO ) )
return - 1 ;
/* VDD_LDO3 */
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_LDO3CTRL1 ,
MAX77686_LD03CTRL1_1_8V | EN_LDO ) )
return - 1 ;
/* VDD_LDO5 */
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_LDO5CTRL1 ,
MAX77686_LD05CTRL1_1_8V | EN_LDO ) )
return - 1 ;
/* VDD_LDO10 */
if ( pmic_reg_update ( p , MAX77686_REG_PMIC_LDO10CTRL1 ,
MAX77686_LD10CTRL1_1_8V | EN_LDO ) )
return - 1 ;
return 0 ;
}
# endif