Explorar o código

bcm63xx: switch to b53 and swconfig

Switch to using the B53 switch driver where appropriate.

Use a non-tagged default config where it isn't confirmed to be
working.

Remove the switch configuration in preinit as the switch will now
be configured by the driver  to use port isolation to prevent leakage
between lan and wan.

While at it, also provide a switch config for Neufbox 6.

Signed-off-by: Jonas Gorski <[email protected]>

SVN-Revision: 35307
Jonas Gorski %!s(int64=13) %!d(string=hai) anos
pai
achega
8411e5c06e
Modificáronse 26 ficheiros con 261 adicións e 59 borrados
  1. 1 1
      package/switch/Makefile
  2. 63 15
      target/linux/brcm63xx/base-files/etc/uci-defaults/02_network
  3. 1 1
      target/linux/brcm63xx/base-files/lib/brcm63xx.sh
  4. 0 5
      target/linux/brcm63xx/base-files/lib/preinit/05_failsafe_config_switch_brcm63xx
  5. 1 18
      target/linux/brcm63xx/base-files/lib/preinit/15_set_preinit_interface_brcm63xx
  6. 5 0
      target/linux/brcm63xx/config-3.6
  7. 3 1
      target/linux/brcm63xx/patches-3.6/500-board-D4PW.patch
  8. 11 1
      target/linux/brcm63xx/patches-3.6/501-board-NB4.patch
  9. 3 1
      target/linux/brcm63xx/patches-3.6/502-board-96338W2_E7T.patch
  10. 3 1
      target/linux/brcm63xx/patches-3.6/503-board-CPVA642.patch
  11. 3 1
      target/linux/brcm63xx/patches-3.6/504-board_dsl_274xb_rev_c.patch
  12. 3 1
      target/linux/brcm63xx/patches-3.6/507-board-MAGIC.patch
  13. 3 1
      target/linux/brcm63xx/patches-3.6/508-board_hw553.patch
  14. 3 1
      target/linux/brcm63xx/patches-3.6/509-board_rta1320_16m.patch
  15. 3 1
      target/linux/brcm63xx/patches-3.6/511-board_V2500V.patch
  16. 3 1
      target/linux/brcm63xx/patches-3.6/512-board_BTV2110.patch
  17. 3 1
      target/linux/brcm63xx/patches-3.6/514-board_ct536_ct5621.patch
  18. 3 1
      target/linux/brcm63xx/patches-3.6/516-board_96348A-122.patch
  19. 3 1
      target/linux/brcm63xx/patches-3.6/519_board_CPVA502plus.patch
  20. 3 1
      target/linux/brcm63xx/patches-3.6/525-board_96348w3.patch
  21. 3 1
      target/linux/brcm63xx/patches-3.6/526-board_CT6373-1.patch
  22. 3 1
      target/linux/brcm63xx/patches-3.6/527-board_dva-g3810bn-tl-1.patch
  23. 3 1
      target/linux/brcm63xx/patches-3.6/529-board_fast2604.patch
  24. 3 1
      target/linux/brcm63xx/patches-3.6/553-board_rta770bw.patch
  25. 9 1
      target/linux/brcm63xx/patches-3.6/554-board_hw556.patch
  26. 119 0
      target/linux/brcm63xx/patches-3.6/555-boards_probe_switch.patch

+ 1 - 1
package/switch/Makefile

@@ -15,7 +15,7 @@ include $(INCLUDE_DIR)/package.mk
 
 define KernelPackage/switch
   SUBMENU:=Other modules
-  DEPENDS:=@TARGET_brcm47xx||TARGET_brcm63xx
+  DEPENDS:=@TARGET_brcm47xx
   TITLE:=Switch drivers
   FILES:= \
 	$(PKG_BUILD_DIR)/switch-core.ko \

+ 63 - 15
target/linux/brcm63xx/base-files/etc/uci-defaults/02_network

