Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752565AbbGNMGg (ORCPT ); Tue, 14 Jul 2015 08:06:36 -0400 Received: from mail-bn1on0143.outbound.protection.outlook.com ([157.56.110.143]:45440 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752021AbbGNMGe (ORCPT ); Tue, 14 Jul 2015 08:06:34 -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 Subject: [PATCH 2/2] drivers: usb: fsl: Define usb control register mask for w1c bits Date: Tue, 14 Jul 2015 17:28:47 +0530 Message-ID: <1436875127-24129-1-git-send-email-nikhil.badola@freescale.com> X-Mailer: git-send-email 2.1.0 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD032;1:DnDTAcBtZlo1SPov8ZIs3f/wv4lKm0Apl7MMbjOgAe/26GSwnGnfIHQkCRJ9htNsIz3O3e+vU0MVRQkB2KrgPLISBTcfffjtXtsOijsuRdgPIOiId8vM+mVR255Q+wC8MmVK+6oy+MlJrl9y6nYM7tEYQe8si+iwncD0IEO0pWSPDeBRao3zFRYRh9ObNve1cJBmYlStbaMeDJujmARdjzhHnJksoaco9IwK/8UtkkuTClcC7r0tLj9oTnDBM9YeDbsjpy2e+Fb5zrM/ib6mXFXzXWyuQpMoTjAt8Y9D/oUYZWyZ6D237xDDVRKz5QakTd3UOtdP2Z7lN4HyshGbBaJYwZU5+SIUuHV7ROR6WyiPsj2APyGzqGdlO1ABlaoA0t3jYiqw9wyn9+YkipQ4+pdLoWtWREc9Ch9tJZ5lehthUYFFV6I0QDnlwi1sh441 X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(339900001)(189002)(199003)(77156002)(5001770100001)(107886002)(46102003)(229853001)(106466001)(5001960100002)(92566002)(189998001)(50226001)(6806004)(5003940100001)(77096005)(62966003)(19580405001)(85426001)(36756003)(104016003)(86362001)(48376002)(19580395003)(50986999)(33646002)(47776003)(87936001)(50466002)(105606002)(4001430100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR0301MB1624;H:az84smr01.freescale.net;FPR:;SPF:Fail;MLV:sfv;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1624;2:LeqBfOgwdviy99Lqx0px+z7VjhvGs2u9byVqkGTOqfqWCuqpxMPYJjN6GXUa34Xu;3:EGTRm0aBbaTcylJq2z1MOlLrjI8CXHigF8xWvw5L40Hzl1r2OJnEgQjcOQLvbdhTqa5lUlI35RwGZRtfZcjYmAyLhLER94eIWYFDOP+/Iq0cycC6fCP6jeA4HeyDZ5Yfa4QlKwLs0N4d3NtvN1OJKU1FLvoCHD6J+QUsic8AuXqfEIZBkK7qYwJmGFGzHq/d1lvrkQsyE+lNqWrtRz40yP1GDY5Cph5uyQm/yZl1dFs=;25:2YBUFAlniouGZSy3tjpNX95Aw4a9yh6koS6eXNhAo/vPnoIfgByir1qbidie+wlcpazAh1d4g8Epj+MqlWZjZ+G+tO+I1dKlP3CpPVYJMRwr91d0SAAwjN1BOeD3t3YsZHpUlCCox2OxhepQ4kTw8YTt8EGowpY5cqQK54Nx4WWEHgEeXNkuESiXADQYYt97+GyjLle5UIlQxRU0tDLfcgOPOvL9NGp8YtK0qtIJudph6bELg2z6KAeduItSGelw;20:SQPZc3L5sAi88ieg50efomzV42QDZC29K991/MrY+4qBP/MCCY0chCWeqaYwHuErVKDSs8CknPNa0+HAuOqe78s4UoNgXqZWPFe66KR/89OAIGR+2ZxDfs4+MF3KGd6bpJJlhnGDz9Yk423oHihq8e4t5MXIvM4ivegPZkdkNagQgFx2PrDmcWbrbe09+NPrjv3F3hSyuh085gcqZM05vT7mfnhm/V5ogxjSAFx7y13CWJakDFFxSIs5E2d5Aubpcae6fezlDX6wRp1unVEhkLEIwqx3ozFqXLdxNNlwMbH1mIBlh3ZWeCRdEmdEi+NwboYaha5DjR1tuZb+xLpb1sKdoBHa8gsb4LSKXf96g4U= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB1624; BY2PR0301MB1624: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BY2PR0301MB1624;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB1624; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1624;4:/3kBAokYxhDpqACSyGu1JN3gKSlbjuJZ+val+oiqFU/ls99LRLsZsKyXrOy+yBTRKPIRkBvkn8Pay76KVtrQGKIaib8Mu8t4FnQdPfL7vvXdj2seCaxq2MF8DKUqnyQXCN4EVjqFHdugRwi4+zsNKQu1ywuXMAZEjmCIJDG7eJzWfowZZQrOv6qke0TvGzPFgg8RBYSO4zDiP0yhHBK7yevjwN35tQawYD104TpTtO/0bTFxOS1YCbuC2bix0LG++W5bUaacqS5G2Ccfhgwvw3J6fy7ZyuDwj+YSynbZfxU= X-Forefront-PRVS: 0637FCE711 X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1624;23:JDskPxbWvFWH720mA9wUvTtjPprllaSY3W9U1rapAqqY5Cu3bgy2JPO+pPtosIlflMxDm7/mVhgUC7W0Basgg2tJsNOOVf+0lguRNtlUNSMVVv4R3em1djn2doXEyIo5f/HeF9/xqCl+kZwD8iuF1X1VsTQzrH/jqO+Wam/rNREvac6IsdcsGv1TmQc0v7zfCCz8fd0rbgyc1GQwlNagVbsXutVYgGoAN00gm1h3jt9CL7jRXxCW5S88KO4QhRh26jvi0yFY8CTK3NJUKGu9Zz0/OEr0A0fTuSL1eThiJUGkMPuspR0zSeMiljthtWpi5xITR7pUfdDR1XWsw5rBlm5fHyTSA/lEzJSWOxVMXgj/cNJlhOtGr2T/hY/gVg4qtqKd4ETpfkT3vVg6Phn2rWm2pI/69GGq/M2AKmr/acAjOeR9DHIxOZveXlDIOwip9xAyS2vOpP1QRW8DxOG4CKxQZZfpwrDQLgHA2jrf3fTFLQQfp6IeP5I67Sv9C8IMT5jnkgz7ShDGcXzXgYtG8P5+2pFFOOM7eyQx2fKE85YXVzn1r8EJh2SPa9Ozsuoau755D+sxXmAn0ovZM9OK1kBaWkE1MFVvPfhtARFBszTBW8lgbI1vVT3xJ4cUb+nH5bLji4lwaDJApBrD2fyCVYIFQOHTk473b96H3CHCE05d7oaIghWNNQoSFcei7SvbAwD2IA3RQnyLSRk9sLi2u1HbpEe7iB3uoDOlD3zEHfzXp00oYLdmq6ICTqCchdnrTNHQXLAWcE3rTQ5dswMlK286xM84Vf1TPR43hbP37saEb8d4uVYD7aFF5Vb3ABf24hFUicqCMNkl3d7QFExZ8NeHMHJFTe6mlJcRDMeO3gzU2iKSI5xjNrJVBfhDJv5BWT1biwPsqqDL0MbK1R8gLA== X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1624;5:05rHaXJ4EqSVT1boFv8TEhDZtPrCvIE1NGjH07GAKrYFp0UZ6mNXRpvwwvh2wkLpQYonD9v02AvDpqMh/6AaZJosHoe0DEtHAzB8MXYyrLbthyzMmp3iIkfLx8m/jOTP8SCW/nCqO4TZsKmuyZmb1w==;24:NtlN+tWhXkk7kFKCDMZjFBMlVLuI7LavkpcBUMUDoPctMcYtezPUYC7QXYEnOJkRe3YGKZWzljFWBzuZ0jcAy2YvyKdsG9OPSqr8FpPITNQ=;20:8pCKQXB0f7NbU2KPvipZTgN5t42NE+3z14T1u2pGpGvqjM22KQ0Y54fxFK6jgraLiyQ7ANYR7bqprRORWA2YMQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2015 11:33:26.2499 (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: BY2PR0301MB1624 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3695 Lines: 98 Define and use CONTROL_REGISTER_W1C_MASK to make sure that w1c bits of usb control register do not get reset while writing any other bit Signed-off-by: Nikhil Badola --- drivers/usb/host/ehci-fsl.c | 25 ++++++++++++++++--------- drivers/usb/host/ehci-fsl.h | 1 + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 05ebe3d..202dafb 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -127,14 +127,16 @@ static int fsl_ehci_drv_probe(struct platform_device *pdev) /* Enable USB controller, 83xx or 8536 */ if (pdata->have_sysif_regs && pdata->controller_ver < FSL_USB_VER_1_6) - setbits32(hcd->regs + FSL_SOC_USB_CTRL, 0x4); + clrsetbits_be32(hcd->regs + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK, 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); + clrsetbits_be32(hcd->regs + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK, CTRL_UTMI_PHY_EN); writel(PORT_PTS_UTMI, hcd->regs + FSL_SOC_USB_PORTSC1); } @@ -200,9 +202,11 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, case FSL_USB2_PHY_ULPI: if (pdata->have_sysif_regs && pdata->controller_ver) { /* controller version 1.6 or above */ - clrbits32(non_ehci + FSL_SOC_USB_CTRL, UTMI_PHY_EN); - setbits32(non_ehci + FSL_SOC_USB_CTRL, - ULPI_PHY_CLK_SEL | USB_CTRL_USB_EN); + clrbits32(non_ehci + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK | UTMI_PHY_EN); + clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK, + ULPI_PHY_CLK_SEL | USB_CTRL_USB_EN); } portsc |= PORT_PTS_ULPI; break; @@ -216,14 +220,16 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, case FSL_USB2_PHY_UTMI_DUAL: if (pdata->have_sysif_regs && pdata->controller_ver) { /* controller version 1.6 or above */ - setbits32(non_ehci + FSL_SOC_USB_CTRL, UTMI_PHY_EN); + clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK, UTMI_PHY_EN); mdelay(FSL_UTMI_PHY_DLY); /* Delay for UTMI PHY CLK to become stable - 10ms*/ } /* enable UTMI PHY */ if (pdata->have_sysif_regs) - setbits32(non_ehci + FSL_SOC_USB_CTRL, - CTRL_UTMI_PHY_EN); + clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK, + CTRL_UTMI_PHY_EN); portsc |= PORT_PTS_UTMI; break; case FSL_USB2_PHY_NONE: @@ -245,7 +251,8 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, ehci_writel(ehci, portsc, &ehci->regs->port_status[port_offset]); if (phy_mode != FSL_USB2_PHY_ULPI && pdata->have_sysif_regs) - setbits32(non_ehci + FSL_SOC_USB_CTRL, USB_CTRL_USB_EN); + clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL, + CONTROL_REGISTER_W1C_MASK, USB_CTRL_USB_EN); return 0; } diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h index dbd292e..1a8a60a 100644 --- a/drivers/usb/host/ehci-fsl.h +++ b/drivers/usb/host/ehci-fsl.h @@ -52,6 +52,7 @@ #define SNOOP_SIZE_2GB 0x1e /* control Register Bit Masks */ +#define CONTROL_REGISTER_W1C_MASK 0x00020000 /* W1C: PHY_CLK_VALID */ #define ULPI_INT_EN (1<<0) #define WU_INT_EN (1<<1) #define USB_CTRL_USB_EN (1<<2) -- 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/