I am trying to connect a full-speed USB device directly to the USB-A port on a Gumstix Overo (OMAP3530, v3.1) with Tobi expansion board. I have to use a 2.6.35 Linux kernel. As it is now the USB port only supports high-speed devices through EHCI. The only way to connect a full-speed device is through a hub but that is undesirable for our design. It would be much more convenient if we could plug in the device directly.
I have been looking into enabling OHCI on the OMAP3530. It seems impossible to use both EHCI and OHCI at the same time, but we don't care about EHCI so it is OK to have only OHCI. I found this discussion:
http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/p/94945/345257.aspx
The instructions in that thread are somewhat vague but I tried to follow them. I disabled EHCI and enabled OHCI in the 2.6.35 kernel config (which has an explicit option for OMAP3530 OHCI support).
Next, in the file board-overo.c I replaced the call to “usb_ehci_init” with “usb_ohci_init(&ohci_pdata);”. I created the struct ohci_pdata as follows, based on the definition of ehci_pdata:
static const struct ohci_hcd_omap_platform_data ohci_pdata __initconst = {
.port_mode[0] = OMAP_OHCI_PORT_MODE_UNUSED,
.port_mode[1] = ?????,
.port_mode[2] = OMAP_OHCI_PORT_MODE_UNUSED,
.es2_compatibility = false
};
Mind the “?????”. I have no idea what to enter there. In ehci_pdata the value is “EHCI_HCD_OMAP_MODE_PHY”. Possible values are defined in usb.h:
enum ohci_omap3_port_mode {
OMAP_OHCI_PORT_MODE_UNUSED,
OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0,
OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM,
OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0,
OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM,
OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0,
OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM,
OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0,
OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM,
OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0,
OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM,
};
I have no idea what all these options mean and what could be the correct one. Given the PHY value used for EHCI I already tried the four PHY options, with as only result always the same kernel panic. It is exactly the same kernel panic as in this (dead-end) discussion: http://e2e.ti.com/support/embedded/f/354/p/58262/208838.aspx
I'm not going to try the TTL values because it takes ages to rebuild and reinstall the kernel. So, two questions:
- What is the correct value for port_mode[1]?
- Do I need to do something else to get OHCI working?
Alexander