diff mbox series

[v1] usb: typec: tcpm: Disregard vbus off while in PR_SWAP_SNK_SRC_SOURCE_ON

Message ID 20201125020703.1604979-1-badhri@google.com
State New
Headers show
Series [v1] usb: typec: tcpm: Disregard vbus off while in PR_SWAP_SNK_SRC_SOURCE_ON | expand

Commit Message

Badhri Jagan Sridharan Nov. 25, 2020, 2:07 a.m. UTC
During PR_SWAP sequence, when TCPM is waiting in PR_SWAP_SNK_SRC_SOURCE_ON
for the vbus source to ramp up, TCPM would prematurely exit
PR_SWAP_SNK_SRC_SOURCE_ON and transition to SNK_UNATTACHED state when a
vbus off notification is received. This should not be the case as vbus
can still be off while in PR_SWAP_SNK_SRC_SOURCE_ON and the vbus source
has PD_T_NEWSRC to ramp up.

Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
---
 drivers/usb/typec/tcpm/tcpm.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Heikki Krogerus Nov. 26, 2020, 12:01 p.m. UTC | #1
On Tue, Nov 24, 2020 at 06:07:03PM -0800, Badhri Jagan Sridharan wrote:
> During PR_SWAP sequence, when TCPM is waiting in PR_SWAP_SNK_SRC_SOURCE_ON

> for the vbus source to ramp up, TCPM would prematurely exit

> PR_SWAP_SNK_SRC_SOURCE_ON and transition to SNK_UNATTACHED state when a

> vbus off notification is received. This should not be the case as vbus

> can still be off while in PR_SWAP_SNK_SRC_SOURCE_ON and the vbus source

> has PD_T_NEWSRC to ramp up.

> 

> Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>


FWIW:

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>


> ---

>  drivers/usb/typec/tcpm/tcpm.c | 8 ++++++++

>  1 file changed, 8 insertions(+)

> 

> diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c

> index 4aac0efdb720..277b9d4d9c84 100644

> --- a/drivers/usb/typec/tcpm/tcpm.c

> +++ b/drivers/usb/typec/tcpm/tcpm.c

> @@ -4218,6 +4218,14 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port)

>  		/* Do nothing, expected */

>  		break;

>  

> +	case PR_SWAP_SNK_SRC_SOURCE_ON:

> +		/*

> +		 * Do nothing when vbus off notification is received.

> +		 * TCPM can wait for PD_T_NEWSRC in PR_SWAP_SNK_SRC_SOURCE_ON

> +		 * for the vbus source to ramp up.

> +		 */

> +		break;

> +

>  	case PORT_RESET_WAIT_OFF:

>  		tcpm_set_state(port, tcpm_default_state(port), 0);

>  		break;

> -- 

> 2.29.2.454.gaff20da3a2-goog


thanks,

-- 
heikki
Greg KH Nov. 26, 2020, 12:41 p.m. UTC | #2
On Thu, Nov 26, 2020 at 02:01:20PM +0200, Heikki Krogerus wrote:
> On Tue, Nov 24, 2020 at 06:07:03PM -0800, Badhri Jagan Sridharan wrote:

> > During PR_SWAP sequence, when TCPM is waiting in PR_SWAP_SNK_SRC_SOURCE_ON

> > for the vbus source to ramp up, TCPM would prematurely exit

> > PR_SWAP_SNK_SRC_SOURCE_ON and transition to SNK_UNATTACHED state when a

> > vbus off notification is received. This should not be the case as vbus

> > can still be off while in PR_SWAP_SNK_SRC_SOURCE_ON and the vbus source

> > has PD_T_NEWSRC to ramp up.

> > 

> > Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>

> 

> FWIW:

> 

> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>


Thanks, i've added this, and your other ack, to the commits in my tree.

greg k-h
diff mbox series

Patch

diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 4aac0efdb720..277b9d4d9c84 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -4218,6 +4218,14 @@  static void _tcpm_pd_vbus_off(struct tcpm_port *port)
 		/* Do nothing, expected */
 		break;
 
+	case PR_SWAP_SNK_SRC_SOURCE_ON:
+		/*
+		 * Do nothing when vbus off notification is received.
+		 * TCPM can wait for PD_T_NEWSRC in PR_SWAP_SNK_SRC_SOURCE_ON
+		 * for the vbus source to ramp up.
+		 */
+		break;
+
 	case PORT_RESET_WAIT_OFF:
 		tcpm_set_state(port, tcpm_default_state(port), 0);
 		break;