summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHung-Te Lin <hungte@chromium.org>2013-06-28 17:27:17 +0800
committerStefan Reinauer <stefan.reinauer@coreboot.org>2013-07-10 23:18:50 +0200
commitda7b8e4de9a690cbed00a361d282b18792c676d6 (patch)
tree44dff03250bf7bc02261f10081b625f564df5385 /src
parentc0b2144f698fdf82a2402db6b6038e70b19ba984 (diff)
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>
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/pit/romstage.c11
-rw-r--r--src/mainboard/google/snow/romstage.c11
2 files changed, 12 insertions, 10 deletions
diff --git a/src/mainboard/google/pit/romstage.c b/src/mainboard/google/pit/romstage.c
index 7ba66a4a35..30c8aeb8f2 100644
--- a/src/mainboard/google/pit/romstage.c
+++ b/src/mainboard/google/pit/romstage.c
@@ -74,13 +74,17 @@ struct pmic_write pmic_writes[] =
MAX77802_BUCK_TYPE1_IGNORE_PWRREQ }
};
-static void setup_power(void)
+static void setup_power(int is_resume)
{
int error = 0;
int i;
power_init();
+ if (is_resume) {
+ return;
+ }
+
/* Initialize I2C bus to configure PMIC. */
exynos_pinmux_i2c4();
i2c_init(4, I2C_4_SPEED, 0x00);
@@ -264,10 +268,7 @@ void main(void)
console_init();
- if (!is_resume) {
- setup_power();
- }
-
+ setup_power(is_resume);
setup_memory(&mem_timings, is_resume);
primitive_mem_test();
diff --git a/src/mainboard/google/snow/romstage.c b/src/mainboard/google/snow/romstage.c
index 8c01536a32..7442f7afc2 100644
--- a/src/mainboard/google/snow/romstage.c
+++ b/src/mainboard/google/snow/romstage.c
@@ -43,12 +43,16 @@
#define PMIC_BUS 0
#define MMC0_GPIO_PIN (58)
-static void setup_power(void)
+static void setup_power(int is_resume)
{
int error = 0;
power_init();
+ if (is_resume) {
+ return;
+ }
+
/* Initialize I2C bus to configure PMIC. */
exynos_pinmux_i2c0();
i2c_init(0, I2C_0_SPEED, 0x00);
@@ -171,10 +175,7 @@ void main(void)
console_init();
- if (!is_resume) {
- setup_power();
- }
-
+ setup_power(is_resume);
setup_memory(mem, is_resume);
if (is_resume) {