power: pmic: rk8xx: save PMIC_POWER_EN register for rk817/rk809

rk817/rk809 must restore the PMIC_POWER_EN OTP value before the system reboot.

Change-Id: Ia62cb8f5b0dc9fef8a32a3af5f087c55a9888d78
Signed-off-by: Shengfei Xu <xsf@rock-chips.com>
This commit is contained in:
Shengfei Xu 2019-01-30 10:05:06 +08:00 committed by Jianhong Chen
parent 10e1f9ebb7
commit 9e9e0e07b5
2 changed files with 21 additions and 0 deletions

View File

@ -168,6 +168,8 @@ static int rk8xx_probe(struct udevice *dev)
int ret = 0, i, show_variant;
uint8_t msb, lsb, id_msb, id_lsb;
uint8_t on_source = 0, off_source = 0;
uint8_t power_en0, power_en1, power_en2, power_en3;
uint8_t value;
/* read Chip variant */
if (device_is_compatible(dev, "rockchip,rk817") ||
@ -206,6 +208,15 @@ static int rk8xx_probe(struct udevice *dev)
init_data = rk817_init_reg;
init_data_num = ARRAY_SIZE(rk817_init_reg);
#endif
power_en0 = pmic_reg_read(dev, RK817_POWER_EN0);
power_en1 = pmic_reg_read(dev, RK817_POWER_EN1);
power_en2 = pmic_reg_read(dev, RK817_POWER_EN2);
power_en3 = pmic_reg_read(dev, RK817_POWER_EN3);
value = (power_en0 & 0x0f) | ((power_en1 & 0x0f) << 4);
pmic_reg_write(dev, RK817_POWER_EN_SAVE0, value);
value = (power_en2 & 0x0f) | ((power_en3 & 0x0f) << 4);
pmic_reg_write(dev, RK817_POWER_EN_SAVE1, value);
break;
default:
printf("Unknown PMIC: RK%x!!\n", priv->variant);

View File

@ -192,6 +192,16 @@ enum {
RK818_ID = 0x8180,
};
enum {
RK817_POWER_EN0 = 0xb1,
RK817_POWER_EN1,
RK817_POWER_EN2,
RK817_POWER_EN3,
};
#define RK817_POWER_EN_SAVE0 0x99
#define RK817_POWER_EN_SAVE1 0xa4
#define RK817_ID_MSB 0xed
#define RK817_ID_LSB 0xee
#define RK8XX_ID_MSK 0xfff0