From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 68B95C282C8 for ; Mon, 28 Jan 2019 15:36:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 403642148E for ; Mon, 28 Jan 2019 15:36:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726798AbfA1Pgs (ORCPT ); Mon, 28 Jan 2019 10:36:48 -0500 Received: from iolanthe.rowland.org ([192.131.102.54]:57038 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1726695AbfA1Pgs (ORCPT ); Mon, 28 Jan 2019 10:36:48 -0500 Received: (qmail 3449 invoked by uid 2102); 28 Jan 2019 10:36:47 -0500 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 28 Jan 2019 10:36:47 -0500 Date: Mon, 28 Jan 2019 10:36:47 -0500 (EST) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Yinbo Zhu cc: Xiaobo Xie , Jerry Huang , Ran Wang , Greg Kroah-Hartman , Ramneek Mehresh , Nikhil Badola , Suresh Gupta , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Suresh Gupta Subject: Re: [PATCH v4 2/5] usb: phy: Workaround for USB erratum-A005728 In-Reply-To: <20190125060356.14294-2-yinbo.zhu@nxp.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 25 Jan 2019, Yinbo Zhu wrote: > From: Suresh Gupta > > PHY_CLK_VALID bit for UTMI PHY in USBDR does not set even > if PHY is providing valid clock. Workaround for this > involves resetting of PHY and check PHY_CLK_VALID bit > multiple times. If PHY_CLK_VALID bit is still not set even > after 5 retries, it would be safe to deaclare that PHY > clock is not available. > This erratum is applicable for USBDR less then ver 2.4. > > Signed-off-by: Suresh Gupta > Signed-off-by: Yinbo Zhu > --- > Change in v4: > Incorrect indentation of the continuation line. > replace pr_err with dev_err. > > drivers/usb/host/ehci-fsl.c | 38 +++++++++++++++++++++++++++----------- > drivers/usb/host/ehci-fsl.h | 3 +++ > 2 files changed, 30 insertions(+), 11 deletions(-) > > diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c > index 38674b7..373a816 100644 > --- a/drivers/usb/host/ehci-fsl.c > +++ b/drivers/usb/host/ehci-fsl.c > @@ -183,6 +183,17 @@ static int fsl_ehci_drv_probe(struct platform_device *pdev) > return retval; > } > > +static bool usb_phy_clk_valid(struct usb_hcd *hcd) > +{ > + void __iomem *non_ehci = hcd->regs; > + bool ret = true; > + > + if (!(ioread32be(non_ehci + FSL_SOC_USB_CTRL) & PHY_CLK_VALID)) > + ret = false; > + > + return ret; > +} > + > static int ehci_fsl_setup_phy(struct usb_hcd *hcd, > enum fsl_usb2_phy_modes phy_mode, > unsigned int port_offset) > @@ -226,6 +237,17 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, > /* fall through */ > case FSL_USB2_PHY_UTMI: > case FSL_USB2_PHY_UTMI_DUAL: > + /* PHY_CLK_VALID bit is de-featured from all controller > + * versions below 2.4 and is to be checked only for > + * internal UTMI phy > + */ > + if (pdata->controller_ver > FSL_USB_VER_2_4 && > + pdata->have_sysif_regs && !usb_phy_clk_valid(hcd)) { > + dev_err(dev, > + "%s: USB PHY clock invalid\n", dev_name(dev)); This looks silly; it prints the device name twice (once because that's what dev_err() does, and then again because you explicitly told it to print the device name). Look at how dev_err() is used in other parts of the driver and do the same thing. > + return -EINVAL; > + } > + > if (pdata->have_sysif_regs && pdata->controller_ver) { > /* controller version 1.6 or above */ > tmp = ioread32be(non_ehci + FSL_SOC_USB_CTRL); > @@ -249,17 +271,11 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, > break; > } > > - /* > - * check PHY_CLK_VALID to determine phy clock presence before writing > - * to portsc > - */ > - if (pdata->check_phy_clk_valid) { > - if (!(ioread32be(non_ehci + FSL_SOC_USB_CTRL) & > - PHY_CLK_VALID)) { > - dev_warn(hcd->self.controller, > - "USB PHY clock invalid\n"); > - return -EINVAL; > - } > + if (pdata->have_sysif_regs && > + pdata->controller_ver > FSL_USB_VER_1_6 && > + !usb_phy_clk_valid(hcd)) { > + dev_warn(hcd->self.controller, "USB PHY clock invalid\n"); Once again, you have a continuation line that is indented by the same amount as the code in the inner block. Please fix this properly. > + return -EINVAL; > } > > ehci_writel(ehci, portsc, &ehci->regs->port_status[port_offset]); > diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h > index cbc4220..9d18c6e 100644 > --- a/drivers/usb/host/ehci-fsl.h > +++ b/drivers/usb/host/ehci-fsl.h > @@ -50,4 +50,7 @@ > #define UTMI_PHY_EN (1<<9) > #define ULPI_PHY_CLK_SEL (1<<10) > #define PHY_CLK_VALID (1<<17) > + > +/* Retry count for checking UTMI PHY CLK validity */ > +#define UTMI_PHY_CLK_VALID_CHK_RETRY 5 > #endif /* _EHCI_FSL_H */ Alan Stern 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,2/5] usb: phy: Workaround for USB erratum-A005728 From: Alan Stern Message-Id: Date: Mon, 28 Jan 2019 10:36:47 -0500 (EST) To: Yinbo Zhu Cc: Xiaobo Xie , Jerry Huang , Ran Wang , Greg Kroah-Hartman , Ramneek Mehresh , Nikhil Badola , Suresh Gupta , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Suresh Gupta List-ID: T24gRnJpLCAyNSBKYW4gMjAxOSwgWWluYm8gWmh1IHdyb3RlOgoKPiBGcm9tOiBTdXJlc2ggR3Vw dGEgPEI0MjgxM0BmcmVlc2NhbGUuY29tPgo+IAo+IFBIWV9DTEtfVkFMSUQgYml0IGZvciBVVE1J IFBIWSBpbiBVU0JEUiBkb2VzIG5vdCBzZXQgZXZlbgo+IGlmIFBIWSBpcyBwcm92aWRpbmcgdmFs aWQgY2xvY2suIFdvcmthcm91bmQgZm9yIHRoaXMKPiBpbnZvbHZlcyByZXNldHRpbmcgb2YgUEhZ IGFuZCBjaGVjayBQSFlfQ0xLX1ZBTElEIGJpdAo+IG11bHRpcGxlIHRpbWVzLiBJZiBQSFlfQ0xL X1ZBTElEIGJpdCBpcyBzdGlsbCBub3Qgc2V0IGV2ZW4KPiBhZnRlciA1IHJldHJpZXMsIGl0IHdv dWxkIGJlIHNhZmUgdG8gZGVhY2xhcmUgdGhhdCBQSFkKPiBjbG9jayBpcyBub3QgYXZhaWxhYmxl Lgo+IFRoaXMgZXJyYXR1bSBpcyBhcHBsaWNhYmxlIGZvciBVU0JEUiBsZXNzIHRoZW4gdmVyIDIu NC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTdXJlc2ggR3VwdGEgPEI0MjgxM0BmcmVlc2NhbGUuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IFlpbmJvIFpodSA8eWluYm8uemh1QG54cC5jb20+Cj4gLS0tCj4g Q2hhbmdlIGluIHY0Ogo+IAkJSW5jb3JyZWN0IGluZGVudGF0aW9uIG9mIHRoZSBjb250aW51YXRp b24gbGluZS4KPiAJCXJlcGxhY2UgcHJfZXJyIHdpdGggZGV2X2Vyci4KPiAKPiAgZHJpdmVycy91 c2IvaG9zdC9laGNpLWZzbC5jIHwgICAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLQo+ICBkcml2ZXJzL3VzYi9ob3N0L2VoY2ktZnNsLmggfCAgICAzICsrKwo+ICAyIGZp bGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktZnNsLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2Vo Y2ktZnNsLmMKPiBpbmRleCAzODY3NGI3Li4zNzNhODE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv dXNiL2hvc3QvZWhjaS1mc2wuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1mc2wuYwo+ IEBAIC0xODMsNiArMTgzLDE3IEBAIHN0YXRpYyBpbnQgZnNsX2VoY2lfZHJ2X3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlyZXR1cm4gcmV0dmFsOwo+ICB9Cj4gIAo+ICtz dGF0aWMgYm9vbCB1c2JfcGh5X2Nsa192YWxpZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQo+ICt7Cj4g Kwl2b2lkIF9faW9tZW0gKm5vbl9laGNpID0gaGNkLT5yZWdzOwo+ICsJYm9vbCByZXQgPSB0cnVl Owo+ICsKPiArCWlmICghKGlvcmVhZDMyYmUobm9uX2VoY2kgKyBGU0xfU09DX1VTQl9DVFJMKSAm IFBIWV9DTEtfVkFMSUQpKQo+ICsJCXJldCA9IGZhbHNlOwo+ICsKPiArCXJldHVybiByZXQ7Cj4g K30KPiArCj4gIHN0YXRpYyBpbnQgZWhjaV9mc2xfc2V0dXBfcGh5KHN0cnVjdCB1c2JfaGNkICpo Y2QsCj4gIAkJCSAgICAgICBlbnVtIGZzbF91c2IyX3BoeV9tb2RlcyBwaHlfbW9kZSwKPiAgCQkJ ICAgICAgIHVuc2lnbmVkIGludCBwb3J0X29mZnNldCkKPiBAQCAtMjI2LDYgKzIzNywxNyBAQCBz dGF0aWMgaW50IGVoY2lfZnNsX3NldHVwX3BoeShzdHJ1Y3QgdXNiX2hjZCAqaGNkLAo+ICAJCS8q IGZhbGwgdGhyb3VnaCAqLwo+ICAJY2FzZSBGU0xfVVNCMl9QSFlfVVRNSToKPiAgCWNhc2UgRlNM X1VTQjJfUEhZX1VUTUlfRFVBTDoKPiArCQkvKiBQSFlfQ0xLX1ZBTElEIGJpdCBpcyBkZS1mZWF0 dXJlZCBmcm9tIGFsbCBjb250cm9sbGVyCj4gKwkJICogdmVyc2lvbnMgYmVsb3cgMi40IGFuZCBp cyB0byBiZSBjaGVja2VkIG9ubHkgZm9yCj4gKwkJICogaW50ZXJuYWwgVVRNSSBwaHkKPiArCQkg Ki8KPiArCQlpZiAocGRhdGEtPmNvbnRyb2xsZXJfdmVyID4gRlNMX1VTQl9WRVJfMl80ICYmCj4g KwkJICAgIHBkYXRhLT5oYXZlX3N5c2lmX3JlZ3MgJiYgIXVzYl9waHlfY2xrX3ZhbGlkKGhjZCkp IHsKPiArCQkJZGV2X2VycihkZXYsCj4gKwkJCQkiJXM6IFVTQiBQSFkgY2xvY2sgaW52YWxpZFxu IiwgZGV2X25hbWUoZGV2KSk7CgpUaGlzIGxvb2tzIHNpbGx5OyBpdCBwcmludHMgdGhlIGRldmlj ZSBuYW1lIHR3aWNlIChvbmNlIGJlY2F1c2UgdGhhdCdzCndoYXQgZGV2X2VycigpIGRvZXMsIGFu ZCB0aGVuIGFnYWluIGJlY2F1c2UgeW91IGV4cGxpY2l0bHkgdG9sZCBpdCB0bwpwcmludCB0aGUg ZGV2aWNlIG5hbWUpLgoKTG9vayBhdCBob3cgZGV2X2VycigpIGlzIHVzZWQgaW4gb3RoZXIgcGFy dHMgb2YgdGhlIGRyaXZlciBhbmQgZG8gdGhlIApzYW1lIHRoaW5nLgoKPiArCQkJcmV0dXJuIC1F SU5WQUw7Cj4gKwkJfQo+ICsKPiAgCQlpZiAocGRhdGEtPmhhdmVfc3lzaWZfcmVncyAmJiBwZGF0 YS0+Y29udHJvbGxlcl92ZXIpIHsKPiAgCQkJLyogY29udHJvbGxlciB2ZXJzaW9uIDEuNiBvciBh Ym92ZSAqLwo+ICAJCQl0bXAgPSBpb3JlYWQzMmJlKG5vbl9laGNpICsgRlNMX1NPQ19VU0JfQ1RS TCk7Cj4gQEAgLTI0OSwxNyArMjcxLDExIEBAIHN0YXRpYyBpbnQgZWhjaV9mc2xfc2V0dXBfcGh5 KHN0cnVjdCB1c2JfaGNkICpoY2QsCj4gIAkJYnJlYWs7Cj4gIAl9Cj4gIAo+IC0JLyoKPiAtCSAq IGNoZWNrIFBIWV9DTEtfVkFMSUQgdG8gZGV0ZXJtaW5lIHBoeSBjbG9jayBwcmVzZW5jZSBiZWZv cmUgd3JpdGluZwo+IC0JICogdG8gcG9ydHNjCj4gLQkgKi8KPiAtCWlmIChwZGF0YS0+Y2hlY2tf cGh5X2Nsa192YWxpZCkgewo+IC0JCWlmICghKGlvcmVhZDMyYmUobm9uX2VoY2kgKyBGU0xfU09D X1VTQl9DVFJMKSAmCj4gLQkJICAgIFBIWV9DTEtfVkFMSUQpKSB7Cj4gLQkJCWRldl93YXJuKGhj ZC0+c2VsZi5jb250cm9sbGVyLAo+IC0JCQkJICJVU0IgUEhZIGNsb2NrIGludmFsaWRcbiIpOwo+ IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiAtCQl9Cj4gKwlpZiAocGRhdGEtPmhhdmVfc3lzaWZfcmVn cyAmJgo+ICsJICAgIHBkYXRhLT5jb250cm9sbGVyX3ZlciA+IEZTTF9VU0JfVkVSXzFfNiAmJgo+ ICsJCSF1c2JfcGh5X2Nsa192YWxpZChoY2QpKSB7Cj4gKwkJZGV2X3dhcm4oaGNkLT5zZWxmLmNv bnRyb2xsZXIsICJVU0IgUEhZIGNsb2NrIGludmFsaWRcbiIpOwoKT25jZSBhZ2FpbiwgeW91IGhh dmUgYSBjb250aW51YXRpb24gbGluZSB0aGF0IGlzIGluZGVudGVkIGJ5IHRoZSBzYW1lIAphbW91 bnQgYXMgdGhlIGNvZGUgaW4gdGhlIGlubmVyIGJsb2NrLiAgUGxlYXNlIGZpeCB0aGlzIHByb3Bl cmx5LgoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gIAllaGNpX3dyaXRlbChlaGNp LCBwb3J0c2MsICZlaGNpLT5yZWdzLT5wb3J0X3N0YXR1c1twb3J0X29mZnNldF0pOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktZnNsLmggYi9kcml2ZXJzL3VzYi9ob3N0L2Vo Y2ktZnNsLmgKPiBpbmRleCBjYmM0MjIwLi45ZDE4YzZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv dXNiL2hvc3QvZWhjaS1mc2wuaAo+ICsrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1mc2wuaAo+ IEBAIC01MCw0ICs1MCw3IEBACj4gICNkZWZpbmUgVVRNSV9QSFlfRU4gICAgICAgICAgICAgKDE8 PDkpCj4gICNkZWZpbmUgVUxQSV9QSFlfQ0xLX1NFTCAgICAgICAgKDE8PDEwKQo+ICAjZGVmaW5l IFBIWV9DTEtfVkFMSUQJCSgxPDwxNykKPiArCj4gKy8qIFJldHJ5IGNvdW50IGZvciBjaGVja2lu ZyBVVE1JIFBIWSBDTEsgdmFsaWRpdHkgKi8KPiArI2RlZmluZSBVVE1JX1BIWV9DTEtfVkFMSURf Q0hLX1JFVFJZIDUKPiAgI2VuZGlmCQkJCS8qIF9FSENJX0ZTTF9IICovCgpBbGFuIFN0ZXJuCg==