misc:pmic:trats: Correct procedure of enabling/disabling USB regulators

In the MAX8997, LDO regulators needs to preserve previously set voltage
values.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
Łukasz Majewski 2012-04-25 23:30:18 +00:00 committed by Albert ARIBAUD
parent c20545691a
commit a0f5b5a3a2

View File

@ -220,6 +220,7 @@ int board_mmc_init(bd_t *bis)
static int s5pc210_phy_control(int on) static int s5pc210_phy_control(int on)
{ {
int ret = 0; int ret = 0;
u32 val = 0;
struct pmic *p = get_pmic(); struct pmic *p = get_pmic();
if (pmic_probe(p)) if (pmic_probe(p))
@ -228,11 +229,17 @@ static int s5pc210_phy_control(int on)
if (on) { if (on) {
ret |= pmic_set_output(p, MAX8997_REG_SAFEOUTCTRL, ret |= pmic_set_output(p, MAX8997_REG_SAFEOUTCTRL,
ENSAFEOUT1, LDO_ON); ENSAFEOUT1, LDO_ON);
ret |= pmic_reg_write(p, MAX8997_REG_LDO3CTRL, EN_LDO); ret |= pmic_reg_read(p, MAX8997_REG_LDO3CTRL, &val);
ret |= pmic_reg_write(p, MAX8997_REG_LDO8CTRL, EN_LDO); ret |= pmic_reg_write(p, MAX8997_REG_LDO3CTRL, EN_LDO | val);
ret |= pmic_reg_read(p, MAX8997_REG_LDO8CTRL, &val);
ret |= pmic_reg_write(p, MAX8997_REG_LDO8CTRL, EN_LDO | val);
} else { } else {
ret |= pmic_reg_write(p, MAX8997_REG_LDO8CTRL, DIS_LDO); ret |= pmic_reg_read(p, MAX8997_REG_LDO8CTRL, &val);
ret |= pmic_reg_write(p, MAX8997_REG_LDO3CTRL, DIS_LDO); ret |= pmic_reg_write(p, MAX8997_REG_LDO8CTRL, DIS_LDO | val);
ret |= pmic_reg_read(p, MAX8997_REG_LDO3CTRL, &val);
ret |= pmic_reg_write(p, MAX8997_REG_LDO3CTRL, DIS_LDO | val);
ret |= pmic_set_output(p, MAX8997_REG_SAFEOUTCTRL, ret |= pmic_set_output(p, MAX8997_REG_SAFEOUTCTRL,
ENSAFEOUT1, LDO_OFF); ENSAFEOUT1, LDO_OFF);
} }