
One that I couldn't see on your list (unless it was under a different name) was:
USB controller: VIA Technologies, Inc. Device 3432 (rev 02) 02:00.0 0c03: 1106:3432 (rev 02)
Which has been working flawlessly for me under a variety of 3.2 kernels.
That's good to know -- I don't suppose you can find out what the chipset is actually called? It might be in your kernel messages somewhere.
The kernel messages for loading the xhci_hcd module have long since been rotated out, so I can't easily verify.
"Device 3432" in lspci just means the id isn't in the PCI ids table, but the xhci driver must have known more about it.
Actually the xhci driver just loads anything with the right PCI class: /* PCI driver selection metadata; PCI hotplugging uses this */ 297 static const struct pci_device_id pci_ids[] = { { 298 /* handle any USB 3.0 xHCI controller */ 299 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0), 300 .driver_data = (unsigned long) &xhci_pci_hc_driver, 301 }, 302 { /* end: all zeroes */ } 303 }; Any device specific quirk is handled by exception: 54 static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) 55 { 56 struct pci_dev *pdev = to_pci_dev(dev); 57 58 /* Look for vendor-specific quirks */ 59 if (pdev->vendor == PCI_VENDOR_ID_FRESCO_LOGIC && 60 pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK) { 61 if (pdev->revision == 0x0) { 62 xhci->quirks |= XHCI_RESET_EP_QUIRK; 63 xhci_dbg(xhci, "QUIRK: Fresco Logic xHC needs configure" 64 " endpoint cmd after reset endpoint\n"); 65 } 66 /* Fresco Logic confirms: all revisions of this chip do not 67 * support MSI, even though some of them claim to in their PCI 68 * capabilities. 69 */ 70 xhci->quirks |= XHCI_BROKEN_MSI; 71 xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u " 72 "has broken MSI implementation\n", 73 pdev->revision); 74 } 75 76 if (pdev->vendor == PCI_VENDOR_ID_NEC) 77 xhci->quirks |= XHCI_NEC_HOST; 78 79 if (pdev->vendor == PCI_VENDOR_ID_AMD && xhci->hci_version == 0x96) 80 xhci->quirks |= XHCI_AMD_0x96_HOST; 81 82 /* AMD PLL quirk */ 83 if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info()) 84 xhci->quirks |= XHCI_AMD_PLL_FIX; 85 if (pdev->vendor == PCI_VENDOR_ID_INTEL && 86 pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) { 87 xhci->quirks |= XHCI_SPURIOUS_SUCCESS; 88 xhci->quirks |= XHCI_EP_LIMIT_QUIRK; 89 xhci->limit_active_eps = 64; 90 xhci->quirks |= XHCI_SW_BW_CHECKING; 91 } 92 if (pdev->vendor == PCI_VENDOR_ID_ETRON && 93 pdev->device == PCI_DEVICE_ID_ASROCK_P67) { 94 xhci->quirks |= XHCI_RESET_ON_RESUME; 95 xhci_dbg(xhci, "QUIRK: Resetting on resume\n"); 96 } 97 } (code copied from http://git.kernel.org/?p=linux/kernel/git/sarah/xhci.git;a=blob;f=drivers/us...) James