Olav Morken wrote: > For 100mbps operation, the ethernet controller requires a 25 MHz clock > in MII mode, and a 50 MHz clock in RMII mode. If the clock is slower, > disable 100mbps mode. > > Signed-off-by: Gunnar Rangoy <[EMAIL PROTECTED]> > Signed-off-by: Paul Driveklepp <[EMAIL PROTECTED]> > Signed-off-by: Olav Morken <[EMAIL PROTECTED]> > --- > drivers/net/macb.c | 23 ++++++++++++++++++++++- > 1 files changed, 22 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/macb.c b/drivers/net/macb.c > index 08bebf7..4fef374 100644 > --- a/drivers/net/macb.c > +++ b/drivers/net/macb.c > @@ -296,8 +296,29 @@ static void macb_phy_reset(struct macb_device *macb) > struct eth_device *netdev = &macb->netdev; > int i; > u16 status, adv; > + int rmii_mode; > + unsigned min_hz; > + > +#ifdef CONFIG_RMII > + rmii_mode = 1; > + min_hz = 50000000; > +#else > + rmii_mode = 0; > + min_hz = 25000000; > +#endif > + > + adv = ADVERTISE_CSMA | ADVERTISE_ALL ; > + > + if (get_hsb_clk_rate() < min_hz) { > + printf("%s: HSB clock < %u MHz in %s mode - " > + "disabling 100mbit.\n", netdev->name, min_hz / 1000000, > + (rmii_mode ? "RMII" : "MII")); > + > + adv &= ~ADVERTISE_100FULL; > + adv &= ~ADVERTISE_100HALF; > + adv &= ~ADVERTISE_100BASE4; > + } > > - adv = ADVERTISE_CSMA | ADVERTISE_ALL; > macb_mdio_write(macb, MII_ADVERTISE, adv); > printf("%s: Starting autonegotiation...\n", netdev->name); > macb_mdio_write(macb, MII_BMCR, (BMCR_ANENABLE > Applied to net/testing.
regards, Ben _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot