Other Parts Discussed in Thread: TPS65982
We have a design with a tps65981.
Used as power source and supports display-port alternate mode sink.
Application Customization Tool v6.1.1 (11-OCT-2019)
firmware: build-id : db9eba504c5802e8f5c4a95df91aa67e9c00f50c_10032018
firmware: device-info : TPS65982 HW0011 FW0001.12.09 ZTBT1
Register 0x28: (System Configuration)
PortInfo : 101b Source/Sink. Power Role = Source. Data Role = DFP. PR_Swap supported. DR_Swap supported
Register 0x29: (Control Configuration)
InitiateSwapToUFP : yes
ProcessSwapToUFP : yes
This works fine, and I have made a driver which handles interrupts from the tps65981.
Cable connect/direction and alternate mode active and such.
However, we have seen some cases where the tps65981 suddenly nacks on i2c access.
My feeling is that this happens at cable connect/plug-in.
The tps65981 chip do return to its initial registers settings as provided by the firmware.
This can be observed in register 0x16 (IntMask1) since I enable some interrupts during startup of the driver.
My theory is that the tps65981 firmware "crashes"/"reboots" on its own.
It looks very much the same as issuing a "GAID" command manually.
I have been able to recreate something like this by using a USB2.0 (type-a) to USB-C cable:
State of cc pins (no pd communication)
C_CCn Pin State (0x69)
TypeCPortState : SNK: Attached.SNK (0x22)
CC2PinState : Not connected (0x00)
CC1PinState : 3.0A Advertisement detected (Sink Only) (0x05)
CCpinForPD : C_CC1 is CC pin for PD communication (0x01)
Now I toggle the VBUS 5V on/off from the USB2.0 connector side. Basically generating a "storm" of cable connect/disconnect.
For instance 500ms on, 500ms off.
it dosen't take long before the tps65981 "reboots".
Martin