From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Warren Date: Thu, 16 Oct 2008 23:00:44 -0700 Subject: [U-Boot] [PATCH 05/10] AVR32: macb - Disable 100mbps if clock is slow In-Reply-To: <09189b13a9a10f413f4f12395032140345592cf3.1223643536.git.olavmrk@gmail.com> References: <09189b13a9a10f413f4f12395032140345592cf3.1223643536.git.olavmrk@gmail.com> Message-ID: <48F82A0C.9030505@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 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 > Signed-off-by: Paul Driveklepp > Signed-off-by: Olav Morken > --- > 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