Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965887AbcJYLBC (ORCPT ); Tue, 25 Oct 2016 07:01:02 -0400 Received: from mail-bn3nam01on0088.outbound.protection.outlook.com ([104.47.33.88]:60240 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932843AbcJYLA5 (ORCPT ); Tue, 25 Oct 2016 07:00:57 -0400 Authentication-Results: spf=none (sender IP is 192.88.168.50) smtp.mailfrom=lvd5587.freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=fail action=none header.from=nxp.com; From: Sriram Dash To: , CC: , , , , , Sriram Dash , Rajat Srivastava , Rajesh Bhagat Subject: [PATCH v2] usb: xhci: Don't drive port 2.0 reset while resuming Date: Tue, 25 Oct 2016 16:15:41 +0530 Message-ID: <1477392341-5942-1-git-send-email-sriram.dash@nxp.com> X-Mailer: git-send-email 1.7.7.4 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131218659553762791;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6039001)(6009001)(7916002)(2980300002)(428002)(189002)(199003)(586003)(8676002)(7416002)(36756003)(47776003)(626004)(4720700003)(97736004)(50466002)(68736007)(5001770100001)(5660300001)(52956003)(189998001)(2906002)(42882006)(6666003)(4326007)(48376002)(87936001)(86372001)(45336002)(5003940100001)(7846002)(11100500001)(8936002)(101416001)(90966002)(305945005)(46386002)(8666005)(356003)(81156014)(33646002)(103686003)(19580395003)(106466001)(50226002)(50986999)(19580405001)(92566002)(81166006)(42186005)(229853001)(105586002)(7059030);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR0301MB1623;H:tx30smr01.am.freescale.net;FPR:;SPF:None;PTR:InfoDomainNonexistent;MX:1;A:0;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC005;1:EPRDTShNN/8oQT0dRsK2dMM4IiuszSxoK9CQS5zxCITzWKCBnLQ6xEdroM2ao4H7dJQM/npHorBGPTr9WwGJlQSapQDHnkYwKTX8HMJr3cPcQk2vA20ixV47mFyI32uKTuPTdUTV4Hu/98bYmMY5xkR59EYN1LafmKMU3AgdbVrT9H60Qdh6lGVYIl4jh9p6BS5ZjG3gFxyOnQKvppBSePhgmiZRg0jC5lNds4pSFbSToytbfTUN2wFA/5r+v1DvQRAWf4nnT54NgP8eJPKk8UmWiYxYwBEaJ+Nqr8pRJh6BtCs8+Yg6e95m35Lw7b5ZM5/oascY0LxtxuWAa4YIAmSelff4WRJotruUPlpPkK6Oyx+wFH6TF+IkxNItu0VP4YGHMn8SUm0ia9SP13EV28iKwrhTTDd+V3zozJ5gX4HGUtL8Mf3fkj3ltfTpLtnsqNMsw7W10hiCbWQbNwxZAuT5OPtAL8b3sGS7YYHtw4bcr05huv7eNP7dESPR6xYkUVDSzpc50duJnuFKavvN4p4UvBmlBV2snsg4abd3rlsFp0SvH0C5mnMXUYej/Ojtcw4ZKMRZOunhbDwTq3WIjcOlw15/rTvDhfw1I2VoBaYHcfS56LoSRdB5f43clDNCj2qgCjbWj1oNZOGVZb7hVA== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 827a7d14-e405-4c5c-7c8e-08d3fcc4190f X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1623;2:XHonSKdCUpVnNigLP1AWV6ajPJ8Q0BwQfPWv+LserqDcjc8LbtO1ZU/fpuIfn60UnBqmBVFl2x+12T0tA+iOHIvSbTCMYLJ8DlW2YzgT5SE2DXcu/c/HLibWH1hy7GZdunIxdqhlQRwbjPcotvyyjDPPUr5dldFbQK5wZGcLGuwOEFM94fvKE8wExOP4OiKgAFBvVxk2tXDI7Vif/a6vnA==;3:NyUGx3DRDQsCpNgAsY0PyjNks4ud3pbygxVrKq2A4hhGh9iV5nsAFY3dTRsMhBP3FSzkqPIrsGvEjrYOyXCCZVPvI8Ld2XDlFjfKUtjotiKqVUuPYWZy9CJMrRCUnmRo4Juv6A0owmFOOrE86xZlXfN8cvPtNgbyUxFBYcOFjY6nS4I2ySCn07Y4WXSUoPHV3YkmW/oXUAvojvbDMsTsQGGbT4FUg8hBMRwcgNAGYrNViF3TqbtEIK32oKWzXuAk X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB1623; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1623;25:cB8Ga2x6Kf5zyyxMDisLh60Y3pUozJo8N72cBr9KkSY8l6oEkrsYo4FQX76z01wkqR3D//9AzxGDDq4ECwfj1bgfsW6fBjGVcZnv6JBqAcsSRiBwcRbAACGTpNl7zG+ao1tqOu1tT0G6zwMX2y+WLJJXnAdQPlS+KPwPhaB3Nb8Ljqh1Op9iJ9GtAWp33m7LleQVxc85bQIBM5D8kCtsw+GEXtO4RzIubuQz5ua5Tw34AlWUUlxPtI7Cgjoglqvr5OXDCDi58iC4IWtL6KtzldDAMTTdqqXi8zS4d/aaS+olIMmk0QbyK5iO3X6XQ0q/rO5Slf4pfpgxxXkyE2MM17iGp/PhoXCWTno2k66lt1dDshFULq5lVIdBiibu+2ftRUnmP20i7CHyYe/wcQBvQiI6IHqD8Hpnz3/7VrYdNf7xgL7qUJeUkee0JwlHwUxtJ7uFgRI2/B0xhkA8CSDMRRZLMSTrMDkhfnvWNQ2QqAnF/3GqH92VUYTVgYbdjRr9a0GEg/4w4FRmLOuYt9WptJSjJC98X5+KyZf2P/hY5hqPqIeM8QIb6IY6pAL3rOS1x+VfTFNbSJowNPIJKM9tNXZzBW0MzrxlyqlcmAYdnDvAkEcXFczL7b43L3E8cnWNDEVe+XcmYKzkOC3ta4zlJfdC2oifERKeIxBM9o1ZMC1SqSGS4Lt7wNH+152CW88Os/9LPS76W4DpO0eBQ7QAOVfC+h3OwrXVteDX/G8Y/m352NbmY7cUD1TH4zElW8ZjTQZum7Kln4MRLnTHQqdrNsrxOKu9fxH2EPN4cBXIvLo= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1623;31:9gWkmgOZo4qabvynmy5kBhg7FxIYLcnvJQsuqJ0ux26oGT6Exl3zi6YEVOtdpaeNRyie7LLwuC4dVLVMSGlo1Urf4d1MzyLUZtR7FKW0m2mvmYte0qPp05TXdRaWD1m4QtkMcN+8ShXNYCI++D/yAlHuSZ6Hdt85tP0C1DKBxICNPzZSeSInQssgTA2Ky2oBT81FvdcUSEJU+08GdYow/sPlHjTkRb8SkC8IRkHv8jhWpqvoget4aEv98Kgyzly8DXl5lc/5v4LLPLrhl0Hzdw==;4:HXfuTbJp3lTkmQT0kulEbUEbG3N8cQbPj81Ijskpp2JRxbSm+Pl4NNQYohYIuqADgta9nsfwKVpkArW1gL7bwVg/Y3DJbQlhIOQcf+3pgIJazawRDRtFhRX/gbN2pnBE1RPiEqLkdu2ZS3l0YxI6t5A2E5n81J2bCq8WcAoR8zYiIqTNT6qJWCiz/h1pYLodXab6WMZF52SDTkMXGGWWNOcl8pOMKNp6+Co23BSDvQo8SfBDBSBGC6Y1QVPQSqToMREIY/pZIGoUQjwpXV9Ls8czEICil2xmCsbJSj6YzT9YHAfXRMwhyIdcsITOOhvNF1UF+ddbK7tZO66XTwWK5RXkw80tXanCwcX8oao6WiDCKd2+z6mDKT+e9Txehi+AVWBOFLwQAoyl7jfPJpRctvyu86J+bho4QAaBwXwpQ0+B9vT8PvZK6cz+hfh2Ekpj9tfwGPkPKXADmSCuSjk96PY5qwjiZCihi3GmgPAp/DJ0J/RflpWw+lfG9X6Zq1AojAG3Q5QwoN/OQG6ySPZBX1g+r/B4NtxWlXfB8z9NoyTolczYgY8nbRhMyE95dWQ+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(13023025)(13015025)(13024025)(8121501046)(13018025)(13017025)(10201501046)(3002001)(6055026);SRVR:BY2PR0301MB1623;BCL:0;PCL:0;RULEID:(400006);SRVR:BY2PR0301MB1623; X-Forefront-PRVS: 01068D0A20 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0301MB1623;23:IBu48M7awBA4cRxVRR5rPYE/CVodh6YzG0A0SWX?= =?us-ascii?Q?FzCL486dIduACvZEAL8zlg+gkHClt4jjlgeadlIYv++ody/NmNeMMb7h6+ac?= =?us-ascii?Q?tz209KntU9lDIV7Dm3jfA4lMF8ipBsJLi24UXVUrA+PfpPcVUL/gI1oGo/vu?= =?us-ascii?Q?AoJAzi45XLdz8dlVDl+8hAudObm+EesY7WhroJYO/ilo3Wbp5QHE2LLCwrPu?= =?us-ascii?Q?HwEcwUaULKVXnE355JMS7bPHZioEurVVVgXjT/8xaqKo+hTrbdHtc36qFzRC?= =?us-ascii?Q?evPtBv+JZ80rjYx8aFE6xbuONkSZkW/blI95xlJ0vzdX+liBmotPsXYjCfwV?= =?us-ascii?Q?EYIsx39563ySLop7e+8UnZdj0Q8kbAolx2sF39bXxYIGXtHS27Xd7QHbc7M8?= =?us-ascii?Q?fXSDuKFuDZ0aG1sElHKAQIv+ARNgF88epoeRnyhVNKlBfVe6PVyjY5W2ujW6?= =?us-ascii?Q?BKXHXFdKFtXWdzqt/wDrsmUcAxCQQgRN5dqOQ3IrvTLYN3Ea/hdB/QBnDqgs?= =?us-ascii?Q?PNNbHz/QWc0iEWkpvHi7YVlh/Tx8ZFsxATk5CfB0jMh702DNrP77dqhQvDQg?= =?us-ascii?Q?mWHAA1emRAWrzeuPkNQUasH5qIu/k7y1RolJ48cfojaHyIHvbazHLh0ZSUcG?= =?us-ascii?Q?RECY2v3w1nrclNxc2HKCp8ZWHeUQ6dbQXJ1y0SZ0G1uXVk9R4+hjJMAJ7Hsx?= =?us-ascii?Q?js6EDFGcrma/mwEoVjdaY/zjy/oHISMroAOYjUMSdSDVDddn78px4iRkU1+r?= =?us-ascii?Q?uO1tVTecmFGIVbxQ3fC84OJwOe4DkvoHC2Jmm5xx+N7pFHiR3nvyb8zsbbiy?= =?us-ascii?Q?Bt+yCkoSweXjWqRVC95TplUHxTKhweno2NhnPGEGIlYPjgUmnA1TYqptxs4j?= =?us-ascii?Q?Eeg3TO5NyYpZoVJWEpj9xoYrtjD8WrdNaTonECkHIKTLMPmjMqDoEDH7jock?= =?us-ascii?Q?x3b4UVfiCyLnpHfmK4Wu1Wih3oWqB+ipWLq9Hg26QiMCZucPjmG8u9MiZuCT?= =?us-ascii?Q?9chs4A3dqtrrk7bsDETFzgsSRpV1GEYo8B3J2Wo4AIOklTvHoVhG8fu8qpB4?= =?us-ascii?Q?eDWtS8/uq9VKdgB0dj17wyfIYZjU8aNQ2NivDvc1Jh+q79Dv1etQneGniwXZ?= =?us-ascii?Q?cqHt8aMhtkpqIiKDz+N8V0s7X5bCHfrocq0OHrtUurlbwQVtzKv0uvqlf5Lw?= =?us-ascii?Q?x/BnTaEC8Sua6uEaoj86aqbVhIvGyyO26sq8cnI0TWlqTHV1lzgyA0GsjcdV?= =?us-ascii?Q?b78SJb8Xs5Cw+YGjKiUN53h0xsF3C0boDJaZxDJXo?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1623;6:YTWoZEnLQNb4Fw1lLL1mV/HjHDeFLGsSm24JJXmiFXGHUE05LfxySP6qnUOKc5l2FS0q/fMn3f4/69T0SdGpBGQgJ3utFrRECJsyB41X5laVO9Gg6eZM/va8MZeBMPqRuRl7x3xqUjsBJe7gT2xIAMb1RVBK7MGqe4cSGGei7AVVyRsrRL3Wn6LUhfunT+Ml6D5VqoGqDROhvsYEl48NrlXSopiGSPvQ3RjXVhhlgi5kr+2UjL1wd5D/Xp1q3OTi4w6y4Ah4l6c62dsAIyA2hQatCDtq1G/CekMNA79v9imjqnukBfJZOxDx6BdbnHKe;5:hoVCou5etxh8sLDCTna+n7g1laMfZvex07rfYdUfHiGLzOnNA9tMq2t4K3bwAjew6zGWfq0UmmmgWpbPIDQdCjQfuJGFXWEkJAWNgeS96tfomilh2mZVvJn5REjaQmHRq9aH3aMVyXmM0lC+cd0TKZkYhQP23myvtPl4LXEti1kmR63e096fmm3qWbioGPHl;24:mQbk6yd6s6w2T0ga9vDdvyoKerjWuztrGaCbolqm20Bait10Zsr0ZNWRSLkITjm6Ct7EIo39pWLxUd8HTcFUQ77xnRaHHqYJEO9oye40t7A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB1623;7:NAAglYMRty953wMlWxhm3zMTSs7h3cdiq6EAfzLLntfDfkWFM9u/tmnP6J51wLFaTcRGPRR3ozIx/YXF2Ecwrg8tVciJnPjolpvV1fliHUNd1n0XYh61WFbXCBbWFyf9ju4hgJCVwUBJZsBh6AYXiy5v9zLbsR46TIGcULzQWli64pt/eSmq623ZTzaZ1YyQGScTgXszR+xSyNfC7R4HWe449BE9zJqVSTttjhOtJjVnIwF+aaGtssUZvCMRIAFc/txlDtwKCFJZgWwu+SxjbiF73q63s0ub3s1+5ph+TPgRqn0GBbpV4X5leO282ergK2NYEw6/hkgTkppFeCPuZB1UlVp9YjJY2PKSEquCRsU= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2016 10:45:55.1890 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB1623 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1679 Lines: 53 For the USB3.0 controller, USB 2.0 reset not driven while port is in Resume state. So, do not program the USB 2.0 reset (PORTSC[PR]=1) while in Resume state. Signed-off-by: Rajat Srivastava Signed-off-by: Sriram Dash Signed-off-by: Rajesh Bhagat --- Changes in v2: - Remove the quirk and make it generic to xhci. - Edit the title and comment drivers/usb/host/xhci-hub.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c index 730b9fd..a27dbb4 100644 --- a/drivers/usb/host/xhci-hub.c +++ b/drivers/usb/host/xhci-hub.c @@ -878,7 +878,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, struct xhci_hcd *xhci = hcd_to_xhci(hcd); int max_ports; unsigned long flags; - u32 temp, status; + u32 temp, status, tmp_status = 0; int retval = 0; __le32 __iomem **port_array; int slot_id; @@ -1098,6 +1098,21 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, spin_lock_irqsave(&xhci->lock, flags); break; case USB_PORT_FEAT_RESET: + /* + * Do not drive a reset signal when the port + * is resuming + */ + tmp_status = readl(port_array[wIndex]); + spin_unlock_irqrestore(&xhci->lock, flags); + if (!DEV_SUPERSPEED(tmp_status) && + (tmp_status & PORT_PLS_MASK) == XDEV_RESUME) { + xhci_err(xhci, "skip port reset\n"); + spin_lock_irqsave(&xhci->lock, flags); + retval = -EPERM; + break; + } + spin_lock_irqsave(&xhci->lock, flags); + temp = (temp | PORT_RESET); writel(temp, port_array[wIndex]); -- 2.1.0