https://bugzilla.kernel.org/show_bug.cgi?id=79331 Bug ID: 79331 Summary: Bluetooth device AR3012 [0cf3:e005] sometimes can't work on XHCI host controller Product: Drivers Version: 2.5 Kernel Version: v3.16-rc2 Hardware: x86-64 OS: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Bluetooth Assignee: linux-bluetooth@xxxxxxxxxxxxxxx Reporter: gavin.guo@xxxxxxxxxxxxx CC: gustavo@xxxxxxxxxxx, johan.hedberg@xxxxxxxxx, marcel@xxxxxxxxxxxx, sarah.a.sharp@xxxxxxxxxxxxxxx Regression: No Created attachment 141601 --> https://bugzilla.kernel.org/attachment.cgi?id=141601&action=edit dmesg Recently, I found that the AR3012 bluetooth sometimes can't work with the 00:14.0 USB controller [0c03]: Intel Corporation Lynx Point USB xHCI Host Controller [8086:8c31] (rev 05). The dmesg is attached, and following is how I tested: The port which AR3012 uses on the platform is default routed to XHCI controller. So, when booting up the machine, I found those messages in dmesg: [ 18.128566] Bluetooth: Error in firmware loading err = -110,len = 448, size = 4096 [ 18.128574] Bluetooth: Loading patch file failed [ 18.128583] ath3k: probe of 3-6:1.0 failed with error -110 Obviously, there is firmware loading error with the XHCI host controller, and there are also XHCI debugging messages showing before these ones. Because we found that the AR3012 works fine with EHCI host controller, so we wrote a module, xhci_quirk, to change the port to bind to EHCI host controller, which changes the USB_INTEL_XUSB2PR register. After insmoding the xhci_quirk module, we see the following lines: [ 199.248468] xhci_quirk: module verification failed: signature and/or required key missing - tainting kernel [ 199.255687] old = 0x3fff, new = 0x3cdf [ 199.255689] Planted return probe at usb_enable_intel_xhci_ports: ffffffff815950c0 After that the port disconnected from the XHCI host controller, and then the AR3012 is attached to the EHCI host controller: [ 199.936571] usb 1-1.2: new full-speed USB device number 4 using ehci-pci [ 215.026596] usb 1-1.2: device descriptor read/64, error -110 [ 230.220811] usb 1-1.2: device descriptor read/64, error -110 [ 230.396975] usb 1-1.2: new full-speed USB device number 5 using ehci-pci [ 235.495101] usb 1-1.2: unable to read config index 0 descriptor/all [ 235.495105] usb 1-1.2: can't read configurations, error -110 [ 235.571216] usb 1-1.2: new full-speed USB device number 6 using ehci-pci [ 235.592617] usb 1-1.2: New USB device found, idVendor=0cf3, idProduct=e005 [ 235.592621] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 235.705440] usb 1-1.2: USB disconnect, device number 6 [ 235.903613] usb 1-1.2: new full-speed USB device number 7 using ehci-pci [ 241.002841] usb 1-1.2: New USB device found, idVendor=0cf3, idProduct=e005 [ 241.002844] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 After a while, the Bluetooth icon shows up in the right-upper corner (Ubuntu 12.04). I can use normal Bluetooth operations such as file transfer, headset, and mouse. Next, I did an experiment to remove the xhci_quirk module and the port will be routed to the XHCI host controller again. And something strange happened, I found that the Bluetooth device AR3012 _WORKS_ on XHCI host controller. Summary: * The ath3k.c firwmare loading error doesn't always happen on the XHCI host controller, it succeed sometimes. After the successful loading firmware, AR3012 works fine. * After sucessful loading the firmware through the EHCI controller, I found that the firmware status still remained and can work with XHCI host controller through dynamic changing the port routing. If there is any restriction that Bluetooth device AR3012 can't work on XHCI host controller? Thanks, Gavin Guo -- You are receiving this mail because: You are the assignee for the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html