aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath79/mikrotik
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ath79/mikrotik')
-rw-r--r--target/linux/ath79/mikrotik/base-files/etc/board.d/02_network39
-rw-r--r--target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom22
-rw-r--r--target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/11-ath10k-caldata28
-rw-r--r--target/linux/ath79/mikrotik/base-files/etc/uci-defaults/04_led_migration17
-rw-r--r--target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh21
-rw-r--r--target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh35
-rw-r--r--target/linux/ath79/mikrotik/config-default33
-rw-r--r--target/linux/ath79/mikrotik/profiles/00-default.mk18
-rw-r--r--target/linux/ath79/mikrotik/target.mk9
9 files changed, 222 insertions, 0 deletions
diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
new file mode 100644
index 0000000000..ee795c7496
--- /dev/null
+++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+. /lib/functions/system.sh
+. /lib/functions/uci-defaults.sh
+
+ath79_setup_interfaces()
+{
+ local board="$1"
+
+ case "$board" in
+ mikrotik,routerboard-922uags-5hpacd|\
+ mikrotik,routerboard-wap-g-5hact2hnd)
+ ucidef_set_interface_lan "eth0"
+ ;;
+ *)
+ ucidef_set_interfaces_lan_wan "eth0" "eth1"
+ ;;
+ esac
+}
+
+ath79_setup_macs()
+{
+ local board="$1"
+
+ case "$board" in
+ esac
+
+ [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
+ [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
+ [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
+}
+
+board_config_update
+board=$(board_name)
+ath79_setup_interfaces $board
+ath79_setup_macs $board
+board_config_flush
+
+exit 0
diff --git a/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
new file mode 100644
index 0000000000..f5f88484b5
--- /dev/null
+++ b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
+
+. /lib/functions/caldata.sh
+. /lib/functions/mikrotik-caldata.sh
+
+board=$(board_name)
+
+case "$FIRMWARE" in
+"ath9k-eeprom-ahb-18100000.wmac.bin")
+ case $board in
+ mikrotik,routerboard-wap-g-5hact2hnd)
+ mikrotik_caldata_extract "art" 0x1000 0x440
+ ath9k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x10) +2)
+ ;;
+ *)
+ caldata_die "board $board is not supported yet"
+ ;;
+ esac
+ ;;
+esac
diff --git a/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
new file mode 100644
index 0000000000..6eb9a93b75
--- /dev/null
+++ b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
+
+. /lib/functions/caldata.sh
+. /lib/functions/mikrotik-caldata.sh
+
+board=$(board_name)
+
+case "$FIRMWARE" in
+"ath10k/cal-pci-0000:00:00.0.bin")
+ case $board in
+ mikrotik,routerboard-wap-g-5hact2hnd)
+ mikrotik_caldata_extract "art" 0x5000 0x844
+ ;;
+ esac
+ ;;
+"ath10k/cal-pci-0000:01:00.0.bin")
+ case $board in
+ mikrotik,routerboard-922uags-5hpacd)
+ mikrotik_caldata_extract "art" 0x5000 0x844
+ ;;
+ esac
+ ;;
+*)
+ exit 1
+ ;;
+esac
diff --git a/target/linux/ath79/mikrotik/base-files/etc/uci-defaults/04_led_migration b/target/linux/ath79/mikrotik/base-files/etc/uci-defaults/04_led_migration
new file mode 100644
index 0000000000..1a7b371a99
--- /dev/null
+++ b/target/linux/ath79/mikrotik/base-files/etc/uci-defaults/04_led_migration
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+. /lib/functions.sh
+. /lib/functions/migrations.sh
+
+board=$(board_name)
+boardonly="${board##*,}"
+
+case "$board" in
+mikrotik,*)
+ migrate_leds "^rb:=mikrotik:"
+ ;;
+esac
+
+migrations_apply system
+
+exit 0
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
+}
diff --git a/target/linux/ath79/mikrotik/config-default b/target/linux/ath79/mikrotik/config-default
new file mode 100644
index 0000000000..a95d13406a
--- /dev/null
+++ b/target/linux/ath79/mikrotik/config-default
@@ -0,0 +1,33 @@
+CONFIG_AT803X_PHY=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_GPIO_LATCH=y
+CONFIG_GPIO_WATCHDOG=y
+CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
+CONFIG_LEDS_RESET=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_AR934X=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_SPI_NAND=y
+CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
+CONFIG_MTD_SPLIT_MINOR_FW=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_NET_SWITCHDEV=y
+CONFIG_PHY_AR7100_USB=y
+CONFIG_PHY_AR7200_USB=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
diff --git a/target/linux/ath79/mikrotik/profiles/00-default.mk b/target/linux/ath79/mikrotik/profiles/00-default.mk
new file mode 100644
index 0000000000..14712da593
--- /dev/null
+++ b/target/linux/ath79/mikrotik/profiles/00-default.mk
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2020 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/Default
+ NAME:=Default Profile (all drivers)
+ PACKAGES:= \
+ kmod-usb-ohci kmod-usb2 nand-utils
+ PRIORITY := 1
+endef
+
+define Profile/Default/Description
+ Default package set compatible with most boards.
+endef
+$(eval $(call Profile,Default))
diff --git a/target/linux/ath79/mikrotik/target.mk b/target/linux/ath79/mikrotik/target.mk
new file mode 100644
index 0000000000..face016a51
--- /dev/null
+++ b/target/linux/ath79/mikrotik/target.mk
@@ -0,0 +1,9 @@
+BOARDNAME := MikroTik devices
+FEATURES += minor nand squashfs
+
+DEFAULT_PACKAGES += wpad-basic
+
+define Target/Description
+ Build firmware images for MikroTik devices based on Qualcomm Atheros
+ MIPS SoCs (AR71xx, AR72xx, AR91xx, AR93xx, QCA95xx).
+endef