Return-Path: Date: Wed, 6 Oct 2010 19:52:06 +0200 (CEST) From: Sven-Haegar Koch To: "Luis R. Rodriguez" cc: Marcel Holtmann , Luis Rodriguez , linux-bluetooth , "linux-kernel@vger.kernel.org" , "linux-wireless@vger.kernel.org" , Deepak Dhamdhere , Sree Durbha Subject: Re: RFC: btusb firmware load help In-Reply-To: Message-ID: References: <20100924230730.GB6566@tux> <1286266981.17473.33.camel@aeonflux> <20101005192814.GB11831@tux> <1286308731.2588.13.camel@aeonflux> <1286349552.6145.11.camel@aeonflux> <1286380566.6145.42.camel@aeonflux> <20101006163816.GE7070@tux> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: On Wed, 6 Oct 2010, Luis R. Rodriguez wrote: > I just got this description from Sady: > > ------------------------------------------------------------------------------------------------------------------- > With eeprom based AR3011 hardware, normally this device gets detected > as a normal USB device with VID=0x0CF3, PID=0x3000. > Ath3k DFU driver will download the firmware in to RAM. > Due to firmware download in the RAM it is exposed as new device > with VID=0x0CF3, PID=0x3002 to host Bluetooth sub system and btusb.ko > driver probe routine gets called to bring up Bluetooth interface. > This is the normal procedure we have done so far on Linux. > > With sflash based AR3011 hardware, when we connect the device to USB > port it gets detected as a Bluetooth device because of firmware in > Flash (VID=0x0CF3, PID=0x3002). This triggers the Bluetooth sub > system driver (btusb.ko) directly in the host instead of ath3k > DFU driver. Therefore, there is no firmware downloaded in to the > RAM to bring up Bluetooth at this point. This is the problem > we're trying to "fix". > ------------------------------------------------------------------------------------------------------------------- > > With the above patch we'd get ath3k to do the firmware uploading but > I'm afraid that we'll go into a loop here unless we can figure out a > way to get btusb to know the device is now ready. Modify the firmware file so that after loading the firmware it gets for example VID=0x0CF3, PID=0x3003. Blacklist VID=0x0CF3, PID=0x3002 in btusb and add it to ath3k. >From then on VID=0x0CF3, PID=0x3000 and PID=0x3002 mean "need firmware" and PID=0x3003 is the operational state (like half of your PID=0x3002 usage is now) c'ya sven-haegar -- Three may keep a secret, if two of them are dead. - Ben F.