This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Does ARM (OMAP L138) support high speed USB ?

Other Parts Discussed in Thread: OMAP-L138

Hi,

I have come across 2 versions of this document "OMAP-L138 Low-Power Applications Processor".

The older version (SPRS586A–JUNE 2009–REVISED AUGUST 2009 ):

6.19 Universal Serial Bus OTG Controller (USB0) [USB2.0 OTG]
The USB2.0 peripheral supports the following features:
· USB 2.0 peripheral at speeds high speed (HS: 480 Mb/s - C6747 only) and full speed (FS: 12 Mb/s)

The newer version (SPRS586B – JUNE 2009 – REVISED AUGUST 2010):

6.20 Universal Serial Bus OTG Controller (USB0) [USB2.0 OTG]
     The USB2.0 peripheral supports the following features:
     • USB 2.0 peripheral at speeds high speed (HS: 480 Mb/s) and full speed (FS: 12 Mb/s)

The discrepancy bothers me. Would like to confirm, does ARM (OMAP L138) support high speed (480 Mb/s) USB ?

Our current project is relying on ARM to be the high speed USB device. If this is not the case, then OMAP L138 will not be suitable for the project anymore.

rgds,

kc Wong

  • Kc Wong,

    L138 does support USB2.0 (bus) speeds (480Mbps) when accessed through ARM/DSP.

    Pl. note that 480Mbps is the theoretical max over usb2.0.  Actual throughput that can be achieved would be lower than that and depends on you usb (class) application design and implementation.

    Pl. let us know more on your usb (class/application) use case(s).  This info would be invaluable to assist you further in making the right choices for your solution/product.

    regards

    swami

  • Hi Swami,

    Thanks for reply.

    So, I would assume the older version of document is not correct. And I would be able to use it as high speed (480Mbps) device for ARM as well.

    FYI, it is for Test & Measurement Class (USB TMC).

    rgds,

    kc Wong

  • Kc Wong,

    I believe the original text is also correct (when it talked about the DSP only configuration) but I can understand the ambiguity that it would have created in a ARM + DSP (L138) config.  There are DSP only parts were in High Speed 480Mbps is not supported.  That line in the original spec might have been put to clarifiy that.

    For L138 USB2.0 High Speed (480Mbps) is always supported either from Arm or DSP.

    Now coming to the 480Mbps need for TMC class is concerned it will be dependant on how the class implementation is done over ARM (Linux).  I now for a fact that L138 USB can hit max throughput (that can be achieved practically ~40Bps and higher) provided the implementation of the class is done to sustain such high throughputs.

    regards

    swami

  • Hi Swami,

    Thanks for the clarification.

    But, I don't understand about the concern you mentioned on the TMC class.

    rgds,

    kc Wong

  • Kc Wong,

    I was just trying to clarify that provided the implementation of TMC class can sustain high throughputs L138 usb can deliver high throughputs.

    regards

    swami

  • OK. May I know does TI provide an generic (not specific to any class) OTG USB sample driver for L138 ?

  • Low level core driver can be located at "drivers/usb/musb" directory within the Linux kernel installation directory.  Beyond that you could refer to gadget_zero + usbfs class implementation under linux for further reference from class driver perspective.

    regards

    swami

  • Just to double confirm "drivers/usb/musb" directory you referring is within the Linux kernel installation directory, not U-Boot installation directory ?

    Because I found  "drivers/usb/musb" directory  in U-Boot installation directory as well, and file contents are not the same.

    rgds,

    kc Wong

  • Hi Swami,

    When I compile the Linux kernel, I notice only files like musb_virthub.c, musb_host.c are being compiled.

    Files like musb_gadget_ep0.c, musb_gadget.c are not being compiled. As I look at it the standard device request (USB, Rev 2.0, Chapter 9) are being handled in musb_gadget_ep0.c.

    Does that mean the kernel configuration is by default as USB host ?

    To look at the USB device implementation, I should look at files like musb_gadget_ep0.c, musb_gadget.c ?

    rgds,

    kc Wong

  • Wong,

    Pl. confirm the usb mode under usb menu config before you compile.

    I believe it is compiling either as host or the gadget as module.  Can you confirm that the usb gadget mode is selected in the menuconfig and that you have the related kernel class drivers compiled into the kernel or compiled as modules.

    regards

    swami

  • Ya, you are right. USB gadget support is not selected.

    --- USB support

    <*> Support for Host-side USB

    < > USB Gadget Support --->

    But, there is a build error after I selected "USB Gadget Suppor". I am not sure I have selected the correct one ?

     

    kiunwong@ubu1004:~/DaVinci-PSP-SDK-03.20.00.14/src/kernel/linux-03.20.00.14$ make uImage ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
    scripts/kconfig/conf -s arch/arm/Kconfig
      CHK     include/linux/version.h
      CHK     include/generated/utsrelease.h
    make[1]: `include/generated/mach-types.h' is up to date.
      CALL    scripts/checksyscalls.sh
      CHK     include/generated/compile.h
      GZIP    kernel/config_data.gz
      IKCFG   kernel/config_data.h
      CC      kernel/configs.o
      LD      kernel/built-in.o
      CC      drivers/usb/gadget/r8a66597-udc.o
    drivers/usb/gadget/r8a66597-udc.c: In function 'r8a66597_probe':
    drivers/usb/gadget/r8a66597-udc.c:1585: error: implicit declaration of function 'IS_ERR'
    drivers/usb/gadget/r8a66597-udc.c:1588: error: implicit declaration of function 'PTR_ERR'
    make[2]: *** [drivers/usb/gadget/r8a66597-udc.o] Error 1
    make[1]: *** [drivers/usb/gadget] Error 2
    make: *** [drivers] Error 2