Re: Atheros 1525/QCA6174 BT issue

From: Takashi Iwai
Date: Tue Mar 13 2018 - 04:05:15 EST


On Thu, 08 Mar 2018 10:16:46 +0100,
Takashi Iwai wrote:
>
> On Thu, 08 Mar 2018 10:06:51 +0100,
> Marcel Holtmann wrote:
> >
> > Hi Takashi,
> >
> > > we've got a but report about the broken Atheros BT on the recent
> > > kernels:
> > > http://bugzilla.opensuse.org/show_bug.cgi?id=1082504
> > >
> > > In short, btusb can't load the patch ar3k/AthrBT_0x00000200.dfu, and
> > > this could be worked around by the patch to move 0cf3:3004 blacklist
> > > entry to use BTUSB_QCA_ROM instead of BTUSB_ATH3012.
> > >
> > > And this looks like a long-standing problem, at least for over two
> > > years. Many web pages suggest the same patch, but it's never merged
> > > to upstream.
> > >
> > > So this made me wonder what's going on. I see that the BTUSB_ATH3012
> > > quirk was originally introduced just for this chip id (0cf3:3004).
> > > Is it a different variant from the original chip that causes a
> > > problem?
> >
> > not all patches from distro kernel are sent upstream. I have not heard of this specific issues, but happy to accept patches to get it fixed.
>
> OK, basically it's like below.
> But, as mentioned, this made me wonder whether it's the right fix.
> The BTUSB_ATH3012 quirk was introduced exactly for this chip ID
> (0cf3:3004), and now this chip is moved to another quirk...
>
> If this is the right move, I can re-submit via git-send-email, too.
> Just let me know.

Marcel, could you take a look at this?
If it sucks, let's seek for a better solution.


thanks,

Takashi

>
>
> thanks,
>
> Takashi
>
> -- 8< --
> From: Takashi Iwai <tiwai@xxxxxxx>
> Subject: [PATCH] Bluebooth: btusb: Fix quirk for Atheros 1525/QCA6174
>
> The Atheros 1525/QCA6174 BT doesn't seem working properly on the
> recent kernels, as it tries to load a wrong firmware
> ar3k/AthrBT_0x00000200.dfu and it fails.
>
> This seems to have been a problem for some time, and the known
> workaround is to apply BTUSB_QCA_ROM quirk instead of BTUSB_ATH3012.
>
> The device in question is:
>
> T: Bus=01 Lev=01 Prnt=01 Port=09 Cnt=03 Dev#= 4 Spd=12 MxCh= 0
> D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
> P: Vendor=0cf3 ProdID=3004 Rev= 0.01
> C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
> 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=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
> E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
> I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
> E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
> E: Ad=03(O) 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=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
> E: Ad=03(O) 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=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
> E: Ad=03(O) 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=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
> E: Ad=03(O) 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=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
> E: Ad=03(O) 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=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
> E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
>
> Bugzilla: http://bugzilla.opensuse.org/show_bug.cgi?id=1082504
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> ---
> drivers/bluetooth/btusb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 60bf04b8f103..c5c566fdc629 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -231,7 +231,6 @@ static const struct usb_device_id blacklist_table[] = {
> { USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 },
> { USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 },
> { USB_DEVICE(0x0cf3, 0x0036), .driver_info = BTUSB_ATH3012 },
> - { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
> { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 },
> { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
> { USB_DEVICE(0x0cf3, 0x311e), .driver_info = BTUSB_ATH3012 },
> @@ -264,6 +263,7 @@ static const struct usb_device_id blacklist_table[] = {
> { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 },
>
> /* QCA ROME chipset */
> + { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_QCA_ROME },
> { USB_DEVICE(0x0cf3, 0xe007), .driver_info = BTUSB_QCA_ROME },
> { USB_DEVICE(0x0cf3, 0xe009), .driver_info = BTUSB_QCA_ROME },
> { USB_DEVICE(0x0cf3, 0xe010), .driver_info = BTUSB_QCA_ROME },
> --
> 2.16.2
>