diff options
author | James <> | 2015-11-04 11:49:21 +0000 |
---|---|---|
committer | James <> | 2015-11-04 11:49:21 +0000 |
commit | 716ca530e1c4515d8683c9d5be3d56b301758b66 (patch) | |
tree | 700eb5bcc1a462a5f21dcec15ce7c97ecfefa772 /target/linux/mpc85xx/base-files | |
download | trunk-47381-master.tar.gz trunk-47381-master.tar.bz2 trunk-47381-master.zip |
Diffstat (limited to 'target/linux/mpc85xx/base-files')
7 files changed, 282 insertions, 0 deletions
diff --git a/target/linux/mpc85xx/base-files/etc/diag.sh b/target/linux/mpc85xx/base-files/etc/diag.sh new file mode 100644 index 0000000..1107763 --- /dev/null +++ b/target/linux/mpc85xx/base-files/etc/diag.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# Copyright (C) 2013 OpenWrt.org + +. /lib/functions/leds.sh +. /lib/mpc85xx.sh + +get_status_led() { + case $(mpc85xx_board_name) in + tl-wdr4900-v1) + status_led="tp-link:blue:system" + ;; + esac +} + +set_state() { + get_status_led + + case "$1" in + preinit) + status_led_blink_preinit + ;; + + failsafe) + status_led_blink_failsafe + ;; + + preinit_regular) + status_led_blink_preinit_regular + ;; + + done) + status_led_on + ;; + esac +} diff --git a/target/linux/mpc85xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/mpc85xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom new file mode 100644 index 0000000..0baec28 --- /dev/null +++ b/target/linux/mpc85xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -0,0 +1,71 @@ +#!/bin/sh + +FW_FILE="/lib/firmware/$FIRMWARE" + +ath9k_eeprom_die() { + echo "ath9k eeprom: " "$*" >&2 + exit 1 +} + +ath9k_eeprom_extract() { + local part=$1 + local offset=$2 + local count=$3 + local mtd + + . /lib/functions.sh + . /lib/functions/system.sh + + mtd=$(find_mtd_chardev $part) + [ -n "$mtd" ] || \ + ath9k_eeprom_die "no mtd device found for partition $part" + + dd if=$mtd bs=$offset skip=1 count=1 2>/dev/null | dd of=$FW_FILE bs=$count count=1 2>/dev/null || \ + ath9k_eeprom_die "failed to extract from $mtd" +} + +tpl_set_wireless_mac() +{ + local offset=$1 + local mac + + . /lib/functions.sh + . /lib/functions/system.sh + + mac=$(mtd_get_mac_binary u-boot 326656) + mac=$(macaddr_add $mac $offset) + + macaddr_2bin $mac | dd bs=1 count=6 seek=2 conv=notrunc of=$FW_FILE 2>/dev/null +} + +[ -e $FW_FILE ] && exit 0 + +. /lib/mpc85xx.sh + +board=$(mpc85xx_board_name) + +case "$FIRMWARE" in +"pci_wmac0.eeprom") + case $board in + tl-wdr4900-v1) + ath9k_eeprom_extract "caldata" 4096 2048 + tpl_set_wireless_mac 0 + ;; + *) + ath9k_eeprom_die "board $board is not supported yet" + ;; + esac + ;; + +"pci_wmac1.eeprom") + case $board in + tl-wdr4900-v1) + ath9k_eeprom_extract "caldata" 20480 2048 + tpl_set_wireless_mac -1 + ;; + *) + ath9k_eeprom_die "board $board is not supported yet" + ;; + esac + ;; +esac diff --git a/target/linux/mpc85xx/base-files/etc/uci-defaults/02_network b/target/linux/mpc85xx/base-files/etc/uci-defaults/02_network new file mode 100644 index 0000000..525a552 --- /dev/null +++ b/target/linux/mpc85xx/base-files/etc/uci-defaults/02_network @@ -0,0 +1,31 @@ +#!/bin/sh +# Copyright (C) 2014 OpenWrt.org + +[ -e /etc/config/network ] && exit 0 + +touch /etc/config/network + +. /lib/functions/uci-defaults.sh +. /lib/mpc85xx.sh +. /lib/functions.sh +. /lib/functions/system.sh + +ucidef_set_interface_loopback + +board=$(mpc85xx_board_name) + +case "$board" in +tl-wdr4900-v1) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ;; +*) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ;; +esac + +uci commit network + +exit 0 diff --git a/target/linux/mpc85xx/base-files/lib/mpc85xx.sh b/target/linux/mpc85xx/base-files/lib/mpc85xx.sh new file mode 100755 index 0000000..5757563 --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/mpc85xx.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +MPC85XX_BOARD_NAME= +MPC85XX_MODEL= + +mpc85xx_board_detect() { + local model + local name + + model=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /model/ {print $2}' /proc/cpuinfo) + + case "$model" in + *"TL-WDR4900 v1") + name="tl-wdr4900-v1" + ;; + esac + + [ -z "$name" ] && name="unknown" + + [ -z "$MPC85XX_BOARD_NAME" ] && MPC85XX_BOARD_NAME="$name" + [ -z "$MPC85XX_MODEL" ] && MPC85XX_MODEL="$model" + + [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/" + + echo "$MPC85XX_BOARD_NAME" > /tmp/sysinfo/board_name + echo "$MPC85XX_MODEL" > /tmp/sysinfo/model +} + +mpc85xx_board_name() { + local name + + [ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name) + [ -z "$name" ] && name="unknown" + + echo "$name" +} diff --git a/target/linux/mpc85xx/base-files/lib/preinit/03_preinit_do_mpc85xx.sh b/target/linux/mpc85xx/base-files/lib/preinit/03_preinit_do_mpc85xx.sh new file mode 100644 index 0000000..88ba608 --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/preinit/03_preinit_do_mpc85xx.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +do_mpc85xx() { + . /lib/mpc85xx.sh + + mpc85xx_board_detect +} + +boot_hook_add preinit_main do_mpc85xx diff --git a/target/linux/mpc85xx/base-files/lib/preinit/05_set_preinit_iface_mpc85xx b/target/linux/mpc85xx/base-files/lib/preinit/05_set_preinit_iface_mpc85xx new file mode 100644 index 0000000..22d7471 --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/preinit/05_set_preinit_iface_mpc85xx @@ -0,0 +1,12 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +. /lib/mpc85xx.sh + +mpc85xx_set_preinit_iface() { + ifname=eth0 +} + +boot_hook_add preinit_main mpc85xx_set_preinit_iface diff --git a/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh b/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh new file mode 100755 index 0000000..d95ec30 --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh @@ -0,0 +1,85 @@ +# +# Copyright (C) 2011 OpenWrt.org +# + +. /lib/mpc85xx.sh + +PART_NAME=firmware +RAMFS_COPY_DATA=/lib/mpc85xx.sh + +tplink_get_hwid() { + local part + + part=$(find_mtd_part u-boot) + [ -z "$part" ] && return 1 + + dd if=$part bs=4 count=1 skip=81728 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_image_hwid() { + get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_image_boot_size() { + get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +platform_check_image() { + local board=$(mpc85xx_board_name) + local magic="$(get_magic_long "$1")" + + [ "$#" -gt 1 ] && return 1 + + case $board in + tl-wdr4900-v1) + [ "$magic" != "01000000" ] && { + echo "Invalid image type." + return 1 + } + + local hwid + local imageid + + hwid=$(tplink_get_hwid) + imageid=$(tplink_get_image_hwid "$1") + + [ "$hwid" != "$imageid" ] && { + echo "Invalid image, hardware ID mismatch, hw:$hwid image:$imageid." + return 1 + } + + local boot_size + + boot_size=$(tplink_get_image_boot_size "$1") + [ "$boot_size" != "00000000" ] && { + echo "Invalid image, it contains a bootloader." + return 1 + } + + return 0 + ;; + esac + + echo "Sysupgrade is not yet supported on $board." + return 1 +} + +platform_do_upgrade() { + local board=$(mpc85xx_board_name) + + case "$board" in + *) + default_do_upgrade "$ARGV" + ;; + esac +} + +disable_watchdog() { + killall watchdog + ( ps | grep -v 'grep' | grep '/dev/watchdog' ) && { + echo 'Could not disable watchdog' + return 1 + } +} + +append sysupgrade_pre_upgrade disable_watchdog |