aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/xhci-pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/xhci-pci.c')
-rw-r--r--drivers/usb/host/xhci-pci.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 592fe7e623f7..06595ec27bb7 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -24,6 +24,10 @@
24 24
25#include "xhci.h" 25#include "xhci.h"
26 26
27/* Device for a quirk */
28#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
29#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000
30
27static const char hcd_name[] = "xhci_hcd"; 31static const char hcd_name[] = "xhci_hcd";
28 32
29/* called after powerup, by probe or system-pm "wakeup" */ 33/* called after powerup, by probe or system-pm "wakeup" */
@@ -59,9 +63,20 @@ static int xhci_pci_setup(struct usb_hcd *hcd)
59 xhci->hcs_params1 = xhci_readl(xhci, &xhci->cap_regs->hcs_params1); 63 xhci->hcs_params1 = xhci_readl(xhci, &xhci->cap_regs->hcs_params1);
60 xhci->hcs_params2 = xhci_readl(xhci, &xhci->cap_regs->hcs_params2); 64 xhci->hcs_params2 = xhci_readl(xhci, &xhci->cap_regs->hcs_params2);
61 xhci->hcs_params3 = xhci_readl(xhci, &xhci->cap_regs->hcs_params3); 65 xhci->hcs_params3 = xhci_readl(xhci, &xhci->cap_regs->hcs_params3);
66 xhci->hcc_params = xhci_readl(xhci, &xhci->cap_regs->hc_capbase);
67 xhci->hci_version = HC_VERSION(xhci->hcc_params);
62 xhci->hcc_params = xhci_readl(xhci, &xhci->cap_regs->hcc_params); 68 xhci->hcc_params = xhci_readl(xhci, &xhci->cap_regs->hcc_params);
63 xhci_print_registers(xhci); 69 xhci_print_registers(xhci);
64 70
71 /* Look for vendor-specific quirks */
72 if (pdev->vendor == PCI_VENDOR_ID_FRESCO_LOGIC &&
73 pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK &&
74 pdev->revision == 0x0) {
75 xhci->quirks |= XHCI_RESET_EP_QUIRK;
76 xhci_dbg(xhci, "QUIRK: Fresco Logic xHC needs configure"
77 " endpoint cmd after reset endpoint\n");
78 }
79
65 /* Make sure the HC is halted. */ 80 /* Make sure the HC is halted. */
66 retval = xhci_halt(xhci); 81 retval = xhci_halt(xhci);
67 if (retval) 82 if (retval)
@@ -121,6 +136,7 @@ static const struct hc_driver xhci_pci_hc_driver = {
121 .check_bandwidth = xhci_check_bandwidth, 136 .check_bandwidth = xhci_check_bandwidth,
122 .reset_bandwidth = xhci_reset_bandwidth, 137 .reset_bandwidth = xhci_reset_bandwidth,
123 .address_device = xhci_address_device, 138 .address_device = xhci_address_device,
139 .update_hub_device = xhci_update_hub_device,
124 140
125 /* 141 /*
126 * scheduling support 142 * scheduling support