armv7/exynos: Prevent unexpected reboots in resume.
In resume path, if memory setup takes too long without setting PS_HOLD, EC watch dog may power off or reboot the system. To prevent that, we should enable PS_HOLD in same timing as cold boot - right before starting memory setup. Change-Id: I5c294fa7ae015f8cff57b1fd81e5b80902647b15 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Signed-off-by: Gabe Black <gabeblack@chromium.org> Reviewed-on: http://review.coreboot.org/3718 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
c0b2144f69
commit
da7b8e4de9
|
@ -74,13 +74,17 @@ struct pmic_write pmic_writes[] =
|
||||||
MAX77802_BUCK_TYPE1_IGNORE_PWRREQ }
|
MAX77802_BUCK_TYPE1_IGNORE_PWRREQ }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void setup_power(void)
|
static void setup_power(int is_resume)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
power_init();
|
power_init();
|
||||||
|
|
||||||
|
if (is_resume) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize I2C bus to configure PMIC. */
|
/* Initialize I2C bus to configure PMIC. */
|
||||||
exynos_pinmux_i2c4();
|
exynos_pinmux_i2c4();
|
||||||
i2c_init(4, I2C_4_SPEED, 0x00);
|
i2c_init(4, I2C_4_SPEED, 0x00);
|
||||||
|
@ -264,10 +268,7 @@ void main(void)
|
||||||
|
|
||||||
console_init();
|
console_init();
|
||||||
|
|
||||||
if (!is_resume) {
|
setup_power(is_resume);
|
||||||
setup_power();
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_memory(&mem_timings, is_resume);
|
setup_memory(&mem_timings, is_resume);
|
||||||
|
|
||||||
primitive_mem_test();
|
primitive_mem_test();
|
||||||
|
|
|
@ -43,12 +43,16 @@
|
||||||
#define PMIC_BUS 0
|
#define PMIC_BUS 0
|
||||||
#define MMC0_GPIO_PIN (58)
|
#define MMC0_GPIO_PIN (58)
|
||||||
|
|
||||||
static void setup_power(void)
|
static void setup_power(int is_resume)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
power_init();
|
power_init();
|
||||||
|
|
||||||
|
if (is_resume) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize I2C bus to configure PMIC. */
|
/* Initialize I2C bus to configure PMIC. */
|
||||||
exynos_pinmux_i2c0();
|
exynos_pinmux_i2c0();
|
||||||
i2c_init(0, I2C_0_SPEED, 0x00);
|
i2c_init(0, I2C_0_SPEED, 0x00);
|
||||||
|
@ -171,10 +175,7 @@ void main(void)
|
||||||
|
|
||||||
console_init();
|
console_init();
|
||||||
|
|
||||||
if (!is_resume) {
|
setup_power(is_resume);
|
||||||
setup_power();
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_memory(mem, is_resume);
|
setup_memory(mem, is_resume);
|
||||||
|
|
||||||
if (is_resume) {
|
if (is_resume) {
|
||||||
|
|
Loading…
Reference in New Issue