Hung-Te Lin (hungte@chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3148
-gerrit
commit 1805715f8ce194c842d52523a886e1d79fa5fe03 Author: Hung-Te Lin hungte@chromium.org Date: Mon Apr 29 22:11:22 2013 +0800
Google/Snow: Temporary fix for resume failure.
The DDR3 memory initialization (with "mem_reset" set on normal boot) will cause resume to be unstable. To prevent blocking development, temporarily disable mem_reset as a workaround.
This will be removed once we find the root cause of mem_reset failure.
Verified by booting a Google/Snow device, entering browser session with fancy web pages, closing LID to suspend for 5 seconds, then re-opening to resume. Suspend/resume worked as expected.
Also tried the "suspend_stress_test" and finished 100 iterations of suspend/resume test without failure.
Change-Id: I7185b362ce8b545fe77b35a552245736c89d465e Signed-off-by: Hung-Te Lin hungte@chromium.org --- src/mainboard/google/snow/romstage.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/src/mainboard/google/snow/romstage.c b/src/mainboard/google/snow/romstage.c index f131e81..aa3a340 100644 --- a/src/mainboard/google/snow/romstage.c +++ b/src/mainboard/google/snow/romstage.c @@ -150,6 +150,14 @@ static void snow_setup_memory(struct mem_timings *mem, int is_resume) mem->mem_type, mem->mpll_mdiv, mem->frequency_mhz); + + /* FIXME Currently memory initialization with mem_reset on normal boot + * will cause resume to fail (even if we don't do mem_reset on resume), + * and the workaround is to temporarily always enable "is_resume". + * This should be removed when the root cause of resume issue is found. + */ + is_resume = 1; + if (ddr3_mem_ctrl_init(mem, DMC_INTERLEAVE_SIZE, !is_resume)) { die("Failed to initialize memory controller.\n"); }