Hi > -----Original Message----- > From: Guenter Roeck [mailto:groeck7@xxxxxxxxx] On Behalf Of Guenter Roeck > Sent: Tuesday, September 26, 2017 9:43 PM > To: Jun Li <jun.li@xxxxxxx>; gregkh@xxxxxxxxxxxxxxxxxxx; robh+dt@xxxxxxxxxx; > mark.rutland@xxxxxxx; heikki.krogerus@xxxxxxxxxxxxxxx > Cc: yueyao@xxxxxxxxxx; o_leveque@xxxxxxxxx; Peter Chen > <peter.chen@xxxxxxx>; A.s. Dong <aisheng.dong@xxxxxxx>; linux- > usb@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx > Subject: Re: [PATCH 07/12] typec: tcpm: add starting value for drp toggling > > On 09/25/2017 05:45 PM, Li Jun wrote: > > As DRP port autonomously toggles the Rp/Rd need a start value to begin > > with, so add one parameter for it in tcpm_start_drp_toggling. > > > > It does have a starting value. The patch changes the starting value to > TYPEC_CC_RD (from currently one of the RP states) when entering the > SNK_UNATTACHED state. > Please provide a matching description. Yes, actually it's a mismatch, when entering the SNK_UNATTACHED, we should start from Rd, see TCPCI spec: Figure 4-11. TCPC State Diagram before a Connection > > > Signed-off-by: Li Jun <jun.li@xxxxxxx> > > --- > > drivers/usb/typec/tcpm.c | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c index > > 8483d3e..38a6223 100644 > > --- a/drivers/usb/typec/tcpm.c > > +++ b/drivers/usb/typec/tcpm.c > > @@ -1839,15 +1839,15 @@ static int tcpm_set_charge(struct tcpm_port > *port, bool charge) > > return 0; > > } > > > > -static bool tcpm_start_drp_toggling(struct tcpm_port *port) > > +static bool tcpm_start_drp_toggling(struct tcpm_port *port, > > + enum typec_cc_status cc) > > { > > int ret; > > > > if (port->tcpc->start_drp_toggling && > > port->port_type == TYPEC_PORT_DRP) { > > tcpm_log_force(port, "Start DRP toggling"); > > - ret = port->tcpc->start_drp_toggling(port->tcpc, > > - tcpm_rp_cc(port)); > > + ret = port->tcpc->start_drp_toggling(port->tcpc, cc); > > if (!ret) > > return true; > > } > > @@ -2156,7 +2156,7 @@ static void run_state_machine(struct tcpm_port > *port) > > if (!port->non_pd_role_swap) > > tcpm_swap_complete(port, -ENOTCONN); > > tcpm_src_detach(port); > > - if (tcpm_start_drp_toggling(port)) { > > + if (tcpm_start_drp_toggling(port, tcpm_rp_cc(port))) { > > tcpm_set_state(port, DRP_TOGGLING, 0); > > break; > > } > > @@ -2328,7 +2328,7 @@ static void run_state_machine(struct tcpm_port > *port) > > if (!port->non_pd_role_swap) > > tcpm_swap_complete(port, -ENOTCONN); > > tcpm_snk_detach(port); > > - if (tcpm_start_drp_toggling(port)) { > > + if (tcpm_start_drp_toggling(port, TYPEC_CC_RD)) { > > tcpm_set_state(port, DRP_TOGGLING, 0); > > break; > > } > > ��.n��������+%������w��{.n����z�{��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f