From: "Luis R. Rodriguez" <lrodriguez@atheros.com>
To: Marcel Holtmann <holtmann@linux.intel.com>
Cc: Luis Rodriguez <Luis.Rodriguez@Atheros.com>,
linux-bluetooth <linux-bluetooth@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
Deepak Dhamdhere <Deepak.Dhamdhere@Atheros.com>,
Sree Durbha <Sree.Durbha@Atheros.com>
Subject: Re: RFC: btusb firmware load help
Date: Wed, 6 Oct 2010 09:38:16 -0700 [thread overview]
Message-ID: <20101006163816.GE7070@tux> (raw)
In-Reply-To: <1286380566.6145.42.camel@aeonflux>
On Wed, Oct 06, 2010 at 08:56:06AM -0700, Marcel Holtmann wrote:
> Hi Luis,
>
> > > Now I am failing to understand why this was done wrong in the first
> > > place. Especially if the loading procedure happens as you say it
> > > happens.
> >
> > You got me :) Anyone?
> >
> > > This is the example for the Broadcom 203x devices:
> > >
> > > static struct usb_device_id blacklist_table[] = {
> > > /* Broadcom BCM2033 without firmware */
> > > { USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },
> > >
> > > The btusb driver clearly blacklists them. And then bcm203x can take over
> > > loading the firmware:
> > >
> > > static const struct usb_device_id bcm203x_table[] = {
> > > /* Broadcom Blutonium (BCM2033) */
> > > { USB_DEVICE(0x0a5c, 0x2033) },
> > >
> > > So there is a working example of this already in the kernel tree since
> > > forever.
> >
> > Nice, thanks for the pointer. Our team will review and try to address
> > an alternative patch.
> >
> > Now for my own sanity -- I still don't think I get this how this
> > BCM2033 blacklist trick works, I take it the device once plugged in
> > gets a generic btusb USB device vendor:device ID. The btusb driver
> > then picks up the the blacklist table, and searches for a
> > usb_match_id() on it for the given interface... What I don't get is
> > how there will be a match here if the USB vendor:device ID is just the
> > generic btusb one. Can you help me understand how this trick works?
>
> the generic Bluetooth USB class descriptors is what btusb uses. With a
> few expectation for devices that use VID:PID combination.
Ahhh... got it..
> So in general what happens if a device gets matched via the Bluetooth
> USB class descriptors the btusb driver will claim. We do however check
> against out blacklist first. If the VID:PID is listed in the blacklist
> we do return ENODEV. That means that the USB subsystem goes ahead and
> tries the next driver. In this case bcm203x driver. This will claim it,
> load the firmware, reset it and come back with different VID:PID values.
> After that the btusb can successfully claim it since it is no longer in
> the blacklist.
Ah neat.
> If I understand this all correct without having the hardware available
> for verifying this, then it should be like this:
>
> Just add this to blacklist_table[] in btusb.c:
>
> /* Atheros AR3011 without firmware */
> { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
>
> And then we can add the firmware loading to ath3k driver to load the
> specific 1st stage firmware. And then ath3k can load the 2nd stage as
> well. After that it should become a default Bluetooth USB device and the
> btusb driver can take care of it.
Got it... thanks for the clarification. So ath3k actually doesn't seem to
have 2-stage firmware files, ath3k-2.fw actually seems to be a new firmware
upgrade. The firmware already made it into linux-firmware.git tree but the
respective patch just never made it upstream. I am not sure of the
differences between these firmware but I do remember reading from Vikram
that no new API was changed. I asked for clarification on the firmware
updates and asked if it can be documented here:
http://wireless.kernel.org/en/users/Drivers/ath3k
If the device can live with simply getting ath3k-1.fw loaded once then
perhaps the change you described above is all that is needed, not sure.
Deepak, can you please try this patch, I don't have hardware to test
this with.
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index d22ce3c..a62c1b2 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -140,6 +140,9 @@ static struct usb_device_id blacklist_table[] = {
/* Frontline ComProbe Bluetooth Sniffer */
{ USB_DEVICE(0x16d3, 0x0002), .driver_info = BTUSB_SNIFFER },
+ /* Atheros AR3011 without firmware */
+ { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
+
{ } /* Terminating entry */
};
next prev parent reply other threads:[~2010-10-06 16:38 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-24 23:07 RFC: btusb firmware load help Luis R. Rodriguez
2010-09-29 19:40 ` Luis R. Rodriguez
2010-10-05 8:23 ` Marcel Holtmann
2010-10-05 19:28 ` Luis R. Rodriguez
2010-10-05 19:58 ` Marcel Holtmann
2010-10-05 20:28 ` Luis R. Rodriguez
2010-10-05 21:50 ` Matthew Garrett
2010-10-06 7:09 ` Marcel Holtmann
2010-10-06 7:19 ` Marcel Holtmann
2010-10-06 15:26 ` Luis R. Rodriguez
2010-10-06 15:56 ` Marcel Holtmann
2010-10-06 16:38 ` Luis R. Rodriguez [this message]
2010-10-06 17:37 ` Luis R. Rodriguez
2010-10-06 17:39 ` Luis R. Rodriguez
2010-10-06 17:54 ` Johannes Berg
2010-10-06 18:22 ` Luis R. Rodriguez
2010-10-06 18:26 ` Luis R. Rodriguez
2010-10-06 18:28 ` Johannes Berg
2010-10-06 18:33 ` Luis R. Rodriguez
2010-10-07 15:09 ` Shanmugamkamatchi Balashanmugam
2010-10-07 15:15 ` Johannes Berg
2010-10-07 16:32 ` Bala Shanmugam
2010-10-07 17:57 ` Johannes Berg
2010-10-07 15:24 ` Marcel Holtmann
2010-10-07 16:33 ` Bala Shanmugam
2010-10-07 16:35 ` Bala Shanmugam
2010-10-07 16:42 ` Marcel Holtmann
2010-10-07 17:06 ` Bala Shanmugam
2010-10-08 8:24 ` Marcel Holtmann
2010-10-12 13:38 ` Kevin Hayes
2010-11-10 18:46 ` Luis R. Rodriguez
2010-11-10 18:32 ` Bala Shanmugam
2010-10-07 17:59 ` Johannes Berg
2010-10-08 8:26 ` Marcel Holtmann
2010-10-06 17:52 ` Sven-Haegar Koch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101006163816.GE7070@tux \
--to=lrodriguez@atheros.com \
--cc=Deepak.Dhamdhere@Atheros.com \
--cc=Luis.Rodriguez@Atheros.com \
--cc=Sree.Durbha@Atheros.com \
--cc=holtmann@linux.intel.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).