Other Parts Discussed in Thread: TUSB8041, TUSB546-DCI, HD3SS3220
I'm encountering an issue revolves around never regaining connection to a downstream device at the port controller by the TPS65981 after the upstream connection is lost and re-established. For instance, in the diagram below if you disconnect and reconnect cable 1 the host will usually not rediscover the device. However, if cable 1 is connected prior to connecting cable 2, there isn’t any issue. In a failure condition I can only recovery by reconnecting the device at the DFP.
Host <-----cable 1-----> UFP <-> Hub(TUSB8041) <-> DFP (TUSB546-DCI controlled by TPS65981) <-----cable 2-----> Device
There are 3 other DFPs coming off this hub, which all use a different mux/controller (HD3SS3220). None of these DFPs experience this issue. Additionally, the problem has been observed with multiple hosts and devices. In fact, the problem seems to be somewhat dependent on a race condition in some form. For instance, I can reliably replicate problem when plugged directly into the host, which is a laptop, but when I route it through the laptop dock I don’t see an issue. Additionally, there have been a very small number of instances when the device is rediscovered after a UFP reconnect in a previously failing case.
I have checked the DFP mux and it maintains it's correct orientation when the UFP is disconnected. Nothing seems strange here.
I have the following questions that might help provide some insight into the issue:
1. Are there any firmware settings for the TPS65981 that are not accessible in the Application Customization GUI? In an effort to troubleshoot I’ve played around with most available firmware settings. This includes changes to USB Suspend options since we originally thought there were issues with the way the host was commanding suspend and wake to the device. If there are any more private settings to influence I’d be interested in learning more.
2. Are there any documented known issues with this PD controller? Any known issues document would be helpful here.
3. Are there any private GPIO events available that are not already accessible in the Application Customization GUI? Ideally, I’m looking for a GPIO event that would identify when an upstream connection was re-established. This might make is easier to manually trigger a refresh of the downstream connection when the upstream cable is reconnected. Right now there isn’t anything available in the firmware settings like this. The PD controller seems to have no knowledge of what’s happening upstream.