Browse Source

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 <[email protected]>
Roger Pueyo Centelles 5 years ago
parent
commit
a66eee6336
24 changed files with 218 additions and 67 deletions
  1. 1 1
      target/linux/ath79/Makefile
  2. 0 1
      target/linux/ath79/generic/base-files/etc/board.d/02_network
  3. 0 5
      target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
  4. 0 4
      target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
  5. 0 1
      target/linux/ath79/generic/config-default
  6. 1 1
      target/linux/ath79/generic/target.mk
  7. 3 0
      target/linux/ath79/image/Makefile
  8. 0 14
      target/linux/ath79/image/generic.mk
  9. 27 0
      target/linux/ath79/image/mikrotik.mk
  10. 0 14
      target/linux/ath79/image/nand.mk
  11. 39 0
      target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
  12. 22 0
      target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
  13. 28 0
      target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
  14. 0 0
      target/linux/ath79/mikrotik/base-files/etc/uci-defaults/04_led_migration
  15. 0 0
      target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh
  16. 35 0
      target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
  17. 33 0
      target/linux/ath79/mikrotik/config-default
  18. 18 0
      target/linux/ath79/mikrotik/profiles/00-default.mk
  19. 9 0
      target/linux/ath79/mikrotik/target.mk
  20. 1 2
      target/linux/ath79/nand/base-files/etc/board.d/02_network
  21. 0 8
      target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
  22. 0 14
      target/linux/ath79/nand/base-files/lib/upgrade/platform.sh
  23. 0 1
      target/linux/ath79/nand/config-default
  24. 1 1
      target/linux/ath79/nand/target.mk

+ 1 - 1
target/linux/ath79/Makefile

@@ -4,7 +4,7 @@ ARCH:=mips
 BOARD:=ath79
 BOARDNAME:=Atheros ATH79 (DTS)
 CPU_TYPE:=24kc
-SUBTARGETS:=generic nand tiny
+SUBTARGETS:=generic mikrotik nand tiny
 
 FEATURES:=ramdisk
 

+ 0 - 1
target/linux/ath79/generic/base-files/etc/board.d/02_network

@@ -21,7 +21,6 @@ ath79_setup_interfaces()
 	dlink,dir-505|\
 	engenius,ecb1750|\
 	glinet,gl-ar300m-lite|\
-	mikrotik,routerboard-wap-g-5hact2hnd|\
 	netgear,ex6400|\
 	netgear,ex7300|\
 	ocedo,koala|\

+ 0 - 5
target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom

@@ -3,7 +3,6 @@
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
 . /lib/functions/caldata.sh
-. /lib/functions/mikrotik-caldata.sh
 
 board=$(board_name)
 
@@ -42,10 +41,6 @@ case "$FIRMWARE" in
 		caldata_extract "art" 0x1000 0x440
 		ath9k_patch_mac $(mtd_get_mac_ascii u-boot-env ethaddr)
 		;;
-	mikrotik,routerboard-wap-g-5hact2hnd)
-		mikrotik_caldata_extract "art" 0x1000 0x440
-		ath9k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x10) +2)
-		;;
 	nec,wg800hp)
 		caldata_extract "art" 0x1000 0x440
 		ath9k_patch_mac $(mtd_get_mac_text board_data 0x680)

+ 0 - 4
target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata

@@ -4,7 +4,6 @@
 
 . /lib/functions/caldata.sh
 . /lib/functions/k2t.sh
-. /lib/functions/mikrotik-caldata.sh
 
 board=$(board_name)
 
@@ -66,9 +65,6 @@ case "$FIRMWARE" in
 		caldata_extract "art" 0x5000 0x844
 		ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) +2)
 		;;
-	mikrotik,routerboard-wap-g-5hact2hnd)
-		mikrotik_caldata_extract "art" 0x5000 0x844
-		;;
 	nec,wg800hp)
 		caldata_extract "art" 0x5000 0x844
 		ath10k_patch_mac $(mtd_get_mac_text board_data 0x880)

+ 0 - 1
target/linux/ath79/generic/config-default

@@ -11,7 +11,6 @@ CONFIG_MICREL_PHY=y
 CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-3
 CONFIG_MTD_REDBOOT_PARTS=y
 CONFIG_MTD_SPLIT_EVA_FW=y
-CONFIG_MTD_SPLIT_MINOR_FW=y
 CONFIG_PHY_AR7100_USB=y
 CONFIG_PHY_AR7200_USB=y
 CONFIG_REGULATOR=y

+ 1 - 1
target/linux/ath79/generic/target.mk

@@ -1,5 +1,5 @@
 BOARDNAME:=Generic
-FEATURES += minor squashfs
+FEATURES += squashfs
 
 DEFAULT_PACKAGES += wpad-basic
 

+ 3 - 0
target/linux/ath79/image/Makefile

@@ -73,6 +73,9 @@ include ./generic.mk
 include ./generic-tp-link.mk
 include ./generic-ubnt.mk
 endif
+ifeq ($(SUBTARGET),mikrotik)
+include ./mikrotik.mk
+endif
 ifeq ($(SUBTARGET),nand)
 include ./nand.mk
 endif

+ 0 - 14
target/linux/ath79/image/generic.mk

@@ -1,5 +1,4 @@
 include ./common-buffalo.mk
-include ./common-mikrotik.mk
 include ./common-netgear.mk
 include ./common-tp-link.mk
 include ./common-yuncore.mk
@@ -765,19 +764,6 @@ define Device/librerouter_librerouter-v1
 endef
 TARGET_DEVICES += librerouter_librerouter-v1
 