@@ -14,40 +14,88 @@ ucidef_set_interface_loopback
 
 case "$board_name" in
 
-96328avng |\
-96328A-1241N |\
-96328A-1441N1 |\
-963281TAN |\
-963281T_TEF |\
-96348A-122 |\
+96348W3 |\
 96358-502V |\
-CT6373-1 |\
-AW4339U |\
+SPW500V)
+	ucidef_set_interface_lan "eth0"
+	;;
+
+96338GW |\
+96338W |\
+96338W2_E7T |\
+96348A-122 |\
+96348W3 |\
 CPVA642 |\
 CT536_CT5621 |\
+CT6373-1 |\
 D-4P-W |\
 "F@ST2604" |\
-HW556* |\
-NB6 |\
-SPW303V |\
-SPW500V |\
-V2110 |\
-96348W3)
+RTA1320_16M |\
+RTA770BW |\
+V2110)
 	ucidef_set_interface_lan "eth0"
+	ucidef_add_switch "eth0" "1" "1"
+	ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 4 5"
+	;;
+
+96348GW |\
+96348GW-10 |\
+96348GW-11 |\
+96348GW-A |\
+96358VW |\
+96358VW2 |\
+AGPF-S0 |\
+"CPVA502+" |\
+DV201AMR |\
+DWV-S0 |\
+"F@ST2404" |\
+HW553 |\
+MAGIC |\
+RTA1025W_16 |\
+V2500V_BB)
+	ucidef_set_interfaces_lan_wan "eth1" "eth0"
+	ucidef_add_switch "eth1" "1" "1"
+	ucidef_add_switch_vlan "eth1" "1" "0 1 2 3 4 5"
 	;;
 
-AW4139)
+AW4139 |\
+HW556*)
 	ucidef_set_interface_lan "eth0.1"
 	ucidef_add_switch "eth0" "1" "1"
 	ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 4 5t"
 	;;
 
+NB4-* |\
 DVG3810BN)
 	ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
 	ucidef_add_switch "eth1" "1" "1"
 	ucidef_add_switch_vlan "eth1" "1" "0 1 2 3 4 5t"
 	;;
 
+96328avng |\
+96328A-1241N |\
+96328A-1441N1 |\
+963281TAN |\
+963281T_TEF |\
+96368MVNgr)
+	ucidef_set_interface_lan "eth0.1"
+	ucidef_add_switch "eth0" "1" "1"
+	ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 8t"
+	;;
+
+96368MVWG)
+	ucidef_set_interface_lan "eth0.1"
+	ucidef_add_switch "eth0" "1" "1"
+	ucidef_add_switch_vlan "eth0" "1" "1 2 4 5 8t"
+	;;
+
+NB6)
+	ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+	ucidef_add_switch "switch0" "1" "1"
+	ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 9t"
+	ucidef_add_switch_vlan "switch0" "2" "0 9t"
+	;;
+
 *)
 	ucidef_set_interfaces_lan_wan "eth1" "eth0"
 	;;

+ 1 - 1
target/linux/brcm63xx/base-files/lib/brcm63xx.sh

