mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
ucc_geth: Remove obsolete workaround of link speed change
The workaround used a long delay of 4s which caused problem when two link-changes happens at the same time. Signed-off-by: Li Yang <leoli@freescale.com> Signed-off-by: Wu Xiaochuan <xiao-chuan.wu@freescale.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
0ee8d33c64
commit
a1862a53df
2 changed files with 7 additions and 66 deletions
|
@ -1709,75 +1709,13 @@ static void adjust_link(struct net_device *dev)
|
||||||
if (mii_info->speed != ugeth->oldspeed) {
|
if (mii_info->speed != ugeth->oldspeed) {
|
||||||
switch (mii_info->speed) {
|
switch (mii_info->speed) {
|
||||||
case 1000:
|
case 1000:
|
||||||
#ifdef CONFIG_PPC_MPC836x
|
ugeth->ug_info->enet_interface = ENET_1000_RGMII;
|
||||||
/* FIXME: This code is for 100Mbs BUG fixing,
|
|
||||||
remove this when it is fixed!!! */
|
|
||||||
if (ugeth->ug_info->enet_interface ==
|
|
||||||
ENET_1000_GMII)
|
|
||||||
/* Run the commands which initialize the PHY */
|
|
||||||
{
|
|
||||||
tempval =
|
|
||||||
(u32) mii_info->mdio_read(ugeth->
|
|
||||||
dev, mii_info->mii_id, 0x1b);
|
|
||||||
tempval |= 0x000f;
|
|
||||||
mii_info->mdio_write(ugeth->dev,
|
|
||||||
mii_info->mii_id, 0x1b,
|
|
||||||
(u16) tempval);
|
|
||||||
tempval =
|
|
||||||
(u32) mii_info->mdio_read(ugeth->
|
|
||||||
dev, mii_info->mii_id,
|
|
||||||
MII_BMCR);
|
|
||||||
mii_info->mdio_write(ugeth->dev,
|
|
||||||
mii_info->mii_id, MII_BMCR,
|
|
||||||
(u16) (tempval | BMCR_RESET));
|
|
||||||
} else if (ugeth->ug_info->enet_interface ==
|
|
||||||
ENET_1000_RGMII)
|
|
||||||
/* Run the commands which initialize the PHY */
|
|
||||||
{
|
|
||||||
tempval =
|
|
||||||
(u32) mii_info->mdio_read(ugeth->
|
|
||||||
dev, mii_info->mii_id, 0x1b);
|
|
||||||
tempval = (tempval & ~0x000f) | 0x000b;
|
|
||||||
mii_info->mdio_write(ugeth->dev,
|
|
||||||
mii_info->mii_id, 0x1b,
|
|
||||||
(u16) tempval);
|
|
||||||
tempval =
|
|
||||||
(u32) mii_info->mdio_read(ugeth->
|
|
||||||
dev, mii_info->mii_id,
|
|
||||||
MII_BMCR);
|
|
||||||
mii_info->mdio_write(ugeth->dev,
|
|
||||||
mii_info->mii_id, MII_BMCR,
|
|
||||||
(u16) (tempval | BMCR_RESET));
|
|
||||||
}
|
|
||||||
msleep(4000);
|
|
||||||
#endif /* CONFIG_MPC8360 */
|
|
||||||
adjust_enet_interface(ugeth);
|
|
||||||
break;
|
break;
|
||||||
case 100:
|
case 100:
|
||||||
case 10:
|
|
||||||
#ifdef CONFIG_PPC_MPC836x
|
|
||||||
/* FIXME: This code is for 100Mbs BUG fixing,
|
|
||||||
remove this lines when it will be fixed!!! */
|
|
||||||
ugeth->ug_info->enet_interface = ENET_100_RGMII;
|
ugeth->ug_info->enet_interface = ENET_100_RGMII;
|
||||||
tempval =
|
break;
|
||||||
(u32) mii_info->mdio_read(ugeth->dev,
|
case 10:
|
||||||
mii_info->mii_id,
|
ugeth->ug_info->enet_interface = ENET_10_RGMII;
|
||||||
0x1b);
|
|
||||||
tempval = (tempval & ~0x000f) | 0x000b;
|
|
||||||
mii_info->mdio_write(ugeth->dev,
|
|
||||||
mii_info->mii_id, 0x1b,
|
|
||||||
(u16) tempval);
|
|
||||||
tempval =
|
|
||||||
(u32) mii_info->mdio_read(ugeth->dev,
|
|
||||||
mii_info->mii_id,
|
|
||||||
MII_BMCR);
|
|
||||||
mii_info->mdio_write(ugeth->dev,
|
|
||||||
mii_info->mii_id, MII_BMCR,
|
|
||||||
(u16) (tempval |
|
|
||||||
BMCR_RESET));
|
|
||||||
msleep(4000);
|
|
||||||
#endif /* CONFIG_MPC8360 */
|
|
||||||
adjust_enet_interface(ugeth);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ugeth_warn
|
ugeth_warn
|
||||||
|
@ -1785,6 +1723,7 @@ remove this lines when it will be fixed!!! */
|
||||||
dev->name, mii_info->speed);
|
dev->name, mii_info->speed);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
adjust_enet_interface(ugeth);
|
||||||
|
|
||||||
ugeth_info("%s: Speed %dBT", dev->name,
|
ugeth_info("%s: Speed %dBT", dev->name,
|
||||||
mii_info->speed);
|
mii_info->speed);
|
||||||
|
|
|
@ -376,6 +376,8 @@ static int marvell_init(struct ugeth_mii_info *mii_info)
|
||||||
ugphy_vdbg("%s: IN", __FUNCTION__);
|
ugphy_vdbg("%s: IN", __FUNCTION__);
|
||||||
|
|
||||||
ucc_geth_phy_write(mii_info, 0x14, 0x0cd2);
|
ucc_geth_phy_write(mii_info, 0x14, 0x0cd2);
|
||||||
|
ucc_geth_phy_write(mii_info, 0x1b,
|
||||||
|
(ucc_geth_phy_read(mii_info, 0x1b) & ~0x000f) | 0x000b);
|
||||||
ucc_geth_phy_write(mii_info, MII_BMCR,
|
ucc_geth_phy_write(mii_info, MII_BMCR,
|
||||||
ucc_geth_phy_read(mii_info, MII_BMCR) | BMCR_RESET);
|
ucc_geth_phy_read(mii_info, MII_BMCR) | BMCR_RESET);
|
||||||
msleep(4000);
|
msleep(4000);
|
||||||
|
|
Loading…
Reference in a new issue