Blackfin: bf518f-ezbrd: fix dsa resources
authorSonic Zhang <sonic.zhang@analog.com>
Tue, 23 Nov 2010 10:00:15 +0000 (10:00 +0000)
committerMike Frysinger <vapier@gentoo.org>
Mon, 10 Jan 2011 12:18:24 +0000 (07:18 -0500)
On bf518-ezbrd with DSA Ethernet switch enabled, on chip MAC is
connecting to phy at address 3.  If allowing the netdevice framework to
probe both 3 phys of the switch when registering MAC phy, phy at address
1 is checked for link active status other than phy at address 3.  If
connecting a cable to port 2 and leave port 1 open, link status in phy
2 and 3 are online, while that in phy 1 is offline.  So, the phy layer
sets wrong offline status to net device on port 3.  In this case, no data
can be transferred via ethernet port 2.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/mach-bf518/boards/ezbrd.c

index 0c75aa35faf48271e99dc42816587fa4642f60ab..8d55a8dad7ab22ef96f013a115ff50966e43bb77 100644 (file)
@@ -104,24 +104,23 @@ static const unsigned short bfin_mac_peripherals[] = {
 
 static struct bfin_phydev_platform_data bfin_phydev_data[] = {
        {
-               .addr = 1,
-               .irq = IRQ_MAC_PHYINT,
-       },
-       {
-               .addr = 2,
-               .irq = IRQ_MAC_PHYINT,
-       },
-       {
+#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
                .addr = 3,
+#else
+               .addr = 1,
+#endif
                .irq = IRQ_MAC_PHYINT,
        },
 };
 
 static struct bfin_mii_bus_platform_data bfin_mii_bus_data = {
-       .phydev_number = 3,
+       .phydev_number = 1,
        .phydev_data = bfin_phydev_data,
        .phy_mode = PHY_INTERFACE_MODE_MII,
        .mac_peripherals = bfin_mac_peripherals,
+#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
+       .phy_mask = 0xfff7, /* Only probe the port phy connect to the on chip MAC */
+#endif
 };
 
 static struct platform_device bfin_mii_bus = {