[U-Boot] [PATCH] Bugfix: mpc512x_fec MII accesses fail after ethernet transfers

Ben Warren biggerbadderben at gmail.com
Tue Jul 21 08:53:08 CEST 2009


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 <Thomas.Doerfler at embedded-brains.de>
> --
> 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


More information about the U-Boot mailing list