Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xHCI: reset-on-resume quirk for NEC uPD720200

Julian Sikorski reports NEC uPD720200 does not work stable after suspend
and resume. Re-initialize the host in xhci_resume().

This should be backported to stable kernels as old as 2.6.37. The
kernel will need to include
commit c877b3b2ad5cb9d4fe523c5496185cc328ff3ae9
"xhci: Add reset on resume quirk for asrock p67 host"
for this patch to work.

Signed-off-by: Andiry Xu <andiry.xu@amd.com>
Reported-by: Julian Sikorski <belegdol@gmail.com>
Tested-by: Julian Sikorski <belegdol@gmail.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>

authored by

Andiry Xu and committed by
Sarah Sharp
df711fc9 8746c83d

+6 -1
+6 -1
drivers/usb/host/xhci-pci.c
··· 33 33 #define PCI_VENDOR_ID_ETRON 0x1b6f 34 34 #define PCI_DEVICE_ID_ASROCK_P67 0x7023 35 35 36 + #define PCI_DEVICE_ID_NEC_uPD720200 0x0194 37 + 36 38 static const char hcd_name[] = "xhci_hcd"; 37 39 38 40 /* called after powerup, by probe or system-pm "wakeup" */ ··· 76 74 pdev->revision); 77 75 } 78 76 79 - if (pdev->vendor == PCI_VENDOR_ID_NEC) 77 + if (pdev->vendor == PCI_VENDOR_ID_NEC) { 80 78 xhci->quirks |= XHCI_NEC_HOST; 79 + if (pdev->device == PCI_DEVICE_ID_NEC_uPD720200) 80 + xhci->quirks |= XHCI_RESET_ON_RESUME; 81 + } 81 82 82 83 if (pdev->vendor == PCI_VENDOR_ID_AMD && xhci->hci_version == 0x96) 83 84 xhci->quirks |= XHCI_AMD_0x96_HOST;