From 9de704a03bd40c5ebfdd93106f806bd1a52cf7a7 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Sat, 16 Feb 2013 16:24:15 +0000
Subject: [PATCH] brcm47xx: improve cpuport detection for filesafe

Do not try to load bcm57xx.ko any more this is not needed for kernel 2.6 and 3.X
Ask the switch driver where the CPU port is.

SVN-Revision: 35624
---
 .../lib/preinit/05_init_interfaces_brcm       | 22 ++++++++-----------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm b/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm
index 1275b03207..e85dd49f42 100644
--- a/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm
+++ b/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm
@@ -14,7 +14,6 @@ set_preinit_iface() {
 	# hardware specific overrides
 	case "$(cat /proc/diag/model)" in
 		"Linksys WAP54G V1") ifname=eth1;;
-		"Linksys E3000 V1"|"Linksys WRT610N V2") cpu_port="8u*";;
 		"ASUS WL-HDD") ifname=eth1;;
 		"ASUS WL-300g") ifname=eth1;;
 		"ASUS (unknown, BCM4702)") ifname=eth1;;
@@ -23,20 +22,17 @@ set_preinit_iface() {
 	ifconfig $ifname 0.0.0.0 up
 }
 
-check_module () {
-  module="$1"; shift; params="$*"
-
-  insmod "$module" "$params"
-  sleep 1
-  grep -q ^"$module " /proc/modules
-  return $?
-}
-
 init_iface() {
 	insmod switch-core
-	check_module switch-robo || check_module switch-adm  || {
-	  check_module bcm57xx activate_gpio=0x4 && cpu_port="8u*"
-	} || rmmod switch-core
+	insmod switch-robo
+	insmod switch-adm
+
+	[ -d /proc/switch/eth0 ] && [ "$ifname" = "eth0" ] && {
+		case "$(cat /proc/switch/eth0/cpuport)" in
+			"5") cpu_port="5u*";;
+			"8") cpu_port="8u*";;
+		esac
+	}
 }
 
 boot_hook_add preinit_main set_preinit_iface
-- 
GitLab