diff options
author | Kim Phillips <kim.phillips@freescale.com> | 2008-02-27 21:06:39 (GMT) |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-03-02 20:52:15 (GMT) |
commit | f655adef65e4cf6b929054b049ee19ae9b5ccbe2 (patch) | |
tree | 466a214ca53e046a23b278e2b5dad3e3fe41c2f1 /drivers/qe/uec_phy.c | |
parent | 093e14c52280b4bcc84948bac605ee4d6e87b6e9 (diff) | |
download | u-boot-fsl-qoriq-f655adef65e4cf6b929054b049ee19ae9b5ccbe2.tar.xz |
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/uec_phy.c')
-rw-r--r-- | drivers/qe/uec_phy.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/qe/uec_phy.c b/drivers/qe/uec_phy.c index c549b6b..cf9921b 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) |