summaryrefslogtreecommitdiff
path: root/drivers/usb/host/xhci.c
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2012-03-16 13:27:39 -0700
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2012-04-11 08:28:56 -0700
commitfb3d85bc7193f23c9a564502df95564c49a32c91 (patch)
treec567174ecbaaf87aa584acf977a4f8d41ae529c1 /drivers/usb/host/xhci.c
parent159e1fcc9a60fc7daba23ee8fcdb99799de3fe84 (diff)
downloadlwn-fb3d85bc7193f23c9a564502df95564c49a32c91.tar.gz
lwn-fb3d85bc7193f23c9a564502df95564c49a32c91.zip
xhci: Restore event ring dequeue pointer on resume.
The xhci_save_registers() function saved the event ring dequeue pointer in the s3 register structure, but xhci_restore_registers() never restored it. No other code in the xHCI successful resume path would ever restore it either. Fix that. This should be backported to kernels as old as 2.6.37, that contain the commit 5535b1d5f8885695c6ded783c692e3c0d0eda8ca "USB: xHCI: PCI power management implementation". Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Tested-by: Elric Fu <elricfu1@gmail.com> Cc: Andiry Xu <andiry.xu@amd.com> Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/usb/host/xhci.c')
-rw-r--r--drivers/usb/host/xhci.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index f68bc15d21e8..d2222dc2f82e 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -684,6 +684,7 @@ static void xhci_restore_registers(struct xhci_hcd *xhci)
xhci_writel(xhci, xhci->s3.irq_control, &xhci->ir_set->irq_control);
xhci_writel(xhci, xhci->s3.erst_size, &xhci->ir_set->erst_size);
xhci_write_64(xhci, xhci->s3.erst_base, &xhci->ir_set->erst_base);
+ xhci_write_64(xhci, xhci->s3.erst_dequeue, &xhci->ir_set->erst_dequeue);
}
static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)