--- drivers/net/ibm_newemac/core.c 2010-02-19 11:13:00.000000000 +0100
+++ drivers/net/ibm_newemac/core.c 2010-02-19 12:53:56.000000000 +0100
@@ -2393,14 +2393,54 @@
            /* PHY-less configuration.
             * XXX I probably should move these settings to the dev tree
             */
+
+    if (emac_read_uint_prop(np, "phy-duplex", &dev->phy.duplex, 0))
+        dev->phy.duplex = 1;
+
+    if (emac_read_uint_prop(np, "phy-speed", &dev->phy.speed, 0))
+        dev->phy.speed = 100;
+
+    if (emac_read_uint_prop(np, "phy-autoneg", &dev->phy.autoneg, 0))
+        dev->phy.autoneg = 0;
+
            dev->phy.address = -1;
            dev->phy.features = SUPPORTED_MII;
-           if (emac_phy_supports_gige(dev->phy_mode))
-                 dev->phy.features |= SUPPORTED_1000baseT_Full;
-           else
-                 dev->phy.features |= SUPPORTED_100baseT_Full;
+
+        if (dev->phy.autoneg == 1 )
+            dev->phy.features |= SUPPORTED_Autoneg;
+
+        switch (dev->phy.duplex)
+        {
+            case 0:
+
+                if (dev->phy.speed == 10 )
+                    dev->phy.features |= SUPPORTED_10baseT_Half;
+
+                if (dev->phy.speed == 100 )
+                    dev->phy.features |= SUPPORTED_100baseT_Half;
+
+                if (dev->phy.speed == 100 )
+                    dev->phy.features |= SUPPORTED_100baseT_Half;
+
+            default:
+
+                if (dev->phy.speed == 10 )
+                    dev->phy.features |= SUPPORTED_10baseT_Full;
+
+                if (dev->phy.speed == 100 )
+                    dev->phy.features |= SUPPORTED_100baseT_Full;
+
+                if (dev->phy.speed == 100 )
+                    dev->phy.features |= SUPPORTED_100baseT_Full;
+        }
+
            dev->phy.pause = 1;

+        #if defined (CONFIG_PPC_DCR_NATIVE) && defined (CONFIG_405EX)
+        if (of_get_property(np, "phy-clock-internal", NULL))
+            dcri_clrset(SDR0, SDR0_MFR, ( dev->rgmii_port ? SDR0_MFR_ECS >> 1 : SDR0_MFR_ECS ),0 );
+        #endif
+
            return 0;
      }

