xhci: Workaround for PME stuck issues in Intel xhci
authorMathias Nyman <mathias.nyman@linux.intel.com>
Fri, 6 Mar 2015 15:23:19 +0000 (17:23 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 9 May 2015 22:16:23 +0000 (23:16 +0100)
commitdad9b1e29783429e10f12ffe854ba47ba4fb98d7
treed3ce0e2d98b54d5c87db8a8f68c6f724cc70cf62
parentf349e0b3ac12cfed000acd4db144883848d60f1c
xhci: Workaround for PME stuck issues in Intel xhci

commit b8cb91e058cd0c0f02059c1207293c5b31d350fa upstream.

The xhci in Intel Sunrisepoint and Cherryview platforms need a driver
workaround for a Stuck PME that might either block PME events in suspend,
or create spurious PME events preventing runtime suspend.

Workaround is to clear a internal PME flag, BIT(28) in a vendor specific
PMCTRL register at offset 0x80a4, in both suspend resume callbacks

Without this, xhci connected usb devices might never be able to wake up the
system from suspend, or prevent device from going to suspend (xhci d3)

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/usb/host/xhci-pci.c
drivers/usb/host/xhci.h