From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guenter Roeck Subject: Re: [PATCH v4 10/13] usb: typec: tcpm: set cc for drp toggling attach Date: Thu, 29 Mar 2018 15:49:00 -0700 Message-ID: <20180329224900.GA6701@roeck-us.net> References: <1522253178-32414-1-git-send-email-jun.li@nxp.com> <1522253178-32414-11-git-send-email-jun.li@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1522253178-32414-11-git-send-email-jun.li@nxp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Li Jun Cc: devel@driverdev.osuosl.org, peter.chen@nxp.com, heikki.krogerus@linux.intel.com, devicetree@vger.kernel.org, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, a.hajda@samsung.com, robh+dt@kernel.org, linux-imx@nxp.com, shufan_lee@richtek.com List-Id: devicetree@vger.kernel.org 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 > --- > 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 > 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: [v4,10/13] usb: typec: tcpm: set cc for drp toggling attach From: Guenter Roeck Message-Id: <20180329224900.GA6701@roeck-us.net> Date: Thu, 29 Mar 2018 15:49:00 -0700 To: Li Jun Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, a.hajda@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-imx@nxp.com, devel@driverdev.osuosl.org List-ID: T24gVGh1LCBNYXIgMjksIDIwMTggYXQgMTI6MDY6MTVBTSArMDgwMCwgTGkgSnVuIHdyb3RlOgo+ IEluIGNhc2Ugb2YgZHJwIHRvZ2dsaW5nLCB3ZSBtYXkgbmVlZCBzZXQgY29ycmVjdCBjYyB2YWx1 ZSBmb3Igcm9sZSBjb250cm9sCj4gYWZ0ZXIgYXR0YWNoIGFzIGl0IG1heSBuZXZlciBiZWVuIHNl dC4KPiAKCklzbid0IENDIHNldCBieSB0aGUgbG93ZXIgbGV2ZWwgZHJpdmVyIGluIHRoaXMgY2Fz ZSA/IEluIG90aGVyIHdvcmRzLCBpcyBpdCBldmVyCm5lY2Vzc2FyeSB0byBjYWxsIGJhY2sgaW50 byB0aGUgbG93IGxldmVsIGRyaXZlciB0byBzZXQgQ0MgYWdhaW4gPyBEb2luZyB0aGF0IGluCmF0 dGFjaGVkIHN0YXRlIHNlZW1zIGEgYml0IGxhdGUuCgpJdCBtYXkgbWFrZSBtb3JlIHNlbnNlIHRv IHVwZGF0ZSBwb3J0LT5jY19yZXEgd2hlbiB0aGUgc3RhdGUgbWFjaGluZSBsZWF2ZXMKRFJQX1RP R0dMSU5HIHN0YXRlLCBpZSBpbiBfdGNwbV9jY19jaGFuZ2UoKSwgYW5kIHRvIGRvIGl0IHdpdGhv dXQgY2FsbGJhY2sKaW50byB0aGUgbG93IGxldmVsIGRyaXZlciAoaXQgc2hvdWxkIG5vdCBiZSBu ZWNlc3NhcnkpLgoKR3VlbnRlcgoKPiBTaWduZWQtb2ZmLWJ5OiBMaSBKdW4gPGp1bi5saUBueHAu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMgfCA1ICsrKysrCj4gIDEgZmls ZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv dHlwZWMvdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jCj4gaW5kZXggMjE4YzIzMC4u NzJkNDIzMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMKPiArKysgYi9k cml2ZXJzL3VzYi90eXBlYy90Y3BtLmMKPiBAQCAtMjEyNiw2ICsyMTI2LDcgQEAgc3RhdGljIHZv aWQgdGNwbV9yZXNldF9wb3J0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCj4gIAl0Y3BtX3NldF9h dHRhY2hlZF9zdGF0ZShwb3J0LCBmYWxzZSk7Cj4gIAlwb3J0LT50cnlfc3JjX2NvdW50ID0gMDsK PiAgCXBvcnQtPnRyeV9zbmtfY291bnQgPSAwOwo+ICsJcG9ydC0+Y2NfcmVxID0gMDsKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgdGNwbV9kZXRhY2goc3RydWN0IHRjcG1fcG9ydCAqcG9ydCkKPiBA QCAtMjM2MSw2ICsyMzYyLDggQEAgc3RhdGljIHZvaWQgcnVuX3N0YXRlX21hY2hpbmUoc3RydWN0 IHRjcG1fcG9ydCAqcG9ydCkKPiAgCQlicmVhazsKPiAgCj4gIAljYXNlIFNSQ19BVFRBQ0hFRDoK PiArCQlpZiAoIXBvcnQtPmNjX3JlcSkKPiArCQkJdGNwbV9zZXRfY2MocG9ydCwgdGNwbV9ycF9j Yyhwb3J0KSk7Cj4gIAkJcmV0ID0gdGNwbV9zcmNfYXR0YWNoKHBvcnQpOwo+ICAJCXRjcG1fc2V0 X3N0YXRlKHBvcnQsIFNSQ19VTkFUVEFDSEVELAo+ICAJCQkgICAgICAgcmV0IDwgMCA/IDAgOiBQ RF9UX1BTX1NPVVJDRV9PTik7Cj4gQEAgLTI1MzEsNiArMjUzNCw4IEBAIHN0YXRpYyB2b2lkIHJ1 bl9zdGF0ZV9tYWNoaW5lKHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCj4gIAkJdGNwbV9zZXRfc3Rh dGUocG9ydCwgU05LX1VOQVRUQUNIRUQsIFBEX1RfUERfREVCT1VOQ0UpOwo+ICAJCWJyZWFrOwo+ ICAJY2FzZSBTTktfQVRUQUNIRUQ6Cj4gKwkJaWYgKCFwb3J0LT5jY19yZXEpCj4gKwkJCXRjcG1f c2V0X2NjKHBvcnQsIFRZUEVDX0NDX1JEKTsKPiAgCQlyZXQgPSB0Y3BtX3Nua19hdHRhY2gocG9y dCk7Cj4gIAkJaWYgKHJldCA8IDApCj4gIAkJCXRjcG1fc2V0X3N0YXRlKHBvcnQsIFNOS19VTkFU VEFDSEVELCAwKTsKPiAtLSAKPiAyLjcuNAo+Ci0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMg bGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBv ZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBp bmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK