aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Liu <jason.hui@linaro.org>2011-12-16 05:17:07 +0000
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2012-01-16 08:40:08 +0100
commit2ef2b9509554535dad7a8d15087c6df418f12f22 (patch)
treee9fa1049bdf1c1f486c241f1a112cbe75431c913
parentff167df51c261f615158a22ff9ef1b64b7237c5c (diff)
fec: add the i.mx6q enet driver support
Cc: Stefano Babic <sbabic@denx.de> Signed-off-by: Jason Liu <jason.hui@linaro.org> Acked-by: Stefano Babic <sbabic@denx.de>
-rw-r--r--drivers/net/fec_mxc.c10
-rw-r--r--drivers/net/fec_mxc.h7
2 files changed, 16 insertions, 1 deletions
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index b05a4c0c9..3affda8fa 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -384,6 +384,14 @@ static int fec_open(struct eth_device *edev)
writel(1 << 2, &fec->eth->x_cntrl);
fec->rbd_index = 0;
+#if defined(CONFIG_MX6Q)
+ /* Enable ENET HW endian SWAP */
+ writel(readl(&fec->eth->ecntrl) | FEC_ECNTRL_DBSWAP,
+ &fec->eth->ecntrl);
+ /* Enable ENET store and forward mode */
+ writel(readl(&fec->eth->x_wmrk) | FEC_X_WMRK_STRFWD,
+ &fec->eth->x_wmrk);
+#endif
/*
* Enable FEC-Lite controller
*/
@@ -485,6 +493,8 @@ static int fec_init(struct eth_device *dev, bd_t* bd)
rcntrl = PKTSIZE << FEC_RCNTRL_MAX_FL_SHIFT;
if (fec->xcv_type == SEVENWIRE)
rcntrl |= FEC_RCNTRL_FCE;
+ else if (fec->xcv_type == RGMII)
+ rcntrl |= FEC_RCNTRL_RGMII;
else if (fec->xcv_type == RMII)
rcntrl |= FEC_RCNTRL_RMII;
else /* MII mode */
diff --git a/drivers/net/fec_mxc.h b/drivers/net/fec_mxc.h
index 8b2664517..39337bfa1 100644
--- a/drivers/net/fec_mxc.h
+++ b/drivers/net/fec_mxc.h
@@ -196,6 +196,7 @@ struct ethernet_regs {
#define FEC_RCNTRL_PROM 0x00000008
#define FEC_RCNTRL_BC_REJ 0x00000010
#define FEC_RCNTRL_FCE 0x00000020
+#define FEC_RCNTRL_RGMII 0x00000040
#define FEC_RCNTRL_RMII 0x00000100
#define FEC_TCNTRL_GTS 0x00000001
@@ -206,6 +207,9 @@ struct ethernet_regs {
#define FEC_ECNTRL_RESET 0x00000001 /* reset the FEC */
#define FEC_ECNTRL_ETHER_EN 0x00000002 /* enable the FEC */
+#define FEC_ECNTRL_DBSWAP 0x00000100
+
+#define FEC_X_WMRK_STRFWD 0x00000100
#if defined(CONFIG_MX25) || defined(CONFIG_MX53)
/* defines for MIIGSK */
@@ -261,7 +265,8 @@ enum xceiver_type {
SEVENWIRE, /* 7-wire */
MII10, /* MII 10Mbps */
MII100, /* MII 100Mbps */
- RMII /* RMII */
+ RMII, /* RMII */
+ RGMII, /* RGMII */
};
/**