diff options
Diffstat (limited to 'target/linux/brcm63xx/base-files')
12 files changed, 401 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh new file mode 100755 index 000000000..d492cd553 --- /dev/null +++ b/target/linux/brcm63xx/base-files/etc/diag.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# +# Copyright (C) 2007 OpenWrt.org +# +# + +. /lib/brcm63xx.sh + +led_set_attr() { + [ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2" +} + +status_led_set_timer() { + led_set_attr $status_led "trigger" "timer" + led_set_attr $status_led "delay_on" "$1" + led_set_attr $status_led "delay_off" "$2" + [ -n "$status_led2" ] && { + led_set_attr $status_led2 "trigger" "timer" + led_set_attr $status_led2 "delay_on" "$1" + led_set_attr $status_led2 "delay_off" "$2" + } +} + +status_led_set_morse() { + led_set_attr $status_led "trigger" "morse" + led_set_attr $status_led "delay" "$1" + led_set_attr $status_led "message" "$2" + [ -n "$status_led2" ] && { + led_set_attr $status_led2 "trigger" "morse" + led_set_attr $status_led2 "delay" "$1" + led_set_attr $status_led2 "message" "$2" + } +} + +status_led_on() { + led_set_attr $status_led "trigger" "none" + led_set_attr $status_led "brightness" 255 + [ -n "$status_led2" ] && { + led_set_attr $status_led2 "trigger" "none" + led_set_attr $status_led2 "brightness" 255 + } +} + +status_led_off() { + led_set_attr $status_led "trigger" "none" + led_set_attr $status_led "brightness" 0 + [ -n "$status_led2" ] && { + led_set_attr $status_led2 "trigger" "none" + led_set_attr $status_led2 "brightness" 0 + } +} + +set_state() { + case "$1" in + preinit) + insmod leds-gpio + status_led_on + status_led_set_timer 200 200 + ;; + failsafe) + status_led_set_timer 50 50 + ;; + done) + if [ "${status_led/power}" != "$status_led" ]; then + status_led_on + else + status_led_off + fi + ;; + esac +} diff --git a/target/linux/brcm63xx/base-files/etc/init.d/defconfig b/target/linux/brcm63xx/base-files/etc/init.d/defconfig new file mode 100755 index 000000000..a49c32785 --- /dev/null +++ b/target/linux/brcm63xx/base-files/etc/init.d/defconfig @@ -0,0 +1,18 @@ +#!/bin/sh /etc/rc.common +# +# Copyright (C) 2009 OpenWrt.org +# + +START=05 + +start() { + . /lib/brcm63xx.sh + + [ ! -d /etc/defconfig/$board_name ] && board_name="generic" + + for f in $( ls /etc/defconfig/$board_name ); do + if [ ! -e /etc/config/$f ]; then + cp /etc/defconfig/$board_name/$f /etc/config/ + fi + done +} diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/brcm63xx_fixcrc.sh b/target/linux/brcm63xx/base-files/etc/uci-defaults/brcm63xx_fixcrc.sh new file mode 100755 index 000000000..f5b6d440e --- /dev/null +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/brcm63xx_fixcrc.sh @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Copyright (C) 2007 OpenWrt.org +# +# + +. /lib/brcm63xx.sh + +do_fixcrc() { + mtd fixtrx linux +} + +brcm63xx_detect + +case "$board_name" in + 96328avng |\ + 963281TAN |\ + "CPVA502+" |\ + AW4339U |\ + CPVA642 |\ + CT6373-1 |\ + MAGIC |\ + V2110 |\ + V2500V_BB) + do_fixcrc + ;; +esac + diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/network b/target/linux/brcm63xx/base-files/etc/uci-defaults/network new file mode 100755 index 000000000..53c29ac5a --- /dev/null +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/network @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Copyright (C) 2012 OpenWrt.org +# + +[ -e /etc/config/network ] && exit 0 + +touch /etc/config/network + +. /lib/functions/uci-defaults.sh +. /lib/brcm63xx.sh + +ucidef_set_interface_loopback + +case "$board_name" in + +96328avng |\ +963281TAN |\ +96348A-122 |\ +96358-502V |\ +CT6373-1 |\ +AW4339U |\ +CPVA642 |\ +CT536_CT5621 |\ +D-4P-W |\ +NB6 |\ +SPW303V |\ +SPW500V |\ +V2110 |\ +96348W3) + ucidef_set_interface_lan "eth0" + ;; + +AW4139) + ucidef_set_interface_lan "eth0.1" + ucidef_add_switch "eth0" "1" "1" + ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 4 5t" + ;; + +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" + ;; + +*) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ;; + +esac + +uci commit network + +exit 0 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() |