From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Warren Date: Mon, 20 Jul 2009 23:53:08 -0700 Subject: [U-Boot] [PATCH] Bugfix: mpc512x_fec MII accesses fail after ethernet transfers In-Reply-To: <4A633D5A.3060803@embedded-brains.de> References: <4A633D5A.3060803@embedded-brains.de> Message-ID: <4A6565D4.7050400@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Thomas, Thomas D?rfler wrote: > The mpc512x FEC network driver resets the FEC before transferring > packets. With this reset, the FEC clears the previous setting of MII > transfer speed. This patch ensures, that it is set again to a reasonable > value after a FEC reset. > > Signed-off-by: Thomas Doerfler > -- > diff --git a/drivers/net/mpc512x_fec.c b/drivers/net/mpc512x_fec.c > index fb2c19a..f3d76ba 100644 > --- a/drivers/net/mpc512x_fec.c > +++ b/drivers/net/mpc512x_fec.c > @@ -446,6 +446,19 @@ static void mpc512x_fec_halt (struct eth_device *dev) > * wait at least 16 clock cycles > */ > udelay (10); > + /* > + * NOTE: reset will also clear the MII speed register > + * we should reinitialize it ASAP > + */ > + 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->ips_clk / 1000000) / 5) > + + 1) > + << 1); > + } > #if (DEBUG & 0x3) > printf ("Ethernet task stopped\n"); > #endif > Applied to net repo (after some tweaking) thanks, Ben