2017-08-27 06:52:46

by Badhri Jagan Sridharan

[permalink] [raw]
Subject: [PATCH 11/11] staging: typec: tcpm: Switch to PORT_RESET instead of SNK_UNATTACHED

When VBUS is not discovered within PD_T_PS_SOURCE_ON although Rp
is detected on CC, TCPM switches the port to SNK_UNATTACHED
state. SNK_UNATTACHED, however does not force TYPEC_CC_OPEN which
makes the partner(source) to think that it is connected.

To overcome this issue, force the port into PORT_RESET state
to make sure the CC lines are open.

Signed-off-by: Badhri Jagan Sridharan <[email protected]>
---
drivers/staging/typec/tcpm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/typec/tcpm.c b/drivers/staging/typec/tcpm.c
index 9e0111dea7c4..47b8fec5ea36 100644
--- a/drivers/staging/typec/tcpm.c
+++ b/drivers/staging/typec/tcpm.c
@@ -2380,7 +2380,7 @@ static void run_state_machine(struct tcpm_port *port)
0);
else
/* Wait for VBUS, but not forever */
- tcpm_set_state(port, SNK_UNATTACHED, PD_T_PS_SOURCE_ON);
+ tcpm_set_state(port, PORT_RESET, PD_T_PS_SOURCE_ON);
break;

case SRC_TRY:
--
2.14.1.342.g6490525c54-goog


2017-08-27 17:27:55

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 11/11] staging: typec: tcpm: Switch to PORT_RESET instead of SNK_UNATTACHED

On Sat, Aug 26, 2017 at 11:52:33PM -0700, Badhri Jagan Sridharan wrote:
> When VBUS is not discovered within PD_T_PS_SOURCE_ON although Rp
> is detected on CC, TCPM switches the port to SNK_UNATTACHED
> state. SNK_UNATTACHED, however does not force TYPEC_CC_OPEN which
> makes the partner(source) to think that it is connected.
>
> To overcome this issue, force the port into PORT_RESET state
> to make sure the CC lines are open.
>
> Signed-off-by: Badhri Jagan Sridharan <[email protected]>

Reviewed-by: Guenter Roeck <[email protected]>

> ---
> drivers/staging/typec/tcpm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/typec/tcpm.c b/drivers/staging/typec/tcpm.c
> index 9e0111dea7c4..47b8fec5ea36 100644
> --- a/drivers/staging/typec/tcpm.c
> +++ b/drivers/staging/typec/tcpm.c
> @@ -2380,7 +2380,7 @@ static void run_state_machine(struct tcpm_port *port)
> 0);
> else
> /* Wait for VBUS, but not forever */
> - tcpm_set_state(port, SNK_UNATTACHED, PD_T_PS_SOURCE_ON);
> + tcpm_set_state(port, PORT_RESET, PD_T_PS_SOURCE_ON);
> break;
>
> case SRC_TRY:
> --
> 2.14.1.342.g6490525c54-goog
>