]> git.sur5r.net Git - u-boot/commitdiff
net: uec_phy: handle 88e1111 rev.B2 erratum 5.6
authorKim Phillips <kim.phillips@freescale.com>
Wed, 27 Feb 2008 21:06:39 +0000 (15:06 -0600)
committerWolfgang Denk <wd@denx.de>
Sun, 2 Mar 2008 20:52:15 +0000 (21:52 +0100)
erratum 5.6 states the autoneg completion bit is functional only if the
autoneg bit is asserted.

This fixes any secondarily-issued networking commands on non-gigabit
links on the mpc8360 mds board.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
drivers/qe/uec_phy.c

index c549b6bb99cc39b47e3d12fb1b77885c879ef496..cf9921b37f302a937aa9df2ece32128d29474722 100644 (file)
@@ -574,6 +574,7 @@ void marvell_phy_interface_mode (struct eth_device *dev,
 {
        uec_private_t *uec = (uec_private_t *) dev->priv;
        struct uec_mii_info *mii_info;
+       u16 status;
 
        if (!uec->mii_info) {
                printf ("%s: the PHY not intialized\n", __FUNCTION__);
@@ -609,6 +610,13 @@ void marvell_phy_interface_mode (struct eth_device *dev,
                phy_write (mii_info, 0x00, 0x8100);
                udelay (1000000);
        }
+
+       /* handle 88e1111 rev.B2 erratum 5.6 */
+       if (mii_info->autoneg) {
+               status = phy_read (mii_info, PHY_BMCR);
+               phy_write (mii_info, PHY_BMCR, status | PHY_BMCR_AUTON);
+       }
+       /* now the B2 will correctly report autoneg completion status */
 }
 
 void change_phy_interface_mode (struct eth_device *dev, enet_interface_e mode)