From patchwork Mon Nov 30 15:05:23 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 550148 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 9E278140187 for ; Tue, 1 Dec 2015 02:07:26 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b=xmq+Xalb; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id ED6584B7FC; Mon, 30 Nov 2015 16:07:24 +0100 (CET) X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" 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 uC2bLak-FyN0; Mon, 30 Nov 2015 16:07:24 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 626B44B7EF; Mon, 30 Nov 2015 16:07:23 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 403874B7EA for ; Mon, 30 Nov 2015 16:05:48 +0100 (CET) X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" 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 d36xhmkXDb6A for ; Mon, 30 Nov 2015 16:05:48 +0100 (CET) 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 mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) by theia.denx.de (Postfix) with ESMTPS id 42E634B7EB for ; Mon, 30 Nov 2015 16:05:43 +0100 (CET) Received: by wmvv187 with SMTP id v187so161227092wmv.1 for ; Mon, 30 Nov 2015 07:05:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=jvMG4H1VXYw1FTN88fMwylnp9OONtKDJRUkm+87Mrg4=; b=xmq+XalbSQVBuMDu1R3gsf6LlsOrk6xwDoqImnatoCNOgOdkpYrZ37tpvnQ4ci2igD 9PjjHa3drNTB5NHd/RI6/IT6dtV9AvsZrPdJmc4uG5etLIEuf3K1h1F3I+aIqqTGOBPP s+3EvQXwVeXWLtOyTagy4fwC3ml+Z0/9tcwvxydsodCWvCY51bvCOwmLA5IvvpJr5Url BvO0KoFZ+SMuVmiNthFQDfXfD9LNrqJOgGV28/kR64UxI7CdJh7Ez91SnGV2FL+0JCno Wam6sa9pUAnO6S2HMarw6b4su7Y3hkXE4MOdT3Pz7Y8HfzPd2chalj5l2VkisGB0KlP1 AbsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=jvMG4H1VXYw1FTN88fMwylnp9OONtKDJRUkm+87Mrg4=; b=Djzd6H7Oa7299OJJjYPlk7FJ1wPuJx+lhrvlOGXdBDp+rCEzUdRx44SHwzwsQ5doSJ WM564fke5sJxro5e/mqC54awju9yLVpzhiqQoL4koIb6rhH28UHvwkAhNgwtWZPivac4 DthKZSTithgj0KhucQDe5Zkqf3cgne0fIyRRZDuqTTlKoY3oyr4q+uqyhv7hs2SM8khN ATQZG9Dm3NS6QUx6RVYjy8T5oZFHztTMsgFS8tg3i1THLIF2g7c2GjT+JVfFH3N7vi1D WAfwPz+Qns51QvcKDL34Qi0n40kXsXe1x4P3PQpBj0FxXEfp2ySLeKt4vEiG/3jlhg+b mwWA== X-Gm-Message-State: ALoCoQnDU9LVlx8lMotjIbPBPf6VRhmGAvgQkcA6P2M0G5YHIiRlwqbrNoG1q/ull6Y111MjzwTr X-Received: by 10.194.82.99 with SMTP id h3mr84482608wjy.41.1448895943257; Mon, 30 Nov 2015 07:05:43 -0800 (PST) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id n127sm21752417wmf.12.2015.11.30.07.05.42 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Mon, 30 Nov 2015 07:05:42 -0800 (PST) From: Michal Simek To: u-boot@lists.denx.de Date: Mon, 30 Nov 2015 16:05:23 +0100 Message-Id: X-Mailer: git-send-email 1.9.1 In-Reply-To: <0338b73426d58c60170a52813ee6a113c50bb6be.1448895925.git.michal.simek@xilinx.com> References: <0338b73426d58c60170a52813ee6a113c50bb6be.1448895925.git.michal.simek@xilinx.com> In-Reply-To: <0338b73426d58c60170a52813ee6a113c50bb6be.1448895925.git.michal.simek@xilinx.com> References: <0338b73426d58c60170a52813ee6a113c50bb6be.1448895925.git.michal.simek@xilinx.com> Cc: Joe Hershberger Subject: [U-Boot] [PATCH 07/14] net: gem: Extract phy init code 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: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move phy init code out of zynq_gem_init. DM drivers are normally calling this code from probe function. Signed-off-by: Michal Simek --- drivers/net/zynq_gem.c | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c index 8f3fe9130066..86bb75905071 100644 --- a/drivers/net/zynq_gem.c +++ b/drivers/net/zynq_gem.c @@ -310,15 +310,10 @@ static int zynq_gem_setup_mac(struct eth_device *dev) return 0; } -static int zynq_gem_init(struct eth_device *dev, bd_t * bis) +static int zynq_phy_init(struct eth_device *dev) { - u32 i; int ret; - unsigned long clk_rate = 0; - struct zynq_gem_regs *regs = (struct zynq_gem_regs *)dev->iobase; struct zynq_gem_priv *priv = dev->priv; - struct emac_bd *dummy_tx_bd = &priv->tx_bd[TX_FREE_DESC]; - struct emac_bd *dummy_rx_bd = &priv->tx_bd[TX_FREE_DESC + 2]; const u32 supported = SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | SUPPORTED_100baseT_Half | @@ -326,6 +321,33 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis) SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full; + ret = phy_detection(dev); + if (ret) { + printf("GEM PHY init failed\n"); + return ret; + } + + priv->phydev = phy_connect(priv->bus, priv->phyaddr, dev, + priv->interface); + + priv->phydev->supported = supported | ADVERTISED_Pause | + ADVERTISED_Asym_Pause; + priv->phydev->advertising = priv->phydev->supported; + phy_config(priv->phydev); + + return 0; +} + +static int zynq_gem_init(struct eth_device *dev, bd_t *bis) +{ + u32 i; + int ret; + unsigned long clk_rate = 0; + struct zynq_gem_regs *regs = (struct zynq_gem_regs *)dev->iobase; + struct zynq_gem_priv *priv = dev->priv; + struct emac_bd *dummy_tx_bd = &priv->tx_bd[TX_FREE_DESC]; + struct emac_bd *dummy_rx_bd = &priv->tx_bd[TX_FREE_DESC + 2]; + if (!priv->init) { /* Disable all interrupts */ writel(0xFFFFFFFF, ®s->idr); @@ -387,19 +409,10 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis) priv->init++; } - ret = phy_detection(dev); - if (ret) { - printf("GEM PHY init failed\n"); + ret = zynq_phy_init(dev); + if (ret) return ret; - } - - priv->phydev = phy_connect(priv->bus, priv->phyaddr, dev, - priv->interface); - priv->phydev->supported = supported | ADVERTISED_Pause | - ADVERTISED_Asym_Pause; - priv->phydev->advertising = priv->phydev->supported; - phy_config(priv->phydev); phy_startup(priv->phydev); if (!priv->phydev->link) {