I’ve seen a lot of weird wiring in my tinkering but this absolutely sent me.
I’m not sure if the EC actually controls this, might be under OS control already (through the USB controllers).
I had hoped that maybe USB-A ports would be shut down already on suspend, but I just tried suspending the laptop (default Ubuntu 22.04 suspend, no specific “deep” sleep configured), and then it keeps power on the USB-A port, so I guess it does not shut down the port completely.
I hate how “USB controllers” is now such an overloaded term now. I am not aware of any controllers that can influence the PD connection. Even TBT CLd which to TBT looks like a “disconnected” state with absolutely no activity on the high speed lanes still is connected from the PD perspective.
If you look at the EC FW on github, the function pd_task in common/usb_pd_protocol.c does a lot of handling of PD driven events, including handling CC changes. Which #defines are set does make an impact on the functionality.
The way I thought it worked was that events go from the PD to EC which then passes it on to the Type C subsystem. Maybe the EC FW could be modified to send TCSS a disconnect event but that is a lot of FW and dependencies to figure out.