AMD Parmer: fix issue 'S3 fails to suspend after wake up from USB keyboard'

This issue can be reproduced in Linux by the following steps:
1) use pm-suspend to suspend.
2) use USB keyboard to wake up.
3) use pm-suspend to suspend. FAIL To SUSPEND.

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.

In this patch, I add AcpiGpe0Blk using MMIO access and write 1
on bit 11. I have tested on Parmer.

Change-Id: Iec3078bf29de99683e7cd3ef4e178fbeb4dc09c1
Signed-off-by: Siyuan Wang <SiYuan.Wang@amd.com>
Signed-off-by: Siyuan Wang <wangsiyuanbuaa@gmail.com>
Reviewed-on: http://review.coreboot.org/3347
Tested-by: build bot (Jenkins)
Reviewed-by: Dave Frodin <dave.frodin@se-eng.com>
Reviewed-by: Marc Jones <marc.jones@se-eng.com>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Siyuan Wang 2013-05-31 19:36:30 +08:00 committed by Ronald G. Minnich
parent d189229b45
commit 0390112407
1 changed files with 9 additions and 0 deletions

View File

@ -202,6 +202,14 @@ DefinitionBlock (
/* PM1 Event Block /* PM1 Event Block
* First word is PM1_Status, Second word is PM1_Enable * First word is PM1_Status, Second word is PM1_Enable
*/ */
/* AcpiGpe0Blk */
OperationRegion(GP0B, SystemMemory, 0xfed80814, 0x04)
Field(GP0B, ByteAcc, NoLock, Preserve) {
, 11,
USBS, 1,
}
Scope(\_SB) { Scope(\_SB) {
/* PCIe Configuration Space for CONFIG_MMCONF_BUS_NUMBER busses */ /* PCIe Configuration Space for CONFIG_MMCONF_BUS_NUMBER busses */
OperationRegion(PCFG, SystemMemory, PCBA, PCLN) OperationRegion(PCFG, SystemMemory, PCBA, PCLN)
@ -844,6 +852,7 @@ DefinitionBlock (
* Store(Arg0, Index(WKST,1)) * Store(Arg0, Index(WKST,1))
* } * }
*/ */
Store(1, USBS)
Return(WKST) Return(WKST)
} /* End Method(\_WAK) */ } /* End Method(\_WAK) */