RE: [PATCH 07/12] typec: tcpm: add starting value for drp toggling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux