++ res = fixed_phy_add(PHY_POLL, cpmac_low.id, &fixed_phy_status);
++ if (res && res != -ENODEV)
++ return res;
++
+ cpmac_get_mac(0, cpmac_low_data.dev_addr);
+ res = platform_device_register(&cpmac_low);
+ if (res)
+Index: linux-2.6.24.7/drivers/net/cpmac.c
+===================================================================
+--- linux-2.6.24.7.orig/drivers/net/cpmac.c
++++ linux-2.6.24.7/drivers/net/cpmac.c
+@@ -1035,23 +1035,10 @@ static int __devinit cpmac_probe(struct
+
+ if (phy_id == PHY_MAX_ADDR) {
+ if (external_switch || dumb_switch) {
+- struct fixed_phy_status status = {};
+-
+- mdio_bus_id = 0;
+-
+- /*
+- * FIXME: this should be in the platform code!
+- * Since there is not platform code at all (that is,
+- * no mainline users of that driver), place it here
+- * for now.
+- */
+- phy_id = 0;
+- status.link = 1;
+- status.duplex = 1;
+- status.speed = 100;
+- fixed_phy_add(PHY_POLL, phy_id, &status);
++ mdio_bus_id = 0; /* fixed phys bus */
++ phy_id = pdev->id;
+ } else {
+- printk(KERN_ERR "cpmac: no PHY present\n");
++ dev_err(&pdev->dev, "no PHY present\n");
+ return -ENODEV;
+ }
+ }