@@ -13,7 +13,7 @@ brcm63xx_has_reset_button=""
 brcm63xx_detect() {
 	board_name=$(awk 'BEGIN{FS="[ \t:/]+"} /system type/ {print $4}' /proc/cpuinfo)
 
-	if [ "$board_name" = "96358VW" ] && [ -e /proc/switch/eth1/enable ]; then
+	if [ "$board_name" = "96358VW" ] && [ -n "$(swconfig dev eth1 help 2>/dev/null)" ]; then
 		board_name="DVAG3810BN"
 	fi
 

+ 0 - 5
target/linux/brcm63xx/base-files/lib/preinit/05_failsafe_config_switch_brcm63xx

@@ -1,11 +1,6 @@
 #!/bin/sh
 
 failsafe_ip() {
-	[ -d "/proc/switch/$ifname" ] && {
-		ifconfig "$ifname" 0.0.0.0 down
-		echo "0 1 2 3 4 ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
-	}
-	
 	[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
         	ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up
         }

+ 1 - 18
target/linux/brcm63xx/base-files/lib/preinit/15_set_preinit_interface_brcm63xx

@@ -16,29 +16,12 @@ preinit_ip_deconfig() {
 			ifconfig $pi_ifname 0.0.0.0 down
 		}
 	fi
-	[ -d "/proc/switch/$ifname" ] && {
-		echo 1 > "/proc/switch/$ifname/reset"
-		echo "0 1 2 3 4 ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
-	}
-
 }
 
 preinit_net_echo() {
 	preinit_ip
-	
-	[ -d "/proc/switch/$ifname" ] && {
-		echo 1 > "/proc/switch/$ifname/reset"
 
-		# this would be easier if we blasted the message across all ports
-		# but we don't want packets leaking across interfaces
-		for port in $(seq 0 4); do {
-			echo "$port ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
-			port_net_echo $1
-		}; done
-		
-		echo "0 ${cpu_port:-5u*}" > "/proc/switch/$ifname/vlan/0/ports"
-		
-	} || port_net_echo $1
+	port_net_echo $1
 }
 
 

+ 5 - 0
target/linux/brcm63xx/config-3.6

@@ -8,6 +8,11 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_AUDIT=y
 CONFIG_AUDIT_GENERIC=y
+CONFIG_B53=y
+CONFIG_B53_MMAP_DRIVER=y
+CONFIG_B53_PHY_DRIVER=y
+CONFIG_B53_PHY_FIXUP=y
+CONFIG_B53_SPI_DRIVER=y
 CONFIG_BCM63XX=y
 CONFIG_BCM63XX_CPU_6328=y
 CONFIG_BCM63XX_CPU_6338=y

+ 3 - 1
target/linux/brcm63xx/patches-3.6/500-board-D4PW.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -512,6 +512,54 @@ static struct board_info __initdata boar
+@@ -512,6 +512,56 @@ static struct board_info __initdata boar
  
  	.has_ohci0 = 1,
  };
@@ -14,6 +14,8 @@
 +	.has_uart0 			= 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 11 - 1
target/linux/brcm63xx/patches-3.6/501-board-NB4.patch

@@ -22,7 +22,7 @@
  static struct board_info board;
  
  /*
-@@ -709,6 +717,586 @@ static struct board_info __initdata boar
+@@ -709,6 +717,596 @@ static struct board_info __initdata boar
  
  	.has_ohci0			= 1,
  };
@@ -77,6 +77,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},
@@ -188,6 +190,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},
@@ -299,6 +303,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},
@@ -410,6 +416,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},
@@ -516,6 +524,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/502-board-96338W2_E7T.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -183,6 +183,38 @@ static struct board_info __initdata boar
+@@ -183,6 +183,40 @@ static struct board_info __initdata boar
  		},
  	},
  };
@@ -12,6 +12,8 @@
 +	.has_enet0			= 1,
 +
 +	.enet0 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/503-board-CPVA642.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -706,6 +706,96 @@ static struct board_info __initdata boar
+@@ -706,6 +706,98 @@ static struct board_info __initdata boar
  	},
  };
  
@@ -13,6 +13,8 @@
 +	.has_pci                        = 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100        = 1,
 +		.force_duplex_full      = 1,
 + 	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/504-board_dsl_274xb_rev_c.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -840,6 +840,59 @@ static struct board_info __initdata boar
+@@ -840,6 +840,61 @@ static struct board_info __initdata boar
  	.has_ohci0			= 1,
  };
  
@@ -14,6 +14,8 @@
 +	.has_pci			= 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/507-board-MAGIC.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -767,6 +767,76 @@ static struct board_info __initdata boar
+@@ -767,6 +767,78 @@ static struct board_info __initdata boar
  		},
  	},
  };
@@ -20,6 +20,8 @@
 +	},
 +	.enet1 = {
 +		/* it has BP_ENET_EXTERNAL_PHY */
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/508-board_hw553.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1709,6 +1709,80 @@ static struct board_info __initdata boar
+@@ -1709,6 +1709,82 @@ static struct board_info __initdata boar
  	.spis = nb4_spi_devices,
  	.num_spis = ARRAY_SIZE(nb4_spi_devices),
  };
