USB device configuration
Hello,
during my PXA27x USB device support developing adventure I notice that usbtty calls the functions:
udc_init: PXA27x usbd start
udc_setup_ep: setting up endpoint addr 0
udc_enable: enable device a2077f74, status 0
udc_connect:
udc_setup_ep: setting up endpoint addr 1
udc_setup_ep: setting up endpoint addr 82
udc_setup_ep: setting up endpoint addr 83
Looking at PXA27x manual I read that I have to setup the endpoints and __then__ enable UDC for normal operations! But looking above I see that u-boot calls before the udc_enable() and then the function udc_setup_ep()...
There are something wrong or I haven't understood well how UDC support works? =:-o
Thanks,
Rodolfo
Signature · 4 lines
GNU/Linux Solutions e-mail: giometti at enneenne.com Linux Device Driver giometti at gnudd.com Embedded Systems giometti at linux.it UNIX programming phone: +39 349 2432127
Quoted 13 lines · Rodolfo Giometti
Hello,
during my PXA27x USB device support developing adventure I notice that usbtty calls the functions:
udc_init: PXA27x usbd start
udc_setup_ep: setting up endpoint addr 0
udc_enable: enable devicea2077f74, status 0
udc_connect:
udc_setup_ep: setting up endpoint addr 1
udc_setup_ep: setting up endpoint addr 82
udc_setup_ep: setting up endpoint addr 83
Quoted 4 lines
Looking at PXA27x manual I read that I have to setup the endpoints and
__then__enable UDC for normal operations! But looking above I see that u-boot calls before theudc_enable()and then the functionudc_setup_ep()...
I think that the correct sequence into usbtty should be:
@@ -554,11 +554,11 @@ int drv_usbtty_init (void)
usbtty_init_strings ();
usbtty_init_instances ();+ usbtty_init_endpoints ();
+
udc_startup_events (device_instance);/* Enable dev, init udc pointers */
udc_connect (); /* Enable pullup for host detection */
- usbtty_init_endpoints ();
-
/* Device initialization */
memset (&usbttydev, 0, sizeof (usbttydev));Comments?
Rodolfo
Signature · 4 lines
GNU/Linux Solutions e-mail: giometti at enneenne.com Linux Device Driver giometti at gnudd.com Embedded Systems giometti at linux.it UNIX programming phone: +39 349 2432127
Quoted 16 lines · On Wed, 9 May 2007 11:19:31 +0200 Rodolfo Giometti <[email protected]>…
I think that the correct sequence into usbtty should be:
(quoted diff) +2
-0@@ -554,11 +554,11 @@ int drv_usbtty_init (void) usbtty_init_strings (); usbtty_init_instances (); + usbtty_init_endpoints (); + udc_startup_events (device_instance);/* Enable dev, initudc pointers */
udc_connect(); /* Enable pullup for host
detection */(quoted diff) +0
-2- usbtty_init_endpoints (); - /* Device initialization */ memset (&usbttydev, 0, sizeof (usbttydev));
Quoted 1 line
Comments?
Greetings Rodolfo.
Apologies, for the late response, sometimes I work/sleep without checking my home mail and missed this for ~ 48 hours.
Umm, *provisionally* this appears not to be a problem for usbdcore_mpc8xx.c... just having a quick scan of usbdcore_omap1510 I don't immediately see a way that code could be broken by such a change... *then again* keep in mind when I was mucking with the usbtty stuff, I specifically tried *not* to change the order that things happen in, for fear of breaking other people's - omap stuff.
Perhaps someone using the omap1510 in USB device mode would be in a better position to make a statement on that.
In this specific instance though we _should_ be safe enough. Even still when you submit your modifications to the list, I'll ensure I do a test run from the POV of usbdcore_mpc8xx, just to make sure your code doesn't break my code !
Best,
Bryan