Skip to contentSkip to conversation

ucc_geth: Remove obsolete workaround of link speed change

PATCH New Li Yang 1 participant 1 message Feb 8, 2007

Subsystems (2)
lore
Share & tools
lore

Li Yang

author
#0 lore raw

PATCH 2/3 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.

--- drivers/net/ucc_geth.c | 71 +++----------------------------------------
drivers/net/ucc_geth_phy.c | 2 +

2 files changed, 7 insertions(+), 66 deletions(-)
drivers/net/ucc_geth.c +0 -0
index ac1266c..ce0eab9 100644
@@ -1709,75 +1709,13 @@ static void adjust_link(struct net_device *dev)
		if (mii_info->speed != ugeth->oldspeed) {
			switch (mii_info->speed) {
			case 1000:

-#ifdef CONFIG_PPC_MPC836x
-/* 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);

+				ugeth->ug_info->enet_interface = ENET_1000_RGMII;
				break;
			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;

- 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;
+ case 10:

+				ugeth->ug_info->enet_interface = ENET_10_RGMII;
				break;
			default:
				ugeth_warn
@@ -1785,6 +1723,7 @@ remove this lines when it will be fixed!!! */
				     dev->name, mii_info->speed);
				break;
			}

+ adjust_enet_interface(ugeth);

			ugeth_info("%s: Speed %dBT", dev->name,
				   mii_info->speed);
drivers/net/ucc_geth_phy.c +0 -0
index 3c86592..6fda6d8 100644
@@ -376,6 +376,8 @@ static int marvell_init(struct ugeth_mii_info *mii_info)
	ugphy_vdbg("%s: IN", __FUNCTION__);

	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_read(mii_info, MII_BMCR) | BMCR_RESET);
	msleep(4000);