ucc_geth: Remove obsolete workaround of link speed change
authorLi Yang <leoli@freescale.com>
Thu, 8 Feb 2007 09:34:42 +0000 (17:34 +0800)
committerJeff Garzik <jeff@garzik.org>
Fri, 9 Feb 2007 01:13:15 +0000 (20:13 -0500)
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>
drivers/net/ucc_geth.c
drivers/net/ucc_geth_phy.c

index abb8611c5a916b7d3e12223cdfbfeeb30920e523..db0370affb6bd9607c7532ddb163959d03bd5295 100644 (file)
@@ -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);
index 3c86592ce03c0d18b8eb6953bbfc7a17981147e9..6fda6d88be499d1ce0e79ccc98eb0818f8f713dd 100644 (file)
@@ -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);