linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marcel Holtmann <holtmann@linux.intel.com>
To: "Luis R. Rodriguez" <lrodriguez@atheros.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, 06 Oct 2010 17:56:06 +0200	[thread overview]
Message-ID: <1286380566.6145.42.camel@aeonflux> (raw)
In-Reply-To: <AANLkTimDvgFtoGLEjgWyYRrhQy6Num-rn_2WYO4Lf84b@mail.gmail.com>

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.

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.

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.

Regards

Marcel



  reply	other threads:[~2010-10-06 15:56 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 [this message]
2010-10-06 16:38               ` Luis R. Rodriguez
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=1286380566.6145.42.camel@aeonflux \
    --to=holtmann@linux.intel.com \
    --cc=Deepak.Dhamdhere@atheros.com \
    --cc=Luis.Rodriguez@atheros.com \
    --cc=Sree.Durbha@atheros.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lrodriguez@atheros.com \
    /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).