Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1862a53 authored by Li Yang's avatar Li Yang Committed by Jeff Garzik
Browse files

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: default avatarLi Yang <leoli@freescale.com>
Signed-off-by: default avatarWu Xiaochuan <xiao-chuan.wu@freescale.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 0ee8d33c
Loading
Loading
Loading
Loading
+5 −66
Original line number Diff line number Diff line
@@ -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);
+2 −0
Original line number Diff line number Diff line
@@ -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);