
On 07/02/2012 16:13, Stefano Babic wrote:
This is a strange effect. I have tested setting OMAP_EHCI_PORT_MODE_PHY (of course the phy is on another port), and everything works. However, after setting port_mode[2] to OMAP_USBHS_PORT_MODE_NONE, it does not work anymore and no storage are detected. I have not an explanation, maybe some of you can give some hints. Really, the change should have no effect...
I get the cause in ehci-omap.c:
rev = readl(&uhh->rev); if (rev == OMAP_USBHS_REV1) { if (is_ehci_phy_mode(usbhs_pdata->port_mode[0])) clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS); else setbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
if (is_ehci_phy_mode(usbhs_pdata->port_mode[1])) clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P2_BYPASS); else setbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
if (is_ehci_phy_mode(usbhs_pdata->port_mode[2])) clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P3_BYPASS); else setbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS); ^--but these should be cleared for port 0
So if PORT2 is set to unused, as it should be and discovered by Igor, omap_ehci_hcd_init sets OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS against port 0.
What do you think about ?
Stefano