-define Device/mikrotik_routerboard-wap-g-5hact2hnd
-  $(Device/mikrotik)
-  SOC := qca9556
-  DEVICE_MODEL := RouterBOARD wAP G-5HacT2HnD (wAP AC)
-  IMAGE_SIZE := 16256k
-  IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | \
-	pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \
-	append-metadata | check-size $$$$(IMAGE_SIZE)
-  DEVICE_PACKAGES += kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
-  SUPPORTED_DEVICES += rb-wapg-5hact2hnd
-endef
-TARGET_DEVICES += mikrotik_routerboard-wap-g-5hact2hnd
-
 define Device/nec_wg1200cr
   SOC := qca9563
   DEVICE_VENDOR := NEC

+ 27 - 0
target/linux/ath79/image/mikrotik.mk

@@ -0,0 +1,27 @@
+include ./common-mikrotik.mk
+
+define Device/mikrotik_routerboard-922uags-5hpacd
+  $(Device/mikrotik)
+  SOC := qca9558
+  DEVICE_MODEL := RouterBOARD 922UAGS-5HPacD
+  BOARD_NAME := routerboard
+  IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 2048 -e -c | \
+	sysupgrade-tar kernel=$$$$@ | append-metadata
+  DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct \
+	kmod-usb2 nand-utils
+  SUPPORTED_DEVICES += rb-922uags-5hpacd
+endef
+TARGET_DEVICES += mikrotik_routerboard-922uags-5hpacd
+
+define Device/mikrotik_routerboard-wap-g-5hact2hnd
+  $(Device/mikrotik)
+  SOC := qca9556
+  DEVICE_MODEL := RouterBOARD wAP G-5HacT2HnD (wAP AC)
+  IMAGE_SIZE := 16256k
+  IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | \
+	pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \
+	append-metadata | check-size $$$$(IMAGE_SIZE)
+  DEVICE_PACKAGES += kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
+  SUPPORTED_DEVICES += rb-wapg-5hact2hnd
+endef
+TARGET_DEVICES += mikrotik_routerboard-wap-g-5hact2hnd

+ 0 - 14
target/linux/ath79/image/nand.mk

@@ -1,4 +1,3 @@
-include ./common-mikrotik.mk
 include ./common-netgear.mk	# for netgear-uImage
 
 # attention: only zlib compression is allowed for the boot fs
@@ -129,19 +128,6 @@ define Device/glinet_gl-ar750s-nor
 endef
 TARGET_DEVICES += glinet_gl-ar750s-nor
 
-define Device/mikrotik_routerboard-922uags-5hpacd
-  $(Device/mikrotik)
-  SOC := qca9558
-  DEVICE_MODEL := RouterBOARD 922UAGS-5HPacD
-  BOARD_NAME := routerboard
-  IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 2048 -e -c | \
-	sysupgrade-tar kernel=$$$$@ | append-metadata
-  DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct \
-	kmod-usb2 nand-utils
-  SUPPORTED_DEVICES += rb-922uags-5hpacd
-endef
-TARGET_DEVICES += mikrotik_routerboard-922uags-5hpacd
-
 # fake rootfs is mandatory, pad-offset 129 equals (2 * uimage_header + 0xff)
 define Device/netgear_ath79_nand
   DEVICE_VENDOR := NETGEAR

+ 39 - 0
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

+ 22 - 0
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

+ 28 - 0
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

+ 0 - 0
target/linux/ath79/nand/base-files/etc/uci-defaults/04_led_migration → target/linux/ath79/mikrotik/base-files/etc/uci-defaults/04_led_migration


+ 0 - 0
target/linux/ath79/base-files/lib/functions/mikrotik-caldata.sh → target/linux/ath79/mikrotik/base-files/lib/functions/mikrotik-caldata.sh


+ 35 - 0
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
+}

+ 33 - 0
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

+ 18 - 0
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))

+ 9 - 0
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

+ 1 - 2
target/linux/ath79/nand/base-files/etc/board.d/02_network

@@ -8,8 +8,7 @@ ath79_setup_interfaces()
 	local board="$1"
 
 	case "$board" in
-	aerohive,hiveap-121|\
-	mikrotik,routerboard-922uags-5hpacd)
+	aerohive,hiveap-121)
 		ucidef_set_interface_lan "eth0"
 		;;
 	domywifi,dw33d)

+ 0 - 8
target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata

@@ -3,7 +3,6 @@
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
 . /lib/functions/caldata.sh
-. /lib/functions/mikrotik-caldata.sh
 
 board=$(board_name)
 
@@ -25,13 +24,6 @@ case "$FIRMWARE" in
 		;;
 	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
 	;;

+ 0 - 14
target/linux/ath79/nand/base-files/lib/upgrade/platform.sh

@@ -10,24 +10,10 @@ platform_check_image() {
 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"
-		;;
 	glinet,gl-ar300m-nand|\
 	glinet,gl-ar300m-nor)
 		glinet_nand_nor_do_upgrade "$1"

+ 0 - 1
target/linux/ath79/nand/config-default

@@ -10,7 +10,6 @@ CONFIG_MTD_NAND_AR934X=y
 CONFIG_MTD_NAND_CORE=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_MTD_SPI_NAND=y
-CONFIG_MTD_SPLIT_MINOR_FW=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_BEB_LIMIT=20
 CONFIG_MTD_UBI_BLOCK=y

+ 1 - 1
target/linux/ath79/nand/target.mk

@@ -1,6 +1,6 @@
 BOARDNAME := Generic devices with NAND flash
 
-FEATURES += squashfs nand minor
+FEATURES += squashfs nand
 
 DEFAULT_PACKAGES += wpad-basic