genode/repos/dde_linux/patches/xhci-quirks.patch

42 lines
1.3 KiB
Diff

diff -r a103aef8f269 drivers/usb/host/xhci-pci.c
--- a/drivers/usb/host/xhci-pci.c Wed Mar 05 13:54:43 2014 +0100
+++ b/drivers/usb/host/xhci-pci.c Wed Mar 05 13:58:50 2014 +0100
@@ -34,6 +34,8 @@
#define PCI_VENDOR_ID_ETRON 0x1b6f
#define PCI_DEVICE_ID_ASROCK_P67 0x7023
+#define PCI_VENDOR_ID_RENESAS 0x1912
+
static const char hcd_name[] = "xhci_hcd";
/* called after powerup, by probe or system-pm "wakeup" */
@@ -81,6 +83,10 @@
if (pdev->vendor == PCI_VENDOR_ID_NEC)
xhci->quirks |= XHCI_NEC_HOST;
+ /* Quirk for RENESAS USB 3.0 express cards */
+ if (pdev->vendor == PCI_VENDOR_ID_RENESAS)
+ xhci->quirks |= XHCI_TRUST_TX_LENGTH;
+
if (pdev->vendor == PCI_VENDOR_ID_AMD && xhci->hci_version == 0x96)
xhci->quirks |= XHCI_AMD_0x96_HOST;
diff -r a103aef8f269 drivers/usb/host/xhci.c
--- a/drivers/usb/host/xhci.c Wed Mar 05 13:54:43 2014 +0100
+++ b/drivers/usb/host/xhci.c Wed Mar 05 13:58:50 2014 +0100
@@ -4683,6 +4683,14 @@
get_quirks(dev, xhci);
+
+ /* In xhci controllers which follow xhci 1.0 spec gives a spurious
+ * success event after a short transfer. This quirk will ignore such
+ * spurious event (This is taken from Linux 3.13)
+ */
+ if (xhci->hci_version > 0x96)
+ xhci->quirks |= XHCI_SPURIOUS_SUCCESS;
+
/* Make sure the HC is halted. */
retval = xhci_halt(xhci);
if (retval)