On Fri, Jun 16, 2023 at 03:52:40PM +0800, Frank Wang wrote: > In the current implementation, the tcpm set CC1/CC2 role to open when > it do port reset would cause the VBUS removed by the Type-C partner. > > This sets CC1/CC2 according to the default state of port to fix it. > > Signed-off-by: Frank Wang <frank.wang@xxxxxxxxxxxxxx> Acked-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > --- > Changelog: > (no changes since v3) > > v2: > - Make some tweaking based on the default state of port, commented by Guenter Roeck. > > v1: > - https://patchwork.kernel.org/project/linux-usb/patch/20230313025843.17162-2-frank.wang@xxxxxxxxxxxxxx/ > > drivers/usb/typec/tcpm/tcpm.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index 3c6b0c8e2d3ae..9f6aaa3e70ca8 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -4885,7 +4885,8 @@ static void run_state_machine(struct tcpm_port *port) > break; > case PORT_RESET: > tcpm_reset_port(port); > - tcpm_set_cc(port, TYPEC_CC_OPEN); > + tcpm_set_cc(port, tcpm_default_state(port) == SNK_UNATTACHED ? > + TYPEC_CC_RD : tcpm_rp_cc(port)); > tcpm_set_state(port, PORT_RESET_WAIT_OFF, > PD_T_ERROR_RECOVERY); > break; thanks, -- heikki