aboutsummaryrefslogtreecommitdiff
path: root/drivers/qe
diff options
context:
space:
mode:
authorKim Phillips <kim.phillips@freescale.com>2008-02-27 15:06:39 -0600
committerWolfgang Denk <wd@denx.de>2008-03-02 21:52:15 +0100
commitf655adef65e4cf6b929054b049ee19ae9b5ccbe2 (patch)
tree466a214ca53e046a23b278e2b5dad3e3fe41c2f1 /drivers/qe
parent093e14c52280b4bcc84948bac605ee4d6e87b6e9 (diff)
net: uec_phy: handle 88e1111 rev.B2 erratum 5.6
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>
Diffstat (limited to 'drivers/qe')
-rw-r--r--drivers/qe/uec_phy.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/qe/uec_phy.c b/drivers/qe/uec_phy.c
index c549b6bb9..cf9921b37 100644
--- a/drivers/qe/uec_phy.c
+++ b/drivers/qe/uec_phy.c
@@ -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)