apm821xx: add linux kernel 5.4 testing support
[oweals/openwrt.git] / target / linux / apm821xx / patches-5.4 / 802-usb-xhci-force-msi-renesas-xhci.patch
diff --git a/target/linux/apm821xx/patches-5.4/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-5.4/802-usb-xhci-force-msi-renesas-xhci.patch
new file mode 100644 (file)
index 0000000..a745ea6
--- /dev/null
@@ -0,0 +1,53 @@
+From a0dc613140bab907a3d5787a7ae7b0638bf674d0 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@gmail.com>
+Date: Thu, 23 Jun 2016 20:28:20 +0200
+Subject: [PATCH] usb: xhci: force MSI for uPD720201 and
+ uPD720202
+
+The APM82181 does not support MSI-X. When probed, it will
+produce a noisy warning.
+
+---
+ drivers/usb/host/pci-quirks.c | 362 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 362 insertions(+)
+
+--- a/drivers/usb/host/xhci-pci.c
++++ b/drivers/usb/host/xhci-pci.c
+@@ -215,6 +215,7 @@ static void xhci_pci_quirks(struct devic
+           pdev->device == 0x0015) {
+               xhci->quirks |= XHCI_RESET_ON_RESUME;
+               xhci->quirks |= XHCI_ZERO_64B_REGS;
++              xhci->quirks |= XHCI_FORCE_MSI;
+       }
+       if (pdev->vendor == PCI_VENDOR_ID_VIA)
+               xhci->quirks |= XHCI_RESET_ON_RESUME;
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -422,10 +422,14 @@ static int xhci_try_enable_msi(struct us
+               free_irq(hcd->irq, hcd);
+       hcd->irq = 0;
+-      ret = xhci_setup_msix(xhci);
+-      if (ret)
+-              /* fall back to msi*/
++      if (xhci->quirks & XHCI_FORCE_MSI) {
+               ret = xhci_setup_msi(xhci);
++      } else {
++              ret = xhci_setup_msix(xhci);
++              if (ret)
++                      /* fall back to msi*/
++                      ret = xhci_setup_msi(xhci);
++      }
+       if (!ret) {
+               hcd->msi_enabled = 1;
+--- a/drivers/usb/host/xhci.h
++++ b/drivers/usb/host/xhci.h
+@@ -1876,6 +1876,7 @@ struct xhci_hcd {
+       /* support xHCI 0.96 spec USB2 software LPM */
+       unsigned                sw_lpm_support:1;
+       /* support xHCI 1.0 spec USB2 hardware LPM */
++#define XHCI_FORCE_MSI                (1 << 24)
+       unsigned                hw_lpm_support:1;
+       /* Broken Suspend flag for SNPS Suspend resume issue */
+       unsigned                broken_suspend:1;