diff options
author | Rudolf Marek <r.marek@assembler.cz> | 2009-04-13 18:34:35 +0000 |
---|---|---|
committer | Rudolf Marek <r.marek@assembler.cz> | 2009-04-13 18:34:35 +0000 |
commit | 15bf50d8203af20b3079e6691bf0d9eee66ea1bd (patch) | |
tree | 93e1ebdfcf792914356209a2bb3b17641133ed81 /src/northbridge/amd/amdk8/raminit_f.c | |
parent | 33cafe5bfb440d150e36872d091037fa0785863d (diff) | |
download | coreboot-15bf50d8203af20b3079e6691bf0d9eee66ea1bd.tar.xz |
Following patch adds resume (exit from self refresh) support for AMD K8 revF
CPUs. It handles both type of erratas on those CPUs.
Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4102 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/northbridge/amd/amdk8/raminit_f.c')
-rw-r--r-- | src/northbridge/amd/amdk8/raminit_f.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/northbridge/amd/amdk8/raminit_f.c b/src/northbridge/amd/amdk8/raminit_f.c index 2a9cc43c29..097e3b53a5 100644 --- a/src/northbridge/amd/amdk8/raminit_f.c +++ b/src/northbridge/amd/amdk8/raminit_f.c @@ -3009,12 +3009,18 @@ static void set_hw_mem_hole(int controllers, const struct mem_controller *ctrl) } #endif +#include "exit_from_self.c" static void sdram_enable(int controllers, const struct mem_controller *ctrl, struct sys_info *sysinfo) { int i; - +#ifdef ACPI_IS_WAKEUP_EARLY + int suspend = acpi_is_wakeup_early(); +#else + int suspend = 0; +#endif + #if K8_REV_F_SUPPORT_F0_F1_WORKAROUND == 1 unsigned cpu_f0_f1[8]; /* FIXME: How about 32 node machine later? */ @@ -3060,6 +3066,14 @@ static void sdram_enable(int controllers, const struct mem_controller *ctrl, printk_debug("\n"); #endif + /* lets override the rest of the routine */ + if (suspend) { + printk_debug("Wakeup!\n"); + exit_from_self(controllers, ctrl, sysinfo); + printk_debug("Mem running !\n"); + return; + } + for (i = 0; i < controllers; i++) { uint32_t dcl, dch; if (!sysinfo->ctrl_present[ i ]) |