From patchwork Wed Sep 19 18:28:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramon Fried X-Patchwork-Id: 971859 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ochUEmv7"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 42FpS56YSRz9s4V for ; Thu, 20 Sep 2018 04:34:45 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 9499EC21E2F; Wed, 19 Sep 2018 18:31:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9112DC21E7E; Wed, 19 Sep 2018 18:29:28 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 7897DC21E2C; Wed, 19 Sep 2018 18:29:07 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by lists.denx.de (Postfix) with ESMTPS id E24FAC21E44 for ; Wed, 19 Sep 2018 18:28:59 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id g33-v6so6828778wrd.1 for ; Wed, 19 Sep 2018 11:28:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FJ9JGHAGHVTb7/aS6pOqnY31adw4TUXZKCvzlbvpOKg=; b=ochUEmv762W1deolH2bARgZzVx7+ZFIZYT+bDLwQGPxffn5fWT4GiA7z8dcOZ74sUU YgncWrde74yZmQO0naWwJY8G5fxX5CZlXZoCQlDDhSCH505Orxw6IbKGwCyN5AvQPMsI apvgi3EEB8+lRUVICS7iTpOSekkJE5za3emVjj9kDjbfDAz+lgKL6lBMXPvXR5ucmUci lnQ+1ez/gM2IDed+F08cQAPldorwZxvpauA6f/xmNEiH1x/mWn3MNsyze7kjFOFPDnXv zAicpjfDYPLPc5EVFWpfZuyTE74uFHKzj6nMAiO0FuQ3tlRHsjJK1qdL089y2GI1yaW5 cM7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FJ9JGHAGHVTb7/aS6pOqnY31adw4TUXZKCvzlbvpOKg=; b=Q+AvFAgerWaObiIddWH3MhHFRrrDG6RIDyV7cryB2eup+LLx8uGQOBGEot5Bm3mr9q vDaP6BL77AtkfqfoFz9D1ju8+RUfiYStsdrooZ96ptufnmZ9Y3Nd0IZWaN6Ij8EKaft+ 4ztHerj711ToowATGNDeYQO6rj3XugLuYQqS2CLWqKPxURx4kTIWEwEsxYMp3YgCriPd k6LcTXX7m62nXcMLXpofZLD38zLQOGcAqBvVViofgk0Re+oR+SLFEKYMbsyGZw4tZZGh Xdth0EFLoBegrdpjzUVORvPwE1zYQQLP4pn6JKfO3oPDESv/x/w94vJmHd0OMvg8tVoI mfIw== X-Gm-Message-State: APzg51AYdYoZF+2yUfS66P7nMEXE6K0gt1FB9y98WqOhAxpX1gmFGgBs Irggrzcjo/pyIpyRJ6JNyH6NjMhRpRyupA== X-Google-Smtp-Source: ANB0VdYusWda1P1kPcaTJFX+greJl9mY35LI88InKnmp7jeFSEHa1AGcPbpFXgXLNR6Ff8LaaXTBoQ== X-Received: by 2002:adf:fc44:: with SMTP id e4-v6mr3428318wrs.9.1537381739318; Wed, 19 Sep 2018 11:28:59 -0700 (PDT) Received: from localhost.localdomain ([5.102.238.49]) by smtp.gmail.com with ESMTPSA id r1-v6sm7790204wmg.9.2018.09.19.11.28.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Sep 2018 11:28:58 -0700 (PDT) From: Ramon Fried To: u-boot@lists.denx.de Date: Wed, 19 Sep 2018 21:28:16 +0300 Message-Id: <20180919182821.19575-9-ramon.fried@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180919182821.19575-1-ramon.fried@gmail.com> References: <20180919182821.19575-1-ramon.fried@gmail.com> Cc: Marek Vasut , Alexey Brodkin , Michal Simek , Ran Wang Subject: [U-Boot] [PATCH v1 08/13] ehci: msm: switch to generic PHY uclass X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" All the underlying USB PHY was handled in the ehci driver. Use the generic phy API instead. Signed-off-by: Ramon Fried --- drivers/usb/host/Kconfig | 3 +-- drivers/usb/host/ehci-msm.c | 52 +++++++------------------------------ 2 files changed, 10 insertions(+), 45 deletions(-) diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig index b4dd005651..a213c918bc 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig @@ -167,12 +167,11 @@ config USB_EHCI_MSM bool "Support for Qualcomm on-chip EHCI USB controller" depends on DM_USB select USB_ULPI_VIEWPORT + select MSM8916_USB_PHY default n ---help--- Enables support for the on-chip EHCI controller on Qualcomm Snapdragon SoCs. - This driver supports combination of Chipidea USB controller - and Synapsys USB PHY in host mode only. config USB_EHCI_PCI bool "Support for PCI-based EHCI USB controller" diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c index e7fb76d6da..a27a5833dd 100644 --- a/drivers/usb/host/ehci-msm.c +++ b/drivers/usb/host/ehci-msm.c @@ -21,59 +21,19 @@ #include #include "ehci.h" -/* PHY viewport regs */ -#define ULPI_MISC_A_READ 0x96 -#define ULPI_MISC_A_SET 0x97 -#define ULPI_MISC_A_CLEAR 0x98 -#define ULPI_MISC_A_VBUSVLDEXTSEL (1 << 1) -#define ULPI_MISC_A_VBUSVLDEXT (1 << 0) - -#define GEN2_SESS_VLD_CTRL_EN (1 << 7) - -#define SESS_VLD_CTRL (1 << 25) - struct msm_ehci_priv { struct ehci_ctrl ctrl; /* Needed by EHCI */ struct usb_ehci *ehci; /* Start of IP core*/ struct ulpi_viewport ulpi_vp; /* ULPI Viewport */ + struct phy phy; }; -static void setup_usb_phy(struct msm_ehci_priv *priv) -{ - /* Select and enable external configuration with USB PHY */ - ulpi_write(&priv->ulpi_vp, (u8 *)ULPI_MISC_A_SET, - ULPI_MISC_A_VBUSVLDEXTSEL | ULPI_MISC_A_VBUSVLDEXT); -} - -static void reset_usb_phy(struct msm_ehci_priv *priv) -{ - /* Disable VBUS mimicing in the controller. */ - ulpi_write(&priv->ulpi_vp, (u8 *)ULPI_MISC_A_CLEAR, - ULPI_MISC_A_VBUSVLDEXTSEL | ULPI_MISC_A_VBUSVLDEXT); -} - - static int msm_init_after_reset(struct ehci_ctrl *dev) { struct msm_ehci_priv *p = container_of(dev, struct msm_ehci_priv, ctrl); struct usb_ehci *ehci = p->ehci; - /* select ULPI phy */ - writel(PORT_PTS_ULPI, &ehci->portsc); - setup_usb_phy(p); - - /* Enable sess_vld */ - setbits_le32(&ehci->genconfig2, GEN2_SESS_VLD_CTRL_EN); - - /* Enable external vbus configuration in the LINK */ - setbits_le32(&ehci->usbcmd, SESS_VLD_CTRL); - - /* USB_OTG_HS_AHB_BURST */ - writel(0x0, &ehci->sbuscfg); - - /* USB_OTG_HS_AHB_MODE: HPROT_MODE */ - /* Bus access related config. */ - writel(0x08, &ehci->sbusmode); + generic_phy_reset(&p->phy); /* set mode to host controller */ writel(CM_HOST, &ehci->usbmode); @@ -97,6 +57,10 @@ static int ehci_usb_probe(struct udevice *dev) hcor = (struct ehci_hcor *)((phys_addr_t)hccr + HC_LENGTH(ehci_readl(&(hccr)->cr_capbase))); + ret = ehci_setup_phy(dev, &p->phy, 0); + if (ret) + return ret; + ret = board_usb_init(0, USB_INIT_HOST); if (ret < 0) return ret; @@ -117,7 +81,9 @@ static int ehci_usb_remove(struct udevice *dev) /* Stop controller. */ clrbits_le32(&ehci->usbcmd, CMD_RUN); - reset_usb_phy(p); + ret = ehci_shutdown_phy(dev, &p->phy); + if (ret) + return ret; ret = board_usb_init(0, USB_INIT_DEVICE); /* Board specific hook */ if (ret < 0)