All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 1/5] net: fec_mxc: add 1000 Mbps selection
@ 2012-02-02  1:14 Troy Kisky
  2012-02-02  1:14 ` [U-Boot] [PATCH v3 2/5] net: fec_mxc: add PHYLIB support Troy Kisky
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Troy Kisky @ 2012-02-02  1:14 UTC (permalink / raw)
  To: u-boot

Define CONFIG_FEC_QUIRK_ENET_MAC and add to
board files mx6qarm2 and mx6qsabrelite.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
---
 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(-)

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
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-02-02  2:41 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-02  1:14 [U-Boot] [PATCH v3 1/5] net: fec_mxc: add 1000 Mbps selection Troy Kisky
2012-02-02  1:14 ` [U-Boot] [PATCH v3 2/5] net: fec_mxc: add PHYLIB support Troy Kisky
2012-02-02  1:14 ` [U-Boot] [PATCH v3 3/5] net: phy: add support for Micrel's KSZ9021 Troy Kisky
2012-02-02  1:14 ` [U-Boot] [PATCH v3 4/5] net: phy: make board_phy_config responsible for calling drv->config Troy Kisky
2012-02-02  1:14 ` [U-Boot] [PATCH v3 5/5] i.mx6q: mx6qsabrelite: Update the network configuration Troy Kisky
2012-02-02  1:37   ` Troy Kisky
2012-02-02  2:41     ` Jason Hui
2012-02-02  1:25 ` [U-Boot] [PATCH v3 1/5] net: fec_mxc: add 1000 Mbps selection Troy Kisky

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.