aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath79
diff options
context:
space:
mode:
authorRoger Pueyo Centelles <roger.pueyo@guifi.net>2020-01-26 17:56:05 +0100
committerKoen Vandeputte <koen.vandeputte@ncentric.com>2020-02-26 14:46:46 +0100
commit8f93c05a591bd68e4d8eaa0a8468ce2263762004 (patch)
treedffaf554ef38e457d0c893b6798639862a07de3d /target/linux/ath79
parentc81b2e94c7d89fbf9f03aa4680ebb3d26cede872 (diff)
downloadupstream-8f93c05a591bd68e4d8eaa0a8468ce2263762004.tar.gz
upstream-8f93c05a591bd68e4d8eaa0a8468ce2263762004.tar.bz2
upstream-8f93c05a591bd68e4d8eaa0a8468ce2263762004.zip
ath79: add support for MikroTik RouterBOARD 922UAGS-5HPacD
This patch ports support for the MikroTik RouterBOARD 922UAGS-5HPacD with a built-in 802.11ac High-Power radio (31dBm), which was already available in the ar71xx target. See https://mikrotik.com/product/RB922UAGS-5HPacD for more info. Specifications: - SoC: Qualcomm Atheros QCA9558 (720 MHz) - RAM: 128 MB - Storage: 128 MB NAND - Wireless: external QCA9882 802.11a/ac 2x2:2 - Ethernet: 1x 1000/100/10 Mbps, integrated, via AR8031 PHY, passive PoE-in 24V - SFP: 1x host - USB: 1x 2.0 type A - PCIe: 1x Mini slot (also contains USB 2.0 for 3G/LTE modems) - SIM slot: 1x mini-SIM Working: - Board/system detection - SPI and NAND storage - PCIe - USB type A host - Wireless - Ethernet - LEDs (user, phy0) - Reset button - Sysupgrade to/from ar71xx Not supported: - RSSI LEDs - SFP cage Installation methods: - Sysupgrade from ar71xx (it is advisable to use the -n option to wipe any previous settings), or - Boot the initramfs image via TFTP and then flash the sysupgrade image using "sysupgrade -n" Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
Diffstat (limited to 'target/linux/ath79')
-rw-r--r--target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts187
-rw-r--r--target/linux/ath79/image/nand.mk14
-rwxr-xr-xtarget/linux/ath79/nand/base-files/etc/board.d/02_network3
-rw-r--r--target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata8
-rw-r--r--target/linux/ath79/nand/base-files/etc/uci-defaults/04_led_migration17
-rw-r--r--target/linux/ath79/nand/base-files/lib/upgrade/platform.sh16
-rw-r--r--target/linux/ath79/nand/config-default1
-rw-r--r--target/linux/ath79/nand/target.mk2
8 files changed, 245 insertions, 3 deletions
diff --git a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts
new file mode 100644
index 0000000000..26a18ad6a7
--- /dev/null
+++ b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts
@@ -0,0 +1,187 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "qca9557.dtsi"
+
+/ {
+ compatible = "mikrotik,routerboard-922uags-5hpacd", "qca,qca9558";
+ model = "MikroTik RouterBOARD 922UAGS-5HPacD";
+
+ aliases {
+ label-mac-device = &eth0;
+ led-boot = &led_user;
+ led-failsafe = &led_user;
+ led-upgrade = &led_user;
+ serial0 = &uart;
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_user: user {
+ label = "mikrotik:green:user";
+ gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ ath10k-leds {
+ compatible = "gpio-leds";
+
+ wlan5g {
+ label = "mikrotik:green:wlan5g";
+ gpios = <&ath10k 0 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "phy0tpt";
+ };
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ reset {
+ label = "reset";
+ linux,code = <KEY_RESTART>;
+ gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
+ debounce-interval = <60>;
+ };
+ };
+
+ gpio-export {
+ compatible = "gpio-export";
+
+ gpio_usb_power {
+ gpio-export,name = "mikrotik:power:usb";
+ gpio-export,output = <0>;
+ gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
+ };
+
+ gpio_nand_power {
+ gpio-export,name = "mikrotik:power:nand";
+ gpio-export,output = <0>;
+ gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&mdio0 {
+ status = "okay";
+
+ phy4: ethernet-phy@4 {
+ reg = <4>;
+ };
+};
+
+&eth0 {
+ status = "okay";
+
+ mtd-mac-address = <&art 0x10>;
+ phy-handle = <&phy4>;
+ pll-data = <0x8f000000 0xa0000101 0xa0001313>;
+
+ gmac-config {
+ device = <&gmac>;
+ rgmii-enabled = <1>;
+ };
+};
+
+&spi {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <25000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "routerboot";
+ reg = <0x0000000 0x000c000>;
+ read-only;
+ };
+
+ art: partition@c000 {
+ label = "art";
+ reg = <0x000c000 0x0001000>;
+ read-only;
+ };
+
+ partition@d000 {
+ label = "bios";
+ reg = <0x000d000 0x0001000>;
+ read-only;
+ };
+
+ partition@e000 {
+ label = "soft_config";
+ reg = <0x000e000 0x0001000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&nand {
+ status = "okay";
+
+ nand-ecc-mode = "soft";
+ qca,nand-swap-dma;
+ qca,nand-scan-fixup;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "booter";
+ reg = <0x0000000 0x0040000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "kernel";
+ reg = <0x0040000 0x03c0000>;
+ };
+
+ partition@400000 {
+ label = "ubi";
+ reg = <0x0400000 0x7c00000>;
+ };
+ };
+};
+
+&uart {
+ status = "okay";
+};
+
+&pcie0 {
+ status = "okay";
+
+ ath10k: wifi@0,0 {
+ compatible = "qcom,ath10k";
+ reg = <0 0 0 0 0>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+};
+
+&pcie1 {
+ status = "okay";
+};
+
+&usb0 {
+ status = "okay";
+};
+
+&usb_phy0 {
+ status = "okay";
+};
diff --git a/target/linux/ath79/image/nand.mk b/target/linux/ath79/image/nand.mk
index 95ddca26b0..5a61be3545 100644
--- a/target/linux/ath79/image/nand.mk
+++ b/target/linux/ath79/image/nand.mk
@@ -1,3 +1,4 @@
+include ./common-mikrotik.mk
include ./common-netgear.mk # for netgear-uImage
# attention: only zlib compression is allowed for the boot fs
@@ -110,6 +111,19 @@ 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
diff --git a/target/linux/ath79/nand/base-files/etc/board.d/02_network b/target/linux/ath79/nand/base-files/etc/board.d/02_network
index bd02a4b383..f42b1ea9c2 100755
--- a/target/linux/ath79/nand/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/nand/base-files/etc/board.d/02_network
@@ -8,7 +8,8 @@ ath79_setup_interfaces()
local board="$1"
case "$board" in
- aerohive,hiveap-121)
+ aerohive,hiveap-121|\
+ mikrotik,routerboard-922uags-5hpacd)
ucidef_set_interface_lan "eth0"
;;
glinet,gl-ar750s-nor|\
diff --git a/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 9305f061fe..1989332f81 100644
--- a/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -3,6 +3,7 @@
[ -e /lib/firmware/$FIRMWARE ] && exit 0
. /lib/functions/caldata.sh
+. /lib/functions/mikrotik-caldata.sh
board=$(board_name)
@@ -20,6 +21,13 @@ 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
;;
diff --git a/target/linux/ath79/nand/base-files/etc/uci-defaults/04_led_migration b/target/linux/ath79/nand/base-files/etc/uci-defaults/04_led_migration
new file mode 100644
index 0000000000..1a7b371a99
--- /dev/null
+++ b/target/linux/ath79/nand/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/nand/base-files/lib/upgrade/platform.sh b/target/linux/ath79/nand/base-files/lib/upgrade/platform.sh
index 15d88a361e..8d6b639b40 100644
--- a/target/linux/ath79/nand/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ath79/nand/base-files/lib/upgrade/platform.sh
@@ -7,13 +7,27 @@ platform_check_image() {
return 0
}
-RAMFS_COPY_BIN='fw_printenv fw_setenv'
+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"
diff --git a/target/linux/ath79/nand/config-default b/target/linux/ath79/nand/config-default
index 4742ad52d0..b03f977a07 100644
--- a/target/linux/ath79/nand/config-default
+++ b/target/linux/ath79/nand/config-default
@@ -3,6 +3,7 @@ CONFIG_MTD_NAND_AR934X=y
CONFIG_MTD_NAND_CORE=y
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_SPI_NAND=y
+CONFIG_MTD_SPLIT_MINOR_FW=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
diff --git a/target/linux/ath79/nand/target.mk b/target/linux/ath79/nand/target.mk
index c565c9b2b8..fd5216b0eb 100644
--- a/target/linux/ath79/nand/target.mk
+++ b/target/linux/ath79/nand/target.mk
@@ -1,6 +1,6 @@
BOARDNAME := Generic devices with NAND flash
-FEATURES += squashfs nand
+FEATURES += squashfs nand minor
DEFAULT_PACKAGES += wpad-basic