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: usb: dwc3: core: Don't try to get PHYs during suspend/resume From: Roger Quadros Message-Id: Date: Thu, 11 Jan 2018 11:23:17 +0200 To: Felipe Balbi Cc: vigneshr@ti.com, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "linux-stable # = v4 . 13" , Heikki Krogerus List-ID: T24gMTEvMDEvMTggMTE6MDksIFJvZ2VyIFF1YWRyb3Mgd3JvdGU6Cj4gK0hlaWtraQo+IAo+IE9u IDExLzAxLzE4IDEwOjI1LCBGZWxpcGUgQmFsYmkgd3JvdGU6Cj4+Cj4+IEhpLAo+Pgo+PiBSb2dl ciBRdWFkcm9zIDxyb2dlcnFAdGkuY29tPiB3cml0ZXM6Cj4+Pj4+PiAtCXJldCA9IGR3YzNfY29y ZV9zb2Z0X3Jlc2V0KGR3Yyk7Cj4+Pj4+PiArCXJldCA9IGR3YzNfY29yZV9nZXRfcGh5KGR3Yyk7 Cj4+Pj4+Cj4+Pj4+IHdlIGNhbiBnZXRfcGh5IGluIGR3YzNfY29yZV9pbml0KCkgYXMgaXQgd2ls bCBnZXQgY2FsbGVkIG9uIHJlc3VtZSgpLgo+Pj4+PiBUaGlzIHdhcyB0aGUgJHN1YmplY3Qgb2Yg dGhpcyBwYXRjaC4KPj4+Pgo+Pj4+IGluZGVlZC4gdGhhbmtzIDotKQo+Pj4+Cj4+Pgo+Pj4gb29w cyBzb3JyeS4gSSBtZWFudCB3ZSBjYW4ndCBjYWxsIGR3YzNfY29yZV9nZXRfcGh5KCkgaW4gZHdj M19jb3JlX2luaXQoKS4gOlAKPj4KPj4gYml0IG9mIGEgY2hpY2tlbi1hbmQtZWdnIHByb2JsZW0u IFdlIG5lZWQgdG8gc2V0dXAgdGhlIFBIWSBpbnRlcmZhY2UKPj4gYmVmb3JlIGdldHRpbmcgdGhl IFBIWXMsIGJ1dCBjYW4ndCBnZXQgUEhZIGR1cmluZyByZXN1bWUuIE1heWJlIHRoZSBiZXN0Cj4+ IHdheSBoZXJlIHdvdWxkIGJlIHRvIGNoZWNrIGZvciB0aGUgcG9pbnRlcnMgYmVpbmcgdmFsaWQu IFNvbWV0aGluZyBsaWtlOgo+Pgo+PiBpZiAoIXBoeSkKPj4gCWdldF9waHkoKTsKPj4KPiAKPiBP SyB0aGF0IHNob3VsZCB0YWtlIGNhcmUgb2Ygbm90IGNhbGxpbmcgZ2V0X3BoeSgpIG9uIHN1c3Bl bmQuCj4gSG93ZXZlciB0aGVyZSBpcyBvbmUgbW9yZSBpc3N1ZSB3aXRoIHRoZSBhcHByb2FjaAo+ IAo+PiBAQCAtNzU0LDE1ICs3NTQsMTUgQEAgc3RhdGljIGludCBkd2MzX2NvcmVfaW5pdChzdHJ1 Y3QgZHdjMyAqZHdjKQo+PiAgCQkJZHdjLT5tYXhpbXVtX3NwZWVkID0gVVNCX1NQRUVEX0hJR0g7 Cj4+ICAJfQo+PiAgCj4+IC0JcmV0ID0gZHdjM19jb3JlX2dldF9waHkoZHdjKTsKPj4gKwlyZXQg PSBkd2MzX3BoeV9zZXR1cChkd2MpOwo+PiAgCWlmIChyZXQpCj4+ICAJCWdvdG8gZXJyMDsKPiAK PiBoZXJlIHdlIGNvbmZpZ3VyZSBQSFkgcmVsYXRlZCBiaXRzIGFuZCByZWdpc3RlciB0aGUgdWxw aSBpbnRlcmZhY2UuCj4gCj4+ICAKPj4gLQlyZXQgPSBkd2MzX2NvcmVfc29mdF9yZXNldChkd2Mp Owo+PiArCXJldCA9IGR3YzNfY29yZV9nZXRfcGh5KGR3Yyk7Cj4+ICAJaWYgKHJldCkKPj4gIAkJ Z290byBlcnIwOwo+PiAgCj4gCj4gd2UgZ290IHRoZSBQSFlzLiBhbGwgT0sgaGVyZS4KPiAKPj4g LQlyZXQgPSBkd2MzX3BoeV9zZXR1cChkd2MpOwo+PiArCXJldCA9IGR3YzNfY29yZV9zb2Z0X3Jl c2V0KGR3Yyk7Cj4+ICAJaWYgKHJldCkKPj4gIAkJZ290byBlcnIwOwo+IAo+IE5vdyB3ZSBkbyBh IHNvZnQgcmVzZXQuIFRoaXMgbWVhbnMgd2UgbG9vc2UgdGhlIFBIWSBjb25maWd1cmF0aW9uIGJp dHMgdGhhdCB3ZSBkaWQKCkFjdHVhbGx5IEkgd2FzIHdyb25nLiBXZSdyZSBvbmx5IHJlc2V0dGlu ZyB0aGUgZGV2aWNlIHNpZGUgKERDVEwuQ1NGVFJTVCkgd2hpY2ggZG9lc24ndCBzZWVtIHRvIGFm ZmVjdApHVVNCMlBIWUNGR24gYW5kIEdVU0IzUElQRUNUTG4gcmVnaXN0ZXJzLgoKU28gd2UncmUg Z29vZC4KCj4gaW4gZHdjM19waHlfc2V0dXAuIFNvIHdlIG5lZWQgdG8gY2FsbCBkd2MzX3BoeV9z ZXR1cCBhZ2FpbiBidXQgbm90IHJlLXJlZ2lzdGVyIHRoZSB1bHBpIGludGVyZmFjZS4KPiBJIGNh biB1c2UgYSBmbGFnIHRoZXJlIHNvIHRoYXQgZHdjM191bHBpX2luaXQoKSBpcyBkb25lIG9ubHkg b25jZS4KPgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754487AbeAKJX2 (ORCPT + 1 other); Thu, 11 Jan 2018 04:23:28 -0500 Received: from lelnx194.ext.ti.com ([198.47.27.80]:11157 "EHLO lelnx194.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752437AbeAKJXW (ORCPT ); Thu, 11 Jan 2018 04:23:22 -0500 Subject: Re: [PATCH] usb: dwc3: core: Don't try to get PHYs during suspend/resume From: Roger Quadros To: Felipe Balbi CC: , , , , "linux-stable # = v4 . 13" , Heikki Krogerus References: <1515589914-23460-1-git-send-email-rogerq@ti.com> <0c2c7e45-9324-316a-d44b-dd17a3a2c68b@ti.com> <87373dzvmi.fsf@linux.intel.com> <327eac7d-80e2-bbd6-4fb4-98d947335698@ti.com> <87wp0pyfmo.fsf@linux.intel.com> <610c35d0-31b9-0c51-81e4-9f0d1daf5c51@ti.com> <87inc8yf7k.fsf@linux.intel.com> Message-ID: Date: Thu, 11 Jan 2018 11:23:17 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Language: en-GB Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On 11/01/18 11:09, Roger Quadros wrote: > +Heikki > > On 11/01/18 10:25, Felipe Balbi wrote: >> >> Hi, >> >> Roger Quadros writes: >>>>>> - ret = dwc3_core_soft_reset(dwc); >>>>>> + ret = dwc3_core_get_phy(dwc); >>>>> >>>>> we can get_phy in dwc3_core_init() as it will get called on resume(). >>>>> This was the $subject of this patch. >>>> >>>> indeed. thanks :-) >>>> >>> >>> oops sorry. I meant we can't call dwc3_core_get_phy() in dwc3_core_init(). :P >> >> bit of a chicken-and-egg problem. We need to setup the PHY interface >> before getting the PHYs, but can't get PHY during resume. Maybe the best >> way here would be to check for the pointers being valid. Something like: >> >> if (!phy) >> get_phy(); >> > > OK that should take care of not calling get_phy() on suspend. > However there is one more issue with the approach > >> @@ -754,15 +754,15 @@ static int dwc3_core_init(struct dwc3 *dwc) >> dwc->maximum_speed = USB_SPEED_HIGH; >> } >> >> - ret = dwc3_core_get_phy(dwc); >> + ret = dwc3_phy_setup(dwc); >> if (ret) >> goto err0; > > here we configure PHY related bits and register the ulpi interface. > >> >> - ret = dwc3_core_soft_reset(dwc); >> + ret = dwc3_core_get_phy(dwc); >> if (ret) >> goto err0; >> > > we got the PHYs. all OK here. > >> - ret = dwc3_phy_setup(dwc); >> + ret = dwc3_core_soft_reset(dwc); >> if (ret) >> goto err0; > > Now we do a soft reset. This means we loose the PHY configuration bits that we did Actually I was wrong. We're only resetting the device side (DCTL.CSFTRST) which doesn't seem to affect GUSB2PHYCFGn and GUSB3PIPECTLn registers. So we're good. > in dwc3_phy_setup. So we need to call dwc3_phy_setup again but not re-register the ulpi interface. > I can use a flag there so that dwc3_ulpi_init() is done only once. > -- cheers, -roger Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki