All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksij Rempel <linux@rempel-privat.de>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Christian Lamparter <chunkeey@googlemail.com>,
	Sarah Sharp <sarah.a.sharp@linux.intel.com>,
	Seth Forshee <seth.forshee@canonical.com>,
	ath9k_htc_fw <ath9k_htc_fw@lists.infradead.org>,
	USB list <linux-usb@vger.kernel.org>,
	linux-wireless@vger.kernel.org
Subject: Re: FUSB200 xhci issue
Date: Fri, 09 Aug 2013 20:53:56 +0200	[thread overview]
Message-ID: <52053AC4.3090509@rempel-privat.de> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1308091310560.1405-100000@iolanthe.rowland.org>

Am 09.08.2013 19:16, schrieb Alan Stern:
> On Fri, 9 Aug 2013, Oleksij Rempel wrote:
>
>> Am 09.08.2013 16:52, schrieb Alan Stern:
>>> On Fri, 9 Aug 2013, Oleksij Rempel wrote:
>>>
>>>>> 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.
>>>
>>> Changing the iProduct string descriptor would work, because the
>>> descriptors_changed() routine doesn't compare the old value of that
>>> string with the new value.  (On the other hand, it does compare the
>>> iSerialNumber strings.)
>>
>> Just to make sure. You mean, i should avoid changing iSerialNumber
>> because host will initiate usb reset and this device will probably not
>> survive it?
>
> Right.  If the device would survive a reset then there would be no
> problem.
>
> BTW, it is common for new firmware to change the bcdDevice value in the
> device descriptor.  That might be easier than changing a string
> descriptor.
>
>>> Is there any way to read the firmware back from the device?  Then you
>>> could check directly.
>>
>> No, this device is a SoC with usb client interface based on FUSB200 core
>> (If i'm correct, same core as on carl9170 devices). We can't read memory
>> unless FW provide this service.
>> At power on, this device will boot from external or internal ROM and
>> load minimal FW. Without it, USB wont work.
>> If i read FW code correctly, it should be responsible for suspend and reset.
>
> How do you tell the device to start running the new firmware after it
> is loaded?  Normally this requires some sort of reset.

There are two vendor commands cUSB_REQ_DOWNLOAD and 
cUSB_REQ_DOWNLOAD_COMP. With cUSB_REQ_DOWNLOAD firmware will be uploaded 
and cUSB_REQ_DOWNLOAD_COMP should just jump to first address of the 
firmware.

This system has micro modular structure. Firmware can register own 
modules. Or relink modules of bootloader, but this is limited only to 
existing api.

> Is there any way to prevent the device from losing its firmware during
> a USB reset or suspend?

For suspend - yes. It is possible to ignore suspend command or put the 
SoC in low power mode - but is it probably not so easy to bring it back. 
I would need to read more code and create some doc as side effect untill 
i understand how it works.
I'm not sure how about reset command. I would need more testing and some 
ones help. If i see it correctly, usb reset should affect only usb core 
and usb pll.

How can i trigger usb reset?

-- 
Regards,
Oleksij

  reply	other threads:[~2013-08-09 18:54 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <51ED4E12.8030006@rempel-privat.de>
2013-07-22 19:54 ` FUSB200 xhci issue Christian Lamparter
2013-07-22 20:47   ` Oleksij Rempel
2013-07-22 21:23     ` Christian Lamparter
2013-07-23  4:59       ` Oleksij Rempel
2013-07-23 18:26         ` Christian Lamparter
2013-07-24 10:37           ` Oleksij Rempel
2013-07-27 21:59             ` Christian Lamparter
2013-07-28  5:50               ` Oleksij Rempel
2013-07-28 11:38                 ` Christian Lamparter
2013-07-28 12:12                   ` Oleksij Rempel
2013-07-28 14:28                     ` Oleksij Rempel
2013-07-28 20:41                       ` Christian Lamparter
2013-07-31  6:52                         ` Oleksij Rempel
2013-08-08 15:35                           ` Oleksij Rempel
2013-08-08 19:09                             ` Christian Lamparter
2013-08-08 20:19                               ` Alan Stern
2013-08-08 22:06                                 ` Christian Lamparter
2013-08-09  2:52                                   ` Sujith Manoharan
2013-08-09 14:32                                     ` ath9k_htc firmware problem [was: Re: FUSB200 xhci issue] Alan Stern
2013-08-09 14:13                                   ` FUSB200 xhci issue Alan Stern
2013-08-09 14:34                                     ` Oleksij Rempel
2013-08-09 14:52                                       ` Alan Stern
2013-08-09 15:51                                         ` Oleksij Rempel
2013-08-09 17:16                                           ` Alan Stern
2013-08-09 18:53                                             ` Oleksij Rempel [this message]
2013-08-09 19:32                                               ` Alan Stern
2013-08-10  6:19                                                 ` Oleksij Rempel
2013-08-10 11:57                                                   ` Alan Stern
2013-08-12  7:58                                                     ` Oleksij Rempel

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=52053AC4.3090509@rempel-privat.de \
    --to=linux@rempel-privat.de \
    --cc=ath9k_htc_fw@lists.infradead.org \
    --cc=chunkeey@googlemail.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=sarah.a.sharp@linux.intel.com \
    --cc=seth.forshee@canonical.com \
    --cc=stern@rowland.harvard.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.