[U-Boot-Users] USB Uboot on OSK5912

Hunter, Jon jon-hunter at ti.com
Fri Jul 25 23:46:57 CEST 2008


Hello!

> > I am working on getting USB-uboot working on OSK5912.
> > from linux USB gadget "device controller drivers" (i.e.
> > kernel/drivers/usb/gadget/) it looks like
> > USB core for omap1510 and OSK5912 is same..But not sure, please confirm
>
> No idea. You will have to RTFM.

RTFM indeed ;-) However, sadly TI does not always make this easy as some of the documentation for these devices is only available under NDA...boo! If you are having problem locating the "fine manual" for OMAP1510 purposes you can refer to the OMAP5910 device as this is pretty much the same device. Documentation for the OMAP5910 can be found here:

http://focus.ti.com/docs/prod/folders/print/omap5910.html

Check out the OMAP5910 USB User Guide.

The good news...I actually looked into this sometime back and the OMAP5910/1510 and OMAP5912 are very similar. In fact if you do compare the register sets for the USB function in the 5910 and 5912 you should find that they are indeed the same. So no problems on using the USB code for the 1510 on the 5912.

Now one word of caution...when looking at this I noticed that in the file "drivers/usbdcore_omap1510.c" that there is the following code at line 1112:

        /* Set and check APLL */
        outw (0x0008, APLL_CTRL);
        UDCREG (APLL_CTRL);
        /* Set and check DPLL */
        outw (0x2210, DPLL_CTRL);
        UDCREG (DPLL_CTRL);

This is checking and setting the main PLL registers. This is bad for using on the 5912 as these devices do not run at the same speeds! So I would place a "#ifdef CONFIG_OMAP1510" around this code so it is not executed for the 5912. Also I don't even think that the APLL register exists for the 5912.

Finally, at line 1119 there is the following code:

        outw ((1 << 4) | (1 << 3) | 1, SOFT_REQ);

The SOFT_REQ register does slightly differ between the 5910 and 5912. Essentially the 5912 has the same bits as the 5910 but it also has additional bit fields that the 5910 does not have. Therefore, I would replace the above code with the following which will perform a read modify write:

        outw ((1 << 4) | (1 << 3) | 1 | (inw(SOFT_REQ)), SOFT_REQ);

I should get out my 5912osk and create an official patch for this. Looks like it could be useful.

Cheers
Jon




More information about the U-Boot mailing list