summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZheng Bao <fishbaozi@gmail.com>2013-11-21 16:12:27 +0800
committerAlexandru Gagniuc <mr.nuke.me@gmail.com>2013-12-05 15:13:30 +0100
commit1defc861d064ab9fbad68e33824b2fc9af8f240e (patch)
tree3bee673cc784241bb6fa29c551fb3d027782dfdb
parentddf58ef844e06f338f40397d42f07657f021949f (diff)
downloadcoreboot-1defc861d064ab9fbad68e33824b2fc9af8f240e.tar.xz
AMD Kabini: fix issue 'S3 fails to suspend after wake up from USB keyboard'
Propagated from http://review.coreboot.org/3347 http://review.coreboot.org/3374 The cause of this issue is: USB devices use bit 11(0x0b) of GP0_STS represents S3 wake up event, but this bit is not clear after wake up. So OS thinks there is a wake up signal and wake up immediately. Both amd/olivehill and asrock/imb-a180 have been validated. Change-Id: I7c26cb07bcd2e62bb792809b67314e5155c6adf6 Signed-off-by: Zheng Bao <zheng.bao@amd.com> Signed-off-by: Zheng Bao <fishbaozi@gmail.com> Reviewed-on: http://review.coreboot.org/4261 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
-rw-r--r--src/mainboard/amd/olivehill/acpi/mainboard.asl7
-rw-r--r--src/mainboard/amd/olivehill/acpi/sleep.asl2
-rw-r--r--src/mainboard/asrock/imb-a180/acpi/mainboard.asl7
-rw-r--r--src/mainboard/asrock/imb-a180/acpi/sleep.asl2
4 files changed, 18 insertions, 0 deletions
diff --git a/src/mainboard/amd/olivehill/acpi/mainboard.asl b/src/mainboard/amd/olivehill/acpi/mainboard.asl
index 5487b7990c..40451438c7 100644
--- a/src/mainboard/amd/olivehill/acpi/mainboard.asl
+++ b/src/mainboard/amd/olivehill/acpi/mainboard.asl
@@ -32,3 +32,10 @@ Name(SSFG, 0x0D) /* S1 support: bit 0, S2 Support: bit 1, etc. S0 & S5 assumed
Name(OSTP, 3) /* Assume nothing. WinXp = 1, Vista = 2, Linux = 3, WinCE = 4 */
Name(OSV, Ones) /* Assume nothing */
Name(PMOD, One) /* Assume APIC */
+
+/* AcpiGpe0Blk */
+OperationRegion(GP0B, SystemMemory, 0xfed80814, 0x04)
+ Field(GP0B, ByteAcc, NoLock, Preserve) {
+ , 11,
+ USBS, 1,
+}
diff --git a/src/mainboard/amd/olivehill/acpi/sleep.asl b/src/mainboard/amd/olivehill/acpi/sleep.asl
index fc04ecc2d5..2fc2efe7b0 100644
--- a/src/mainboard/amd/olivehill/acpi/sleep.asl
+++ b/src/mainboard/amd/olivehill/acpi/sleep.asl
@@ -89,6 +89,8 @@ Method(\_WAK, 1) {
/* DBGO("From S") */
/* DBGO(Arg0) */
/* DBGO(" to S0\n") */
+ Store(1,USBS)
+
\_SB.AWAK(Arg0)
Return(WKST)
diff --git a/src/mainboard/asrock/imb-a180/acpi/mainboard.asl b/src/mainboard/asrock/imb-a180/acpi/mainboard.asl
index 5487b7990c..40451438c7 100644
--- a/src/mainboard/asrock/imb-a180/acpi/mainboard.asl
+++ b/src/mainboard/asrock/imb-a180/acpi/mainboard.asl
@@ -32,3 +32,10 @@ Name(SSFG, 0x0D) /* S1 support: bit 0, S2 Support: bit 1, etc. S0 & S5 assumed
Name(OSTP, 3) /* Assume nothing. WinXp = 1, Vista = 2, Linux = 3, WinCE = 4 */
Name(OSV, Ones) /* Assume nothing */
Name(PMOD, One) /* Assume APIC */
+
+/* AcpiGpe0Blk */
+OperationRegion(GP0B, SystemMemory, 0xfed80814, 0x04)
+ Field(GP0B, ByteAcc, NoLock, Preserve) {
+ , 11,
+ USBS, 1,
+}
diff --git a/src/mainboard/asrock/imb-a180/acpi/sleep.asl b/src/mainboard/asrock/imb-a180/acpi/sleep.asl
index fc04ecc2d5..2fc2efe7b0 100644
--- a/src/mainboard/asrock/imb-a180/acpi/sleep.asl
+++ b/src/mainboard/asrock/imb-a180/acpi/sleep.asl
@@ -89,6 +89,8 @@ Method(\_WAK, 1) {
/* DBGO("From S") */
/* DBGO(Arg0) */
/* DBGO(" to S0\n") */
+ Store(1,USBS)
+
\_SB.AWAK(Arg0)
Return(WKST)