From patchwork Fri Nov 15 22:54:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Angelo Dureghello X-Patchwork-Id: 1195911 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 (no SPF record) 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=none (p=none dis=none) header.from=timesys.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=timesys-com.20150623.gappssmtp.com header.i=@timesys-com.20150623.gappssmtp.com header.b="MkqesEkV"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 47FDdY6zDtz9sPF for ; Sat, 16 Nov 2019 10:12:17 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id C5DD9C21E12; Fri, 15 Nov 2019 23:10:33 +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=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 80597C21E2C; Fri, 15 Nov 2019 23:07:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 650F1C21C50; Fri, 15 Nov 2019 22:52:00 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by lists.denx.de (Postfix) with ESMTPS id 1FBDBC21C2F for ; Fri, 15 Nov 2019 22:52:00 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id i10so12636397wrs.7 for ; Fri, 15 Nov 2019 14:52:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=timesys-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3y6estUEop9rVcJVJVYCkVKLWeqNpigQupMS2vS3+d0=; b=MkqesEkVX4kNbx6yl1u3n7MmvQJDg0YZnmxHqzi5Pkg4CoA3hVRPhASaT7BdXovk0h 462RosVInwTq2LuTAA/BgIX2FHZC08CTmM47OfYWhlX/VMKoMwWFtkH4Sg6PNllSSdIQ nfDu4ThOmWq/YQY5qvFwqVBWklfhie+KAbxnTwy+fgZvppvlPvHRg8acSmu8ZxYReEy9 sJ+xuiOdlX7S9B6YiE84gSlmYF5OO27LV/CUHbkJjL2XUyi8GI6/ieMpFQl0d3S1D8iE TkutcN7Yz94d8xQKnL52RLtuVIMzgKKiy9j24qCeBf2BxiLl2+9KmWE0RGeYQxQzaGT8 47ZQ== 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:mime-version:content-transfer-encoding; bh=3y6estUEop9rVcJVJVYCkVKLWeqNpigQupMS2vS3+d0=; b=CzYuC4y92W/HVKbz+7fuCJ6dXyl0AhOHE1F9Lcp677pljFytB57/jFZuXAbK/sW4Kp g7CfloLB94xCURKV/B9zZ9Rs0Rt/1QsqGGnLmVge2rc/lrmUM5R2bfyXgLqHD5TU8qGR 9gAzqFyrUVGNMBi+WJdhPIDRyZ0dwvyCw5HCyrVbQWP3GMaj9fvwjMLMoyq1OEZCYlIR bKwcYve3edyB5z8YZ9lDciESLjSxeBG1PhXdfs7SYMxSOKWxzym0W2k+ko+dw+WzZtkl +xA0LdBG+ZwAQFwLTHXXXh46IDW7eDz6R5JFq7NGThCPlXbH/s5dEiGIhfvrfbKqeC12 bP7A== X-Gm-Message-State: APjAAAVUwq3Pwu+kzqi9KBK7Mol4/P9Tz5hAi6XEFyUebOkvO+R497x1 hFa5aNMkH/a3JUV8ERxxog3X3zQw5yQ= X-Google-Smtp-Source: APXvYqzD/HtQzbY9XJ7kJFMN6jDmohVs2CwQ8TGr0Fp5bg0Gcj5K5UZelORZq3eIxINWgN2oAq6L+Q== X-Received: by 2002:a5d:4645:: with SMTP id j5mr19277410wrs.329.1573858319692; Fri, 15 Nov 2019 14:51:59 -0800 (PST) Received: from localhost.localdomain (host196-236-dynamic.21-79-r.retail.telecomitalia.it. [79.21.236.196]) by smtp.gmail.com with ESMTPSA id y6sm13160294wrn.21.2019.11.15.14.51.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Nov 2019 14:51:59 -0800 (PST) From: Angelo Dureghello To: trini@konsulko.com Date: Fri, 15 Nov 2019 23:54:20 +0100 Message-Id: <20191115225420.1445889-9-angelo.dureghello@timesys.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191115225420.1445889-1-angelo.dureghello@timesys.com> References: <20191115225420.1445889-1-angelo.dureghello@timesys.com> MIME-Version: 1.0 X-Mailman-Approved-At: Fri, 15 Nov 2019 23:07:10 +0000 Cc: u-boot@lists.denx.de, Angelo Durgehello , joe.hershberger@ni.com Subject: [U-Boot] [PATCH 9/9] drivers: mcfmii: add dm 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: Angelo Durgehello Add specific dm code, but maintaining this driver as is, so more in the shape of a mii library. Can be moved to dm in a further step. Signed-off-by: Angelo Durgehello --- drivers/net/mcfmii.c | 48 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/drivers/net/mcfmii.c b/drivers/net/mcfmii.c index 961618b410..27b7c5149f 100644 --- a/drivers/net/mcfmii.c +++ b/drivers/net/mcfmii.c @@ -40,14 +40,6 @@ DECLARE_GLOBAL_DATA_PTR; # define CONFIG_SYS_UNSPEC_STRID 0 #endif -#ifdef CONFIG_MCF547x_8x -typedef struct fec_info_dma FEC_INFO_T; -#define FEC_T fecdma_t -#else -typedef struct fec_info_s FEC_INFO_T; -#define FEC_T fec_t -#endif - typedef struct phy_info_struct { u32 phyid; char *strid; @@ -77,7 +69,7 @@ phy_info_t phyinfo[] = { * mii_init -- Initialize the MII for MII command without ethernet * This function is a subset of eth_init */ -void mii_reset(FEC_INFO_T *info) +void mii_reset(fec_info_t *info) { volatile FEC_T *fecp = (FEC_T *) (info->miibase); int i; @@ -94,9 +86,13 @@ void mii_reset(FEC_INFO_T *info) /* send command to phy using mii, wait for result */ uint mii_send(uint mii_cmd) { - FEC_INFO_T *info; - volatile FEC_T *ep; +#ifdef CONFIG_DM_ETH + struct udevice *dev; +#else struct eth_device *dev; +#endif + fec_info_t *info; + volatile FEC_T *ep; uint mii_reply; int j = 0; @@ -109,11 +105,11 @@ uint mii_send(uint mii_cmd) ep->mmfr = mii_cmd; /* command to phy */ /* wait for mii complete */ - while (!(ep->eir & FEC_EIR_MII) && (j < MCFFEC_TOUT_LOOP)) { + while (!(ep->eir & FEC_EIR_MII) && (j < info->to_loop)) { udelay(1); j++; } - if (j >= MCFFEC_TOUT_LOOP) { + if (j >= info->to_loop) { printf("MII not complete\n"); return -1; } @@ -130,10 +126,9 @@ uint mii_send(uint mii_cmd) #endif /* CONFIG_SYS_DISCOVER_PHY || (CONFIG_MII) */ #if defined(CONFIG_SYS_DISCOVER_PHY) -int mii_discover_phy(struct eth_device *dev) +int mii_discover_phy(fec_info_t *info) { #define MAX_PHY_PASSES 11 - FEC_INFO_T *info = dev->priv; int phyaddr, pass; uint phyno, phytype; int i, found = 0; @@ -156,7 +151,7 @@ int mii_discover_phy(struct eth_device *dev) phytype = mii_send(mk_mii_read(phyno, MII_PHYSID1)); #ifdef ET_DEBUG - printf("PHY type 0x%x pass %d type\n", phytype, pass); + printf("PHY type 0x%x pass %d\n", phytype, pass); #endif if (phytype == 0xffff) continue; @@ -206,9 +201,13 @@ void mii_init(void) __attribute__((weak,alias("__mii_init"))); void __mii_init(void) { - FEC_INFO_T *info; - volatile FEC_T *fecp; +#ifdef CONFIG_DM_ETH + struct udevice *dev; +#else struct eth_device *dev; +#endif + fec_info_t *info; + volatile FEC_T *fecp; int miispd = 0, i = 0; u16 status = 0; u16 linkgood = 0; @@ -219,7 +218,7 @@ void __mii_init(void) fecp = (FEC_T *) info->miibase; - fecpin_setclear(dev, 1); + fecpin_setclear(info, 1); mii_reset(info); @@ -233,9 +232,13 @@ void __mii_init(void) miispd = (gd->bus_clk / 1000000) / 5; fecp->mscr = miispd << 1; - info->phy_addr = mii_discover_phy(dev); +#ifdef CONFIG_SYS_DISCOVER_PHY + info->phy_addr = mii_discover_phy(info); +#endif + if (info->phy_addr == -1) + return; - while (i < MCFFEC_TOUT_LOOP) { + while (i < info->to_loop) { status = 0; i++; /* Read PHY control register */ @@ -256,9 +259,8 @@ void __mii_init(void) udelay(1); } - if (i >= MCFFEC_TOUT_LOOP) { + if (i >= info->to_loop) printf("Link UP timeout\n"); - } /* adapt to the duplex and speed settings of the phy */ info->dup_spd = miiphy_duplex(dev->name, info->phy_addr) << 16;