coreboot/src
Duncan Laurie d4b6ac19b0 soc/intel/skylake: storage: Add 2ms delay before exiting D3
For the skylake/kabylake generation of PCH there is an ACPI workaround
for emmc/sd power state that involves disabling and re-enabling dynamic
clock gating after enabling power to the controller, before setting the
power state to D0.

Under certain conditions we have observed that the controller is not
powered and ready by the time the kernel attempts to read the PME
control and status register and so the system will hang while attempting
to read PCI config register 0x84.

To ensure that the controller is ready add a 2ms delay after re-enabling
dynamic clock gating and before setting the power state to D0.

This issue has been observed on eMMC, but the same workaround exists for
the SD card interface so the same delay is added there.

BUG=b:35587084
BRANCH=eve
TEST=manual stress testing of D0<>D3 transition across many devices
shows no hard hang after 2 days.

Change-Id: If0f0323cf5437c54c907c332937b5de9dda2d8f6
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/20363
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subrata.banik@intel.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Furquan Shaikh <furquan@google.com>
2017-06-27 02:15:50 +00:00
..
acpi
arch arch/x86/smbios: Fix scope of variable declaration 2017-06-22 15:20:17 +00:00
commonlib arch/x86/ebda: Change memcpy() to endian wrappers 2017-06-20 03:13:18 +02:00
console src/console: add IS_ENABLED() around Kconfig symbol references 2017-06-12 04:08:55 +02:00
cpu cpu/allwinner/a10/clock.h: Add missing bracket 2017-06-22 16:05:28 +00:00
device device/pnp: remove struct io_info 2017-06-13 15:21:58 +02:00
drivers drv/intel/gma/acpi: Fix copyright header 2017-06-22 10:24:11 +00:00
ec device/pnp: remove struct io_info 2017-06-13 15:21:58 +02:00
include soc/amd/stoneyridge: Add CPU files 2017-06-26 00:46:03 +00:00
lib cr50: process uninitialized values gracefully 2017-06-21 20:29:11 +00:00
mainboard amd/gardenia: Fix most checkpatch errors 2017-06-26 00:46:36 +00:00
northbridge soc/amd/stoneyridge: Add northbridge support 2017-06-26 00:46:18 +00:00
soc soc/intel/skylake: storage: Add 2ms delay before exiting D3 2017-06-27 02:15:50 +00:00
southbridge sb/amd/rs780/gfx.c: Add brackets around macro 2017-06-22 16:02:08 +00:00
superio device/pnp: remove struct io_info 2017-06-13 15:21:58 +02:00
vboot vboot: Separate board name and version number in FWID with a dot 2017-04-29 01:44:10 +02:00
vendorcode vendorcode/amd: Drop multiple copies of gcc-intrin.h 2017-06-26 18:10:47 +00:00
Kconfig Add support for Undefined Behavior Sanitizer 2017-06-14 19:56:59 +02:00