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.

OMAP3730: Issues with USB 1.1 compliance

Other Parts Discussed in Thread: OMAP3530, TPS65950

I am working with a custom OMAP3 based platform.  The hardware design is close to that of the OMAP3EVM.  This custom platform is compatible with both the OMAP3530 and the OMAP3730 processors.

Objective

The OMAP's OTG port (HSUSB0) has to be configured for device functionality.  The objective is to enable USB Gadget driver on this port and have either CDC Ethernet or RNDIS supported on it, thereby providing a TCP/IP link between the host system and the target platform.

 

Hardware Interface

OMAP's OTG port on the custom platform is interfaced to USB tranceiver on TPS65950 over the ULPI interface

 

Software Setup

1. Host PC

  • runs on Ubuntu 9.04 (kernel version 2.6.28-11)

2. Target platform

  • runs on linux-2.6.32
  • custom busybox based Root File System
  • Kernel source
    • base: git://arago-project.org/git/projects/linux-omap3.git
    • tag: v2.6.32_OMAPPSP_03.00.01.06  

 


Test Setup-1

  • OMAP3 Based custom platform
  • Host PC running Ubuntu 9.04
  • Connect the OTG port termination on the target board to the USB port on the Host PC
  • Host PC detects the custom platform as CDC Ether or RNDIS (whichever is configured on the target)
  • Setup an IP address for usb0 interface on either side
  • Run 'ping' on either side to test the link

Support for CDC Ethernet and RNDIS has been tested and proven working with both OMAP3530 and 3730 based custom boards.  

 

Issue

While testing for compatibility with USB 1.1 compliant host, the OMAP3730 based custom boards fail.

In order to test support for compliance with USB 1.1 host, Test Setup-1 is modified as follows:

Test Setup-2

  • OMAP3 Based custom platform
  • Host PC running Ubuntu 9.04
  • Externally powered USB 1.1 hub
  • Connect the OTG port termination on the target board to a port on the USB Hub
  • Connect the USB termination on the host PC to a port on the USB Hub
  • Host PC detects the custom platform as CDC Ether or RNDIS (whichever is configured on the target)
  • Setup an IP address for usb0 interface on either side
  • Run 'ping' on either side to test the link

Though the remote host (linux PC) has detected the target platform and accepts an IP address for the usb0 interface, when a ping is initiated, it reports failure saying that the remote system is not reachable.

Note:

  1. This problem in Test Setup-2 is seen only with the OMAP3730 based platforms and not seen with the OMAP3530 platforms.
  2. In Test Setup-2, if the USB 1.1 hub is replaced with USB 2.0 hub, tests (ping) works on the OMAP3730 platform.

Log of Events
In the log of events shown below, the Linux kernel for the custom
platform has been configured with support for CDC Ethernet Gadget driver.
< Step 1 >
< Insert the USB cables to between hub, target, Linux host PC >
On the Target Platform
              <-------snip------->
g_ether gadget: full speed config #1: CDC Ethernet (ECM)
<6>g_ether gadget: full speed config #1: CDC Ethernet (ECM)
<7>musb_hdrc periph: enabled ep2in for int IN, dma, maxpacket 16
<7>g_ether gadget: init ecm
<7>g_ether gadget: notify connect false
<7>g_ether gadget: notify speed 9728000
<7>g_ether gadget: activate ecm
<7>musb_hdrc periph: enabled ep1in for bulk IN, dma, maxpacket 64
<7>musb_hdrc periph: enabled ep1out for bulk OUT, dma, maxpacket 64
<7>usb0: qlen 2
<7>g_ether gadget: ecm_close
<7>g_ether gadget: notify connect false
<7>g_ether gadget: notify speed 9728000
On the Host System
              <-------snip------->
usb 1-1.2: new full speed USB device using ehci_hcd and address 48
usb 1-1.2: configuration #1 chosen from 1 choice
hub 1-1.2:1.0: USB hub found
hub 1-1.2:1.0: 7 ports detected
usb 1-1.2.7: new full speed USB device using ehci_hcd and address 49
usb 1-1.2.7: not running at top speed; connect to a high speed hub
usb 1-1.2.7: configuration #1 chosen from 1 choice
usb0: register 'cdc_ether' at usb-0000:00:1a.0-1.2.7, CDC Ethernet Device, 2a:71:83:21:b6:f6
usb0: no IPv6 routers present
< Step 2 >
< Setup IP address for usb0 on Linux host and target >
Events from Target
<7>usb0: eth_open
<7>usb0: eth_start
<7>g_ether gadget: ecm_open
<7>g_ether gadget: notify connect true
<7>g_ether gadget: notify speed 9728000
No events on Host.
< Step 3 >
< Ping the target platform from the host Linux PC >
Events from Target
<7>g_ether gadget: suspend
<7>g_ether gadget: reset config
<7>g_ether gadget: ecm deactivated
<7>usb0: gether_disconnect
<7>g_ether gadget: suspend
<7>g_ether gadget: suspend
<7>g_ether gadget: suspend
<7>g_ether gadget: suspend
<7>g_ether gadget: suspend
g_ether gadget: full speed config #1: CDC Ethernet (ECM)
<6>g_ether gadget: full speed config #1: CDC Ethernet (ECM)
<7>musb_hdrc periph: enabled ep2in for int IN, dma, maxpacket 16
<7>g_ether gadget: init ecm
<7>g_ether gadget: notify connect true
<7>g_ether gadget: notify speed 9728000
<7>g_ether gadget: activate ecm
<7>musb_hdrc periph: enabled ep1in for bulk IN, dma, maxpacket 64
<7>musb_hdrc periph: enabled ep1out for bulk OUT, dma, maxpacket 64
<7>usb0: qlen 2
<7>g_ether gadget: ecm_open
<7>usb0: eth_start
<7>g_ether gadget: notify connect true
<7>g_ether gadget: notify speed 9728000
Events from Host
usb0: kevent 1 may have been dropped
hub 1-1.2:1.0: port 7 disabled by hub (EMI?), re-enabling...
usb 1-1.2.7: USB disconnect, address 19
usb0: unregister 'cdc_ether' usb-0000:00:1a.0-1.2.7, CDC Ethernet Device
hub 1-1.2:1.0: Cannot enable port 7.  Maybe the USB cable is bad?
usb 1-1.2.7: new full speed USB device using ehci_hcd and address 21
usb 1-1.2.7: not running at top speed; connect to a high speed hub
usb 1-1.2.7: configuration #1 chosen from 1 choice
usb0: register 'cdc_ether' at usb-0000:00:1a.0-1.2.7, CDC Ethernet Device, 7a:44:31:b6:30:d9
Questions
Has anyone
  1. seen similar issues (related to slower USB interfaces) with the OMAP3730?
  2. tested USB Gadget functionality with a slower USB host system?
  3. tested USB Host port on OMAP3730 with slower USB peripherals (Eg. USB 1.1 compliant memory disk?)
Any pointers would be of great help.
Thank you for your time.