fec: add the i.mx6q enet driver support
authorJason Liu <jason.hui@linaro.org>
Fri, 16 Dec 2011 05:17:07 +0000 (05:17 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Mon, 16 Jan 2012 07:40:08 +0000 (08:40 +0100)
Cc: Stefano Babic <sbabic@denx.de>
Signed-off-by: Jason Liu <jason.hui@linaro.org>
Acked-by: Stefano Babic <sbabic@denx.de>
drivers/net/fec_mxc.c
drivers/net/fec_mxc.h

index b05a4c0c9a7b383a23df14f81d732fe61a765feb..3affda8fad2f91a2ab5a8b117a00e72793d1da2e 100644 (file)
@@ -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 */
index 8b26645173e03d8c6d4f179cf0451a12fbd5dfce..39337bfa1159beb6d0bfb61198fb7e46a93a6aa5 100644 (file)
@@ -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 */
 };
 
 /**