From patchwork Fri Feb 3 00:22:45 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Troy Kisky X-Patchwork-Id: 139257 X-Patchwork-Delegate: sbabic@denx.de 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 BA593104792 for ; Fri, 3 Feb 2012 11:29:35 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A896F280B1; Fri, 3 Feb 2012 01:29:28 +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 XZX6+mMSXjlW; Fri, 3 Feb 2012 01:29:28 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 86FAF2807E; Fri, 3 Feb 2012 01:29:26 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EC75F28087 for ; Fri, 3 Feb 2012 01:29:21 +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 AO2AyBlJ4OsI for ; Fri, 3 Feb 2012 01:29:21 +0100 (CET) X-Greylist: delayed 400 seconds by postgrey-1.27 at theia; Fri, 03 Feb 2012 01:29:19 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 oproxy7-pub.bluehost.com (oproxy7-pub.bluehost.com [67.222.55.9]) by theia.denx.de (Postfix) with SMTP id B87262807D for ; Fri, 3 Feb 2012 01:29:19 +0100 (CET) Received: (qmail 19143 invoked by uid 0); 3 Feb 2012 00:22:38 -0000 Received: from unknown (HELO box284.bluehost.com) (69.89.31.84) by oproxy7.bluehost.com with SMTP; 3 Feb 2012 00:22:38 -0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=boundarydevices.com; s=default; h=Message-Id:Date:Subject:Cc:To:From; bh=2Q6aDQB2HmWrpIuk/D/cNCaoSkkUX706Zv4qCzJrHUE=; b=ESc+i2gAvXFRrS98JUE7ss1mKl4jzFXn3TSG628b5CQT8MbehlCUv7tpb2juldxDecgECGULxhCjzupR/GOUFevozMP6xYtmZkscoL6pzap3Y/AfV/67VIIutyn2gvW/; Received: from [70.96.116.236] (helo=officeserver-2) by box284.bluehost.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1Rt6vE-0004QB-Cr; Thu, 02 Feb 2012 17:22:36 -0700 Received: from tkisky by officeserver-2 with local (Exim 4.76) (envelope-from ) id 1Rt6vT-0001W5-Km; Thu, 02 Feb 2012 17:22:51 -0700 From: Troy Kisky To: dirk.behme@googlemail.com Date: Thu, 2 Feb 2012 17:22:45 -0700 Message-Id: <1328228569-5794-1-git-send-email-troy.kisky@boundarydevices.com> X-Mailer: git-send-email 1.7.5.4 X-Identified-User: {1412:box284.bluehost.com:boundar4:boundarydevices.com} {sentby:smtp auth 70.96.116.236 authed with troy.kisky@boundarydevices.com} Cc: r49496@freescale.com, jason.hui@linaro.org, u-boot@lists.denx.de, afleming@gmail.com Subject: [U-Boot] [PATCH v4 1/5] net: fec_mxc: add 1000 Mbps selection X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Define CONFIG_FEC_QUIRK_ENET_MAC and add to board files mx6qarm2 and mx6qsabrelite. Signed-off-by: Troy Kisky Acked-by: Dirk Behme --- drivers/net/fec_mxc.c | 21 +++++++++++++++++++-- drivers/net/fec_mxc.h | 2 ++ include/configs/mx6qarm2.h | 1 + include/configs/mx6qsabrelite.h | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) This patch series is against Stefano's u-boot-imx Patches 2/3 and 5 have changes from version 3 diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index ed73353..7c42b87 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -379,13 +379,14 @@ static int fec_set_hwaddr(struct eth_device *dev) static int fec_open(struct eth_device *edev) { struct fec_priv *fec = (struct fec_priv *)edev->priv; + int speed; debug("fec_open: fec_open(dev)\n"); /* full-duplex, heartbeat disabled */ writel(1 << 2, &fec->eth->x_cntrl); fec->rbd_index = 0; -#if defined(CONFIG_MX6Q) +#ifdef CONFIG_FEC_QUIRK_ENET_MAC /* Enable ENET HW endian SWAP */ writel(readl(&fec->eth->ecntrl) | FEC_ECNTRL_DBSWAP, &fec->eth->ecntrl); @@ -428,9 +429,25 @@ static int fec_open(struct eth_device *edev) #endif miiphy_wait_aneg(edev); - miiphy_speed(edev->name, fec->phy_id); + speed = miiphy_speed(edev->name, fec->phy_id); miiphy_duplex(edev->name, fec->phy_id); +#ifdef CONFIG_FEC_QUIRK_ENET_MAC + { + u32 ecr = readl(&fec->eth->ecntrl) & ~FEC_ECNTRL_SPEED; + u32 rcr = (readl(&fec->eth->r_cntrl) & + ~(FEC_RCNTRL_RMII | FEC_RCNTRL_RMII_10T)) | + FEC_RCNTRL_RGMII | FEC_RCNTRL_MII_MODE; + if (speed == _1000BASET) + ecr |= FEC_ECNTRL_SPEED; + else if (speed != _100BASET) + rcr |= FEC_RCNTRL_RMII_10T; + writel(ecr, &fec->eth->ecntrl); + writel(rcr, &fec->eth->r_cntrl); + } +#endif + debug("%s:Speed=%i\n", __func__, speed); + /* * Enable SmartDMA receive task */ diff --git a/drivers/net/fec_mxc.h b/drivers/net/fec_mxc.h index 9825eab..af33d21 100644 --- a/drivers/net/fec_mxc.h +++ b/drivers/net/fec_mxc.h @@ -198,6 +198,7 @@ struct ethernet_regs { #define FEC_RCNTRL_FCE 0x00000020 #define FEC_RCNTRL_RGMII 0x00000040 #define FEC_RCNTRL_RMII 0x00000100 +#define FEC_RCNTRL_RMII_10T 0x00000200 #define FEC_TCNTRL_GTS 0x00000001 #define FEC_TCNTRL_HBC 0x00000002 @@ -207,6 +208,7 @@ struct ethernet_regs { #define FEC_ECNTRL_RESET 0x00000001 /* reset the FEC */ #define FEC_ECNTRL_ETHER_EN 0x00000002 /* enable the FEC */ +#define FEC_ECNTRL_SPEED 0x00000020 #define FEC_ECNTRL_DBSWAP 0x00000100 #define FEC_X_WMRK_STRFWD 0x00000100 diff --git a/include/configs/mx6qarm2.h b/include/configs/mx6qarm2.h index 0962d3c..495a32a 100644 --- a/include/configs/mx6qarm2.h +++ b/include/configs/mx6qarm2.h @@ -61,6 +61,7 @@ #define CONFIG_CMD_MII #define CONFIG_CMD_NET #define CONFIG_FEC_MXC +#define CONFIG_FEC_QUIRK_ENET_MAC #define CONFIG_MII #define IMX_FEC_BASE ENET_BASE_ADDR #define CONFIG_FEC_XCV_TYPE RGMII diff --git a/include/configs/mx6qsabrelite.h b/include/configs/mx6qsabrelite.h index d650ee3..2e9775a 100644 --- a/include/configs/mx6qsabrelite.h +++ b/include/configs/mx6qsabrelite.h @@ -61,6 +61,7 @@ #define CONFIG_CMD_MII #define CONFIG_CMD_NET #define CONFIG_FEC_MXC +#define CONFIG_FEC_QUIRK_ENET_MAC #define CONFIG_MII #define IMX_FEC_BASE ENET_BASE_ADDR #define CONFIG_FEC_XCV_TYPE RGMII