On Wed, Dec 07, 2022 at 06:00:41PM -0800, Badhri Jagan Sridharan wrote: > On some of the TCPC implementations, when the Type-C port is exposed > to contaminants, such as water, TCPC stops toggling while reporting OPEN > either by the time TCPM reads CC pin status or during CC debounce > window. This causes TCPM to be stuck in TOGGLING state. If TCPM is made > to restart toggling, the behavior recurs causing redundant CPU wakeups > till the USB-C port is free of contaminant. > > [206199.287817] CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING, polarity 0, disconnected] > [206199.640337] CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING, polarity 0, disconnected] > [206199.985789] CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING, polarity 0, disconnected] > ... > > TCPM invokes is_potential_contaminant callback to allow low level chip > drivers to monitor TCPM state machine transitions and notify TCPM when > the Type-C port needs to be checked for potential contaminant presence. > TCPCs which do have the needed hardware can implement the check_contaminant > callback which is invoked by TCPM to evaluate for presence of contaminant. > Lower level TCPC driver can restart toggling through TCPM_PORT_CLEAN event > when the driver detects that USB-C port is free of contaminant. > > Signed-off-by: Badhri Jagan Sridharan <badhri@xxxxxxxxxx> > Change-Id: I136d788bb46d871d12e64bd73fd50a77b4659dbf > --- Always run checkpatch.pl on your patches so you don't get a grumpy maintainer asking why you didn't run checkpatch.pl on your patches :(