From patchwork Tue Sep 1 10:31:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Siva Durga Prasad Paladugu X-Patchwork-Id: 512778 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id E8C2914056B for ; Tue, 1 Sep 2015 20:50:06 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3DA054B7F7; Tue, 1 Sep 2015 12:50:04 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lUVZqIlHqARn; Tue, 1 Sep 2015 12:50:03 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2109A4B7E8; Tue, 1 Sep 2015 12:50:02 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9F0394B719 for ; Tue, 1 Sep 2015 12:31:32 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uyYmToVzHPhH for ; Tue, 1 Sep 2015 12:31:32 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0094.outbound.protection.outlook.com [157.56.111.94]) by theia.denx.de (Postfix) with ESMTPS id 0BEF94B716 for ; Tue, 1 Sep 2015 12:31:29 +0200 (CEST) Received: from BN1BFFO11FD047.protection.gbl (10.58.144.31) by BN1BFFO11HUB030.protection.gbl (10.58.144.177) with Microsoft SMTP Server (TLS) id 15.1.256.10; Tue, 1 Sep 2015 10:31:27 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BN1BFFO11FD047.mail.protection.outlook.com (10.58.145.2) with Microsoft SMTP Server (TLS) id 15.1.256.10 via Frontend Transport; Tue, 1 Sep 2015 10:31:27 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZWiqc-0000RF-3W; Tue, 01 Sep 2015 03:31:26 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1ZWiqb-0005S6-Um; Tue, 01 Sep 2015 03:31:25 -0700 Received: from xsj-pvapsmtp01 (mailhub.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t81AUgLg015836; Tue, 1 Sep 2015 03:30:42 -0700 Received: from [172.23.146.171] (helo=xhdl3763.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ZWiqO-0005KF-01; Tue, 01 Sep 2015 03:31:12 -0700 Received: by xhdl3763.xilinx.com (Postfix, from userid 13899) id 32D572CE03D1; Tue, 1 Sep 2015 16:01:11 +0530 (IST) From: Siva Durga Prasad Paladugu To: Date: Tue, 1 Sep 2015 16:01:02 +0530 Message-ID: <1441103463-29741-1-git-send-email-sivadur@xilinx.com> X-Mailer: git-send-email 2.1.1 X-RCIS-Action: ALLOW X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-21784.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD047; 1:FaTsF/T5Voe/6AR3OWCQ1x0JHlSmlLSDHaC1xOjmlQlQcVDZeO7gyjfrbG23lO/f3rbkJXWE3P6EBWO2nBMQ4P5QET53Y1KatTjHGuhegcrsKpXkFxWu5fWMSWzEjdpuOUPSRckJiFrIlYOFmk05wFyA+ToxQ6P0u16R4caCKEu527DIKUCcCAvBYe0sibWGx28BKdYftFpsH2UgXiuFoODTe3WwdfrZIgWs5JsdkuXhmHPK1VqtgYVHFW8WlBt32omvZGDwLIzx6pcvK8ezriL3Zw1ftnyMczvZ9py3GW390u8lbU6QnJK3weCxbVJvVC4FItZtWXrmyF77Qzk+sgDqO5HCjCMNA9of3U2GSL1SuRiPBcEmNEj8OAUc+/j2tMkCUKQU4/Nprnu1RTKmyA== X-Forefront-Antispam-Report: CIP:149.199.60.83; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(438002)(3050300001)(189002)(199003)(62966003)(36756003)(77156002)(33646002)(50226001)(46386002)(36386004)(5003940100001)(92566002)(110136002)(5007970100001)(229853001)(2351001)(63266004)(106466001)(52956003)(5001960100002)(103686003)(47776003)(107886002)(50986999)(86362001)(81156007)(64706001)(4001540100001)(5001860100001)(87936001)(5001830100001)(189998001)(19580395003)(48376002)(46102003)(50466002)(6806004)(19580405001)(45336002)(42186005)(107986001)(4001430100001)(90966001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1BFFO11HUB030; H:xsj-pvapsmtpgw01; FPR:; SPF:Pass; PTR:unknown-60-83.xilinx.com; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11HUB030; 2:3SsAEMrgcqDRP5saqSGKUKknaks96or1F3lzIv8p6Goq9Nm2aPy+fElFdPRWabdOo1f/QQiwwhA8R7+axwG+O9lrXAx7wQZ/mFFYyZ7baCGGq3ANGDik8UxyhJmBv5PYsLqb2lVcNLAZcRiLWoFIb1a8NysbLz/eRhy//Nrtzac=; 3:JhvS2iH5eOOi5Nb5qpMhMD+j2bklgvH4S19Led8D1D46IiFSKDN7Ti7ZrdH9TSTm+t1tqWEoM0cP0AaZesHthnyD7D8CDrGTPQ5kXILMZdgnD+6NfqWScA7DPEigRx91dk6RKuwOuwCg+gN+XTx00le03R36jt0NibrTkk47lQdDK1OHUNUW05fkZDjEtHyAUSJ29zpfO6vqWQ99FViQO3j1w/mu3Q5jd6iS+kpMtR60wy7BVY8QoT9IyJhIeEvNamC5PR/+U9Cj6u5p9DON5g==; 25:ncvIIYkR0a2SAYFIMY0kBpuCTJoWUMmJoz1BsI3t2DVOf02elDFDmRrie4/J4VTcScftprWriVUjyowVu7umNUBwpAwd+nst++gfxMp9FVH1ycq9SIPevY3o6YoDOrHTNGXIjgKJkQBOtETLNbuzTpzKBWSVWqG8rSx6qaHu6Y0iETJ0ZMR3kd3z8htwi83R8sSEelU9czokdE9QSlpvogQ4lG80hAP54TKUPAZ9En0lrmcTVHime3z9wPvbHBVUHouDOBJc3ghWXBgOsgYG8A== X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501001); SRVR:BN1BFFO11HUB030; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11HUB030; 20:iCEEfH7f2EPSOABlpr64KEjN1vFWehgm34cPGBtlRygOZYlXKHs4kmRe4FT05PKhOhNkAujdLY8UqFhpOgnjDXzGjP/7M4MVDUMSUvPPDIDN+iPKHWk7i4iz6dBPGwKqEJe2KuBsGXrSgM0wdYfjtFKi9cm71zd8Dalty9x+LiU9rqHqkl1pnxwY+HrM8JikGkzen49wpWYAzAWbXRu1G+J4fQIkcP80lzO8On3/nOEYbWEZ75hdamAq+P6BbEttxJAlqOzqp6UHKxBVUeoMmjjvhVaofwMsmZ+xJdUd0x6JPQBKzPU4Db02SBL9kNeWUhDR7UFtZ+IocmLJg9PLndjBZsajCJ5kFVVEgBc7cH02jJj+s0A5K7BmEgF1NMN0X1nNAhXKLp1P97FEQ0c3CMhYIAdPM8AMG0wg0NMKOAIn+veVJwrDI7H31dU3rqnAjtX4Vnqgn4vPcMzg4Ipmzg0/SVpsPSxg1GIin9NMq8c+OMICxkYg1A9i9EnZzrGk; 4:GE6Wy0YKDjFa1a7TOq/lCEIW+XXzAcWTdqSUmKosW/tUIu0xxh4GSqOpWsQuFHGho9qP5yqTp+i6O5L7EY2sidwTCsA7ND0DXz9xeFUCwOQ2kPGaLdz87blg6HMcN30OH+0ua9L1qrpWCwzHZO7+e0bxeJ1zzvhhk4sx19ImZ2xuKTmkoEI7vEh/dWO7oT1jd1X7tww+rvUEUoCaWrAYxn1udYipmck9N1OABHQdH07BZwiGytnVoxh1HRZYEQty96w9u4+BBtOvgwsN1fqRHFN/vIaZYmw5SqTw0lG3f2kALLrz78h55wqjHApm0pyvhs7jX1+gxjeq5sCxVSfDUA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(8121501046)(3002001); SRVR:BN1BFFO11HUB030; BCL:0; PCL:0; RULEID:; SRVR:BN1BFFO11HUB030; X-Forefront-PRVS: 06860EDC7B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1BFFO11HUB030; 23:IV5pBmdRSeEzhjRz5Siy47zkvMXZqSXLSxGl65p?= =?us-ascii?Q?TcH5IahXUFaZ4P58vZog/QiC7iV+gnoZAyRkKudS4h2eHHe5VNKc4N83WHa2?= =?us-ascii?Q?kqyfLhMFUhNMpFkRVyLtV44cagKgIxTRtfwaWbX+f83/n02/weZWVmSIUhaW?= =?us-ascii?Q?egJ+nQoXkFbDaNFyV+5pTI1VXlXGBQuQmCKAMZ9Hmmd2TblrIYWDOFhCu02g?= =?us-ascii?Q?iLp93+EswJ5XTWbt0QhIzkoeexAv02c1Y4IUnMbUPr9RiTW9V99Ny1PmToki?= =?us-ascii?Q?4MDBznoLd6fiiC+mG6q0DW7oN+b24E81v8ZVxOmLEppqsOszlcScI2bIP2E8?= =?us-ascii?Q?NEBxWiStO+HThlew7kjsDLP7oLLoTfAWLHSa2zRlFhjD/jttN/cqE3WCr17y?= =?us-ascii?Q?Q/mETpqWjgdSyFgJLLlxpNzjIdPjusL5b9xZ4l9jyIHDhpEQQeKNym1N+uQN?= =?us-ascii?Q?Qr9J2aIZ0/UzMWy+t/wOpWSvReGNsgDFuJoQotHhxKHwa0Hnv4HBIOi74XC/?= =?us-ascii?Q?EmbLlrxVOAo3IO+pfURebkm1mLkkw07OTohA8ngV9pweK5eEqitkxkFolWOR?= =?us-ascii?Q?itvxSC/BhtVTDxX4+NNK1eK/8YIvZ8jA54VpZTbuWBrbtBuqNVAYB/Wy9L/7?= =?us-ascii?Q?wirUN2tY1/kbBAD7qaXb86Hd8PofU8lY+TZ0q6nba9eJdrNVpXIdYcZY3pp6?= =?us-ascii?Q?t09/PAVXnUIEsv+HQJtKOj+x+FGANvtKiBfYxQN9yr7XttxpjytUzwD81Ltb?= =?us-ascii?Q?D5ewn/rRNOheyn57NNKveGh5QKPhXSzzyzGEWCHBShkPCWRuFgTjDdL1Cc1X?= =?us-ascii?Q?BqFwmib5GsoEb+C8FbJRH4+TxnweH3VsupbyYg7L4HcjL2w5shhT4Zyt9Cpy?= =?us-ascii?Q?RqJMwS2GGAAW7n7dgkh/TBGfdOJz03Q0WKy8h1y92vNyYwzucrexv4jBsILf?= =?us-ascii?Q?tLlLmX+zPPWi+X5evoJHl+WTCLRqg5zOIJbN6vVtUfpbf7s3dDTcv5dKyFCo?= =?us-ascii?Q?vzxf02hjTSGNyX7KmY1aK7pvFgIjKtIIWzg0YdB16FRPEBFK9PnCsMyWA2pW?= =?us-ascii?Q?4b+y3gxJnZqGbuG8hB6rLEXImP5YyVn3Lej3XxZL+mw/uAwhwz0eDZBXKM/V?= =?us-ascii?Q?h5UeTjcJh8YM82ZkRY88QAbm8gWvYNo6ct0KCfGSzC0IfOp3feVfEm56oj6G?= =?us-ascii?Q?kH9ucwD0yRGk+D35KBVtou4ZgpIgM/beQ9kS+d88gPaLnxyFkwCrB5/d7fQ?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11HUB030; 5:gINX0uAufT+L48BgvD79nsJgsEvCInUW1PQ9dtiqm9qgEe9/MQ6DYZlzkRC7VPJCUHbrRLR4JZEjt4oqhSZus+jCF4PpU+3xah++5pOyfCpdvvCCM+xuvf6ThDQJrGrDTY5ypk+DiOh/dqC2IoIfpA==; 24:GNMiOVpPPndHNJG6JWAPKgsmHZ7dTyhWe01EUU4Twp1rWb6gKbDpopl1FpFyzFWAytBw1tMJWkdeYdAo3YQ9n3YSMME4gDgAyRM9wKVD5Nk= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2015 10:31:27.1416 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1BFFO11HUB030 X-Mailman-Approved-At: Tue, 01 Sep 2015 12:49:58 +0200 Cc: marex@denx.de, Siva Durga Prasad Paladugu Subject: [U-Boot] [PATCH v2 1/2] usb: zynqmp: Add XHCI driver support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Added USB XHCI driver support for zynqmp. Signed-off-by: Siva Durga Prasad Paladugu --- Changes for v2: - Moved all from xhci-zynqmp.h to .c file as per review comment - Removed ad-hoc function zynqmp_xhci_core_exit() as per review comment --- drivers/usb/host/Makefile | 1 + drivers/usb/host/xhci-zynqmp.c | 147 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+), 0 deletions(-) create mode 100644 drivers/usb/host/xhci-zynqmp.c diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile index f70f38c..645b990 100644 --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile @@ -54,6 +54,7 @@ obj-$(CONFIG_USB_EHCI_ZYNQ) += ehci-zynq.o # xhci obj-$(CONFIG_USB_XHCI) += xhci.o xhci-mem.o xhci-ring.o obj-$(CONFIG_USB_XHCI_DWC3) += xhci-dwc3.o +obj-$(CONFIG_USB_XHCI_ZYNQMP) += xhci-zynqmp.o obj-$(CONFIG_USB_XHCI_KEYSTONE) += xhci-keystone.o obj-$(CONFIG_USB_XHCI_EXYNOS) += xhci-exynos5.o obj-$(CONFIG_USB_XHCI_FSL) += xhci-fsl.o diff --git a/drivers/usb/host/xhci-zynqmp.c b/drivers/usb/host/xhci-zynqmp.c new file mode 100644 index 0000000..bb23afa --- /dev/null +++ b/drivers/usb/host/xhci-zynqmp.c @@ -0,0 +1,147 @@ +/* + * Copyright 2015 Xilinx, Inc. + * + * Zynq USB HOST xHCI Controller + * + * Author: Siva Durga Prasad Paladugu + * + * This file was reused from Freescale USB xHCI + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include "xhci.h" + +/* Declare global data pointer */ +DECLARE_GLOBAL_DATA_PTR; + +/* Default to the ZYNQMP XHCI defines */ +#define USB3_PWRCTL_CLK_CMD_MASK 0x3FE000 +#define USB3_PWRCTL_CLK_FREQ_MASK 0xFFC +#define USB3_PHY_PARTIAL_RX_POWERON BIT(6) +#define USB3_PHY_RX_POWERON BIT(14) +#define USB3_PHY_TX_POWERON BIT(15) +#define USB3_PHY_TX_RX_POWERON (USB3_PHY_RX_POWERON | USB3_PHY_TX_POWERON) +#define USB3_PWRCTL_CLK_CMD_SHIFT 14 +#define USB3_PWRCTL_CLK_FREQ_SHIFT 22 + +/* USBOTGSS_WRAPPER definitions */ +#define USBOTGSS_WRAPRESET BIT(17) +#define USBOTGSS_DMADISABLE BIT(16) +#define USBOTGSS_STANDBYMODE_NO_STANDBY BIT(4) +#define USBOTGSS_STANDBYMODE_SMRT BIT(5) +#define USBOTGSS_STANDBYMODE_SMRT_WKUP (0x3 << 4) +#define USBOTGSS_IDLEMODE_NOIDLE BIT(2) +#define USBOTGSS_IDLEMODE_SMRT BIT(3) +#define USBOTGSS_IDLEMODE_SMRT_WKUP (0x3 << 2) + +/* USBOTGSS_IRQENABLE_SET_0 bit */ +#define USBOTGSS_COREIRQ_EN BIT(1) + +/* USBOTGSS_IRQENABLE_SET_1 bits */ +#define USBOTGSS_IRQ_SET_1_IDPULLUP_FALL_EN BIT(1) +#define USBOTGSS_IRQ_SET_1_DISCHRGVBUS_FALL_EN BIT(3) +#define USBOTGSS_IRQ_SET_1_CHRGVBUS_FALL_EN BIT(4) +#define USBOTGSS_IRQ_SET_1_DRVVBUS_FALL_EN BIT(5) +#define USBOTGSS_IRQ_SET_1_IDPULLUP_RISE_EN BIT(8) +#define USBOTGSS_IRQ_SET_1_DISCHRGVBUS_RISE_EN BIT(11) +#define USBOTGSS_IRQ_SET_1_CHRGVBUS_RISE_EN BIT(12) +#define USBOTGSS_IRQ_SET_1_DRVVBUS_RISE_EN BIT(13) +#define USBOTGSS_IRQ_SET_1_OEVT_EN BIT(16) +#define USBOTGSS_IRQ_SET_1_DMADISABLECLR_EN BIT(17) + +struct zynqmp_xhci { + struct xhci_hccr *hcd; + struct dwc3 *dwc3_reg; +}; + +static struct zynqmp_xhci zynqmp_xhci; + +unsigned long ctr_addr[] = {ZYNQMP_USB0_XHCI_BASEADDR, + ZYNQMP_USB1_XHCI_BASEADDR}; + +__weak int __board_usb_init(int index, enum usb_init_type init) +{ + return 0; +} + +void usb_phy_reset(struct dwc3 *dwc3_reg) +{ + /* Assert USB3 PHY reset */ + setbits_le32(&dwc3_reg->g_usb3pipectl[0], DWC3_GUSB3PIPECTL_PHYSOFTRST); + + /* Assert USB2 PHY reset */ + setbits_le32(&dwc3_reg->g_usb2phycfg, DWC3_GUSB2PHYCFG_PHYSOFTRST); + + mdelay(200); + + /* Clear USB3 PHY reset */ + clrbits_le32(&dwc3_reg->g_usb3pipectl[0], DWC3_GUSB3PIPECTL_PHYSOFTRST); + + /* Clear USB2 PHY reset */ + clrbits_le32(&dwc3_reg->g_usb2phycfg, DWC3_GUSB2PHYCFG_PHYSOFTRST); +} + +static int zynqmp_xhci_core_init(struct zynqmp_xhci *zynqmp_xhci) +{ + int ret = 0; + + ret = dwc3_core_init(zynqmp_xhci->dwc3_reg); + if (ret) { + debug("%s:failed to initialize core\n", __func__); + return ret; + } + + /* We are hard-coding DWC3 core to Host Mode */ + dwc3_set_mode(zynqmp_xhci->dwc3_reg, DWC3_GCTL_PRTCAP_HOST); + + return ret; +} + +int xhci_hcd_init(int index, struct xhci_hccr **hccr, struct xhci_hcor **hcor) +{ + struct zynqmp_xhci *ctx = &zynqmp_xhci; + int ret = 0; + + ctx->hcd = (struct xhci_hccr *)ctr_addr[index]; + ctx->dwc3_reg = (struct dwc3 *)((char *)(ctx->hcd) + DWC3_REG_OFFSET); + + ret = board_usb_init(index, USB_INIT_HOST); + if (ret != 0) { + puts("Failed to initialize board for USB\n"); + return ret; + } + + ret = zynqmp_xhci_core_init(ctx); + if (ret < 0) { + puts("Failed to initialize xhci\n"); + return ret; + } + + *hccr = (struct xhci_hccr *)ctx->hcd; + *hcor = (struct xhci_hcor *)((uint32_t) *hccr + + HC_LENGTH(xhci_readl(&(*hccr)->cr_capbase))); + + debug("zynqmp-xhci: init hccr %x and hcor %x hc_length %d\n", + (uint32_t)*hccr, (uint32_t)*hcor, + (uint32_t)HC_LENGTH(xhci_readl(&(*hccr)->cr_capbase))); + + return ret; +} + +void xhci_hcd_stop(int index) +{ + /* + * Currently zynqmp socs do not support PHY shutdown from + * sw. But this support may be added in future socs. + */ + + return 0; +}