Hi,
We have a design that is essentially a USB hub as shown in the attached block diagram. The essential behaviour required is:
o The upstream facing port is permanently connected to a battery powered Host via a captive cable. The Host is always required to be a DFP.
o The two downstream facing ports have identical functionality and can be either connected to a USB-PD power adaptor (like an Apple 65W USB-C power adaptor) or to a USB Mass Storage device like a USB3.1 SSD drive.
The normal use case is that:
o A USB-C power adaptor is plugged into DS1 which powers the hub and charges the Host while the Host (always as a DFP) has USB data connectivity to the USB Mass Storage device.
o If the USB-C power adaptor loses mains power, or its USB-C cable is unplugged from the hub, the Host is required to do a Fast Role Swap to switch from charging to sourcing 5V@3A to maintain power to the hub and also maintain uninterrupted USB data connectivity with the USB Mass Storage device.
o When mains power is restored to the USB-C power adaptor, or its USB-C cable is plugged back into the DS1 port, the Host should swap back to being charged while it maintains uninterrupted USB data connectivity with the USB Mass Storage device.
The issue I am seeing is that when the USB power adaptor is attached, the correct behaviour is normally seen with the Host swapping to being charged and the data connectivity of the Host to the USB Mass Storage device is maintained uninterrupted. However, sometimes it gets into a state where incorrect behaviour is seen with the data connectivity from Host to USB Mass Storage device is lost when the Host swaps to being charged and then the USB Mass Storage device re-mounts automatically a couple of seconds later. It seems to remain in this odd state but if a "PD Hard Reset" 4CC command is issued to the Host PD Controller via I2C, the normal behaviour is restored.
Unfortunately, if I put a PD protocol analyser (a Lecroy T2P) in between the Host and its PC controller, it seems to change the behaviour itself, so I am unable to check what PD messaging is going on to try and debug the issue.
I have attached a scope screenshot of the "correct" behaviour and one of the "incorrect" behaviour. I have also attached the TPS65987D Application Customisation Tool project file for the Host PD controller.
There appears to be no issue with continuity of power for the hub and muxes in the USB data paths so I suspect that the Host is temporarily switching data role from being a DFP to a UFP when the power role swap from source to sink occurs.
So any advice would be much appreciated on:
o Is there anything in the power architecture or use of TPS65987D power path switches shown in the block diagram that could be an issue?
o Are the project customisation settings correct to achieve the desired behaviour for keeping the Host as a DFP data role while the power role swaps from being a source to a sink for charging?