From 08944ed54ad4ea46d66e2fba2f9c032c074f8eee Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 26 Jun 2010 20:41:49 +0000 Subject: add back the base-files/image code from brcm-2.4 to brcm47xx git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21945 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../lib/preinit/03_init_hotplug_failsafe_brcm | 9 +++++ .../base-files/lib/preinit/05_init_interfaces_brcm | 37 ++++++++++++++++++++ .../lib/preinit/05_set_failsafe_switch_brcm | 15 +++++++++ .../base-files/lib/preinit/15_mount_proc_brcm | 6 ++++ .../lib/preinit/15_set_preinit_interface_brcm | 39 ++++++++++++++++++++++ .../lib/preinit/20_failsafe_net_echo_brcm | 12 +++++++ .../lib/preinit/20_failsafe_set_boot_wait_brcm | 14 ++++++++ .../brcm47xx/base-files/lib/upgrade/platform.sh | 16 +++++++++ 8 files changed, 148 insertions(+) create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/03_init_hotplug_failsafe_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/05_set_failsafe_switch_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/15_mount_proc_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_net_echo_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm create mode 100644 target/linux/brcm47xx/base-files/lib/upgrade/platform.sh (limited to 'target/linux/brcm47xx/base-files/lib') diff --git a/target/linux/brcm47xx/base-files/lib/preinit/03_init_hotplug_failsafe_brcm b/target/linux/brcm47xx/base-files/lib/preinit/03_init_hotplug_failsafe_brcm new file mode 100644 index 000000000..b0f4a4efa --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/03_init_hotplug_failsafe_brcm @@ -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/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm b/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm new file mode 100644 index 000000000..3cd760e2d --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm @@ -0,0 +1,37 @@ +#!/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 + ifconfig $ifname 0.0.0.0 up +} + +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 set_preinit_iface +boot_hook_add preinit_main init_iface diff --git a/target/linux/brcm47xx/base-files/lib/preinit/05_set_failsafe_switch_brcm b/target/linux/brcm47xx/base-files/lib/preinit/05_set_failsafe_switch_brcm new file mode 100644 index 000000000..a93559f97 --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/05_set_failsafe_switch_brcm @@ -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 -q "$pi_ifname" /proc/net/dev && { + ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up + } +} + +boot_hook_add failsafe failsafe_ip + diff --git a/target/linux/brcm47xx/base-files/lib/preinit/15_mount_proc_brcm b/target/linux/brcm47xx/base-files/lib/preinit/15_mount_proc_brcm new file mode 100644 index 000000000..fd5add16a --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/15_mount_proc_brcm @@ -0,0 +1,6 @@ +#!/bin/sh + +do_mount_procfs() { + mount none /proc -t proc +} + diff --git a/target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm b/target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm new file mode 100644 index 000000000..fdc7c71ca --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm @@ -0,0 +1,39 @@ +#!/bin/sh + +port_net_echo() { + [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && { + if [ "$pi_preinit_net_messages" = "y" ] || [ "$pi_failsafe_net_message" = "true" ] && [ "$pi_preinit_no_failsafe_netmsg" != "y" ]; then + netmsg $pi_broadcast "$1" + fi + } +} + +preinit_ip_deconfig() { + if [ -z "$pi_ifname" ]; then + ifconfig $ifname 0.0.0.0 down + else + grep -q "$pi_ifname" /proc/net/dev && { + 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 + + echo "0 ${cpu_port:-5u*}" > /proc/switch/eth0/vlan/0/ports + + } || port_net_echo $1 +} + + diff --git a/target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_net_echo_brcm b/target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_net_echo_brcm new file mode 100644 index 000000000..f030cb283 --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_net_echo_brcm @@ -0,0 +1,12 @@ +#!/bin/sh + +indicate_failsafe() { + preinit_net_echo() { + port_net_echo $1 + } + echo "- failsafe -" + preinit_net_echo "Entering Failsafe!\n" + indicate_failsafe_led +} + + diff --git a/target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm b/target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm new file mode 100644 index 000000000..da721b848 --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/preinit/20_failsafe_set_boot_wait_brcm @@ -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 diff --git a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh new file mode 100644 index 000000000..9921cf571 --- /dev/null +++ b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh @@ -0,0 +1,16 @@ +PART_NAME=linux + +platform_check_image() { + [ "$ARGC" -gt 1 ] && return 1 + + case "$(get_magic_word "$1")" in + # .trx files + 4844) return 0;; + *) + echo "Invalid image type. Please use only .trx files" + return 1 + ;; + esac +} + +# use default for platform_do_upgrade() -- cgit v1.2.3