| From 1aa9578c1a9450fb21501c4f549f5b1edb557e6d Mon Sep 17 00:00:00 2001 |
| From: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Date: Fri, 17 Jan 2014 15:38:12 -0800 |
| Subject: xhci: Fix resume issues on Renesas chips in Samsung laptops |
| |
| From: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| |
| commit 1aa9578c1a9450fb21501c4f549f5b1edb557e6d upstream. |
| |
| Don Zickus <dzickus@redhat.com> writes: |
| |
| Some co-workers of mine bought Samsung laptops that had mostly usb3 ports. |
| Those ports did not resume correctly (the driver would timeout communicating |
| and fail). This led to frustration as suspend/resume is a common use for |
| laptops. |
| |
| Poking around, I applied the reset on resume quirk to this chipset and the |
| resume started working. Reloading the xhci_hcd module had been the temporary |
| workaround. |
| |
| Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Reported-by: Don Zickus <dzickus@redhat.com> |
| Tested-by: Prarit Bhargava <prarit@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/xhci-pci.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| --- a/drivers/usb/host/xhci-pci.c |
| +++ b/drivers/usb/host/xhci-pci.c |
| @@ -142,6 +142,11 @@ static void xhci_pci_quirks(struct devic |
| "QUIRK: Resetting on resume"); |
| xhci->quirks |= XHCI_TRUST_TX_LENGTH; |
| } |
| + if (pdev->vendor == PCI_VENDOR_ID_RENESAS && |
| + pdev->device == 0x0015 && |
| + pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG && |
| + pdev->subsystem_device == 0xc0cd) |
| + xhci->quirks |= XHCI_RESET_ON_RESUME; |
| if (pdev->vendor == PCI_VENDOR_ID_VIA) |
| xhci->quirks |= XHCI_RESET_ON_RESUME; |
| } |