Hi,
We have an custom board based on AM3356.
In this OTG port is not working as it expected to be. if i configure the port as an permanent host then it works. If I configure the port as an OTG port in software then, it will not even recognize the device connected/Enumeration is not happening.
Case 1: I tested by connecting the ID pin to ground(1K pulldown resistor) and configured as Host mode.
In this case host mode works always. I can connect the mass storage device.
Case 2: Connect the ID pin to VCC(1K pullup resistor) and configured as device mode.
In this case device mode works always. I can connect it to PC and do TFTP.
Case 3 : Connected the IP pin to VCC(1K pullup resistor) and configured as OTG mode.
In this case once after linux is up if I use the converter cable which will ground the ID pin and make as host. Then no enumeration will happens.
I probed the ID pin signal it is held low when connect the cable.
One more hint is,
We are not using the Power control it means always 5 Volt is present. Also we found in musb_dsps.c(We are using SDK7.0) following comments, is this mean by USB controller is not getting proper ID pin IRQ?
/*
* DRVVBUS IRQs are the only proxy we have (a very poor one!) for
* DSPS IP's missing ID change IRQ. We need an ID change IRQ to
* switch appropriately between halves of the OTG state machine.
* Managing DEVCTL.SESSION per Mentor docs requires that we know its
* value but DEVCTL.BDEVICE is invalid without DEVCTL.SESSION set.
* Also, DRVVBUS pulses for SRP (but not at 5V) ...
*/
Rgds
chandra.