On Fri, 2015-07-17 at 11:12 -0600, Daniel Drake wrote: > btusb currently has a generic match on USB device descriptors: > { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, > > However, http://www.usb.org/developers/defined_class states: > > Base Class E0h (Wireless Controller) > This base class is defined for devices that are Wireless > controllers. > Values not shown in the table below are reserved. These class codes > are > to be used in Interface Descriptors, with the exception of the > Bluetooth > class code which can also be used in a Device Descriptor. > > Add a match on the interface descriptors accordingly. > This fixes compatibility with the RTL8723AU device shown below. > This device conforms to the USB Interface Association Descriptor > specification, which requires the device to have class ef/02/01. > The extra IAD descriptor then specifies that interfaces 0 and 1 > belong to the same function/driver, which is true. Provided that > the Bluetooth device class spec accepts use of the IAD, I imagine > that > technically, all btusb devices should be configured like this. Great, i didn't know whether was allowed hence using the more conservative _VENDOR_AND_INTERFACE in my patch, but this solution is de finately nicer. Tested with a RTL8723AU device on a Radxa Rock Pro board Reviewed-By: Sjoerd Simons <sjoerd.simons@xxxxxxxxxxxxxxx> Tested-By: Sjoerd Simons <sjoerd.simons@xxxxxxxxxxxxxxx> > T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 > D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 > P: Vendor=0bda ProdID=0724 Rev= 2.00 > S: Manufacturer=Realtek > S: Product=802.11n WLAN Adapter > S: SerialNumber=00e04c000001 > C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA > A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01 > I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms > E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms > I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms > I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms > I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms > I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms > I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb > E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms > E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms > I:* If#= 2 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=ff Prot=ff > Driver=rtl8723au > E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=87(I) Atr=03(Int.) MxPS= 64 Ivl=500us > > Signed-off-by: Daniel Drake <drake@xxxxxxxxxxxx> > --- > drivers/bluetooth/btusb.c | 1 + > 1 file changed, 1 insertion(+) > > This replaces/obsoletes: > [PATCH] Bluetooth: btusb: Recognize Realtek shared wifi/bluetooth > devices > [PATCH] Bluetooth: btusb: Add Realtek devices into module device > table > > diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c > index 93339a4..9874aac 100644 > --- a/drivers/bluetooth/btusb.c > +++ b/drivers/bluetooth/btusb.c > @@ -64,6 +64,7 @@ static struct usb_driver btusb_driver; > static const struct usb_device_id btusb_table[] = { > /* Generic Bluetooth USB device */ > { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, > + { USB_INTERFACE_INFO(0xe0, 0x01, 0x01) }, > > /* Generic Bluetooth AMP device */ > { USB_DEVICE_INFO(0xe0, 0x01, 0x04), .driver_info = > BTUSB_AMP }, -- Sjoerd Simons <sjoerd.simons@xxxxxxxxxxxxxxx> Collabora Ltd. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html