[PATCH 15/15] pxa2[57]x_udc: drop gpio_pullup handling

Felipe Balbi balbi at ti.com
Wed Jul 6 03:34:02 EDT 2011


Hi,

On Wed, Jul 06, 2011 at 11:30:52AM +0400, Dmitry Eremin-Solenikov wrote:
> On 06.07.2011 11:20, Felipe Balbi wrote:
> >hi,
> >
> >On Wed, Jul 06, 2011 at 12:58:48AM +0400, Dmitry Eremin-Solenikov wrote:
> >>On 7/6/11, Robert Jarzmik<robert.jarzmik at free.fr>  wrote:
> >>>On 07/05/2011 03:08 PM, Dmitry Eremin-Solenikov wrote:
> >>>>Now as all drivers were converted to using gpio-vbus, drop gpio-pullup
> >>>>handling from pxa UDC drivers, thus simplifying them a bit.
> >>>
> >>>Is this patch compliant with USB 2 specification regarding maximum time
> >>>between pullup triggering and UDC ready to answer the "RESET" packet and
> >>>be assigned an address ?
> >>>
> >>>This is the sequence I'm worried about :
> >>>   (1) The gpio-vbus is loaded
> >>>   (2) The pxa27x_udc is loaded
> >>>   (3) USB cable is plugged
> >>>       =>  VBUS is sensed
> >>>   (4) gpio-vbus pulls up the D+ (Dmitry, is that right ?)
> >>>   (5) the host waits for UDC to settle (100 ms ?)
> >>>   (5) set address packet(s) are sent from host to UDC
> >>>   (6) UDC is not enabled, as no gadget is registered
> >>>       =>  UDC doesn't answer
> >>>       =>  usb host cannot assign it an address
> >>>   (7) a gadget is loaded (g_ether for example)
> >>>       =>  UDC is enabled, but too late
> >>>
> >>>Alan, Gregh, could you confirm point (5) about a maximum time between D+
> >>>line activation and UDC duty to repond to "set address" packets, as well
> >>>as the consequence of point (6) where the usb device is rejected because
> >>>no address could be assigned ?
> >>>
> >>>Dmitry, could you confirm the the D+ pullup is done at point (4) ?
> >>
> >>No, I can't confirm this. IIUC, evrything happens in abit different way:
> >>(4) trancseiver notifies udc about VBUS sense
> >>(5) a gadget is loaded (g_ether for example)
> >>(6) gadget asks udc to enale  pullup
> >>(7) udc tells gpio_vbus to enable pullup.
> >
> >yeah, with udc-core.c we only enable pullup after gadget driver is
> >loaded.
> >
> >290                 ret = bind(udc->gadget);
> >291                 if (ret)
> >292                         goto err1;
> >293                 ret = usb_gadget_udc_start(udc->gadget, driver);
> >294                 if (ret) {
> >295                         driver->unbind(udc->gadget);
> >296                         goto err1;
> >297                 }
> >298                 usb_gadget_connect(udc->gadget);
> >
> >but this is the new style bind() and many UDCs still need to be
> >converted.
> 
> This was working before the udc-core. If it doesn't work now for
> unconverted drivers (PXA e.g.) that's really a huge regression!

the difference is that before every UDC had to implement that by itself
and now we're moving the common parts to a generic layer. If your UDC
already implemented it this way when exporting
usb_gadget_probe_driver(), then no changes for you, but I guarantee
there where UDCs which didn't mind being careful with data pullups and
would connect even though a gadget driver was nowhere to be seen ;-)

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110706/a135c906/attachment.sig>


More information about the linux-arm-kernel mailing list