MPC5200 FEC MII speed register
authorJon Smirl <jonsmirl@gmail.com>
Wed, 11 Mar 2009 19:08:56 +0000 (15:08 -0400)
committerJohn Rigby <jrigby@freescale.com>
Fri, 13 Mar 2009 15:58:37 +0000 (09:58 -0600)
Set a non-zero speed in the MII register so that MII commands will work.

Signed-off-by: Jon Smirl <jonsmirl@gmail.com>
drivers/net/mpc5xxx_fec.c

index 2bf901e138bec5faf46cd9c79111b5605e819a22..0f1d1af0ea2f5084d7bcf4c10895c9d4c050ecef 100644 (file)
@@ -281,13 +281,6 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
        }
 
        fec->eth->x_cntrl = 0x00000000; /* half-duplex, heartbeat disabled */
-       if (fec->xcv_type != SEVENWIRE) {
-               /*
-                * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock
-                * and do not drop the Preamble.
-                */
-               fec->eth->mii_speed = (((gd->ipb_clk >> 20) / 5) << 1); /* No MII for 7-wire mode */
-       }
 
        /*
         * Set Opcode/Pause Duration Register
@@ -640,6 +633,15 @@ static void mpc5xxx_fec_halt(struct eth_device *dev)
         */
        udelay(10);
 
+       /* don't leave the MII speed set to zero */
+       if (fec->xcv_type != SEVENWIRE) {
+               /*
+                * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock
+                * and do not drop the Preamble.
+                */
+               fec->eth->mii_speed = (((gd->ipb_clk >> 20) / 5) << 1); /* No MII for 7-wire mode */
+       }
+
 #if (DEBUG & 0x3)
        printf("Ethernet task stopped\n");
 #endif
@@ -897,6 +899,13 @@ int mpc5xxx_fec_initialize(bd_t * bis)
 #else
 #error fec->xcv_type not initialized.
 #endif
+       if (fec->xcv_type != SEVENWIRE) {
+               /*
+                * Set MII_SPEED = (1/(mii_speed * 2)) * System Clock
+                * and do not drop the Preamble.
+                */
+               fec->eth->mii_speed = (((gd->ipb_clk >> 20) / 5) << 1); /* No MII for 7-wire mode */
+       }
 
        dev->priv = (void *)fec;
        dev->iobase = MPC5XXX_FEC;