coreboot-kgpe-d16/src/southbridge/intel/lynxpoint
Duncan Laurie 32d2e2b360 intel/lynxpoint: Work around XHCI resume issues
When USB3 devices are attached while in suspend, or two USB3 devices
that are both plugged in are switched to the other port while in
suspend the kernel does not seem to notice this -- despite the cold
attach status bit.  This results in the devices showing up in the USB
list at the old enumerated device numbers and higher layers continuing
to think they are present but not reseponding.

With the kernel workaround to deal with devices that are logically
disconnected it is possible for firmware to send a warm port reset to
devices that are in this state and then the kernel will see them disappear
and handle it properly.

This same issue exists in the EFI firmware on the Whitetip Mountain 2
reference board so it is not specifically a coreboot bug.  If this
behavior is fixed in the kernel then this workaround could be removed
since it is in RW firmware.

BUG=chrome-os-partner:22818
BRANCH=falco,peppy,wolf,leon
TEST=manual:

1) attach two USB3 devices
2) suspend system
3) switch the ports that the USB3 devices are attatched to
4) resume system
5) confirm that the devices are re-enumerated and come up properly

Original-Change-Id: Ifba3ffc94a06dc0b2436d7d7d464d824657362af
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/170335
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
(cherry picked from commit 203d200268f4af6445224962190cbc66ad2a83e4)

Change-Id: I54fd2847ee25a60f25c2cefebdc1a3c18455464a
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/170579
[pm: rebase to master branch of coreboot upstream]
Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-on: http://review.coreboot.org/6017
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
2014-07-11 18:08:03 +02:00
..
acpi lynxpoint: Fix SerialIO ACPI compile issue with recent IASL 2014-04-09 13:59:16 +02:00
acpi.c Replace all occurences of sprintf with snprintf 2014-01-10 18:08:16 +01:00
azalia.c southbridge: Trivial - drop trailing blank lines at EOF 2014-07-08 13:53:21 +02:00
bootblock.c x86: Unify arch/io.h and arch/romcc_io.h 2013-03-22 00:00:09 +01:00
chip.h intel/lynxpoint: Add SATA DEVSLP disable option 2014-07-04 17:50:24 +02:00
early_me.c x86: Unify arch/io.h and arch/romcc_io.h 2013-03-22 00:00:09 +01:00
early_pch.c intel/lynxpoint: Export pch_enable_lpc() for Super I/O systems 2014-07-05 10:12:05 +02:00
early_smbus.c southbridge: Trivial - drop trailing blank lines at EOF 2014-07-08 13:53:21 +02:00
early_spi.c x86: Unify arch/io.h and arch/romcc_io.h 2013-03-22 00:00:09 +01:00
early_usb.c lynxpoint: Don't write to non-existent EHCI 2013-12-18 02:24:13 +01:00
elog.c intel boards: Use acpi_is_wakeup_s3() 2014-06-21 08:04:52 +02:00
finalize.c lynxpoint me: add support for mbp clear wait in finalize step 2013-12-21 07:38:42 +01:00
gpio.c peppy: Disable audio codec enable GPIO in S3 + S5. 2013-12-12 22:02:35 +01:00
gpio.h lynxpoint: Add new GPIO interface for Lynxpoint-LP 2013-03-14 18:24:32 +01:00
hda_verb.c HDA: Enable Mini-HDA and fix up PCH-HDA init 2013-12-12 22:11:46 +01:00
hda_verb.h HDA: Enable Mini-HDA and fix up PCH-HDA init 2013-12-12 22:11:46 +01:00
Kconfig intel/lynxpoint: Add CONFIG_LOCK_MANAGEMENT_ENGINE entry to Kconfig 2014-07-04 17:50:22 +02:00
lp_gpio.c peppy: Disable audio codec enable GPIO in S3 + S5. 2013-12-12 22:02:35 +01:00
lp_gpio.h lynxpoint: Add an inverted input GPIO type 2013-11-26 20:41:42 +01:00
lpc.c southbridge: Trivial - drop trailing blank lines at EOF 2014-07-08 13:53:21 +02:00
Makefile.inc intel/lynxpoint: Build intermediate step to add Lynx Point ME image 2014-07-05 10:36:48 +02:00
me.h lynxpoint: me: Support ICC clock enables message 2013-12-21 12:02:24 +01:00
me_9.x.c intel boards: Use acpi_is_wakeup_s3() 2014-06-21 08:04:52 +02:00
me_status.c lynx point: add new ME status information 2013-03-14 18:23:45 +01:00
nvs.h ACPI: Remove CBMEM TOC from GNVS 2014-06-18 20:37:34 +02:00
pch.c lynxpoint: disable pcie devices based on config 2013-12-05 20:12:49 +01:00
pch.h intel/lynxpoint: Export pch_enable_lpc() for Super I/O systems 2014-07-05 10:12:05 +02:00
pci.c haswell: Add initial support for Haswell platforms 2013-03-14 01:44:40 +01:00
pcie.c haswell: Misc updates from 1.6.1 ref code 2013-12-21 12:02:50 +01:00
pmutil.c lynxpoint: Cosmetic cleanup 2013-04-03 23:07:12 +02:00
rcba.c southbridge: Trivial - drop trailing blank lines at EOF 2014-07-08 13:53:21 +02:00
reset.c haswell: Add initial support for Haswell platforms 2013-03-14 01:44:40 +01:00
sata.c southbridge: Trivial - drop trailing blank lines at EOF 2014-07-08 13:53:21 +02:00
serialio.c lynxpoint: Do not put SerialIO devices into D3Hot in ACPI mode 2014-02-12 23:31:19 +01:00
smbus.c lynxpoint: Add LPT-LP device id and smbus_write_byte 2013-12-21 07:28:12 +01:00
smbus.h southbridge: Trivial - drop trailing blank lines at EOF 2014-07-08 13:53:21 +02:00
smi.c lynxpoint: Finalize chipset before playload if not CONFIG_CHROMEOS 2014-02-18 18:22:51 +01:00
smihandler.c intel/lynxpoint: Use separate SMI callback for USB XHCI routing 2014-07-04 17:50:20 +02:00
usb_ehci.c usbdebug: Move under drivers/usb 2014-02-06 11:13:57 +01:00
usb_xhci.c intel/lynxpoint: Work around XHCI resume issues 2014-07-11 18:08:03 +02:00
watchdog.c haswell: Add initial support for Haswell platforms 2013-03-14 01:44:40 +01:00