++ 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)
+diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c
+index ac5a8c4..dbac01d 100644
+--- a/drivers/net/cpmac.c
++++ b/drivers/net/cpmac.c
+@@ -1034,23 +1034,10 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
+
+ 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;
+ }
+ }
+--
+1.5.2.2
+