@@ -21,6 +21,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100        = 1,
 +		.force_duplex_full      = 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/509-board_rta1320_16m.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -215,6 +215,43 @@ static struct board_info __initdata boar
+@@ -215,6 +215,45 @@ static struct board_info __initdata boar
  		},
  	},
  };
@@ -13,6 +13,8 @@
 +	.has_enet0			= 1,
 +
 +	.enet0 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/511-board_V2500V.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -874,6 +874,63 @@ static struct board_info __initdata boar
+@@ -874,6 +874,65 @@ static struct board_info __initdata boar
  		},
  	},
  };
@@ -19,6 +19,8 @@
 +                .use_internal_phy       = 1,
 +        },
 +        .enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +                .force_speed_100        = 1,
 +                .force_duplex_full      = 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/512-board_BTV2110.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -438,6 +438,62 @@ static struct board_info __initdata boar
+@@ -438,6 +438,64 @@ static struct board_info __initdata boar
  	},
  };
  
@@ -15,6 +15,8 @@
 +	.has_pci			= 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/514-board_ct536_ct5621.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -494,6 +494,49 @@ static struct board_info __initdata boar
+@@ -494,6 +494,51 @@ static struct board_info __initdata boar
  };
  
  
@@ -14,6 +14,8 @@
 +	.has_pci			= 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/516-board_96348A-122.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -537,6 +537,67 @@ static struct board_info __initdata boar
+@@ -537,6 +537,69 @@ static struct board_info __initdata boar
  	},
  };
  
@@ -13,6 +13,8 @@
 +	.has_pci			= 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/519_board_CPVA502plus.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1092,6 +1092,44 @@ static struct board_info __initdata boar
+@@ -1092,6 +1092,46 @@ static struct board_info __initdata boar
  		},
  	},
  };
@@ -19,6 +19,8 @@
 +		.use_internal_phy	= 1,
 +	},
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/525-board_96348w3.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1337,6 +1337,57 @@ static struct board_info __initdata boar
+@@ -1337,6 +1337,59 @@ static struct board_info __initdata boar
  	},
  };
  
@@ -14,6 +14,8 @@
 +	.has_pci			= 1,
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/526-board_CT6373-1.patch

