Merge with /home/tur/git/u-boot#motionpro
[platform/kernel/u-boot.git] / cpu / mpc5xxx / fec.c
index 2e8e549..8136366 100644 (file)
@@ -14,6 +14,8 @@
 #include "sdma.h"
 #include "fec.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* #define DEBUG       0x28 */
 
 #if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI) && \
@@ -242,7 +244,6 @@ static void mpc5xxx_fec_set_hwaddr(mpc5xxx_fec_priv *fec, char *mac)
 /********************************************************************/
 static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
 {
-       DECLARE_GLOBAL_DATA_PTR;
        mpc5xxx_fec_priv *fec = (mpc5xxx_fec_priv *)dev->priv;
        struct mpc5xxx_sdma *sdma = (struct mpc5xxx_sdma *)MPC5XXX_SDMA;
 
@@ -375,7 +376,7 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
 
 #if (DEBUG & 0x2)
        if (fec->xcv_type != SEVENWIRE)
-               mpc5xxx_fec_phydump ();
+               mpc5xxx_fec_phydump (dev->name);
 #endif
 
        /*
@@ -393,7 +394,6 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
 /********************************************************************/
 static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis)
 {
-       DECLARE_GLOBAL_DATA_PTR;
        mpc5xxx_fec_priv *fec = (mpc5xxx_fec_priv *)dev->priv;
        const uint8 phyAddr = CONFIG_PHY_ADDR;  /* Only one PHY */
 
@@ -428,6 +428,13 @@ static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis)
         */
        fec->eth->imask = 0x00000000;
 
+/*
+ * In original Promess-provided code PHY initialization is disabled with the
+ * following comment: "Phy initialization is DISABLED for now.  There was a
+ * problem with running 100 Mbps on PRO board". Thus we temporarily disable
+ * PHY initialization for the Motion-PRO board, until a proper fix is found.
+ */
+
        if (fec->xcv_type != SEVENWIRE) {
                /*
                 * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock
@@ -467,6 +474,10 @@ static int mpc5xxx_fec_init_phy(struct eth_device *dev, bd_t * bis)
                miiphy_write(dev->name, phyAddr, 0x0, 0x8000);
                udelay(1000);
 
+#if defined(CONFIG_UC101)
+               /* Set the LED configuration Register for the UC101 Board */
+               miiphy_write(dev->name, phyAddr, 0x14, 0x4122);
+#endif
                if (fec->xcv_type == MII10) {
                        /*
                         * Force 10Base-T, FDX operation
@@ -575,7 +586,7 @@ static void mpc5xxx_fec_halt(struct eth_device *dev)
 
 #if (DEBUG & 0x2)
        if (fec->xcv_type != SEVENWIRE)
-               mpc5xxx_fec_phydump ();
+               mpc5xxx_fec_phydump (dev->name);
 #endif
 
        /*
@@ -878,11 +889,13 @@ int mpc5xxx_fec_initialize(bd_t * bis)
        fec->eth = (ethernet_regs *)MPC5XXX_FEC;
        fec->tbdBase = (FEC_TBD *)FEC_BD_BASE;
        fec->rbdBase = (FEC_RBD *)(FEC_BD_BASE + FEC_TBD_NUM * sizeof(FEC_TBD));
-#if defined(CONFIG_CANMB)   || defined(CONFIG_HMI1001) || \
-    defined(CONFIG_ICECUBE) || defined(CONFIG_INKA4X0) || \
-    defined(CONFIG_MCC200)  || defined(CONFIG_O2DNT)   || \
-    defined(CONFIG_PM520)   || defined(CONFIG_TOP5200) || \
-    defined(CONFIG_TQM5200)
+#if defined(CONFIG_CANMB)    || defined(CONFIG_HMI1001)        || \
+    defined(CONFIG_ICECUBE)  || defined(CONFIG_INKA4X0)        || \
+    defined(CONFIG_JUPITER)  || defined(CONFIG_MCC200) || \
+    defined(CONFIG_MOTIONPRO)|| defined(CONFIG_O2DNT)  || \
+    defined(CONFIG_PM520)    || defined(CONFIG_TOP5200)        || \
+    defined(CONFIG_TQM5200)  || defined(CONFIG_UC101)  || \
+    defined(CONFIG_V38B)
 # ifndef CONFIG_FEC_10MBIT
        fec->xcv_type = MII100;
 # else