aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm-2.4/base-files/lib/preinit
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm-2.4/base-files/lib/preinit')
-rw-r--r--target/linux/brcm-2.4/base-files/lib/preinit/03_init_hotplug_failsafe_brcm-2.49
-rw-r--r--target/linux/brcm-2.4/base-files/lib/preinit/05_init_interfaces_brcm-2.438
-rw-r--r--target/linux/brcm-2.4/base-files/lib/preinit/05_set_failsafe_switch_brcm-2.415
-rw-r--r--target/linux/brcm-2.4/base-files/lib/preinit/15_mount_proc_brcm-2.46
-rw-r--r--target/linux/brcm-2.4/base-files/lib/preinit/15_set_preinit_interface_brcm-2.438
-rw-r--r--target/linux/brcm-2.4/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm-2.414
6 files changed, 120 insertions, 0 deletions
diff --git a/target/linux/brcm-2.4/base-files/lib/preinit/03_init_hotplug_failsafe_brcm-2.4 b/target/linux/brcm-2.4/base-files/lib/preinit/03_init_hotplug_failsafe_brcm-2.4
new file mode 100644
index 0000000000..b0f4a4efa9
--- /dev/null
+++ b/target/linux/brcm-2.4/base-files/lib/preinit/03_init_hotplug_failsafe_brcm-2.4
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+init_hotplug_failsafe() {
+ echo '/sbin/hotplug.failsafe' > /proc/sys/kernel/hotplug
+}
+
+boot_hook_add preinit_main init_hotplug_failsafe
+
+
diff --git a/target/linux/brcm-2.4/base-files/lib/preinit/05_init_interfaces_brcm-2.4 b/target/linux/brcm-2.4/base-files/lib/preinit/05_init_interfaces_brcm-2.4
new file mode 100644
index 0000000000..81cf1f1380
--- /dev/null
+++ b/target/linux/brcm-2.4/base-files/lib/preinit/05_init_interfaces_brcm-2.4
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+set_preinit_iface() {
+ ifname=eth0
+
+ insmod diag
+
+ # hardware specific overrides
+ case "$(cat /proc/diag/model)" in
+ "Linksys WAP54G V1") ifname=eth1;;
+ "ASUS WL-HDD") ifname=eth1;;
+ "ASUS WL-300g") ifname=eth1;;
+ "ASUS (unknown, BCM4702)") ifname=eth1;;
+ "Sitecom WL-105b") ifname=eth1;;
+ esac
+}
+
+check_module () {
+ module="$1"; shift; params="$*"
+
+ insmod "$module" "$params"
+ sleep 1
+ grep "^$module" /proc/modules
+ return $?
+}
+
+init_iface() {
+ check_module tg3
+ insmod switch-core
+ check_module switch-robo || check_module switch-adm || {
+ check_module bcm57xx activate_gpio=0x4 && cpu_port="8u*"
+ } || rmmod switch-core
+}
+
+boot_hook_add preinit_main init_iface
+boot_hook_add preinit_main set_preinit_iface
+
+
diff --git a/target/linux/brcm-2.4/base-files/lib/preinit/05_set_failsafe_switch_brcm-2.4 b/target/linux/brcm-2.4/base-files/lib/preinit/05_set_failsafe_switch_brcm-2.4
new file mode 100644
index 0000000000..28e62e5b57
--- /dev/null
+++ b/target/linux/brcm-2.4/base-files/lib/preinit/05_set_failsafe_switch_brcm-2.4
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+failsafe_ip() {
+ [ -d /proc/switch/eth0 ] && [ "$ifname" = "eth0" ] && {
+ ifconfig eth0 0.0.0.0 down
+ echo "0 1 2 3 4 ${cpu_port:-5u*}" > /proc/switch/eth0/vlan/0/ports
+ }
+
+ [ -n "$pi_ifname" ] && grep "$pi_ifname" /proc/net/dev >/dev/null && {
+ ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up
+ }
+}
+
+boot_hook_add failsafe failsafe_ip
+
diff --git a/target/linux/brcm-2.4/base-files/lib/preinit/15_mount_proc_brcm-2.4 b/target/linux/brcm-2.4/base-files/lib/preinit/15_mount_proc_brcm-2.4
new file mode 100644
index 0000000000..fd5add16a5
--- /dev/null
+++ b/target/linux/brcm-2.4/base-files/lib/preinit/15_mount_proc_brcm-2.4
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+do_mount_procfs() {
+ mount none /proc -t proc
+}
+
diff --git a/target/linux/brcm-2.4/base-files/lib/preinit/15_set_preinit_interface_brcm-2.4 b/target/linux/brcm-2.4/base-files/lib/preinit/15_set_preinit_interface_brcm-2.4
new file mode 100644
index 0000000000..5e8dc9f11f
--- /dev/null
+++ b/target/linux/brcm-2.4/base-files/lib/preinit/15_set_preinit_interface_brcm-2.4
@@ -0,0 +1,38 @@
+. /etc/functions.sh
+
+port_net_echo() {
+ [ -n "$pi_ifname" ] && grep "$pi_ifname" /proc/net/dev >/dev/null ] {
+ if [ "$pi_preinit_net_messages" = "y" ] || [ "$pi_failsafe_net_message" = "true"] && [ "$pi_preinit_no_failsafe_netmsg" != "y" ]; then
+ netmsg $pi_broadcast "$1"
+ }
+ }
+}
+
+preinit_ip_deconfig() {
+ if [ -z "$pi_ifname" ]; then
+ ifconfig $ifname 0.0.0.0 down
+ else
+ grep "$pi_ifname" /proc/net/dev >/dev/null && {
+ ifconfig $pi_ifname 0.0.0.0 down
+ }
+ fi
+}
+
+preinit_net_echo() {
+ preinit_ip
+
+ [ -d /proc/switch/eth0 ] && [ "$pi_ifname" = "eth0" ] && {
+ echo 1 > /proc/switch/eth0/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/eth0/vlan/0/ports
+ port_net_echo $1
+ }; done
+ } || port_net_echo $1
+
+ preinit_ip_deconfig
+}
+
+
diff --git a/target/linux/brcm-2.4/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm-2.4 b/target/linux/brcm-2.4/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm-2.4
new file mode 100644
index 0000000000..da721b8484
--- /dev/null
+++ b/target/linux/brcm-2.4/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm-2.4
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. /etc/functions.sh
+
+set_boot_wait() {
+ [ -x "/usr/sbin/nvram" ] && {
+ [ "$(nvram get boot_wait)" != "on" ] && {
+ nvram set boot_wait=on
+ nvram commit
+ }
+ }
+}
+
+boot_hook_add failsafe set_boot_wait