--- a/drivers/net/cpmac.c
+++ b/drivers/net/cpmac.c
@@ -34,7 +34,6 @@
 #include <linux/skbuff.h>
 #include <linux/mii.h>
 #include <linux/phy.h>
-#include <linux/phy_fixed.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
 #include <linux/clk.h>
@@ -1108,8 +1107,6 @@ static const struct net_device_ops cpmac
 	.ndo_set_mac_address	= eth_mac_addr,
 };
 
-static int external_switch;
-
 static int __devinit cpmac_probe(struct platform_device *pdev)
 {
 	int rc, phy_id;
@@ -1121,24 +1118,18 @@ static int __devinit cpmac_probe(struct 
 
 	pdata = pdev->dev.platform_data;
 
-	if (external_switch || dumb_switch) {
-		strncpy(mdio_bus_id, "0", MII_BUS_ID_SIZE); /* fixed phys bus */
-		phy_id = pdev->id;
-	} else {
-		for (phy_id = 0; phy_id < PHY_MAX_ADDR; phy_id++) {
-			if (!(pdata->phy_mask & (1 << phy_id)))
-				continue;
-			if (!cpmac_mii->phy_map[phy_id])
-				continue;
-			strncpy(mdio_bus_id, cpmac_mii->id, MII_BUS_ID_SIZE);
-			break;
-		}
+	for (phy_id = 0; phy_id < PHY_MAX_ADDR; phy_id++) {
+		if (!(pdata->phy_mask & (1 << phy_id)))
+			continue;
+		if (!cpmac_mii->phy_map[phy_id])
+			continue;
+		strncpy(mdio_bus_id, cpmac_mii->id, MII_BUS_ID_SIZE);
+		break;
 	}
 
 	if (phy_id == PHY_MAX_ADDR) {
-		dev_err(&pdev->dev, "no PHY present, falling back to switch on MDIO bus 0\n");
-		strncpy(mdio_bus_id, "0", MII_BUS_ID_SIZE); /* fixed phys bus */
-		phy_id = pdev->id;
+		dev_err(&pdev->dev, "no PHY present\n");
+		return -ENODEV;
 	}
 
 	dev = alloc_etherdev_mq(sizeof(*priv), CPMAC_QUEUES);
@@ -1266,14 +1257,8 @@ int __devinit cpmac_init(void)
 		else
 			msleep(10);
 
-	mask &= 0x7fffffff;
-	if (mask & (mask - 1)) {
-		external_switch = 1;
-		mask = 0;
-	}
-
 	cpmac_mii->phy_mask = ar7_is_titan()? ~(mask | 0x80000000 | 0x40000000):
-		~(mask | 0x80000001);
+		~(mask | 0x80000000);
 	snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "1");
 
 	res = mdiobus_register(cpmac_mii);
