Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753968AbbEZPAL (ORCPT ); Tue, 26 May 2015 11:00:11 -0400 Received: from mail-bl2on0130.outbound.protection.outlook.com ([65.55.169.130]:41760 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753378AbbEZPAI (ORCPT ); Tue, 26 May 2015 11:00:08 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; From: Nikhil Badola To: CC: , , , Nikhil Badola , Suresh Gupta Subject: [PATCH 4/5] drivers:usb:fsl: Implement Workaround for USB Erratum A007792 Date: Tue, 26 May 2015 17:16:07 +0530 Message-ID: <1432640767-18700-1-git-send-email-nikhil.badola@freescale.com> X-Mailer: git-send-email 2.1.0 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC002;1:JMHUScAv8nk/RvHrEDsc2U91x+S3pKokV9Kow9egJ05+vuUmpoDMkgW8RPH4a0/jVuZ34k60qpjSnH/abLlA2AEWi43WqHudkNvRNKIlE5sVQz8FRM9S+kfbs8c5n6t4nGfwZnKUH+Csq++geSILf9DGhz3n7qOnpzH+0SHRfOv9bUN2/sFuJiAAeRAVSBw4di5kR1K2fjf7c6Es65BiSBmboqzanJMvg7OcKrck9bTb3sUgL//Iw/VNWVyCip7sz3Vo1P9pe8awWKavwAXjpmhO2Q0AV140SvP8wQOmMoi1aZKWeDQ7i+3KzE9OPrVibrNZVH4K38ubEnYUxKuj3g== X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(339900001)(189002)(199003)(85426001)(69596002)(19580405001)(50466002)(81156007)(97736004)(5001860100001)(5001830100001)(6806004)(68736005)(46102003)(104016003)(19580395003)(92566002)(33646002)(229853001)(64706001)(105606002)(2351001)(50226001)(47776003)(106466001)(107886002)(77096005)(48376002)(189998001)(86362001)(575784001)(4001540100001)(5001920100001)(50986999)(110136002)(87936001)(62966003)(77156002)(5001960100002)(36756003)(4001430100001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR0301MB1262;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1262;2:PfgA0T4+E4rp/35iEh5ELMqH8fKol+xFzdWYvaymV2YrQo41PYm6GarCIiyhBlov;2:dm6YCFT4xaHM5v5qZFbjhsB28yhmOrPNsZysdLBKDMvVceGxufVml2RYAUdywIG/eFp2a0GeFaoRd2SlDQCkEBItFW1ZTnFKBOV2S+JjjJ2Lb3Nl/7+GVRgewuGEnZo/bbltSBzWHO2vDhjNKgdSzL7XRMWYGXMYB5at8p3aHRWHCRrWKcdba8fLnOi02LYOABNI0n4dyzV0eJ6HwdhpvOlgXYJXH2kgnqjCI9g/ios=;6:JZH2tYUg2NVly1qtPkjYC6xjELqyBuFFXOckSy3PJe7K9x5lcnlFz/GkJoyCs0cNcNSexf0rb7QXh9mKOno+KrNfmSsrOup3MsoTBAYX6HV4rA/EqFYQvinTstsEUJlyZcXA9v1Efd0G8fmwY/Jav72n6MmyNP5aggMj+M6mmea56oFWnhQ87arrHUCVLJM1unEMr+470UaizLNf7AAbopS+na0hKSB2HLMKtxlg1nk3V3mlOhDbbUXR2Nxcl8M0CuIa16NWpUkMye4p8kh4dbyjtcl7bIt21+Tj7tkLblFbmHt0nQC6GQoz+2nTXehuaGbYFqgCLh8M2opLaylayg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB1262; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(520002)(3002001);SRVR:DM2PR0301MB1262;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB1262; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1262;3:yCcDls6nkVqDvh9OeDR5SgkMU4gKLXTyArYK1snezoiZFgv7yDwguPtbYT7JE/VEnl9PDehGUlVPyzyfECwI99MFR1M0D+SHN8w3YkEr58KNLLRBiprR1c3v9mJTsFUx3Pby58n39Z2j/q+CulJQu3Iclop4xs/dYtRqlyJOZK7LSqmF7WJjW8bXZiXlxjkgdr2Q+xG+coDZW86QRlIbTtiPnYc4ckF93bndOxQfHaB1zaaZxoaE6EfBjQe9t3YHEMyeRXF15uOKTHgDwuRHnCQ9P8qbbdETG2NAjKcyTgZjePt/BgU+4rquPIy8qFFL X-Forefront-PRVS: 0588B2BD96 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0301MB1262;9:EYVKWCBbSmaBqOl+h0UYzQJyQZQmQ1usMHyOZUWK?= =?us-ascii?Q?GCx8sWXqpbRswnSsQM1NbXgwn6xGAo/4Rfo424JrgVg5EKHwfaavO95E9da5?= =?us-ascii?Q?ZD1eaJKD4fPQfw/pJgbmsEsAspZIZ14XcwjBQvOEC6JriCLN27EHQfMITdVB?= =?us-ascii?Q?KFmflRFVDFqjPMPQJtcER8sq7Jxa4ZTydqH5q2txay31Z81zIptNmKyAgjbq?= =?us-ascii?Q?q/tBjV9z+XI8NMuxkyNULEAhvFT/vMYjae7sKKAlOYrUqxVGFlCq3qjZX+Tk?= =?us-ascii?Q?rlUwfol7PgSmCuR/BALc3/NJcaYYKd3OZ61uIwNLDte6+GDm+QtT7Z2xYIF9?= =?us-ascii?Q?I3HNz4oZykSgR5+exUMS95hzoZfJpxNsMkcQRBFmTGqbf130ELr5eUVdaLMP?= =?us-ascii?Q?MY2ehsvaZX/nwXrDnNiJEBK1YhFnL5BBuLnVB/cgDAFh0sgVhU6domirh6Ag?= =?us-ascii?Q?xX+Bo02JEAYFHmiUTUBC4duNq7dt8665TAwxVOyBvexFXlQ229/upVTwSaJg?= =?us-ascii?Q?zhi+Su6YtD1DjD/qIOcnfGehSK/6RGBI1NCmvfPcEBIpZPJ4yckTsbR1QA/S?= =?us-ascii?Q?v/mCK+1rniZtcgnUIsJqdLYgLwN/9Z71Lz8KMpYqzbC3vfMwAVp2gtO2JTRt?= =?us-ascii?Q?a6OEpuIctAP1x0QmpfObrlmXrtLrntp94A/1v4rODwn97TEf71dihfET7giP?= =?us-ascii?Q?buKdU6DrODHW2/dSMvbMsxwc8rhxN3MOHWBv9vdOMr6s7t/I0YZ+Y9LYexvt?= =?us-ascii?Q?oPBnNRDq6KX3y1jwKdiQfcDl2Z52HbqdGAUwvlnxjbQuaJo7mFbqvB7hqqBM?= =?us-ascii?Q?v4tS9JojFI8ifE/NVQjkkv+8gS60SkG2zcLKKV7ZcR8/uuAtQu7ZjrGOdFtY?= =?us-ascii?Q?XElggI5a+7MEC9oOsJJC9jQAoE7G4tyV7vj4W+4NEiETnxoQLe0B1eL0pmFh?= =?us-ascii?Q?o8r/HY82b4fD2QapB2iFtblH/sKHttwEwi3y2u8GhhecPRj6pVPHjFo0Atjf?= =?us-ascii?Q?VNTarb0C8nkwQPCdAJ+hwnA0qWWJPfyjtSrDQpUbCtTaO09Jz4EeeOXw2yFz?= =?us-ascii?Q?q5T/5AKDw7d+AqIyj2zeTiqjKfODP3luiydSjTcFh+O+CQXD1LvHv8ZL3Hph?= =?us-ascii?Q?UpYGPXmMDGU=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1262;3:NBvSCXTbhNXZzhy6mnBY+ZxAO5lr8TyNhN31iuAniMujvfFmtaGCRShq7ne/tbvHRD/DyWAVKPxavrQMTewb3tYklDPGObWtCgf1qPRlu8esP+txWrbzKymai/y+f+w5L7t5r2qJmoFInJwA9njAKQ==;10:Un0Q/VYp7lv+I4SJJrNTuN5gY+HzbYnuRryrmpVB5+6CG/6Z/666aEUViF6fcf0wdKMGR8IsSIm6sVEpmYLeYWgJCfQdEArUDnhdWLWWLVI=;6:BPVteTj6PwVJj/BYKXyIxbqjla3CaY8iZZG7oFuc28kpZdY0PtyKJ6UbBizNhFmD X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2015 11:21:56.3611 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB1262 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2763 Lines: 70 USB controller version-2.5 requires to enable internal UTMI phy and program PTS field in PORTSC register before asserting controller reset. This is must for successful resetting of the controller and subsequent enumeration of usb devices Signed-off-by: Nikhil Badola Signed-off-by: Suresh Gupta --- drivers/usb/host/ehci-fsl.c | 9 +++++++++ drivers/usb/host/fsl-mph-dr-of.c | 6 ++++++ include/linux/fsl_devices.h | 1 + 3 files changed, 16 insertions(+) diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index ab4eee3..e77a379 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -119,6 +119,15 @@ static int usb_hcd_fsl_probe(const struct hc_driver *driver, if (pdata->have_sysif_regs && pdata->controller_ver < FSL_USB_VER_1_6) setbits32(hcd->regs + FSL_SOC_USB_CTRL, 0x4); + /* + * Enable UTMI phy and program PTS field in UTMI mode before asserting + * controller reset for USB Controller version 2.5 + */ + if (pdata->has_fsl_erratum_a007792) { + writel_be(CTRL_UTMI_PHY_EN, hcd->regs + FSL_SOC_USB_CTRL); + writel(PORT_PTS_UTMI, hcd->regs + FSL_SOC_USB_PORTSC1); + } + /* Don't need to set host mode here. It will be done by tdi_reset() */ retval = usb_add_hcd(hcd, irq, IRQF_SHARED); diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c index 5e0d600..5e21947 100644 --- a/drivers/usb/host/fsl-mph-dr-of.c +++ b/drivers/usb/host/fsl-mph-dr-of.c @@ -214,6 +214,12 @@ static int fsl_usb2_mph_dr_of_probe(struct platform_device *ofdev) pdata->phy_mode = determine_usb_phy(prop); pdata->controller_ver = usb_get_ver_info(np); + /* Activate Erratum by reading property in device tree */ + if (of_get_property(np, "fsl,usb-erratum-a007792", NULL)) + pdata->has_fsl_erratum_a007792 = 1; + else + pdata->has_fsl_erratum_a007792 = 0; + if (pdata->have_sysif_regs) { if (pdata->controller_ver < 0) { dev_warn(&ofdev->dev, "Could not get controller version\n"); diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h index 6447b7b..63f266d 100644 --- a/include/linux/fsl_devices.h +++ b/include/linux/fsl_devices.h @@ -96,6 +96,7 @@ struct fsl_usb2_platform_data { unsigned suspended:1; unsigned already_suspended:1; + unsigned has_fsl_erratum_a007792:1; /* register save area for suspend/resume */ u32 pm_command; -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/