I'm copying this description verbatim from https://e2e.ti.com/support/interface/f/138/t/750241?TPS65981-PD-negotiation-loop-with-Google-Pixel because my issue is incredibly identical to that one, which was closed without being resolved. PD logs on my side look the same as in the original post. I am using a total phase pd analyzer.
------
I'm working on a design which is a UFP. When it is connected to a Samsung Galaxy S9 smart phone, I see the TPS65981 negotiate for the phone to be the power source based on my Sink PDO, as expected:
I get the Source_Capabilities, Request, Accept, and PS_RDY, all with GoodCRC.
However, when I connect the same board to a Google Pixel 3 phone, I get into a strange loop:
The phone sends out the Source_Capabilities message, then the TPS65981 responds with a GoodCRC, followed by a Request, followed by what appears to be a spurious GoodCRC? The phone never issues a GoodCRC, but it does attempt to send an Accept message, which is never acknowledged by the TPS65981. Since the Accept doesn't get a GoodCRC response, the phone starts generating Source_Capabilities messages and the whole process repeats for potentially thousands of messages. The fifth column is the message id; it keeps cycling between 0 and 1.
Eventually, somebody triggers a hard reset of the interface. I'm not sure if it's the phone or the TPS65981. After that, the negotiation works as expected:
It can take up to a minute for the phone to successfully establish a connection. Any ideas on what could be causing this?
I'm using version 6.1.1 of the Application Customization Tool.