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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxx>  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!

--
With best wishes
Dmitry

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux