Skip to contentSkip to conversation

USB device configuration

U-Boot-Users Rodolfo Giometti 2 participants 3 messages May 9, 2007

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw
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 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

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 the udc_enable() and then the function udc_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
#2 lore raw
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, init

udc 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