From patchwork Wed Jun 21 07:50:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrice CHOTARD X-Patchwork-Id: 778693 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3wsxq75BGpz9s4q for ; Wed, 21 Jun 2017 17:56:03 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 82431C21C9C; Wed, 21 Jun 2017 07:53:11 +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.7 required=5.0 tests=RCVD_IN_DNSWL_LOW 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 A610DC21CC4; Wed, 21 Jun 2017 07:50:58 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 29C57C21CCC; Wed, 21 Jun 2017 07:50:42 +0000 (UTC) Received: from mx07-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) by lists.denx.de (Postfix) with ESMTPS id 52860C21C99 for ; Wed, 21 Jun 2017 07:50:38 +0000 (UTC) Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v5L7nO4n002158; Wed, 21 Jun 2017 09:50:37 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-.pphosted.com with ESMTP id 2b7jk30sy3-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 21 Jun 2017 09:50:37 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id D743043; Wed, 21 Jun 2017 07:50:35 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag6node3.st.com [10.75.127.18]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id C0E1F118E; Wed, 21 Jun 2017 07:50:35 +0000 (GMT) Received: from localhost (10.75.127.50) by SFHDAG6NODE3.st.com (10.75.127.18) with Microsoft SMTP Server (TLS) id 15.0.1178.4; Wed, 21 Jun 2017 09:50:35 +0200 From: To: Marek Vasut , , Date: Wed, 21 Jun 2017 09:50:24 +0200 Message-ID: <1498031424-15931-11-git-send-email-patrice.chotard@st.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1498031424-15931-1-git-send-email-patrice.chotard@st.com> References: <1498031424-15931-1-git-send-email-patrice.chotard@st.com> MIME-Version: 1.0 X-Originating-IP: [10.75.127.50] X-ClientProxiedBy: SFHDAG2NODE3.st.com (10.75.127.6) To SFHDAG6NODE3.st.com (10.75.127.18) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-06-21_01:, , signatures=0 Cc: christophe.kerello@st.com Subject: [U-Boot] [PATCH v8 10/10] usb: host: ohci-generic: add generic PHY support 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: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Patrice Chotard Extend ohci-generic driver with generic PHY framework Signed-off-by: Patrice Chotard --- v8: _ rework error path by propagating the initial error code until the end of probe() v7: _ none v6: _ none v5: _ none v4: _ use generic_phy_valid() before generic_phy_exit() call v3: _ extract in this patch the PHY support add-on from previous patch 5 drivers/usb/host/ohci-generic.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/ohci-generic.c b/drivers/usb/host/ohci-generic.c index 1dc7449..03f2234 100644 --- a/drivers/usb/host/ohci-generic.c +++ b/drivers/usb/host/ohci-generic.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "ohci.h" @@ -19,6 +20,7 @@ struct generic_ohci { ohci_t ohci; struct clk *clocks; struct reset_ctl *resets; + struct phy phy; int clock_count; int reset_count; }; @@ -91,12 +93,33 @@ static int ohci_usb_probe(struct udevice *dev) } } + err = generic_phy_get_by_index(dev, 0, &priv->phy); + if (err) { + if (err != -ENOENT) { + error("failed to get usb phy\n"); + goto reset_err; + } + } + + err = generic_phy_init(&priv->phy); + if (err) { + error("failed to init usb phy\n"); + goto reset_err; + } + err = ohci_register(dev, regs); if (err) - goto reset_err; + goto phy_err; return 0; +phy_err: + if (generic_phy_valid(&priv->phy)) { + ret = generic_phy_exit(&priv->phy); + if (ret) + error("failed to release phy\n"); + } + reset_err: ret = reset_assert_all(priv->resets, priv->reset_count); if (ret) @@ -118,6 +141,12 @@ static int ohci_usb_remove(struct udevice *dev) if (ret) return ret; + if (generic_phy_valid(&priv->phy)) { + ret = generic_phy_exit(&priv->phy); + if (ret) + return ret; + } + ret = reset_assert_all(priv->resets, priv->reset_count); if (ret) return ret;