diff options
Diffstat (limited to 'target/linux/brcm63xx/base-files/lib')
8 files changed, 230 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh new file mode 100755 index 000000000..11774770d --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh @@ -0,0 +1,94 @@ +#!/bin/sh +# +# Copyright (C) 2007 OpenWrt.org +# +# + +board_name="" +status_led="" +status_led2="" +sys_mtd_part="" +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 + board_name="DVAG3810BN" + fi + + case "$board_name" in + 96328avng) + status_led="96328avng::power" + ifname=eth0 + ;; + 963281TAN) + status_led="963281TAN::power" + ifname=eth0 + ;; + 96348GW) + status_led="power" + brcm63xx_has_reset_button="true" + ifname=eth1 + ;; + GW6000) + brcm63xx_has_reset_button="true" + ifname=eth1 + ;; + GW6200) + status_led="line1" + status_led2="tel" + brcm63xx_has_reset_button="true" + ifname=eth1 + ;; + 96348GW-11) + status_led="power" + brcm63xx_has_reset_button="true" + ifname=eth1 + ;; + CT536_CT5621) + status_led="power" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + SPW500V) + status_led="power:green" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + AW4139 |\ + AW4339U) + status_led="dsl-274xb:green:power" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + 96358-502V) + status_led="spw303v:green:power+adsl" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + V2110) + status_led="V2110:power:green" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + CPVA642) + status_led="power:green" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + D-4P-W) + status_led="power:green" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + NB6) + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; + *) + ;; + esac +} + +brcm63xx_detect diff --git a/target/linux/brcm63xx/base-files/lib/preinit/03_do_brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/preinit/03_do_brcm63xx.sh new file mode 100644 index 000000000..dd60c4995 --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/preinit/03_do_brcm63xx.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +do_brcm63xx() { + . /lib/brcm63xx.sh +} + +boot_hook_add preinit_main do_brcm63xx diff --git a/target/linux/brcm63xx/base-files/lib/preinit/05_failsafe_config_switch_brcm63xx b/target/linux/brcm63xx/base-files/lib/preinit/05_failsafe_config_switch_brcm63xx new file mode 100644 index 000000000..43da8cc06 --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/preinit/05_failsafe_config_switch_brcm63xx @@ -0,0 +1,15 @@ +#!/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 + } +} + +boot_hook_add failsafe failsafe_ip + diff --git a/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx b/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx new file mode 100644 index 000000000..b7cbecd4f --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/preinit/05_init_interfaces_brcm63xx @@ -0,0 +1,26 @@ +#!/bin/sh + +set_preinit_iface() { + ifname=eth1 + + . /lib/brcm63xx.sh + + 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() { + insmod switch-core + check_module switch-robo || check_module switch-adm || rmmod switch-core +} + +boot_hook_add preinit_main set_preinit_iface +boot_hook_add preinit_main init_iface diff --git a/target/linux/brcm63xx/base-files/lib/preinit/05_reset_button_brcm63xx b/target/linux/brcm63xx/base-files/lib/preinit/05_reset_button_brcm63xx new file mode 100644 index 000000000..f33825f96 --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/preinit/05_reset_button_brcm63xx @@ -0,0 +1,16 @@ +#!/bin/sh + +. /lib/brcm63xx.sh + +enable_reset_button() { + if [ "$brcm63xx_has_reset_button" = "true" ]; then + insmod input-core + insmod input-polldev + insmod gpio_buttons + insmod button-hotplug + fi +} + +boot_hook_add preinit_main enable_reset_button + + diff --git a/target/linux/brcm63xx/base-files/lib/preinit/15_set_preinit_interface_brcm63xx b/target/linux/brcm63xx/base-files/lib/preinit/15_set_preinit_interface_brcm63xx new file mode 100644 index 000000000..9d366fa33 --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/preinit/15_set_preinit_interface_brcm63xx @@ -0,0 +1,44 @@ +#!/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 + [ -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 +} + + diff --git a/target/linux/brcm63xx/base-files/lib/preinit/20_failsafe_net_echo_brcm63xx b/target/linux/brcm63xx/base-files/lib/preinit/20_failsafe_net_echo_brcm63xx new file mode 100644 index 000000000..f030cb283 --- /dev/null +++ b/target/linux/brcm63xx/base-files/lib/preinit/20_failsafe_net_echo_brcm63xx @@ -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/brcm63xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm63xx/base-files/lib/upgrade/platform.sh new file mode 100644 index 000000000..1a025f7d7 --- /dev/null +++ b/target/linux/brcm63xx/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 + 3600) + # 6348GW-11 boards use openwrt-96348GW-11-squashfs-cfe.bin files + return 0 + ;; + *) + echo "Invalid image type. Please use only .bin files" + return 1 + ;; + esac +} + +# use default for platform_do_upgrade() |