From 6aaa5ce2c5138877e0f0504c3bd536b40e9af928 Mon Sep 17 00:00:00 2001 From: Roger Pueyo Centelles Date: Thu, 28 Nov 2019 12:53:01 +0100 Subject: ath79: add support for MikroTik RouterBOARD wAP G-5HacT2HnD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds support for the MikroTik RouterBOARD wAP G-5HacT2HnD (wAP AC), a small weatherproof dual band, dual-radio 802.11ac wireless AP with integrated omnidirectional anntennae and one 10/100/1000 Mbps Ethernet port. See https://mikrotik.com/product/RBwAPG-5HacT2HnD for more info. Specifications: - SoC: Qualcomm Atheros QCA9556 - RAM: 64 MB - Storage: 16 MB NOR - Wireless: · Atheros AR9550 (SoC) 802.11b/g/n 2x2:2, 2 dBi antennae · Qualcomm QCA9880 802.11a/n/ac 3x3:3, 2 dBi antennae - Ethernet: Atheros AG71xx (SoC, AR8033), 1x 1000/100/10 port, passive PoE in Working: - Board/system detection - Sysupgrade - Serial console - Ethernet - 2.4 GHz radio - 5 GHz radio and LED - Reset button Not working/Unsupported: - 2.4 GHz LED - AP/CAP LED - ZT2046Q SPI temperature and voltage sensor This adds the basic features for supporting MikroTik devices: - a common recipe for mikrotik images in common-mikrotik.mk - support for minor (MikroTik NOR) split firmware (only for generic subtarget so far) Acknowledgments: Robert Marko Andrew Cameron Koen Vandeputte Chuanhong Guo Signed-off-by: Roger Pueyo Centelles Co-developed-by: Adrian Schmutzler Signed-off-by: Adrian Schmutzler Tested-by: Koen Vandeputte --- .../ath79/generic/base-files/etc/board.d/02_network | 1 + .../etc/hotplug.d/firmware/10-ath9k-eeprom | 5 +++++ .../etc/hotplug.d/firmware/11-ath10k-caldata | 4 ++++ .../base-files/lib/functions/mikrotik-caldata.sh | 21 +++++++++++++++++++++ target/linux/ath79/generic/config-default | 1 + target/linux/ath79/generic/target.mk | 4 +--- 6 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 target/linux/ath79/generic/base-files/lib/functions/mikrotik-caldata.sh (limited to 'target/linux/ath79/generic') diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index 0bae9dc384..15f2e18e0c 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -21,6 +21,7 @@ ath79_setup_interfaces() dlink,dir-505|\ engenius,ecb1750|\ glinet,gl-ar300m-lite|\ + mikrotik,routerboard-wap-g-5hact2hnd|\ netgear,ex6400|\ netgear,ex7300|\ ocedo,koala|\ diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 4158116256..7a813b0db1 100644 --- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -3,6 +3,7 @@ [ -e /lib/firmware/$FIRMWARE ] && exit 0 . /lib/functions/caldata.sh +. /lib/functions/mikrotik-caldata.sh board=$(board_name) @@ -40,6 +41,10 @@ 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) diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index c24e062b5c..3be2d337b9 100644 --- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -4,6 +4,7 @@ . /lib/functions/caldata.sh . /lib/functions/k2t.sh +. /lib/functions/mikrotik-caldata.sh board=$(board_name) @@ -64,6 +65,9 @@ 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) diff --git a/target/linux/ath79/generic/base-files/lib/functions/mikrotik-caldata.sh b/target/linux/ath79/generic/base-files/lib/functions/mikrotik-caldata.sh new file mode 100644 index 0000000000..9c4016ee5d --- /dev/null +++ b/target/linux/ath79/generic/base-files/lib/functions/mikrotik-caldata.sh @@ -0,0 +1,21 @@ +# Copyright (C) 2019 Robert Marko +# Copyright (C) 2019 Roger Pueyo Centelles +# +# 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/generic/config-default b/target/linux/ath79/generic/config-default index 20da0b8ba1..2d8f7f20c2 100644 --- a/target/linux/ath79/generic/config-default +++ b/target/linux/ath79/generic/config-default @@ -9,6 +9,7 @@ CONFIG_MICREL_PHY=y CONFIG_MTD_REDBOOT_PARTS=y CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-3 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 diff --git a/target/linux/ath79/generic/target.mk b/target/linux/ath79/generic/target.mk index 0a26110d27..488aa6df16 100644 --- a/target/linux/ath79/generic/target.mk +++ b/target/linux/ath79/generic/target.mk @@ -1,10 +1,8 @@ BOARDNAME:=Generic -FEATURES += squashfs +FEATURES += minor squashfs DEFAULT_PACKAGES += wpad-basic define Target/Description Build firmware images for generic Atheros AR71xx/AR913x/AR934x based boards. endef - - -- cgit v1.2.3