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 09:19:12 +0200	[thread overview]
Message-ID: <1286349552.6145.11.camel@aeonflux> (raw)
In-Reply-To: <AANLkTimz7U52_qHaTutQDOFQde+GrWJRA0WpqY__FPgi@mail.gmail.com>

Hi Luis,

> > most likely via a separate firmware loading driver.
> 
> Like the fwload patch ? Or something different?

something clean of course and not this hacking around, but in general
along that.

> > Your ath3k driver is such a driver. Same as the bcm203x driver.
> 
> Right -- so ath3k depends on some atheros USB device IDs, and its a
> stupid driver that just loads firmware. The problem with this new
> device is that it requires two phases. One to load some sort of
> firmware onto it to get it to read as an ath3k device, and then ath3k
> will load the right firmware to it. So the hardware device is already
> claiming a btusb vendor:device ID, we can't change that I believe. Of
> course for future devices we can, and we've addressed this and its
> been fixed.

So your current loading procedure is this:

	1) btusb with hacked firmware loading
	2) ath3k
	3) btusb with HCI

Who thought that this is a good idea in the first place? And more
important that I would accept this upstream? This is even worse than I
thought it is.

Please get this craziness fixed.

> > They don't do anything than claiming that USB device, loading the firmware, and then let it reset.
> 
> Right but if the SFLASH configurations hardware is already shipping
> and without firmware is claiming to be a BT USB device which matches
> the USB vendor:device ID of the btusb driver. Unfortunately it does
> not accept HCI commands which as you indicates breaks some
> specification. We can and have fixed this in future chipsets but this
> one cannot be addressed. So what do we do?
> 
> > And after the reset the btusb can claim the one where the firmware has
> > been loaded and which behaves like a proper USB dongle.
> 
> Right, that's what the fwload patch from our BT team does, no?

Yes, but not inside the btusb driver. Stop hacking a generic driver with
crazy firmware loading only because the USB Bluetooth class descriptors
got screwed up in the first place.

> > The part that I don't understand is that you have the ath3k driver doing
> > it exactly how it should be done, why now started to make nasty hacks in
> > the btusb driver.
> 
> Yeah that seems to have been a shortcoming, its something you should
> expect from us moving forward. I've been told AR3012 and future
> Atheros chipsets will not have behave this way, and this issue is only
> present for the AR3011 devices with SFLASH configuration.

Most likely including the flashing into ath3k firmware loading driver
and that being called bound twice might be a good idea. However we are
not doing the firmware loading in btusb. Then a patch to blacklist this
broken device. And then ensure that the firmware changes the USB PIDs
after success.

And if I understand you correct, then it does this anyway right now
already. Otherwise the ath3k driver would not bind to it.

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.

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.

Regards

Marcel



  parent reply	other threads:[~2010-10-06  7:19 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 [this message]
2010-10-06 15:26           ` Luis R. Rodriguez
2010-10-06 15:56             ` Marcel Holtmann
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=1286349552.6145.11.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).