On 2/1/21 2:02 AM, Badhri Jagan Sridharan wrote: > While in source mode, vbus could be shutoff by protections > circuits. TCPM does not move back to toggling state to > re-initiate connection. Fix this by moving to SRC_UNATTACHED > state when vbus shuts off while in source mode. > > Signed-off-by: Badhri Jagan Sridharan <badhri@xxxxxxxxxx> Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> > --- > drivers/usb/typec/tcpm/tcpm.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index 0afd8ef692e8..ff0732c12b8a 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -4897,6 +4897,17 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) > /* Do nothing, waiting for sink detection */ > break; > > + case SRC_STARTUP: > + case SRC_SEND_CAPABILITIES: > + case SRC_SEND_CAPABILITIES_TIMEOUT: > + case SRC_NEGOTIATE_CAPABILITIES: > + case SRC_TRANSITION_SUPPLY: > + case SRC_READY: > + case SRC_WAIT_NEW_CAPABILITIES: > + /* Force to unattached state to re-initiate connection */ > + tcpm_set_state(port, SRC_UNATTACHED, 0); > + break; > + > case PORT_RESET: > /* > * State set back to default mode once the timer completes. >