FUSB200 xhci issue

Oleksij Rempel linux at rempel-privat.de
Fri Aug 9 10:34:23 EDT 2013


Am 09.08.2013 16:13, schrieb Alan Stern:
> On Fri, 9 Aug 2013, Christian Lamparter wrote:
>
>>> After loading firmware, a reset generally is necessary.  Some devices
>>> will do it themselves; others require you to call usb_reset_device().
>>
>> This makes things complicated. Because, as far as I remember,
>> usb_reset_device() will cause the current driver to be unbound
>> unless its called during .probe, right?
>
> If the driver defines pre_reset and post_reset methods, it won't get
> unbound during a reset.
>
>> You see, ath9k_htc loads its firmware asynchronously in ".probe"
>> (ath9k_htc's .probe routine finishes before the firmware is
>> retrieved via the firmware loader helper... so part of the
>> firmware download is done in a firmware_complete callback
>> on a workqueue).
>>
>> So, if we call usb_reset_device there and the driver is unbound
>> and later rebound. the next ath9k_htc .probe will start again and
>> again and again not knowing that it is already initialized
>> (and we have a loop).
>>
>>
>> This could be solved, if the devices changes the usb-id again
>> when a proper "wifi" ath9k_htc firmware was downloaded. So, the
>> driver would know that it doesn't have to download and reset
>> the device... But we need a "free" USB-ID for that.
>
> What about a "get firmware version" sort of thing?  There really should
> be a way for the driver to tell whether the firmware has already been
> updated.

I was not able to find good direct way to check firmware version. If i 
would add some new command then i will get option like: if responding FW 
is updated; if not, then dead or old.
How about overwriting iProduct field? Let say, if iProduct == ath9k_htc, 
then firmware is updated? Is it more or less acceptable method? I need 
to ask this because it is really new for me.
-- 
Regards,
Oleksij



More information about the ath9k_htc_fw mailing list