From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Sender: Guenter Roeck Subject: Re: [PATCH v6 12/15] usb: typec: tcpm: set cc for drp toggling attach References: <1527475967-15201-1-git-send-email-jun.li@nxp.com> <1527475967-15201-13-git-send-email-jun.li@nxp.com> <20180611122958.GK17155@kuha.fi.intel.com> From: Guenter Roeck Message-ID: Date: Mon, 11 Jun 2018 06:35:02 -0700 MIME-Version: 1.0 In-Reply-To: <20180611122958.GK17155@kuha.fi.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit To: Heikki Krogerus , Li Jun Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org, cw00.choi@samsung.com, a.hajda@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, garsilva@embeddedor.com, gsomlo@gmail.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-imx@nxp.com List-ID: 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 >> --- >> 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); > From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v6,12/15] usb: typec: tcpm: set cc for drp toggling attach From: Guenter Roeck Message-Id: Date: Mon, 11 Jun 2018 06:35:02 -0700 To: Heikki Krogerus , Li Jun Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org, cw00.choi@samsung.com, a.hajda@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, garsilva@embeddedor.com, gsomlo@gmail.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-imx@nxp.com List-ID: T24gMDYvMTEvMjAxOCAwNToyOSBBTSwgSGVpa2tpIEtyb2dlcnVzIHdyb3RlOgo+IE9uIE1vbiwg TWF5IDI4LCAyMDE4IGF0IDEwOjUyOjQ0QU0gKzA4MDAsIExpIEp1biB3cm90ZToKPj4gSW4gY2Fz ZSBvZiBkcnAgdG9nZ2xpbmcsIHdlIG1heSBuZWVkIHNldCBjb3JyZWN0IGNjIHZhbHVlIGZvciBy b2xlIGNvbnRyb2wKPj4gYWZ0ZXIgYXR0YWNoIGFzIGl0IG1heSBuZXZlciBiZWVuIHNldC4KPiAK PiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgZml4Pwo+ IAoKVGhlIHByb2JsZW0gd2l0aCB0aGlzIHBhdGNoIGlzIHRoYXQgaXQgaGlkZXMgYSBwcm9ibGVt LiBDQyBzaG91bGQgaGF2ZSBiZWVuIHNldApieSB0aGUgdGltZSBhIHBvcnQgcmVhY2hlcyB0aGUg YXR0YWNoZWQgc3RhdGUuIFRoZSBwYXRjaCBtZWFucyB0aGF0IHRoZXJlIGlzCmEgc3RhdGUgbWFj aGluZSBwYXRoIHdoZXJlIHRoaXMgZG9lcyBub3QgaGFwcGVuLiBJJ2QgcmF0aGVyIHVuZGVyc3Rh bmQgdGhhdApwYXRoIGFuZCBmaXggdGhlIHByb2JsZW0gd2hlcmUgaXQgaGFwcGVucy4KCkd1ZW50 ZXIKCj4+IFNpZ25lZC1vZmYtYnk6IExpIEp1biA8anVuLmxpQG54cC5jb20+Cj4+IC0tLQo+PiAg IGRyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYyB8IDUgKysrKysKPj4gICAxIGZpbGUgY2hhbmdlZCwg NSBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3Bt LmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMKPj4gaW5kZXggZDg4NWJmZi4uOThlYTkxNiAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jCj4+ICsrKyBiL2RyaXZlcnMv dXNiL3R5cGVjL3RjcG0uYwo+PiBAQCAtMjU5OSw2ICsyNTk5LDcgQEAgc3RhdGljIHZvaWQgdGNw bV9yZXNldF9wb3J0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCj4+ICAgCXRjcG1fc2V0X2F0dGFj aGVkX3N0YXRlKHBvcnQsIGZhbHNlKTsKPj4gICAJcG9ydC0+dHJ5X3NyY19jb3VudCA9IDA7Cj4+ ICAgCXBvcnQtPnRyeV9zbmtfY291bnQgPSAwOwo+PiArCXBvcnQtPmNjX3JlcSA9IFRZUEVDX0ND X09QRU47Cj4+ICAgCXBvcnQtPnN1cHBseV92b2x0YWdlID0gMDsKPj4gICAJcG9ydC0+Y3VycmVu dF9saW1pdCA9IDA7Cj4+ICAgCXBvcnQtPnVzYl90eXBlID0gUE9XRVJfU1VQUExZX1VTQl9UWVBF X0M7Cj4+IEBAIC0yODMxLDYgKzI4MzIsOCBAQCBzdGF0aWMgdm9pZCBydW5fc3RhdGVfbWFjaGlu ZShzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KQo+PiAgIAkJYnJlYWs7Cj4+ICAgCj4+ICAgCWNhc2Ug U1JDX0FUVEFDSEVEOgo+PiArCQlpZiAocG9ydC0+Y2NfcmVxID09IFRZUEVDX0NDX09QRU4pCj4+ ICsJCQl0Y3BtX3NldF9jYyhwb3J0LCB0Y3BtX3JwX2NjKHBvcnQpKTsKPj4gICAJCXJldCA9IHRj cG1fc3JjX2F0dGFjaChwb3J0KTsKPj4gICAJCXRjcG1fc2V0X3N0YXRlKHBvcnQsIFNSQ19VTkFU VEFDSEVELAo+PiAgIAkJCSAgICAgICByZXQgPCAwID8gMCA6IFBEX1RfUFNfU09VUkNFX09OKTsK Pj4gQEAgLTMwMDQsNiArMzAwNyw4IEBAIHN0YXRpYyB2b2lkIHJ1bl9zdGF0ZV9tYWNoaW5lKHN0 cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCj4+ICAgCQl0Y3BtX3NldF9zdGF0ZShwb3J0LCBTTktfVU5B VFRBQ0hFRCwgUERfVF9QRF9ERUJPVU5DRSk7Cj4+ICAgCQlicmVhazsKPj4gICAJY2FzZSBTTktf QVRUQUNIRUQ6Cj4+ICsJCWlmIChwb3J0LT5jY19yZXEgPT0gVFlQRUNfQ0NfT1BFTikKPj4gKwkJ CXRjcG1fc2V0X2NjKHBvcnQsIFRZUEVDX0NDX1JEKTsKPj4gICAJCXJldCA9IHRjcG1fc25rX2F0 dGFjaChwb3J0KTsKPj4gICAJCWlmIChyZXQgPCAwKQo+PiAgIAkJCXRjcG1fc2V0X3N0YXRlKHBv cnQsIFNOS19VTkFUVEFDSEVELCAwKTsKPgotLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxp c3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkgb2Yg YSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5m byBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg==