Summary:
I'm seeing this USB PHY Intermittently staying in Electrical Idle for about 4.2 ms after instructing the PHY into Transmit mode by changing TX_ELECIDLE to "0" with TX_DETRX_LPBK=0 in Power State =P0. Has anybody seen this issue or is it already a know issue in the TI PHY?
Details:
When the LTSSM is in Polling LFPS in USB 3.0, the PHY is in P0 with TX_ELECIDLE =1 and TX_DETRX_LPBK alternating between 0 and 1 (See Table 5-3: PIPE Control Pin Matrix). Following satisfying the condition to exit Polling LFPS to go to Polling RXEQ, the PHY Power State is kept in P0 and TX_ELECIDLE = 0 and TX_DETRXLPBK = 0 to put the PHY into the Transmit Mode. This works most of the times and the USB partners successfully train themselves with TSEQ, TS1, and TS2 patterns, ending up in U0. However, intermittently, every 10 to 50 times resetting the USB device, that has the TI TUSB1310A PHY, I see a scenario in which the TI PHY gets stuck in Electrical Idle when it is instructed to go into Transmit Mode. This condition lasts for about 4.2 ms at which time I see either TS1 or TS2 patterns on the TX+- Differential Drivers lanes, i.e., the entire TSEQ pattern provided by the MAC to the PHY is missed and most or all of TS1 patterns are also not seen on the TX+- lanes, which results in unsuccessful operation of the USB partners getting into U0.
I'm assuming, according to the PIPE Spec, that the change of the "modes" in the Power State =P0 can be immediate, and hence, the change in TX_ELECIDLE and TX_DETRX_LPBK (and, hence, the Idle and Transmit Modes) are not qualified in my MAC in any way (like PHY_STATUS) except the LTSSM state's need to move from Polling LFPS to Polling RXEQ.
Has anybody ever seen this issue or is this a known issue in the TI PHY? I have trace captures from the failing condition that I can share, but it is pretty much what I have described above. Does anybody have an idea why the Electrical Idle (failing) always takes about 4.2 ms? Is this related to the PHY Transceivers in the TX Differential Driver not turning on for some reason?
Thanks!