@@ -14,7 +14,7 @@
  static struct board_info board;
  
  /*
-@@ -2264,6 +2271,111 @@ static struct board_info __initdata boar
+@@ -2264,6 +2271,113 @@ static struct board_info __initdata boar
  	.num_spis = ARRAY_SIZE(nb4_spi_devices),
  };
  
@@ -64,6 +64,8 @@
 +
 +	.has_enet1			= 1,
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/527-board_dva-g3810bn-tl-1.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2515,6 +2515,71 @@ static struct board_info __initdata boar
+@@ -2515,6 +2515,73 @@ static struct board_info __initdata boar
  		},
  	}
  };
@@ -23,6 +23,8 @@
 +	},
 +
 +	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/529-board_fast2604.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1013,6 +1013,55 @@ static struct board_info __initdata boar
+@@ -1013,6 +1013,57 @@ static struct board_info __initdata boar
  	.has_ehci0			= 1,
  };
  
@@ -14,6 +14,8 @@
 +
 +	.has_enet1					= 1,
 +	.enet1 = {
++		.has_phy			= 1,
++		.phy_id				= 0,
 +		.force_speed_100		= 1,
 +		.force_duplex_full		= 1,
 +	},

+ 3 - 1
target/linux/brcm63xx/patches-3.6/553-board_rta770bw.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -738,6 +738,53 @@ static struct board_info __initdata boar
+@@ -738,6 +738,55 @@ static struct board_info __initdata boar
  
  	.has_uart0			= 1,
  };
@@ -14,6 +14,8 @@
 +	.has_enet0			= 1,
 +
 +	.enet0 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
 +		.force_speed_100	= 1,
 +		.force_duplex_full	= 1,
 +	},

+ 9 - 1
target/linux/brcm63xx/patches-3.6/554-board_hw556.patch

@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2923,6 +2923,366 @@ static struct board_info __initdata boar
+@@ -2923,6 +2923,374 @@ static struct board_info __initdata boar
  	},
  };
  
@@ -22,6 +22,8 @@
 +
 +	.has_enet1				= 1,
 +	.enet1 = {
++		.has_phy			= 1,
++		.phy_id				= 0,
 +		.force_speed_100		= 1,
 +		.force_duplex_full		= 1,
 +	},
@@ -112,6 +114,8 @@
 +
 +	.has_enet1				= 1,
 +	.enet1 = {
++		.has_phy			= 1,
++		.phy_id				= 0,
 +		.force_speed_100		= 1,
 +		.force_duplex_full		= 1,
 +	},
@@ -203,6 +207,8 @@
 +
 +	.has_enet1				= 1,
 +	.enet1 = {
++		.has_phy			= 1,
++		.phy_id				= 0,
 +		.force_speed_100		= 1,
 +		.force_duplex_full		= 1,
 +	},
@@ -294,6 +300,8 @@
 +
 +	.has_enet1				= 1,
 +	.enet1 = {
++		.has_phy			= 1,
++		.phy_id				= 0,
 +		.force_speed_100		= 1,
 +		.force_duplex_full		= 1,
 +	},

+ 119 - 0
target/linux/brcm63xx/patches-3.6/555-boards_probe_switch.patch

@@ -0,0 +1,119 @@
+--- linux-3.6.11/arch/mips/bcm63xx/boards/board_bcm963xx.c.orig	2013-01-05 21:18:15.153079713 +0100
++++ linux-3.6.11/arch/mips/bcm63xx/boards/board_bcm963xx.c	2013-01-05 21:18:27.899285369 +0100
+@@ -583,6 +583,8 @@
+ 	.has_uart0			= 1,
+ 	.has_enet0			= 1,
+ 	.enet0 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -626,6 +628,8 @@
+ 	.has_uart0			= 1,
+ 	.has_enet0			= 1,
+ 	.enet0 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -857,6 +861,8 @@
+ 		.use_internal_phy	= 1,
+ 	},
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -929,6 +935,8 @@
+ 	},
+ 
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1158,6 +1166,8 @@
+ 		.use_internal_phy	= 1,
+ 	},
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1333,6 +1343,8 @@
+ 	},
+ 
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1407,6 +1419,8 @@
+ 		.use_internal_phy	= 1,
+ 	},
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1428,6 +1442,8 @@
+ 		.use_internal_phy	= 1,
+ 	},
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1447,6 +1463,8 @@
+ 		.use_internal_phy	= 1,
+ 	},
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1822,6 +1840,8 @@
+ 	},
+ 
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -1874,6 +1894,8 @@
+ 	},
+ 
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},
+@@ -2014,6 +2036,8 @@
+ 	},
+ 
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100        = 1,
+ 		.force_duplex_full      = 1,
+ 	},
+@@ -2131,6 +2155,8 @@
+ 	},
+ 
+ 	.enet1 = {
++		.has_phy		= 1,
++		.phy_id			= 0,
+ 		.force_speed_100	= 1,
+ 		.force_duplex_full	= 1,
+ 	},