coreboot-kgpe-d16/src/mainboard/lenovo/t60
Peter Stuge 751508ab01 northbridge/intel/i945: CHECK_SLFRCS_ON_RESUME Kconfig option
Originally brought up by Sven Schnelle in March 2011
http://patchwork.coreboot.org/patch/2801/
http://www.coreboot.org/pipermail/coreboot/2011-March/064277.html

On some mainboards it may be neccessary to reset early during resume
from S3 if the SLFRCS register indicates that a memory channel is not
guaranteed to be in self-refresh.

On other mainboards, such as Lenovo X60 and T60, the check always
creates false positives, effectively making it impossible to resume.

The SLFRCS register is documented on page 197 of

Mobile Intel® 945 Express Chipset Family Datasheet
Document Number: 309219-006

which is publically available, and the register indicates if a memory
channel is guaranteed to be in self-refresh mode (if bit = 1), or that
a memory channel *may or may not be* in self-refresh mode (if bit = 0).

The register can thus only be used to positively learn that memory is
in self-refresh. It is not known for sure that memory is *not* in
self-refresh. The register is reset by the PWROK signal, which *should*
go low during S3, and go high again when resuming, so it is unsurprising
that SLFRCS has already been cleared when we read the register.

Sven's measurements of the CKE signal on a ThinkPad shows that memory
remains in self-refresh indefinitely, until coreboot re-initializes the
memory controller, even when SLFRCS bits were = 0.

Boards which require a warm reset when SLFRCS bits are cleared must now
explicitly enable the check in the mainboard Kconfig file.

This commit selects the new option in all existing i945 mainboards.
A follow-up commit will remove the option for ThinkPads.

Change-Id: I02320675efb8fde05c371ef243ba5093a4da6d11
Signed-off-by: Peter Stuge <peter@stuge.se>
Reviewed-on: http://review.coreboot.org/590
Tested-by: build bot (Jenkins)
Reviewed-by: Sven Schnelle <svens@stackframe.org>
2012-01-31 14:52:22 +01:00
..
acpi T60: handle EC events in SMM if ACPI is disabled 2011-07-07 15:47:29 +02:00
acpi_tables.c Use default table creator macro for all SSDTs 2011-10-13 19:59:45 +02:00
chip.h
cmos.layout Lenovo X60/T60: add first_battery setting 2011-12-14 09:41:46 +01:00
devicetree.cb X60/T60: enable AHCI mode 2011-10-27 18:27:24 +02:00
dock.c T60: Add support for Ultrabay Legacy I/O devices (40Y8122) 2011-10-20 16:06:35 +02:00
dock.h T60: Add support for Ultrabay Legacy I/O devices (40Y8122) 2011-10-20 16:06:35 +02:00
dsdt.asl
fadt.c Use ACPI text fields consistently with all other boards 2011-09-21 00:31:45 +02:00
irq_tables.c
Kconfig northbridge/intel/i945: CHECK_SLFRCS_ON_RESUME Kconfig option 2012-01-31 14:52:22 +01:00
mainboard.c X60/T60: fix default baudrate 2012-01-31 12:52:18 +01:00
mainboard_smi.c T60: Add support for Ultrabay Legacy I/O devices (40Y8122) 2011-10-20 16:06:35 +02:00
Makefile.inc
mptable.c mptable: Refactor mptable generation some more 2011-10-13 01:11:08 +02:00
romstage.c remove usbdebug.h include from mainboard/romstage code 2011-10-30 12:37:05 +01:00
smi.h T60: handle EC events in SMM if ACPI is disabled 2011-07-07 15:47:29 +02:00