nb/intel/x4x: Implement resume from S3 suspend
It rewrites the results of receive enable stored in the upper nvram region, to avoid running receive enable again. Some debug info is also printed about the self-refresh registers. (Not enforcing a reset here, since 0 does not necessarily mean it's not in self-refresh). Change-Id: Ib54bc5c7b0fed6d975ffc31f037b5179d9e5600b Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/17998 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
97e13d84c3
commit
ef7e98a2ac
7 changed files with 201 additions and 198 deletions
|
|
@ -33,6 +33,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||
select REALTEK_8168_RESET
|
||||
select HAVE_OPTION_TABLE
|
||||
select HAVE_CMOS_DEFAULT
|
||||
select HAVE_ACPI_RESUME
|
||||
|
||||
config MMCONF_BASE_ADDRESS
|
||||
hex
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ void mainboard_romstage_entry(unsigned long bist)
|
|||
// ch0 ch1
|
||||
const u8 spd_addrmap[4] = { 0x50, 0, 0x52, 0 };
|
||||
u8 boot_path = 0;
|
||||
u8 s3_resume;
|
||||
|
||||
/* Disable watchdog timer */
|
||||
RCBA32(0x3410) = RCBA32(0x3410) | 0x20;
|
||||
|
|
@ -151,16 +152,18 @@ void mainboard_romstage_entry(unsigned long bist)
|
|||
|
||||
x4x_early_init();
|
||||
|
||||
s3_resume = southbridge_detect_s3_resume();
|
||||
if (s3_resume)
|
||||
boot_path = BOOT_PATH_RESUME;
|
||||
if (MCHBAR32(PMSTS_MCHBAR) & PMSTS_WARM_RESET)
|
||||
boot_path = BOOT_PATH_WARM_RESET;
|
||||
|
||||
printk(BIOS_DEBUG, "Initializing memory\n");
|
||||
sdram_initialize(boot_path, spd_addrmap);
|
||||
quick_ram_check();
|
||||
cbmem_initialize_empty();
|
||||
printk(BIOS_DEBUG, "Memory initialized\n");
|
||||
|
||||
x4x_late_init();
|
||||
x4x_late_init(s3_resume);
|
||||
|
||||
printk(BIOS_DEBUG, "x4x late init complete\n");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue