From: Yang Rui Rui <ruirui.r.yang@tieto.com>
To: Michal Nazarewicz <mnazarewicz@google.com>
Cc: Alan Stern <stern@rowland.harvard.edu>,
Sergei Shtylyov <sshtylyov@mvista.com>,
Felipe Balbi <balbi@ti.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Yang Ruirui R <ruirui.r.yang@tietoenator.com>,
Greg Kroah-Hartman <gregkh@suse.de>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv2] usb: gadget: get rid of USB_GADGET_DUALSPEED and USB_GADGET_SUPERSPEED
Date: Fri, 19 Aug 2011 10:02:00 +0800 [thread overview]
Message-ID: <4E4DC418.8050009@tieto.com> (raw)
In-Reply-To: <op.v0e5q6pyvgw7ix@mnazarewicz-glaptop>
On 08/19/2011 01:05 AM, Michal Nazarewicz wrote:
> On Thu, 18 Aug 2011 16:59:28 +0200, Alan Stern<stern@rowland.harvard.edu>
> wrote:
>
>> On Thu, 18 Aug 2011, Michal Nazarewicz wrote:
>>
>>> On Wed, 17 Aug 2011 23:09:37 +0200, Alan Stern
>>> <stern@rowland.harvard.edu>
>>> wrote:
>>>> I see what's going on here. Your original patch was wrong and then my
>>>> correction was wrong as well.
>>>>
>>>> This line has to remain the way it was (although those (u8) typecasts
>>>> don't seem to be necessary). Above, you have to initialize
>>>> composite_driver.speed to an appropriate value, probably
>>>> USB_SPEED_SUPER.
>>>>
>>>> What you didn't realize in your original patch is that
>>>> usb_composite_probe() gets called more than once. Each time it is
>>>> called, it has to adjust composite_driver.speed.
>>>
>>> That's sneaky of composite.c... But is it desired behaviour?
>>
>> Yes, it is.
>>
>>> I cannot
>>> came up with a situation where that's what we want. I would imagine
>>> that
>>> usb_composite_probe() should assume the same speed for given
>>> usb_composite_driver regardless if some other slower
>>> usb_composite_driver
>>> was loaded.
>>
>> The speed being calculated isn't the speed of the usb_composite_driver;
>> it's the speed of the usb_gadget_driver. The gadget itself cannot be
>> allowed to run faster than its internal drivers can handle.
>
> Yeah, that's why you set usb_gadget_driver's speed to the speed declared
> in usb_composite_driver.
This is what I means in before reply, musb_gadget_start will check the speed set here.
if it != USB_SPEED_HIGH it will return -EINVAL.
>
> For the most part, usb_composite_probe() is called only once in module's
> init function. As far as I know, only g_ffs calls it several times. So
> in all cases expect for g_ffs, composite_driver.speed =
> min(composite_driver.speed,
> driver->max_speed) should have the same effect as composite_driver.speed
> = driver->max_speed.
For original code, ifndef CONFIG_USB_GADGET_SUPERSPEED and max_speed = USB_SPEED_SUPER
then the result will be:
composite_driver.speed = min(USB_SPEED_HIGH, USB_SPEED_SUPER)
For patched code, composite_driver.speed = USB_SPEED_SUPER
>
>> For example, if you have a composite gadget where one of the function
>> drivers can handle SuperSpeed and the other can't go beyond high speed,
>> the overall gadget must never run faster than high speed.
>
> Shouldn't that be dealt in usb_add_function()? I cannot see any code that
> would do that here atm though.
>
--
Thanks
Yang Ruirui
next prev parent reply other threads:[~2011-08-19 1:47 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4E4B9D9C.2010607@linutronix.de>
2011-08-17 13:03 ` [PATCH] usb: gadget: get rid of USB_GADGET_DUALSPEED and USB_GADGET_SUPERSPEED Michal Nazarewicz
2011-08-17 14:20 ` Alan Stern
2011-08-17 14:27 ` Michal Nazarewicz
2011-08-17 14:47 ` Alan Stern
2011-08-17 15:07 ` Michal Nazarewicz
2011-08-17 16:25 ` Alan Stern
2011-08-17 14:36 ` Sergei Shtylyov
2011-08-17 14:45 ` Michal Nazarewicz
2011-08-17 15:33 ` [PATCHv2] " Michal Nazarewicz
2011-08-17 21:09 ` Alan Stern
2011-08-18 13:19 ` Michal Nazarewicz
2011-08-18 14:59 ` Alan Stern
2011-08-18 17:05 ` Michal Nazarewicz
2011-08-18 17:27 ` Alan Stern
2011-08-18 20:13 ` Michal Nazarewicz
2011-08-18 20:30 ` Alan Stern
2011-08-18 20:44 ` Michal Nazarewicz
2011-08-19 10:53 ` Michal Nazarewicz
2011-08-19 11:13 ` Sebastian Andrzej Siewior
2011-08-19 12:14 ` Michal Nazarewicz
2011-08-19 14:29 ` Alan Stern
2011-08-19 14:38 ` Michal Nazarewicz
2011-08-19 14:57 ` Alan Stern
2011-08-19 2:02 ` Yang Rui Rui [this message]
2011-08-19 12:17 ` Michal Nazarewicz
2011-08-18 3:01 ` Yang Rui Rui
2011-08-18 11:57 ` Michal Nazarewicz
2011-08-18 13:24 ` Dave Young
2011-08-18 13:41 ` Michal Nazarewicz
2011-08-19 22:32 ` [PATCHv3 0/4] Figuring out speed refactorisation Michal Nazarewicz
2011-08-19 22:32 ` [PATCHv3 1/4] usb: Provide usb_device_speed_name() function Michal Nazarewicz
2011-08-19 23:15 ` Felipe Balbi
2011-08-22 14:53 ` Michal Nazarewicz
2011-08-19 22:33 ` [PATCHv3 2/4] usb: gadget: replace "is_dualspeed" with "max_speed" Michal Nazarewicz
2011-08-19 23:28 ` Felipe Balbi
2011-08-23 13:48 ` Michal Nazarewicz
2011-08-23 13:58 ` Felipe Balbi
2011-08-23 14:15 ` Michal Nazarewicz
2011-08-23 14:37 ` Alan Stern
2011-08-23 14:58 ` Felipe Balbi
2011-08-23 15:07 ` Michal Nazarewicz
2011-08-23 15:11 ` Felipe Balbi
2011-08-23 15:26 ` Michal Nazarewicz
2011-08-23 17:19 ` Felipe Balbi
2011-08-23 18:44 ` Michal Nazarewicz
2011-08-23 15:43 ` Alan Stern
2011-08-23 17:21 ` Felipe Balbi
2011-08-23 18:00 ` Alan Stern
2011-08-23 19:05 ` Michal Nazarewicz
2011-08-23 20:49 ` Alan Stern
2011-08-24 8:56 ` Felipe Balbi
2011-08-24 13:10 ` Michal Nazarewicz
2011-08-24 14:31 ` Alan Stern
2011-08-24 14:53 ` Michal Nazarewicz
2011-08-24 15:15 ` Alan Stern
2011-08-24 15:25 ` Michal Nazarewicz
2011-08-24 23:04 ` Felipe Balbi
2011-08-25 12:46 ` Michal Nazarewicz
2011-08-25 12:53 ` Felipe Balbi
2011-08-24 22:57 ` Felipe Balbi
2011-08-23 15:05 ` Felipe Balbi
2011-08-23 15:30 ` Michal Nazarewicz
2011-08-19 22:33 ` [PATCHv3 3/4] usb: gadget: rename usb_gadget_driver::speed to max_speed Michal Nazarewicz
2011-08-19 23:31 ` Felipe Balbi
2011-08-20 2:34 ` Alan Stern
2011-08-22 10:42 ` Felipe Balbi
2011-08-19 22:33 ` [PATCHv3 4/4] usb: gadget: get rid of USB_GADGET_{DUAL,SUPER}SPEED Michal Nazarewicz
2011-08-20 13:41 ` Alan Stern
2011-08-22 14:51 ` Michal Nazarewicz
2011-08-22 15:03 ` Alan Stern
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=4E4DC418.8050009@tieto.com \
--to=ruirui.r.yang@tieto.com \
--cc=balbi@ti.com \
--cc=bigeasy@linutronix.de \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mnazarewicz@google.com \
--cc=ruirui.r.yang@tietoenator.com \
--cc=sshtylyov@mvista.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox