linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-03-28 16:06 Jun Li
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Li @ 2018-03-28 16:06 UTC (permalink / raw)
  To: robh+dt, gregkh, heikki.krogerus, linux
  Cc: a.hajda, shufan_lee, peter.chen, devicetree, linux-usb, linux-imx,
	jun.li, devel

In case of drp toggling, we may need set correct cc value for role control
after attach as it may never been set.

Signed-off-by: Li Jun <jun.li@nxp.com>
---
 drivers/usb/typec/tcpm.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
index 218c230..72d4232 100644
--- a/drivers/usb/typec/tcpm.c
+++ b/drivers/usb/typec/tcpm.c
@@ -2126,6 +2126,7 @@ static void tcpm_reset_port(struct tcpm_port *port)
 	tcpm_set_attached_state(port, false);
 	port->try_src_count = 0;
 	port->try_snk_count = 0;
+	port->cc_req = 0;
 }
 
 static void tcpm_detach(struct tcpm_port *port)
@@ -2361,6 +2362,8 @@ static void run_state_machine(struct tcpm_port *port)
 		break;
 
 	case SRC_ATTACHED:
+		if (!port->cc_req)
+			tcpm_set_cc(port, tcpm_rp_cc(port));
 		ret = tcpm_src_attach(port);
 		tcpm_set_state(port, SRC_UNATTACHED,
 			       ret < 0 ? 0 : PD_T_PS_SOURCE_ON);
@@ -2531,6 +2534,8 @@ static void run_state_machine(struct tcpm_port *port)
 		tcpm_set_state(port, SNK_UNATTACHED, PD_T_PD_DEBOUNCE);
 		break;
 	case SNK_ATTACHED:
+		if (!port->cc_req)
+			tcpm_set_cc(port, TYPEC_CC_RD);
 		ret = tcpm_snk_attach(port);
 		if (ret < 0)
 			tcpm_set_state(port, SNK_UNATTACHED, 0);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-03-29 21:18 Mats Karrman
  0 siblings, 0 replies; 5+ messages in thread
From: Mats Karrman @ 2018-03-29 21:18 UTC (permalink / raw)
  To: Li Jun, robh+dt, gregkh, heikki.krogerus, linux
  Cc: a.hajda, shufan_lee, peter.chen, devicetree, linux-usb, linux-imx,
	devel

Hi Li,

On 03/28/2018 06:06 PM, Li Jun wrote:

> In case of drp toggling, we may need set correct cc value for role control
> after attach as it may never been set.
>
> Signed-off-by: Li Jun <jun.li@nxp.com>
> ---
>  drivers/usb/typec/tcpm.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
> index 218c230..72d4232 100644
> --- a/drivers/usb/typec/tcpm.c
> +++ b/drivers/usb/typec/tcpm.c
> @@ -2126,6 +2126,7 @@ static void tcpm_reset_port(struct tcpm_port *port)
>  	tcpm_set_attached_state(port, false);
>  	port->try_src_count = 0;
>  	port->try_snk_count = 0;
> +	port->cc_req = 0;

I don't think it's OK to use "0" here. cc_req is an enum so why not use "|TYPEC_CC_OPEN"?|

>  }
>  
>  static void tcpm_detach(struct tcpm_port *port)
> @@ -2361,6 +2362,8 @@ static void run_state_machine(struct tcpm_port *port)
>  		break;
>  
>  	case SRC_ATTACHED:
> +		if (!port->cc_req)

        	if (port->cc_req == |TYPEC_CC_OPEN)|

> +			tcpm_set_cc(port, tcpm_rp_cc(port));
>  		ret = tcpm_src_attach(port);
>  		tcpm_set_state(port, SRC_UNATTACHED,
>  			       ret < 0 ? 0 : PD_T_PS_SOURCE_ON);
> @@ -2531,6 +2534,8 @@ static void run_state_machine(struct tcpm_port *port)
>  		tcpm_set_state(port, SNK_UNATTACHED, PD_T_PD_DEBOUNCE);
>  		break;
>  	case SNK_ATTACHED:
> +		if (!port->cc_req)

Ditto.

> +			tcpm_set_cc(port, TYPEC_CC_RD);
>  		ret = tcpm_snk_attach(port);
>  		if (ret < 0)
>  			tcpm_set_state(port, SNK_UNATTACHED, 0);

// Mats
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-03-29 22:49 Guenter Roeck
  0 siblings, 0 replies; 5+ messages in thread
From: Guenter Roeck @ 2018-03-29 22:49 UTC (permalink / raw)
  To: Li Jun
  Cc: robh+dt, gregkh, heikki.krogerus, a.hajda, shufan_lee, peter.chen,
	devicetree, linux-usb, linux-imx, devel

On Thu, Mar 29, 2018 at 12:06:15AM +0800, Li Jun wrote:
> In case of drp toggling, we may need set correct cc value for role control
> after attach as it may never been set.
> 

Isn't CC set by the lower level driver in this case ? In other words, is it ever
necessary to call back into the low level driver to set CC again ? Doing that in
attached state seems a bit late.

It may make more sense to update port->cc_req when the state machine leaves
DRP_TOGGLING state, ie in _tcpm_cc_change(), and to do it without callback
into the low level driver (it should not be necessary).

Guenter

> Signed-off-by: Li Jun <jun.li@nxp.com>
> ---
>  drivers/usb/typec/tcpm.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
> index 218c230..72d4232 100644
> --- a/drivers/usb/typec/tcpm.c
> +++ b/drivers/usb/typec/tcpm.c
> @@ -2126,6 +2126,7 @@ static void tcpm_reset_port(struct tcpm_port *port)
>  	tcpm_set_attached_state(port, false);
>  	port->try_src_count = 0;
>  	port->try_snk_count = 0;
> +	port->cc_req = 0;
>  }
>  
>  static void tcpm_detach(struct tcpm_port *port)
> @@ -2361,6 +2362,8 @@ static void run_state_machine(struct tcpm_port *port)
>  		break;
>  
>  	case SRC_ATTACHED:
> +		if (!port->cc_req)
> +			tcpm_set_cc(port, tcpm_rp_cc(port));
>  		ret = tcpm_src_attach(port);
>  		tcpm_set_state(port, SRC_UNATTACHED,
>  			       ret < 0 ? 0 : PD_T_PS_SOURCE_ON);
> @@ -2531,6 +2534,8 @@ static void run_state_machine(struct tcpm_port *port)
>  		tcpm_set_state(port, SNK_UNATTACHED, PD_T_PD_DEBOUNCE);
>  		break;
>  	case SNK_ATTACHED:
> +		if (!port->cc_req)
> +			tcpm_set_cc(port, TYPEC_CC_RD);
>  		ret = tcpm_snk_attach(port);
>  		if (ret < 0)
>  			tcpm_set_state(port, SNK_UNATTACHED, 0);
> -- 
> 2.7.4
>
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-03-31  3:37 Jun Li
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Li @ 2018-03-31  3:37 UTC (permalink / raw)
  To: Mats Karrman, robh+dt@kernel.org, gregkh@linuxfoundation.org,
	heikki.krogerus@linux.intel.com, linux@roeck-us.net
  Cc: a.hajda@samsung.com, shufan_lee@richtek.com, Peter Chen,
	devicetree@vger.kernel.org, linux-usb@vger.kernel.org,
	dl-linux-imx, devel@driverdev.osuosl.org

Hi
> -----Original Message-----
> From: Mats Karrman [mailto:mats.dev.list@gmail.com]
> Sent: 2018年3月30日 5:19
> To: Jun Li <jun.li@nxp.com>; robh+dt@kernel.org; gregkh@linuxfoundation.org;
> heikki.krogerus@linux.intel.com; linux@roeck-us.net
> Cc: a.hajda@samsung.com; shufan_lee@richtek.com; Peter Chen
> <peter.chen@nxp.com>; devicetree@vger.kernel.org;
> linux-usb@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>;
> devel@driverdev.osuosl.org
> Subject: Re: [PATCH v4 10/13] usb: typec: tcpm: set cc for drp toggling attach
> 
> Hi Li,
> 
> On 03/28/2018 06:06 PM, Li Jun wrote:
> 
> > In case of drp toggling, we may need set correct cc value for role
> > control after attach as it may never been set.
> >
> > Signed-off-by: Li Jun <jun.li@nxp.com>
> > ---
> >  drivers/usb/typec/tcpm.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c index
> > 218c230..72d4232 100644
> > --- a/drivers/usb/typec/tcpm.c
> > +++ b/drivers/usb/typec/tcpm.c
> > @@ -2126,6 +2126,7 @@ static void tcpm_reset_port(struct tcpm_port *port)
> >  	tcpm_set_attached_state(port, false);
> >  	port->try_src_count = 0;
> >  	port->try_snk_count = 0;
> > +	port->cc_req = 0;
> 
> I don't think it's OK to use "0" here. cc_req is an enum so why not use
> "|TYPEC_CC_OPEN"?|
> 

I will change to be TYPEC_CC_OPEN, also other place.

Li Jun
> >  }
> >
> >  static void tcpm_detach(struct tcpm_port *port) @@ -2361,6 +2362,8 @@
> > static void run_state_machine(struct tcpm_port *port)
> >  		break;
> >
> >  	case SRC_ATTACHED:
> > +		if (!port->cc_req)
> 
>         	if (port->cc_req == |TYPEC_CC_OPEN)|
> 
> > +			tcpm_set_cc(port, tcpm_rp_cc(port));
> >  		ret = tcpm_src_attach(port);
> >  		tcpm_set_state(port, SRC_UNATTACHED,
> >  			       ret < 0 ? 0 : PD_T_PS_SOURCE_ON); @@ -2531,6 +2534,8
> @@
> > static void run_state_machine(struct tcpm_port *port)
> >  		tcpm_set_state(port, SNK_UNATTACHED, PD_T_PD_DEBOUNCE);
> >  		break;
> >  	case SNK_ATTACHED:
> > +		if (!port->cc_req)
> 
> Ditto.
> 
> > +			tcpm_set_cc(port, TYPEC_CC_RD);
> >  		ret = tcpm_snk_attach(port);
> >  		if (ret < 0)
> >  			tcpm_set_state(port, SNK_UNATTACHED, 0);
> 
> // Mats
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-03-31  4:38 Jun Li
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Li @ 2018-03-31  4:38 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org,
	heikki.krogerus@linux.intel.com, a.hajda@samsung.com,
	shufan_lee@richtek.com, Peter Chen, devicetree@vger.kernel.org,
	linux-usb@vger.kernel.org, dl-linux-imx,
	devel@driverdev.osuosl.org

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR3VlbnRlciBSb2VjayBb
bWFpbHRvOmdyb2VjazdAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgR3VlbnRlciBSb2Vjaw0KPiBT
ZW50OiAyMDE4xOoz1MIzMMjVIDY6NDkNCj4gVG86IEp1biBMaSA8anVuLmxpQG54cC5jb20+DQo+
IENjOiByb2JoK2R0QGtlcm5lbC5vcmc7IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOw0KPiBo
ZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tOyBhLmhhamRhQHNhbXN1bmcuY29tOw0KPiBz
aHVmYW5fbGVlQHJpY2h0ZWsuY29tOyBQZXRlciBDaGVuIDxwZXRlci5jaGVuQG54cC5jb20+Ow0K
PiBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZzsg
ZGwtbGludXgtaW14DQo+IDxsaW51eC1pbXhAbnhwLmNvbT47IGRldmVsQGRyaXZlcmRldi5vc3Vv
c2wub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjQgMTAvMTNdIHVzYjogdHlwZWM6IHRjcG06
IHNldCBjYyBmb3IgZHJwIHRvZ2dsaW5nIGF0dGFjaA0KPiANCj4gT24gVGh1LCBNYXIgMjksIDIw
MTggYXQgMTI6MDY6MTVBTSArMDgwMCwgTGkgSnVuIHdyb3RlOg0KPiA+IEluIGNhc2Ugb2YgZHJw
IHRvZ2dsaW5nLCB3ZSBtYXkgbmVlZCBzZXQgY29ycmVjdCBjYyB2YWx1ZSBmb3Igcm9sZQ0KPiA+
IGNvbnRyb2wgYWZ0ZXIgYXR0YWNoIGFzIGl0IG1heSBuZXZlciBiZWVuIHNldC4NCj4gPg0KPiAN
Cj4gSXNuJ3QgQ0Mgc2V0IGJ5IHRoZSBsb3dlciBsZXZlbCBkcml2ZXIgaW4gdGhpcyBjYXNlID8g
SW4gb3RoZXIgd29yZHMsIGlzIGl0IGV2ZXINCj4gbmVjZXNzYXJ5IHRvIGNhbGwgYmFjayBpbnRv
IHRoZSBsb3cgbGV2ZWwgZHJpdmVyIHRvIHNldCBDQyBhZ2FpbiA/IERvaW5nIHRoYXQgaW4NCj4g
YXR0YWNoZWQgc3RhdGUgc2VlbXMgYSBiaXQgbGF0ZS4NCg0KSW4gcXVlc3Rpb24gY2FzZShkcnAg
d2l0aG91dCB0cnkuc3JjIG9yIHRyeS5zbmspLCB5b3UgY2FuIHNlZSB0Y3BtIG5ldmVyIGNhbGwN
CnRjcG1fc2V0X2NjKCkgZnJvbSBkcnAgdG9nZ2xpbmcgdG8gYXR0YWNoZWQgc3RhdGUsIHN0YXJ0
X2RycF90b2dnbGluZw0Kc2V0IGNjIGF0IHRoZSBiZWdpbm5pbmcgaW4gdGhpcyBjYXNlLCBidXQg
dGhlIHZhbHVlIGlzIHRoZSAqc3RhcnQqIHZhbHVlLCBtYXkgbm90DQp0aGUgcmlnaHQgdmFsdWUg
dG8gbWF0Y2ggaXRzIGZpbmFsIHJvbGUuDQoNClBlciB0Y3BjaSBzcGVjDQpGaWd1cmUgNC0xNi4g
RFJQIEluaXRpYWxpemF0aW9uIGFuZCBDb25uZWN0aW9uIERldGVjdGlvbg0KQWZ0ZXIgZGVib3Vu
Y2UsIHRjcG0gc2hvdWxkIHNldCBjYyhhZ2FpbiwgYnV0IG1heSBkaWZmZXJlbnQgdmFsdWUpIGFu
ZCBwb2xhcml0eS4NCg0KU2h1RmFuIGVuY291bnRlcmVkIHRoaXMgY2FzZSBhcyBJIHVuZGVyc3Rv
b2Qgb24gaGlzIHNldHVwIGxpa2UgYmVsb3c6DQotIFRjcGMgc3RhcnQgZHJwIHRvZ2dsaW5nIHdp
dGggUnAvUnAsDQotIENvbm5lY3QgdG8gYWRhcHRlciB3aXRoIGFsc28gUnAvUnANCi0gQWZ0ZXIg
Y29ubmVjdGlvbiByZXNvbHZlZCwgdGhlIHRjcGMgYmVjb21lcyBhIHNpbmsoSFcgcHJlc2VudCBS
ZCksIGJ1dA0Kcm9sZSBjb250cm9sIHJlZ2lzdGVyIHZhbHVlIGlzIHN0aWxsIFJwL1JwLg0KLSBU
aGlzIHNob3VsZCBiZSBjb3JyZWN0ZWQgdG8gc2V0IGNjIGZvciBrZWVwIHRoZSB1bi1jb250YWN0
ZWQgY2MgbGluZSBvcGVuLg0KDQo+IA0KPiBJdCBtYXkgbWFrZSBtb3JlIHNlbnNlIHRvIHVwZGF0
ZSBwb3J0LT5jY19yZXEgd2hlbiB0aGUgc3RhdGUgbWFjaGluZSBsZWF2ZXMNCj4gRFJQX1RPR0dM
SU5HIHN0YXRlLCBpZSBpbiBfdGNwbV9jY19jaGFuZ2UoKSwgYW5kIHRvIGRvIGl0IHdpdGhvdXQg
Y2FsbGJhY2sgaW50bw0KPiB0aGUgbG93IGxldmVsIGRyaXZlciAoaXQgc2hvdWxkIG5vdCBiZSBu
ZWNlc3NhcnkpLg0KDQpDdXJyZW50bHkgdGhlcmUgaXMgbm8gdXNlciBvZiBjY19yZXEgZmxhZywg
c28gSSBjYW4ndCBjYXRjaCB0aGUgcmVhbCBpbnRlbnRpb24NCm9mIHRoaXMgZmxhZywgYXMgb2Yg
bm93IGl0J3Mgb25seSBzZXQgaW4gdGNwbV9zZXRfY2MoKSwgc28gSSB1bmRlcnN0b29kIGl0J3MN
CmZvciBpZiB0Y3BtIGFscmVhZHkgc2V0IHRjcGMgYSBzcGVjaWZpYyByb2xlLg0KDQpMaSBKdW4N
Cj4gDQo+IEd1ZW50ZXINCj4gDQo+ID4gU2lnbmVkLW9mZi1ieTogTGkgSnVuIDxqdW4ubGlAbnhw
LmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jIHwgNSArKysrKw0K
PiA+ICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0
IGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jIGlu
ZGV4DQo+ID4gMjE4YzIzMC4uNzJkNDIzMiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3VzYi90
eXBlYy90Y3BtLmMNCj4gPiArKysgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMNCj4gPiBAQCAt
MjEyNiw2ICsyMTI2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV9yZXNldF9wb3J0KHN0cnVjdCB0Y3Bt
X3BvcnQgKnBvcnQpDQo+ID4gIAl0Y3BtX3NldF9hdHRhY2hlZF9zdGF0ZShwb3J0LCBmYWxzZSk7
DQo+ID4gIAlwb3J0LT50cnlfc3JjX2NvdW50ID0gMDsNCj4gPiAgCXBvcnQtPnRyeV9zbmtfY291
bnQgPSAwOw0KPiA+ICsJcG9ydC0+Y2NfcmVxID0gMDsNCj4gPiAgfQ0KPiA+DQo+ID4gIHN0YXRp
YyB2b2lkIHRjcG1fZGV0YWNoKHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpIEBAIC0yMzYxLDYgKzIz
NjIsOCBAQA0KPiA+IHN0YXRpYyB2b2lkIHJ1bl9zdGF0ZV9tYWNoaW5lKHN0cnVjdCB0Y3BtX3Bv
cnQgKnBvcnQpDQo+ID4gIAkJYnJlYWs7DQo+ID4NCj4gPiAgCWNhc2UgU1JDX0FUVEFDSEVEOg0K
PiA+ICsJCWlmICghcG9ydC0+Y2NfcmVxKQ0KPiA+ICsJCQl0Y3BtX3NldF9jYyhwb3J0LCB0Y3Bt
X3JwX2NjKHBvcnQpKTsNCj4gPiAgCQlyZXQgPSB0Y3BtX3NyY19hdHRhY2gocG9ydCk7DQo+ID4g
IAkJdGNwbV9zZXRfc3RhdGUocG9ydCwgU1JDX1VOQVRUQUNIRUQsDQo+ID4gIAkJCSAgICAgICBy
ZXQgPCAwID8gMCA6IFBEX1RfUFNfU09VUkNFX09OKTsgQEAgLTI1MzEsNiArMjUzNCw4DQo+IEBA
DQo+ID4gc3RhdGljIHZvaWQgcnVuX3N0YXRlX21hY2hpbmUoc3RydWN0IHRjcG1fcG9ydCAqcG9y
dCkNCj4gPiAgCQl0Y3BtX3NldF9zdGF0ZShwb3J0LCBTTktfVU5BVFRBQ0hFRCwgUERfVF9QRF9E
RUJPVU5DRSk7DQo+ID4gIAkJYnJlYWs7DQo+ID4gIAljYXNlIFNOS19BVFRBQ0hFRDoNCj4gPiAr
CQlpZiAoIXBvcnQtPmNjX3JlcSkNCj4gPiArCQkJdGNwbV9zZXRfY2MocG9ydCwgVFlQRUNfQ0Nf
UkQpOw0KPiA+ICAJCXJldCA9IHRjcG1fc25rX2F0dGFjaChwb3J0KTsNCj4gPiAgCQlpZiAocmV0
IDwgMCkNCj4gPiAgCQkJdGNwbV9zZXRfc3RhdGUocG9ydCwgU05LX1VOQVRUQUNIRUQsIDApOw0K
PiA+IC0tDQo+ID4gMi43LjQNCj4gPg0K
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-03-31  4:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-29 22:49 [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach Guenter Roeck
  -- strict thread matches above, loose matches on Subject: below --
2018-03-31  4:38 Jun Li
2018-03-31  3:37 Jun Li
2018-03-29 21:18 Mats Karrman
2018-03-28 16:06 Jun Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).