diff options
author | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-09-06 13:57:27 +0200 |
---|---|---|
committer | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-09-06 19:49:05 +0200 |
commit | 081e944be6684bf5c4ee7c9fa2683d568d5be288 (patch) | |
tree | 9f1942be74e4faef66c1fd8dee9b15dcc2b33d87 /target/linux/ath25/base-files | |
parent | 8938711223842facfd9a2a36ca4c589665c2c0ca (diff) | |
download | upstream-081e944be6684bf5c4ee7c9fa2683d568d5be288.tar.gz upstream-081e944be6684bf5c4ee7c9fa2683d568d5be288.tar.bz2 upstream-081e944be6684bf5c4ee7c9fa2683d568d5be288.zip |
ath25: add back target support
Discussion on the mailing list reveals that this target has active
users. As we are finally able to upgrade this target to kernel 5.4,
add it back to master.
This reverts commit 7d29a5571403 ("ath25: drop target") and
immediately moves the relevant files to 5.4, without touching
the content.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'target/linux/ath25/base-files')
4 files changed, 151 insertions, 0 deletions
diff --git a/target/linux/ath25/base-files/etc/board.d/01_leds b/target/linux/ath25/base-files/etc/board.d/01_leds new file mode 100755 index 0000000000..e6ab4a76b1 --- /dev/null +++ b/target/linux/ath25/base-files/etc/board.d/01_leds @@ -0,0 +1,13 @@ +#!/bin/sh +# Copyright 2012-2015 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh + +board_config_update + +ucidef_set_led_netdev "wlan" "wlan" "wlan" "wlan0" + +board_config_flush + +exit 0 diff --git a/target/linux/ath25/base-files/etc/board.d/02_network b/target/linux/ath25/base-files/etc/board.d/02_network new file mode 100755 index 0000000000..b2977f7b94 --- /dev/null +++ b/target/linux/ath25/base-files/etc/board.d/02_network @@ -0,0 +1,28 @@ +#!/bin/sh + +. /lib/functions/uci-defaults.sh + +board_config_update + +if [ -e "/sys/bus/mdio_bus/drivers/IC+ IP175C/0:00" -o \ + -e "/sys/bus/mdio_bus/drivers/IC+ IP17xx/0:00" ] && \ + [ -x /sbin/swconfig ]; +then + ucidef_add_switch "eth0" \ + "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0" + +elif [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/0:00" -o \ + -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/0:10" ]; +then + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + +elif [ -d /sys/class/net/eth1 ]; then + ucidef_set_interfaces_lan_wan "eth0" "eth1" + +else + ucidef_set_interface_lan "eth0" +fi + +board_config_flush + +exit 0 diff --git a/target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros b/target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros new file mode 100644 index 0000000000..235ba4befc --- /dev/null +++ b/target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros @@ -0,0 +1,34 @@ +# reset button only supported on ar5315+ at the moment +preinit_ip() { + if [ -z "$pi_ifname" ]; then + grep -q 'Atheros AR231[567]' /proc/cpuinfo && { + if [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/0:00" -o \ + -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/0:10" ]; then + vconfig set_name_type DEV_PLUS_VID_NO_PAD + ip link set eth0 up + vconfig add eth0 1 + ifname=eth0.1 + else + ifname=eth0 + fi + pi_ifname=$ifname + } + fi + [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && { + ip addr add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $pi_ifname + ip link set $pi_ifname up + } +} + + +# reset button only supported on ar5315+ at the moment + +preinit_ip_deconfig() { + if [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/0:00" -o \ + -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/0:10" ]; then + vconfig rem eth0.1 2>/dev/null + ip link set $pi_ifname down + elif [ -n "$pi_ifname" ]; then + ip -4 addr flush dev $pi_ifname + fi +} diff --git a/target/linux/ath25/base-files/lib/upgrade/platform.sh b/target/linux/ath25/base-files/lib/upgrade/platform.sh new file mode 100644 index 0000000000..778bbf5a39 --- /dev/null +++ b/target/linux/ath25/base-files/lib/upgrade/platform.sh @@ -0,0 +1,76 @@ +CI_BLKSZ=65536 +CI_LDADR=0x80041000 + +platform_find_partitions() { + local first dev size erasesize name + while read dev size erasesize name; do + name=${name#'"'}; name=${name%'"'} + case "$name" in + vmlinux.bin.l7|kernel|linux|rootfs) + if [ -z "$first" ]; then + first="$name" + else + echo "$erasesize:$first:$name" + break + fi + ;; + esac + done < /proc/mtd +} + +platform_find_kernelpart() { + local part + for part in "${1%:*}" "${1#*:}"; do + case "$part" in + vmlinux.bin.l7|kernel|linux) + echo "$part" + break + ;; + esac + done +} + +platform_check_image() { + [ "$#" -gt 1 ] && return 1 + + case "$(get_magic_word "$1")" in + # Combined Image + 4349) + local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) + local md5_chk=$(dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" + + if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then + return 0 + else + echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)" + return 1 + fi + ;; + *) + echo "Invalid image. Use combined .img files on this platform" + return 1 + ;; + esac +} + +platform_do_upgrade() { + local partitions=$(platform_find_partitions) + local kernelpart=$(platform_find_kernelpart "${partitions#*:}") + local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}" + local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) + local kern_blocks=$(($kern_length / $CI_BLKSZ)) + local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ)) + + if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \ + [ ${kern_blocks:-0} -gt 0 ] && \ + [ ${root_blocks:-0} -gt ${kern_blocks:-0} ] && \ + [ ${erase_size:-0} -gt 0 ]; + then + local append="" + [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP" + + ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \ + dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \ + mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions + fi +} |