From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Rigby Date: Fri, 13 Mar 2009 10:28:54 -0600 Subject: [U-Boot] Fwd: [PATCH] MPC5200 FEC MII speed register In-Reply-To: <9e4733910903130623m68b06a69td983e1dab03a9f25@mail.gmail.com> References: <20090311190856.24261.51147.stgit@localhost> <9e4733910903130623m68b06a69td983e1dab03a9f25@mail.gmail.com> Message-ID: <49BA89C6.80803@freescale.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Jon Smirl wrote: > John, could you please apply this. > > Without this the MII commands don't work on any of the mpc5200 > platforms. mpc5xxx_fec_halt() sets the mii speed register to zero it > needs to left at a non-zero speed for the commands to function. > > ---------- Forwarded message ---------- > From: Jon > Date: Wed, Mar 11, 2009 at 3:08 PM > Subject: [PATCH] MPC5200 FEC MII speed register > To: u-boot at lists.denx.de > > > From: Jon Smirl > > Set a non-zero speed in the MII register so that MII commands will work. > > Signed-off-by: Jon Smirl > --- > drivers/net/mpc5xxx_fec.c | 23 ++++++++++++++++------- > 1 files changed, 16 insertions(+), 7 deletions(-) > > diff --git a/drivers/net/mpc5xxx_fec.c b/drivers/net/mpc5xxx_fec.c > index 89e91c3..1876b76 100644 > --- a/drivers/net/mpc5xxx_fec.c > +++ b/drivers/net/mpc5xxx_fec.c > @@ -285,13 +285,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 > @@ -649,6 +642,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 > @@ -906,6 +908,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; > > > > > done