Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp457629imu; Tue, 22 Jan 2019 23:07:10 -0800 (PST) X-Google-Smtp-Source: ALg8bN6wqvk4jeH/uPMBKLJaVRReE0Z1f2VtRviyhlE39x85ATbhB9qyw7VBoQvJPa8yHTdiHYp1 X-Received: by 2002:a17:902:a60f:: with SMTP id u15mr1061407plq.275.1548227230183; Tue, 22 Jan 2019 23:07:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548227230; cv=none; d=google.com; s=arc-20160816; b=e3oTUne3S/6MB5kwhl0o1gK83Gmd6qaN1wCLpP664BDJHB2PWKZzrLjfqbfmjEckgn KMDJqT8Hvz6Rb7BTPVNh8b30SkFYkOIJuf2NNt/KzH22VfQcz6A6XypBP3eeyWpNc+x5 LJTrNXjg64v7PVJ3ZAmbXarEMVGAy6FGsHb9w9P/LeZF/xTtFLFwVrGRAvlznXg8OTdl KrIiJFnulcKy17H/UOhQI5K+g1B/tRabJ7PlCazvzGYxFuNeJIlj4qsqTgGceg7y/XC2 h4FRdX0Lfzi8Fx83o3zrHRJ3571jc/63XxtrcGAPmbeW1lbwKjBF3aPbfBd+WQGY/8vO JjNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=aN37nJrgIPgE7ZPr3xCbwczcG7b3LgUhcqSPB8QwGss=; b=Kz50HWuLf3oMblGq0JcXc/dwhXoxBHh32cEs1uKMKTCMipQHt1sOc3lX8F4iuOPLDv lmvWftq5dsIrlvijVGq0DEBSbOrBeNq34uU/17Ygchpt1DTfq+KjIc2cxnkZ574COjCe 0awHRO68y21Pi5zas1YwNqvLO3akKH+3qz0vDmOEtBanctnDGkQCx8x6kJDR0EwoHoiH v6+64ZkRzeF7NcWoKNbx2h3Vf5YIMp7Xnykki6UI/4yKQkyeULH1LVFP8bLHj5DKAMsU p1/cTMNupZFCcEKhp8OXZcglIltjY1CD31Ushx9c7Fgf+GqwxELCs99gSMuDX2RDI9wD o/Mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=O044ruWI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y6si18232929pfi.228.2019.01.22.23.06.54; Tue, 22 Jan 2019 23:07:10 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=O044ruWI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726678AbfAWHFh (ORCPT + 99 others); Wed, 23 Jan 2019 02:05:37 -0500 Received: from mail-eopbgr00040.outbound.protection.outlook.com ([40.107.0.40]:15536 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725995AbfAWHFg (ORCPT ); Wed, 23 Jan 2019 02:05:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aN37nJrgIPgE7ZPr3xCbwczcG7b3LgUhcqSPB8QwGss=; b=O044ruWIWIJw6Jreuk6JDpichfwteodkerEIGj8CmU/jjH1zIdAsCb1yMG4xBG5L9gjF/eB8vlnsp8ygfZWzd70iXODkciMZmeu+2Y6x6vz6dFz1w7VnDdha9faJjWbFrvMPczouDEYFineQ5mAvOxu6YcK39IE+VfShYUArrlk= Received: from VI1PR04MB4158.eurprd04.prod.outlook.com (52.133.15.33) by VI1PR04MB4717.eurprd04.prod.outlook.com (20.177.48.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.17; Wed, 23 Jan 2019 07:05:32 +0000 Received: from VI1PR04MB4158.eurprd04.prod.outlook.com ([fe80::257e:f28a:1a8c:c9c4]) by VI1PR04MB4158.eurprd04.prod.outlook.com ([fe80::257e:f28a:1a8c:c9c4%2]) with mapi id 15.20.1537.031; Wed, 23 Jan 2019 07:05:32 +0000 From: Yinbo Zhu To: Alan Stern CC: Yinbo Zhu , 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: [PATCH v3 2/5] usb: phy: Workaround for USB erratum-A005728 Thread-Topic: [PATCH v3 2/5] usb: phy: Workaround for USB erratum-A005728 Thread-Index: AQHUsuoHYXec1yvzwEqcp9dc5KDs6w== Date: Wed, 23 Jan 2019 07:05:31 +0000 Message-ID: <20190123070615.14462-2-yinbo.zhu@nxp.com> References: <20190123070615.14462-1-yinbo.zhu@nxp.com> In-Reply-To: <20190123070615.14462-1-yinbo.zhu@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR0302CA0022.apcprd03.prod.outlook.com (2603:1096:202::32) To VI1PR04MB4158.eurprd04.prod.outlook.com (2603:10a6:803:46::33) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yinbo.zhu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR04MB4717;6:0NdOA6Iia4bYUJUCKzLPh00VbMVdjrOyePkS0dx1uPewyXEuCRbKZyAnNOSltJJE65gFkyzuT8+BLWFwwsMSavGIFxdMHDLV5UfECmvl3mfk3ybt8/LvXJH7EzIP8vMTc5y4w/DAE+z8JIsgS93Kf7IYgg5JlCyNjDcHJWaoyMeiYrC8Cdhx2YZ75qh2VyKKnrhrMpa1tf8Mb4JlI169xjRYntCVeTSJu7gqoEM1vaTBnY8AgM0T1L3E0bfd2lLg2JIwYVuYjJo6bMokBxFCwkEmD4D3Vefnr2wkrO2O578beg1MtzZrQW801Wa0tD8wJ0GZWteptnNaZL8zT8lZ3Bdio9FctjykhSVlopA90OG4vMpCTHOMAJ+wDpkCe/gWsPiBUHPH7yc9RF9b17DXe4McJR8R5Vu41CKWmbZyuT4g4bKdv8UiS84u40ZYEbYV8vvugQEB2rw/1w1F30oFTQ==;5:ugQIpXvgiWAaZyF9KKTax8gxC9KbICS137i28dueZCADY9ck5/scoxAo3SpUSnRbRiSYhgTVG8MLutgWphgLwa1+/9AvjUQKrXxHhw5rEQNTcBj/3VmxvSSuTbSnDmmkOxtEaJBiYUycjM4VjLIe/iE+8I2AjxzTKpyoT4gYBcGj5a/9njIcdisZWt2Cf4slUruh0aS7UGH2W9nOT38biw==;7:4bN3/h2CTc19Y95uEb26ERD6UJj9rVbhHNZpxP6x4jszQ5nLQjBn21yb5upB6iBxXY9ecVZO/PxbAQVqu29nm4ZI6Yff3R9/n8L6ux4otdgImHSBdeT4qWGKzg78sbJVNkgUHDiD7TmGFKv1WGSh8A== x-ms-office365-filtering-correlation-id: 184e5e63-4e8d-480f-43ae-08d6810129d3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605077)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:VI1PR04MB4717; x-ms-traffictypediagnostic: VI1PR04MB4717: x-microsoft-antispam-prvs: x-forefront-prvs: 0926B0E013 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(979002)(136003)(376002)(396003)(39860400002)(366004)(346002)(199004)(189003)(36756003)(99286004)(386003)(53936002)(6506007)(6486002)(7736002)(71190400001)(305945005)(6916009)(102836004)(71200400001)(81156014)(86362001)(52116002)(446003)(2171002)(25786009)(81166006)(6436002)(6512007)(4326008)(66066001)(11346002)(8676002)(97736004)(486006)(256004)(106356001)(316002)(105586002)(68736007)(2906002)(2616005)(478600001)(26005)(54906003)(186003)(6116002)(1076003)(107886003)(3846002)(14454004)(8936002)(44832011)(76176011)(476003)(50226002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB4717;H:VI1PR04MB4158.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: U4dq8F+y/0S9NtfwzF1H84YrcBUWMRsPkCeg9kptKNwa63uy7Z1NLzRBnR6AVRhIuWFrLKutIw1pAOyYYA/9rDXpGpzDn+gNM1xnjlg2L+OXKWyqLLhRODLzFFoajPBXwwSN5JrF5SeCPyeu3z13/gZ4xMFbir+SxenSYWr85ebqV/qxpX0OZG1WKAy7vu7yVbEbZLDwXrOxdPLQXZU0ynWaiRcZEBrEhiWTnd+QS5pvvu631kMUzfaZgjSeX6no7jLizR6kkXLnZ7h/oiR+M2/xE9dIgnZGPBkfvmgE+Ggza/zqd6YiTs3OpBo6Im/SwR4fjJ9jkCVqTOdX29UG4udxKy66lRB5oOf7RtedfXKHN45Xbvmfr6jZh6AFcYMZrJYLidsaIOCbG+2FBYI9Je1z8JaMg6IW/KPyvzxWSAk= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 184e5e63-4e8d-480f-43ae-08d6810129d3 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jan 2019 07:05:27.5227 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4717 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 v3: replace in_be32 with ioread32be drivers/usb/host/ehci-fsl.c | 37 ++++++++++++++++++++++++++----------- drivers/usb/host/ehci-fsl.h | 3 +++ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index ea7e17b..8b0f3ed 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; } =20 +static bool usb_phy_clk_valid(struct usb_hcd *hcd) +{ + void __iomem *non_ehci =3D hcd->regs; + bool ret =3D true; + + if (!(ioread32be(non_ehci + FSL_SOC_USB_CTRL) & PHY_CLK_VALID)) + ret =3D 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,16 @@ 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)) { + pr_err("fsl-ehci: USB PHY clock invalid\n"); + return -EINVAL; + } + if (pdata->have_sysif_regs && pdata->controller_ver) { /* controller version 1.6 or above */ tmp =3D ioread32be(non_ehci + FSL_SOC_USB_CTRL); @@ -249,17 +270,11 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, break; } =20 - /* - * 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"); + return -EINVAL; } =20 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 */ --=20 1.7.1