linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-05-28  2:52 Jun Li
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Li @ 2018-05-28  2:52 UTC (permalink / raw)
  To: robh+dt, gregkh, heikki.krogerus, linux
  Cc: cw00.choi, a.hajda, shufan_lee, peter.chen, garsilva, gsomlo,
	jun.li, linux-usb, devicetree, linux-imx

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 d885bff..98ea916 100644
--- a/drivers/usb/typec/tcpm.c
+++ b/drivers/usb/typec/tcpm.c
@@ -2599,6 +2599,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 = TYPEC_CC_OPEN;
 	port->supply_voltage = 0;
 	port->current_limit = 0;
 	port->usb_type = POWER_SUPPLY_USB_TYPE_C;
@@ -2831,6 +2832,8 @@ static void run_state_machine(struct tcpm_port *port)
 		break;
 
 	case SRC_ATTACHED:
+		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);
@@ -3004,6 +3007,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 == TYPEC_CC_OPEN)
+			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
* [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-06-11 12:29 Heikki Krogerus
  0 siblings, 0 replies; 5+ messages in thread
From: Heikki Krogerus @ 2018-06-11 12:29 UTC (permalink / raw)
  To: Li Jun
  Cc: robh+dt, gregkh, linux, cw00.choi, a.hajda, shufan_lee,
	peter.chen, garsilva, gsomlo, linux-usb, devicetree, linux-imx

On Mon, May 28, 2018 at 10:52:44AM +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.

Is this something that should be considered as a fix?

> 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 d885bff..98ea916 100644
> --- a/drivers/usb/typec/tcpm.c
> +++ b/drivers/usb/typec/tcpm.c
> @@ -2599,6 +2599,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 = TYPEC_CC_OPEN;
>  	port->supply_voltage = 0;
>  	port->current_limit = 0;
>  	port->usb_type = POWER_SUPPLY_USB_TYPE_C;
> @@ -2831,6 +2832,8 @@ static void run_state_machine(struct tcpm_port *port)
>  		break;
>  
>  	case SRC_ATTACHED:
> +		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);
> @@ -3004,6 +3007,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 == TYPEC_CC_OPEN)
> +			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	[flat|nested] 5+ messages in thread
* [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-06-11 13:35 Guenter Roeck
  0 siblings, 0 replies; 5+ messages in thread
From: Guenter Roeck @ 2018-06-11 13:35 UTC (permalink / raw)
  To: Heikki Krogerus, Li Jun
  Cc: robh+dt, gregkh, cw00.choi, a.hajda, shufan_lee, peter.chen,
	garsilva, gsomlo, linux-usb, devicetree, linux-imx

On 06/11/2018 05:29 AM, Heikki Krogerus wrote:
> On Mon, May 28, 2018 at 10:52:44AM +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.
> 
> Is this something that should be considered as a fix?
> 

The problem with this patch is that it hides a problem. CC should have been set
by the time a port reaches the attached state. The patch means that there is
a state machine path where this does not happen. I'd rather understand that
path and fix the problem where it happens.

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 d885bff..98ea916 100644
>> --- a/drivers/usb/typec/tcpm.c
>> +++ b/drivers/usb/typec/tcpm.c
>> @@ -2599,6 +2599,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 = TYPEC_CC_OPEN;
>>   	port->supply_voltage = 0;
>>   	port->current_limit = 0;
>>   	port->usb_type = POWER_SUPPLY_USB_TYPE_C;
>> @@ -2831,6 +2832,8 @@ static void run_state_machine(struct tcpm_port *port)
>>   		break;
>>   
>>   	case SRC_ATTACHED:
>> +		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);
>> @@ -3004,6 +3007,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 == TYPEC_CC_OPEN)
>> +			tcpm_set_cc(port, TYPEC_CC_RD);
>>   		ret = tcpm_snk_attach(port);
>>   		if (ret < 0)
>>   			tcpm_set_state(port, SNK_UNATTACHED, 0);
>
---
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
* [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-06-13 11:06 Jun Li
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Li @ 2018-06-13 11:06 UTC (permalink / raw)
  To: Guenter Roeck, Heikki Krogerus, shufan_lee@richtek.com
  Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org,
	cw00.choi@samsung.com, a.hajda@samsung.com, Peter Chen,
	garsilva@embeddedor.com, gsomlo@gmail.com,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	dl-linux-imx

SGksDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEd1ZW50ZXIgUm9lY2sg
W21haWx0bzpncm9lY2s3QGdtYWlsLmNvbV0gT24gQmVoYWxmIE9mIEd1ZW50ZXIgUm9lY2sNCj4g
U2VudDogMjAxOOW5tDbmnIgxMeaXpSAyMTozNQ0KPiBUbzogSGVpa2tpIEtyb2dlcnVzIDxoZWlr
a2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPjsgSnVuIExpIDxqdW4ubGlAbnhwLmNvbT4NCj4g
Q2M6IHJvYmgrZHRAa2VybmVsLm9yZzsgZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IGN3MDAu
Y2hvaUBzYW1zdW5nLmNvbTsNCj4gYS5oYWpkYUBzYW1zdW5nLmNvbTsgc2h1ZmFuX2xlZUByaWNo
dGVrLmNvbTsgUGV0ZXIgQ2hlbg0KPiA8cGV0ZXIuY2hlbkBueHAuY29tPjsgZ2Fyc2lsdmFAZW1i
ZWRkZWRvci5jb207IGdzb21sb0BnbWFpbC5jb207DQo+IGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5v
cmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBkbC1saW51eC1pbXgNCj4gPGxpbnV4LWlt
eEBueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY2IDEyLzE1XSB1c2I6IHR5cGVjOiB0
Y3BtOiBzZXQgY2MgZm9yIGRycCB0b2dnbGluZyBhdHRhY2gNCj4gDQo+IE9uIDA2LzExLzIwMTgg
MDU6MjkgQU0sIEhlaWtraSBLcm9nZXJ1cyB3cm90ZToNCj4gPiBPbiBNb24sIE1heSAyOCwgMjAx
OCBhdCAxMDo1Mjo0NEFNICswODAwLCBMaSBKdW4gd3JvdGU6DQo+ID4+IEluIGNhc2Ugb2YgZHJw
IHRvZ2dsaW5nLCB3ZSBtYXkgbmVlZCBzZXQgY29ycmVjdCBjYyB2YWx1ZSBmb3Igcm9sZQ0KPiA+
PiBjb250cm9sIGFmdGVyIGF0dGFjaCBhcyBpdCBtYXkgbmV2ZXIgYmVlbiBzZXQuDQo+ID4NCj4g
PiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgZml4Pw0K
PiA+DQo+IA0KPiBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgcGF0Y2ggaXMgdGhhdCBpdCBoaWRlcyBh
IHByb2JsZW0uIENDIHNob3VsZCBoYXZlIGJlZW4gc2V0DQo+IGJ5IHRoZSB0aW1lIGEgcG9ydCBy
ZWFjaGVzIHRoZSBhdHRhY2hlZCBzdGF0ZS4gVGhlIHBhdGNoIG1lYW5zIHRoYXQgdGhlcmUgaXMg
YQ0KPiBzdGF0ZSBtYWNoaW5lIHBhdGggd2hlcmUgdGhpcyBkb2VzIG5vdCBoYXBwZW4uIEknZCBy
YXRoZXIgdW5kZXJzdGFuZCB0aGF0IHBhdGgNCj4gYW5kIGZpeCB0aGUgcHJvYmxlbSB3aGVyZSBp
dCBoYXBwZW5zLg0KDQpIZXJlIGlzIG15IHByZXZpb3VzIGV4cGxhbmF0aW9uIGFib3V0IHRoaXMg
c3RhdGUgbWFjaGluZSBwYXRoWzFdDQoNClsxXWh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3Rz
L2xpbnV4LXVzYi9tc2cxNjc0NjcuaHRtbA0KDQpUaGUgcGh5c2ljYWwgQ0MgbGluZSBzdGF0ZSBp
cyBjb3JyZWN0LCBqdXN0IHRoZSBSb2xlIENvbnRyb2wgcmVnaXN0ZXIgdmFsdWUNCm1heSBtaXNt
YXRjaCBvbiBzb21lKGUuZy4gc2h1ZmFuJ3MpIEhXLCBpZiB0aGUgY29tbW9uIGNoYW5nZSBpbiB0
Y3BtDQppcyBub3QgdGhlIHJpZ2h0IHdheSwgSSBoYXZlIHRvIGFzayBzaHVmYW4gdG8gdHJ5IHJl
c29sdmUgdGhpcyBpbiBoaXMgY3VzdG9tDQpydDE3MTFoIGRyaXZlci4NCg0KSSB1bmRlcnN0YW5k
IHRoZSBjb25jZXJuIG9mIHNldHRpbmcgY2MgYXQgYXR0YWNoZWQgc3RhdGUgaXMgbGF0ZSwgc2hv
dWxkIGJlDQpkb25lIGJlZm9yZSB0aGF0LCBob3cgYWJvdXQgSSBtb3ZlIHRoaXMgaW4gY2NfY2hh
bmdlIGxpa2UgYmVsb3c6DQoNCkBAIC0zNDkyLDEwICszNDkyLDEzIEBAIHN0YXRpYyB2b2lkIF90
Y3BtX2NjX2NoYW5nZShzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0LCBlbnVtIHR5cGVjX2NjX3N0YXR1
cyBjYzEsDQogICAgICAgIHN3aXRjaCAocG9ydC0+c3RhdGUpIHsNCiAgICAgICAgY2FzZSBEUlBf
VE9HR0xJTkc6DQogICAgICAgICAgICAgICAgaWYgKHRjcG1fcG9ydF9pc19kZWJ1Zyhwb3J0KSB8
fCB0Y3BtX3BvcnRfaXNfYXVkaW8ocG9ydCkgfHwNCi0gICAgICAgICAgICAgICAgICAgdGNwbV9w
b3J0X2lzX3NvdXJjZShwb3J0KSkNCisgICAgICAgICAgICAgICAgICAgdGNwbV9wb3J0X2lzX3Nv
dXJjZShwb3J0KSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgdGNwbV9zZXRfY2MocG9ydCwg
dGNwbV9ycF9jYyhwb3J0KSk7DQogICAgICAgICAgICAgICAgICAgICAgICB0Y3BtX3NldF9zdGF0
ZShwb3J0LCBTUkNfQVRUQUNIX1dBSVQsIDApOw0KLSAgICAgICAgICAgICAgIGVsc2UgaWYgKHRj
cG1fcG9ydF9pc19zaW5rKHBvcnQpKQ0KKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGNwbV9w
b3J0X2lzX3NpbmsocG9ydCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3J0LT5j
Y19yZXEgPT0gVFlQRUNfQ0NfT1BFTikNCiAgICAgICAgICAgICAgICAgICAgICAgIHRjcG1fc2V0
X3N0YXRlKHBvcnQsIFNOS19BVFRBQ0hfV0FJVCwgMCk7DQorICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIFNSQ19VTkFUVEFDSEVEOg0KICAgICAg
ICBjYXNlIEFDQ19VTkFUVEFDSEVEOg0KDQp0aGFua3MNCkxpIEp1bg0KDQo+IA0KPiBHdWVudGVy
DQo+IA0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBMaSBKdW4gPGp1bi5saUBueHAuY29tPg0KPiA+PiAt
LS0NCj4gPj4gICBkcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMgfCA1ICsrKysrDQo+ID4+ICAgMSBm
aWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy91c2IvdHlwZWMvdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jDQo+ID4+IGlu
ZGV4IGQ4ODViZmYuLjk4ZWE5MTYgMTAwNjQ0DQo+ID4+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVj
L3RjcG0uYw0KPiA+PiArKysgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMNCj4gPj4gQEAgLTI1
OTksNiArMjU5OSw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fcmVzZXRfcG9ydChzdHJ1Y3QgdGNwbV9w
b3J0ICpwb3J0KQ0KPiA+PiAgIAl0Y3BtX3NldF9hdHRhY2hlZF9zdGF0ZShwb3J0LCBmYWxzZSk7
DQo+ID4+ICAgCXBvcnQtPnRyeV9zcmNfY291bnQgPSAwOw0KPiA+PiAgIAlwb3J0LT50cnlfc25r
X2NvdW50ID0gMDsNCj4gPj4gKwlwb3J0LT5jY19yZXEgPSBUWVBFQ19DQ19PUEVOOw0KPiA+PiAg
IAlwb3J0LT5zdXBwbHlfdm9sdGFnZSA9IDA7DQo+ID4+ICAgCXBvcnQtPmN1cnJlbnRfbGltaXQg
PSAwOw0KPiA+PiAgIAlwb3J0LT51c2JfdHlwZSA9IFBPV0VSX1NVUFBMWV9VU0JfVFlQRV9DOyBA
QCAtMjgzMSw2ICsyODMyLDgNCj4gQEANCj4gPj4gc3RhdGljIHZvaWQgcnVuX3N0YXRlX21hY2hp
bmUoc3RydWN0IHRjcG1fcG9ydCAqcG9ydCkNCj4gPj4gICAJCWJyZWFrOw0KPiA+Pg0KPiA+PiAg
IAljYXNlIFNSQ19BVFRBQ0hFRDoNCj4gPj4gKwkJaWYgKHBvcnQtPmNjX3JlcSA9PSBUWVBFQ19D
Q19PUEVOKQ0KPiA+PiArCQkJdGNwbV9zZXRfY2MocG9ydCwgdGNwbV9ycF9jYyhwb3J0KSk7DQo+
ID4+ICAgCQlyZXQgPSB0Y3BtX3NyY19hdHRhY2gocG9ydCk7DQo+ID4+ICAgCQl0Y3BtX3NldF9z
dGF0ZShwb3J0LCBTUkNfVU5BVFRBQ0hFRCwNCj4gPj4gICAJCQkgICAgICAgcmV0IDwgMCA/IDAg
OiBQRF9UX1BTX1NPVVJDRV9PTik7IEBAIC0zMDA0LDYNCj4gKzMwMDcsOCBAQA0KPiA+PiBzdGF0
aWMgdm9pZCBydW5fc3RhdGVfbWFjaGluZShzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KQ0KPiA+PiAg
IAkJdGNwbV9zZXRfc3RhdGUocG9ydCwgU05LX1VOQVRUQUNIRUQsDQo+IFBEX1RfUERfREVCT1VO
Q0UpOw0KPiA+PiAgIAkJYnJlYWs7DQo+ID4+ICAgCWNhc2UgU05LX0FUVEFDSEVEOg0KPiA+PiAr
CQlpZiAocG9ydC0+Y2NfcmVxID09IFRZUEVDX0NDX09QRU4pDQo+ID4+ICsJCQl0Y3BtX3NldF9j
Yyhwb3J0LCBUWVBFQ19DQ19SRCk7DQo+ID4+ICAgCQlyZXQgPSB0Y3BtX3Nua19hdHRhY2gocG9y
dCk7DQo+ID4+ICAgCQlpZiAocmV0IDwgMCkNCj4gPj4gICAJCQl0Y3BtX3NldF9zdGF0ZShwb3J0
LCBTTktfVU5BVFRBQ0hFRCwgMCk7DQo+ID4NCg0K
---
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
* [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach
@ 2018-06-13 11:14 Jun Li
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Li @ 2018-06-13 11:14 UTC (permalink / raw)
  To: Guenter Roeck, Heikki Krogerus, shufan_lee@richtek.com
  Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org,
	cw00.choi@samsung.com, a.hajda@samsung.com, Peter Chen,
	garsilva@embeddedor.com, gsomlo@gmail.com,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	dl-linux-imx

Hi
> -----Original Message-----
> From: Jun Li
> Sent: 2018年6月13日 19:07
> To: Guenter Roeck <linux@roeck-us.net>; Heikki Krogerus
> <heikki.krogerus@linux.intel.com>; shufan_lee@richtek.com
> Cc: robh+dt@kernel.org; gregkh@linuxfoundation.org; cw00.choi@samsung.com;
> a.hajda@samsung.com; Peter Chen <peter.chen@nxp.com>;
> garsilva@embeddedor.com; gsomlo@gmail.com; linux-usb@vger.kernel.org;
> devicetree@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>
> Subject: RE: [PATCH v6 12/15] usb: typec: tcpm: set cc for drp toggling attach
> 
> Hi,
> > -----Original Message-----
> > From: Guenter Roeck [mailto:groeck7@gmail.com] On Behalf Of Guenter
> > Roeck
> > Sent: 2018年6月11日 21:35
> > To: Heikki Krogerus <heikki.krogerus@linux.intel.com>; Jun Li
> > <jun.li@nxp.com>
> > Cc: robh+dt@kernel.org; gregkh@linuxfoundation.org;
> > cw00.choi@samsung.com; a.hajda@samsung.com; shufan_lee@richtek.com;
> > Peter Chen <peter.chen@nxp.com>; garsilva@embeddedor.com;
> > gsomlo@gmail.com; linux-usb@vger.kernel.org;
> > devicetree@vger.kernel.org; dl-linux-imx <linux-imx@nxp.com>
> > Subject: Re: [PATCH v6 12/15] usb: typec: tcpm: set cc for drp
> > toggling attach
> >
> > On 06/11/2018 05:29 AM, Heikki Krogerus wrote:
> > > On Mon, May 28, 2018 at 10:52:44AM +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.
> > >
> > > Is this something that should be considered as a fix?
> > >
> >
> > The problem with this patch is that it hides a problem. CC should have
> > been set by the time a port reaches the attached state. The patch
> > means that there is a state machine path where this does not happen.
> > I'd rather understand that path and fix the problem where it happens.
> 
> Here is my previous explanation about this state machine path[1]
> 
> [1]https://www.spinics.net/lists/linux-usb/msg167467.html
> 
> The physical CC line state is correct, just the Role Control register value may
> mismatch on some(e.g. shufan's) HW, if the common change in tcpm is not the
> right way, I have to ask shufan to try resolve this in his custom rt1711h driver.
> 
> I understand the concern of setting cc at attached state is late, should be done
> before that, how about I move this in cc_change like below:
> 
> @@ -3492,10 +3492,13 @@ static void _tcpm_cc_change(struct tcpm_port *port,
> enum typec_cc_status cc1,
>         switch (port->state) {
>         case DRP_TOGGLING:
>                 if (tcpm_port_is_debug(port) || tcpm_port_is_audio(port) ||
> -                   tcpm_port_is_source(port))
> +                   tcpm_port_is_source(port)) {
> +                       tcpm_set_cc(port, tcpm_rp_cc(port));
>                         tcpm_set_state(port, SRC_ATTACH_WAIT, 0);
> -               else if (tcpm_port_is_sink(port))
> +               } else if (tcpm_port_is_sink(port)) {
> +                       if (port->cc_req == TYPEC_CC_OPEN)

Sorry, here should be:

+               } else if (tcpm_port_is_sink(port)) {
+                       tcpm_set_cc(port, TYPEC_CC_RD);
                        tcpm_set_state(port, SNK_ATTACH_WAIT, 0);
+               }
>                         tcpm_set_state(port, SNK_ATTACH_WAIT, 0);
> +               }
>                 break;
>         case SRC_UNATTACHED:
>         case ACC_UNATTACHED:
> 
> thanks
> Li Jun
> 
> >
> > 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 d885bff..98ea916 100644
> > >> --- a/drivers/usb/typec/tcpm.c
> > >> +++ b/drivers/usb/typec/tcpm.c
> > >> @@ -2599,6 +2599,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 = TYPEC_CC_OPEN;
> > >>   	port->supply_voltage = 0;
> > >>   	port->current_limit = 0;
> > >>   	port->usb_type = POWER_SUPPLY_USB_TYPE_C; @@ -2831,6 +2832,8
> > @@
> > >> static void run_state_machine(struct tcpm_port *port)
> > >>   		break;
> > >>
> > >>   	case SRC_ATTACHED:
> > >> +		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); @@ -3004,6
> > +3007,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 == TYPEC_CC_OPEN)
> > >> +			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	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-06-13 11:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-28  2:52 [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach Jun Li
  -- strict thread matches above, loose matches on Subject: below --
2018-06-11 12:29 Heikki Krogerus
2018-06-11 13:35 Guenter Roeck
2018-06-13 11:06 Jun Li
2018-06-13 11:14 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).