I am using the TUSB1210 transceiver to connect to USB port 2 (HSUSB2) on the OMAP3503 processor. We find that occasionally after disconnecting and reconnecting a USB device from the transceiver that the transceiver can get into a state where:
Because the DIR signal stays high the OMAP3503 processor can no longer communicate with the transceiver. We can return the transceiver to normal operation by temporarily asserting the RESETB signal.
We are looking for a way to return the transceiver to normal operation without using the RESETB signal.
The ULPI specification states that the USB transceiver will keep the DIR signal high in low power mode, Full Speed/Low Speed Serial Mode, and if the ULPI interface is not usable. According to the specification, asserting the STP signal should return the USB transceiver to normal operation in both low power and Full Speed/Low Speed Serial Modes. However, we found that when we use the alternate function of the STP signal on OMAP3503 to assert STP that the DIR signal becomes low for 10ns, high for 40ns, low for 10ns, high for 40ns and so on until we return STP to its normal function. After this STP goes low again and DIR goes high again.
Does anybody know why DIR would remain high even after STP is temporarily asserted? If the ULPI interface was not usable I would suspect that DIR would not go low at all, but it fluctuates between low and high when STP is asserted.
Thanks!
Could you please describe how do you perform the disconnect (manual plug/unplug or SW)?
We do not suspect that this reported issue is due to Host disconnect (since Host disconnect is directly covered by USB2.0, the Host stops sending SOF and after 3ms the remote Device times out and disconnects).Instead I suspect the disconnect issue reported is some abrupt stopping of USB communication by software which leaves the Device PHY internal state-machine stuck waiting for an end-of-packet which never arrives.
Best Regards,FabianKindly click the Verify Answer button on this post, if it answers your question.
Thanks for the response Fabian.
We are manually plugging and unplugging a USB memory stick.
A few other details:
If the PHY is waiting for an end-of-packet which is not arriving, could we send an end-of-packet to get out of this state? Could we send this packet using USB port 2 (HSUSB2) signals?
Thank you.
zoomedout.png:
zoomedin.png:
We do not suspect that this reported issue is due to Host disconnect (since Host disconnect is directly covered by USB2.0, the Host stops sending SOF and after 3ms the remote Device times out and disconnects). Instead, we suspect the disconnect issue reported is some abrupt stopping of USB communication by software which leaves the Device PHY internal state-machine stuck waiting for an end-of-packet which never arrives.
We would also provide the customer with the recommended method for a Device to disconnect correctly:
– Plug or cable disconnects from Host, DP/DM disconnects, VBUS remains
Thank you Fabian.
Based on the voltage levels of the data signals it seems the TUSB1210 transceiver is hung waiting for an end-of-packet which it never receives.
Measuring voltages on the data signals of TUSB1210 show the following. Note that in this problem state these voltages do not change. I assume this means that the transceiver is sending the same Receive Command Byte (RX CMD) over and over again.
According to the ULPI specification, this means:
Functional. after.txt is showing value after the reset meaning that the device come back in is default state.
Hi Fabian. Is it OK to leave the PHY in its default state, or should the PHY be manually configured so it matches 6712.before.txt? If so, should the PHY be configured using the OMAP INSNREG05_ULPI register or using OMAP registers within the HSUSB ULPI register space (ie. registers at addresses 0x48062800 to 0x4806283F)?
Thanks again!