diff options
author | Roger Pueyo Centelles <roger.pueyo@guifi.net> | 2020-02-28 16:01:02 +0100 |
---|---|---|
committer | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-03-17 11:50:47 +0100 |
commit | a66eee63368eb5625b359244bfffc9b9eb921875 (patch) | |
tree | 6a76e6a9d54527f8a41b41fa80fbc40d30a240ee /target/linux/ath79/mikrotik/base-files/lib | |
parent | b78f61c336542a3658c3b1c595b3bb2810f93500 (diff) | |
download | upstream-a66eee63368eb5625b359244bfffc9b9eb921875.tar.gz upstream-a66eee63368eb5625b359244bfffc9b9eb921875.tar.bz2 upstream-a66eee63368eb5625b359244bfffc9b9eb921875.zip |
ath79: add mikrotik subtarget
This commit creates the ath79/mikrotik subtarget in order to support
MikroTik devices based on Qualcomm Atheros MIPS SoCs.
MikroTik devices need a couple of specific features: the split MiNOR
firmware MTD format, which is not used by other devices, and the 4k
sector erase size on SPI NOR storage, which can not be added to the
ath79/generic and ath79/nand subtargets now.
Additionally, the commit moves the two MikroTik devices already in
the generic and nand subtargets to this new one.
Tested on the RB922 board and the wAP AC router.
Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
Diffstat (limited to 'target/linux/ath79/mikrotik/base-files/lib')
-rw-r--r-- | target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh | 21 | ||||
-rw-r--r-- | target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh | 35 |
2 files changed, 56 insertions, 0 deletions
diff --git a/target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh b/target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh new file mode 100644 index 0000000000..9c4016ee5d --- /dev/null +++ b/target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh @@ -0,0 +1,21 @@ +# Copyright (C) 2019 Robert Marko <robimarko@gmail.com> +# Copyright (C) 2019 Roger Pueyo Centelles <roger.pueyo@guifi.net> +# +# Helper function to extract MAC addresses and calibration data for MikroTik +# + +mikrotik_caldata_extract() { + local part=$1 + local offset=$(($2)) + local count=$(($3)) + local mtd + local erdfile="/lib/firmware/erd.bin" + + mtd=$(find_mtd_chardev $part) + [ -n "$mtd" ] || caldata_die "no mtd device found for partition $part" + + rbextract -e $mtd $erdfile + + dd if=$erdfile of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \ + caldata_die "failed to extract calibration data from $mtd" +} diff --git a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh new file mode 100644 index 0000000000..a568689536 --- /dev/null +++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh @@ -0,0 +1,35 @@ +# Copyright (C) 2011 OpenWrt.org + +PART_NAME=firmware + +REQUIRE_IMAGE_METADATA=1 +platform_check_image() { + return 0 +} + +RAMFS_COPY_BIN='fw_printenv fw_setenv nandwrite' +RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock' + +platform_do_upgrade_mikrotik_nand() { + CI_KERNPART=none + local fw_mtd=$(find_mtd_part kernel) + fw_mtd="${fw_mtd/block/}" + [ -n "$fw_mtd" ] || return + mtd erase kernel + tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" - + + nand_do_upgrade "$1" +} + +platform_do_upgrade() { + local board=$(board_name) + + case "$board" in + mikrotik,routerboard-922uags-5hpacd) + platform_do_upgrade_mikrotik_nand "$1" + ;; + *) + default_do_upgrade "$1" + ;; + esac +} |