| From fb3d85bc7193f23c9a564502df95564c49a32c91 Mon Sep 17 00:00:00 2001 |
| From: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Date: Fri, 16 Mar 2012 13:27:39 -0700 |
| Subject: xhci: Restore event ring dequeue pointer on resume. |
| |
| From: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| |
| commit fb3d85bc7193f23c9a564502df95564c49a32c91 upstream. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/xhci.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -627,6 +627,7 @@ static void xhci_restore_registers(struc |
| 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) |