aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath25/base-files
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-09-06 13:57:27 +0200
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-09-06 19:49:05 +0200
commit081e944be6684bf5c4ee7c9fa2683d568d5be288 (patch)
tree9f1942be74e4faef66c1fd8dee9b15dcc2b33d87 /target/linux/ath25/base-files
parent8938711223842facfd9a2a36ca4c589665c2c0ca (diff)
downloadupstream-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')
-rwxr-xr-xtarget/linux/ath25/base-files/etc/board.d/01_leds13
-rwxr-xr-xtarget/linux/ath25/base-files/etc/board.d/02_network28
-rw-r--r--target/linux/ath25/base-files/lib/preinit/15_preinit_iface_atheros34
-rw-r--r--target/linux/ath25/base-files/lib/upgrade/platform.sh76
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
+}