soc/intel/cannonlake: Add ACPI workaround for EMMC

Two W/A had been added here for EMMC to make it working properly.
1. Enable power gating after D3 entry, disable power gating before D0
entry.
2. Add 50 ms delay to ensure Rcomp calibration done before EMMC out of
D3.

BUG=b:69323943
TEST=Run multiple ACPI S3 cycles on cannonlake u LPDDR4 platform.

Change-Id: Ic6e98264521fb02b911a8c157a7982afa35fe20c
Signed-off-by: Lijian Zhao <lijian.zhao@intel.com>
Reviewed-on: https://review.coreboot.org/22390
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Lijian Zhao 2017-11-08 19:21:32 -08:00 committed by Aaron Durbin
parent afd03d8a28
commit 21573e9f4e
1 changed files with 20 additions and 0 deletions

View File

@ -14,6 +14,26 @@
*/ */
Scope (\_SB.PCI0) { Scope (\_SB.PCI0) {
/* EMMC */
Device(PEMC) {
Name(_ADR, 0x001A0000)
OperationRegion(SCSR, PCI_Config, 0x00, 0x100)
Field(SCSR, WordAcc, NoLock, Preserve) {
Offset(0xA2), // 0xA2, Device PG config
, 2,
PGEN, 1 // [BIT2] PGE - PG Enable
}
Method(_PS0, 0, Serialized) {
Stall (50) // Sleep 50 ms
Store(0, PGEN) // Disable PG
}
Method(_PS3, 0, Serialized) {
Store(1, PGEN) // Enable PG
}
}
/* SD CARD */ /* SD CARD */
Device (SDXC) Device (SDXC)