From 081e944be6684bf5c4ee7c9fa2683d568d5be288 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Sun, 6 Sep 2020 13:57:27 +0200 Subject: 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 --- target/linux/ath25/base-files/etc/board.d/01_leds | 13 ++++ .../linux/ath25/base-files/etc/board.d/02_network | 28 ++++++++ .../lib/preinit/15_preinit_iface_atheros | 34 ++++++++++ .../linux/ath25/base-files/lib/upgrade/platform.sh | 76 ++++++++++++++++++++++ 4 files changed, 151 insertions(+) create mode 100755 target/linux/ath25/base-files/etc/board.d/01_leds create mode 100755 target/linux/ath25/base-files/etc/board.d/02_network create mode 100644 target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros create mode 100644 target/linux/ath25/base-files/lib/upgrade/platform.sh (limited to 'target/linux/ath25/base-files') 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 +} -- cgit v1.2.3