@ -596,6 +596,57 @@ static const struct boot_mode board_boot_modes[] = {
} ;
# endif
void pmic_init ( void )
{
# define I2C_PMIC 0x2
# define DA9063_I2C_ADDR 0x58
# define DA9063_REG_BCORE2_CFG 0x9D
# define DA9063_REG_BCORE1_CFG 0x9E
# define DA9063_REG_BPRO_CFG 0x9F
# define DA9063_REG_BIO_CFG 0xA0
# define DA9063_REG_BMEM_CFG 0xA1
# define DA9063_REG_BPERI_CFG 0xA2
# define DA9063_BUCK_MODE_MASK 0xC0
# define DA9063_BUCK_MODE_MANUAL 0x00
# define DA9063_BUCK_MODE_SLEEP 0x40
# define DA9063_BUCK_MODE_SYNC 0x80
# define DA9063_BUCK_MODE_AUTO 0xC0
uchar val ;
i2c_set_bus_num ( I2C_PMIC ) ;
i2c_read ( DA9063_I2C_ADDR , DA9063_REG_BCORE2_CFG , 1 , & val , 1 ) ;
val & = ~ DA9063_BUCK_MODE_MASK ;
val | = DA9063_BUCK_MODE_SYNC ;
i2c_write ( DA9063_I2C_ADDR , DA9063_REG_BCORE2_CFG , 1 , & val , 1 ) ;
i2c_read ( DA9063_I2C_ADDR , DA9063_REG_BCORE1_CFG , 1 , & val , 1 ) ;
val & = ~ DA9063_BUCK_MODE_MASK ;
val | = DA9063_BUCK_MODE_SYNC ;
i2c_write ( DA9063_I2C_ADDR , DA9063_REG_BCORE1_CFG , 1 , & val , 1 ) ;
i2c_read ( DA9063_I2C_ADDR , DA9063_REG_BPRO_CFG , 1 , & val , 1 ) ;
val & = ~ DA9063_BUCK_MODE_MASK ;
val | = DA9063_BUCK_MODE_SYNC ;
i2c_write ( DA9063_I2C_ADDR , DA9063_REG_BPRO_CFG , 1 , & val , 1 ) ;
i2c_read ( DA9063_I2C_ADDR , DA9063_REG_BIO_CFG , 1 , & val , 1 ) ;
val & = ~ DA9063_BUCK_MODE_MASK ;
val | = DA9063_BUCK_MODE_SYNC ;
i2c_write ( DA9063_I2C_ADDR , DA9063_REG_BIO_CFG , 1 , & val , 1 ) ;
i2c_read ( DA9063_I2C_ADDR , DA9063_REG_BMEM_CFG , 1 , & val , 1 ) ;
val & = ~ DA9063_BUCK_MODE_MASK ;
val | = DA9063_BUCK_MODE_SYNC ;
i2c_write ( DA9063_I2C_ADDR , DA9063_REG_BMEM_CFG , 1 , & val , 1 ) ;
i2c_read ( DA9063_I2C_ADDR , DA9063_REG_BPERI_CFG , 1 , & val , 1 ) ;
val & = ~ DA9063_BUCK_MODE_MASK ;
val | = DA9063_BUCK_MODE_SYNC ;
i2c_write ( DA9063_I2C_ADDR , DA9063_REG_BPERI_CFG , 1 , & val , 1 ) ;
}
int board_late_init ( void )
{
# ifdef CONFIG_CMD_BMODE
@ -619,6 +670,9 @@ int board_late_init(void)
pwm_enable ( 0 ) ;
# endif
/* board specific pmic init */
pmic_init ( ) ;
return 0 ;
}