mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
mpc85xx: add user-space support for the TL-WDR4900 v1
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 35733
This commit is contained in:
parent
bd2c77b264
commit
4da13625d5
5
target/linux/mpc85xx/base-files.mk
Normal file
5
target/linux/mpc85xx/base-files.mk
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
define Package/base-files/install-target
|
||||||
|
rm -f $(1)/etc/config/network
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
35
target/linux/mpc85xx/base-files/etc/diag.sh
Executable file
35
target/linux/mpc85xx/base-files/etc/diag.sh
Executable file
@ -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)
|
||||||
|
insmod leds-gpio
|
||||||
|
insmod ledtrig-default-on
|
||||||
|
insmod ledtrig-timer
|
||||||
|
|
||||||
|
status_led_blink_preinit
|
||||||
|
;;
|
||||||
|
|
||||||
|
failsafe)
|
||||||
|
status_led_blink_failsafe
|
||||||
|
;;
|
||||||
|
|
||||||
|
done)
|
||||||
|
status_led_on
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
2
target/linux/mpc85xx/base-files/etc/inittab
Normal file
2
target/linux/mpc85xx/base-files/etc/inittab
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
::sysinit:/etc/init.d/rcS S boot
|
||||||
|
::shutdown:/etc/init.d/rcS K shutdown
|
27
target/linux/mpc85xx/base-files/etc/uci-defaults/00_inittab-console-fixup
Executable file
27
target/linux/mpc85xx/base-files/etc/uci-defaults/00_inittab-console-fixup
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2011 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
enable_console_login() {
|
||||||
|
local cons=$1
|
||||||
|
local initline="$cons::askfirst:/bin/ash --login"
|
||||||
|
|
||||||
|
grep -qs "^$initline" /etc/inittab || {
|
||||||
|
echo "$initline" >> /etc/inittab
|
||||||
|
sync
|
||||||
|
kill -HUP 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inittab_console_fixup() {
|
||||||
|
for cons in ttyS0 ttyS1; do
|
||||||
|
grep -qs "console=$cons" /proc/cmdline && {
|
||||||
|
enable_console_login $cons
|
||||||
|
}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
inittab_console_fixup
|
||||||
|
|
||||||
|
exit 0
|
49
target/linux/mpc85xx/base-files/etc/uci-defaults/02_network
Executable file
49
target/linux/mpc85xx/base-files/etc/uci-defaults/02_network
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
tplink_set_mac()
|
||||||
|
{
|
||||||
|
local cfg=$1
|
||||||
|
local offset=$2
|
||||||
|
local mac
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
mac=$(mtd_get_mac_binary u-boot 326656)
|
||||||
|
mac=$(macaddr_add $mac $offset)
|
||||||
|
|
||||||
|
ucidef_set_interface_macaddr $cfg $mac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[ -e /etc/config/network ] && exit 0
|
||||||
|
|
||||||
|
touch /etc/config/network
|
||||||
|
|
||||||
|
. /lib/functions/uci-defaults.sh
|
||||||
|
. /lib/mpc85xx.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"
|
||||||
|
tplink_set_mac lan -2
|
||||||
|
tplink_set_mac wan 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
uci commit network
|
||||||
|
|
||||||
|
exit 0
|
39
target/linux/mpc85xx/base-files/lib/mpc85xx.sh
Executable file
39
target/linux/mpc85xx/base-files/lib/mpc85xx.sh
Executable file
@ -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"
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
do_mpc85xx() {
|
||||||
|
. /lib/mpc85xx.sh
|
||||||
|
|
||||||
|
mpc85xx_board_detect
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_hook_add preinit_main do_mpc85xx
|
85
target/linux/mpc85xx/base-files/lib/upgrade/platform.sh
Executable file
85
target/linux/mpc85xx/base-files/lib/upgrade/platform.sh
Executable file
@ -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")"
|
||||||
|
|
||||||
|
[ "$ARGC" -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
|
Loading…
Reference in New Issue
Block a user