Message ID | 20210201100212.49863-1-badhri@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 7771bcc7f5a727d6e3f7a80b0b075a75cb664fb2 |
Headers | show |
Series | [v1] usb: typec: tcpm: Handle vbus shutoff when in source mode | expand |
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@google.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > 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. >
On Mon, Feb 01, 2021 at 02:02:12AM -0800, 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@google.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > 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. > -- > 2.30.0.365.g02bc693789-goog thanks,
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.
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@google.com> --- drivers/usb/typec/tcpm/tcpm.c | 11 +++++++++++ 1 file changed, 11 insertions(+)