From patchwork Thu Jan 27 04:52:47 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mingkai Hu X-Patchwork-Id: 80591 X-Patchwork-Delegate: afleming@freescale.com 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 A124D1007D2 for ; Thu, 27 Jan 2011 16:22:09 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4ED70280E4; Thu, 27 Jan 2011 06:21:19 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 u3Qk83gdPw5E; Thu, 27 Jan 2011 06:21:19 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B4B7E280EF; Thu, 27 Jan 2011 06:20:41 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 6C9C0280C0 for ; Thu, 27 Jan 2011 06:20:33 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 oeaJfum6--DA for ; Thu, 27 Jan 2011 06:20:32 +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 VA3EHSOBE008.bigfish.com (va3ehsobe001.messaging.microsoft.com [216.32.180.11]) by theia.denx.de (Postfix) with ESMTPS id 6BF57280B5 for ; Thu, 27 Jan 2011 06:20:12 +0100 (CET) Received: from mail24-va3-R.bigfish.com (10.7.14.249) by VA3EHSOBE008.bigfish.com (10.7.40.28) with Microsoft SMTP Server id 14.1.225.8; Thu, 27 Jan 2011 05:20:11 +0000 Received: from mail24-va3 (localhost.localdomain [127.0.0.1]) by mail24-va3-R.bigfish.com (Postfix) with ESMTP id 29C1B1128794; Thu, 27 Jan 2011 05:20:11 +0000 (UTC) X-SpamScore: -3 X-BigFish: VS-3(zzbb2cKzz1202hzz8275bhz2dh2a8h668h65h) X-Spam-TCS-SCL: 4:0 X-Forefront-Antispam-Report: KIP:(null); UIP:(null); IPVD:NLI; H:de01egw01.freescale.net; RD:de01egw01.freescale.net; EFVD:NLI Received: from mail24-va3 (localhost.localdomain [127.0.0.1]) by mail24-va3 (MessageSwitch) id 1296105609788319_26744; Thu, 27 Jan 2011 05:20:09 +0000 (UTC) Received: from VA3EHSMHS017.bigfish.com (unknown [10.7.14.254]) by mail24-va3.bigfish.com (Postfix) with ESMTP id BD2D21C8804F; Thu, 27 Jan 2011 05:20:09 +0000 (UTC) Received: from de01egw01.freescale.net (192.88.165.102) by VA3EHSMHS017.bigfish.com (10.7.99.27) with Microsoft SMTP Server (TLS) id 14.1.225.8; Thu, 27 Jan 2011 05:20:06 +0000 Received: from az33smr01.freescale.net (az33smr01.freescale.net [10.64.34.199]) by de01egw01.freescale.net (8.14.3/8.14.3) with ESMTP id p0R5K5es028473; Wed, 26 Jan 2011 22:20:05 -0700 (MST) Received: from localhost (rock.ap.freescale.net [10.193.20.106]) by az33smr01.freescale.net (8.13.1/8.13.0) with ESMTP id p0R5K2iZ006692; Wed, 26 Jan 2011 23:20:03 -0600 (CST) From: Mingkai Hu To: Date: Thu, 27 Jan 2011 12:52:47 +0800 Message-ID: <1296103972-2696-10-git-send-email-Mingkai.hu@freescale.com> X-Mailer: git-send-email 1.6.4 In-Reply-To: <1296103972-2696-9-git-send-email-Mingkai.hu@freescale.com> References: <1296103972-2696-1-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-2-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-3-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-4-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-5-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-6-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-7-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-8-git-send-email-Mingkai.hu@freescale.com> <1296103972-2696-9-git-send-email-Mingkai.hu@freescale.com> MIME-Version: 1.0 X-OriginatorOrg: freescale.com Cc: kim.phillips@freescale.com, daveliu@freescale.com, galak@kernel.crashing.org, Emilian.Medve@freescale.com, ruxandra.radulescu@freescale.com, afleming@freescale.com, dai.haruki@freescale.com, timur@freescale.com Subject: [U-Boot] [PATCH 09/14] tsec: use general ethernet MII register struct(tsec_mii_t) X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.9 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de This will pave the way to move the PHY code to fsl_phy.c which will be reused by all other code. Signed-off-by: Mingkai Hu --- drivers/net/tsec.c | 10 +++++----- include/tsec.h | 35 +++++++++++------------------------ 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 40f1c76..ac65c43 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -56,7 +56,7 @@ static struct tsec_info_struct tsec_info[] = { #ifdef CONFIG_MPC85XX_FEC { .regs = (tsec_t *)(TSEC_BASE_ADDR + 0x2000), - .miiregs = (tsec_mdio_t *)(MDIO_BASE_ADDR), + .miiregs = (tsec_mii_t *)(MDIO_BASE_ADDR + 0x520), .devname = CONFIG_MPC85XX_FEC_NAME, .phyaddr = FEC_PHY_ADDR, .flags = FEC_FLAGS @@ -71,7 +71,7 @@ static struct tsec_info_struct tsec_info[] = { }; /* Writes the given phy's reg with value, using the specified MDIO regs */ -static void tsec_local_mdio_write(tsec_mdio_t *phyregs, uint addr, +static void tsec_local_mdio_write(tsec_mii_t *phyregs, uint addr, uint reg, uint value) { int timeout = 1000000; @@ -94,7 +94,7 @@ static void tsec_local_mdio_write(tsec_mdio_t *phyregs, uint addr, * notvalid bit cleared), and the bus to cease activity (miimind * busy bit cleared), and then returns the value */ -static uint tsec_local_mdio_read(tsec_mdio_t *phyregs, uint phyid, uint regnum) +static uint tsec_local_mdio_read(tsec_mii_t *phyregs, uint phyid, uint regnum) { uint value; @@ -635,7 +635,7 @@ static uint mii_parse_dm9161_scsr(uint mii_reg, struct tsec_private * priv) static uint mii_cis8204_fixled(uint mii_reg, struct tsec_private * priv) { uint phyid; - tsec_mdio_t *regbase = priv->phyregs; + tsec_mii_t *regbase = priv->phyregs; int timeout = 1000000; for (phyid = 0; phyid < 4; phyid++) { @@ -1444,7 +1444,7 @@ static void phy_run_commands(struct tsec_private *priv, struct phy_cmd *cmd) { int i; uint result; - tsec_mdio_t *phyregs = priv->phyregs; + tsec_mii_t *phyregs = priv->phyregs; out_be32(&phyregs->miimcfg, MIIMCFG_RESET); diff --git a/include/tsec.h b/include/tsec.h index 6971b47..054e5cf 100644 --- a/include/tsec.h +++ b/include/tsec.h @@ -19,15 +19,18 @@ #include #include +#include #define TSEC_SIZE 0x01000 #define TSEC_MDIO_OFFSET 0x01000 +#define CONFIG_SYS_MDIO_BASE_ADDR (TSEC_BASE_ADDR + 0x520) + #define STD_TSEC_INFO(num) \ { \ .regs = (tsec_t *)(TSEC_BASE_ADDR + ((num - 1) * TSEC_SIZE)), \ - .miiregs = (tsec_mdio_t *)(MDIO_BASE_ADDR), \ - .miiregs_sgmii = (tsec_mdio_t *)(MDIO_BASE_ADDR \ + .miiregs = (tsec_mii_t *)(CONFIG_SYS_MDIO_BASE_ADDR), \ + .miiregs_sgmii = (tsec_mii_t *)(CONFIG_SYS_MDIO_BASE_ADDR \ + (num - 1) * TSEC_MDIO_OFFSET), \ .devname = CONFIG_TSEC##num##_NAME, \ .phyaddr = TSEC##num##_PHY_ADDR, \ @@ -37,8 +40,8 @@ #define SET_STD_TSEC_INFO(x, num) \ { \ x.regs = (tsec_t *)(TSEC_BASE_ADDR + ((num - 1) * TSEC_SIZE)); \ - x.miiregs = (tsec_mdio_t *)(MDIO_BASE_ADDR); \ - x.miiregs_sgmii = (tsec_mdio_t *)(MDIO_BASE_ADDR \ + x.miiregs = (tsec_mii_t *)(CONFIG_SYS_MDIO_BASE_ADDR); \ + x.miiregs_sgmii = (tsec_mii_t *)(CONFIG_SYS_MDIO_BASE_ADDR \ + (num - 1) * TSEC_MDIO_OFFSET); \ x.devname = CONFIG_TSEC##num##_NAME; \ x.phyaddr = TSEC##num##_PHY_ADDR; \ @@ -467,22 +470,6 @@ typedef struct tsec_hash_regs uint res2[24]; } tsec_hash_t; -typedef struct tsec_mdio { - uint res1[4]; - uint ieventm; - uint imaskm; - uint res2; - uint emapm; - uint res3[320]; - uint miimcfg; /* MII Management: Configuration */ - uint miimcom; /* MII Management: Command */ - uint miimadd; /* MII Management: Address */ - uint miimcon; /* MII Management: Control */ - uint miimstat; /* MII Management: Status */ - uint miimind; /* MII Management: Indicators */ - uint res4[690]; -} tsec_mdio_t; - typedef struct tsec { /* General Control and Status Registers (0x2_n000) */ @@ -588,8 +575,8 @@ typedef struct tsec struct tsec_private { tsec_t *regs; - tsec_mdio_t *phyregs; - tsec_mdio_t *phyregs_sgmii; + tsec_mii_t *phyregs; + tsec_mii_t *phyregs_sgmii; struct phy_info *phyinfo; uint phyaddr; u32 flags; @@ -648,8 +635,8 @@ struct phy_info { struct tsec_info_struct { tsec_t *regs; - tsec_mdio_t *miiregs; - tsec_mdio_t *miiregs_sgmii; + tsec_mii_t *miiregs; + tsec_mii_t *miiregs_sgmii; char *devname; unsigned int phyaddr; u32 flags;