Uwe Hermann wrote:
--- coreboot-svn-p2b.orig/src/arch/i386/boot/acpi.c 2010-11-27 11:48:28.000000000 +0100
+++ coreboot-svn-p2b/src/arch/i386/boot/acpi.c 2010-11-27 11:48:41.000000000 +0100
@@ -481,7 +481,7 @@
static int acpi_is_wakeup(void)
- return (acpi_slp_type == 3);
+ return (acpi_slp_type == 3 || acpi_slp_type == 2);
Can this have negative effects for other ACPI-enabled chipsets/boards?
No, I grepped the tree and the other chipsets supporting this only
ever use 3 (S3). But since S2 is virtually identically to S3 from a
wakeup perspective I thought adding the acpi_slp_type == 2 check
would be the right thing to do.
The other option would be to set acpi_slp_type to 3 even for S2
wakeup, but then there is not much sense in making it '3' either and
it could be changed to be a 'is_wakeup_from_sleep' boolean type.
The relevant chipset hits are:
northbridge/intel/i945/northbridge.c:256:extern u8 acpi_slp_type;
southbridge/intel/i82801gx/i82801gx_lpc.c:171:extern u8 acpi_slp_type;
southbridge/via/vt8237r/vt8237r_lpc.c:149:extern u8 acpi_slp_type;
southbridge/via/vt8237r/vt8237r_lpc.c:238: acpi_slp_type = ((tmp & (7 << 10))
>> 10) == 1 ? 3 : 0 ;
southbridge/via/vt8237r/vt8237r_lpc.c:239: printk(BIOS_DEBUG, "SLP_TYP type was %x
%x\n", tmp, acpi_slp_type);
Interestingly i82801gx_lpc.c has the extern but doesn't use it.