From 540edf704501db3ec8dcb278a7f1df52de222ae0 Mon Sep 17 00:00:00 2001 From: Ryan Mounce Date: Wed, 8 Mar 2017 19:37:00 +1030 Subject: [PATCH] ar71xx: add support for MikroTik hAP ac lite This patch adds support for the MikroTik RouterBOARD hAP ac lite (RB952Ui-5ac2nD). The hAP ac lite is nearly identical to the hAP, with an added QCA9887 5GHz radio. The 2.4GHz radio ID is also changed in the hAP ac lite. Signed-off-by: Ryan Mounce --- .../ar71xx/base-files/etc/board.d/01_leds | 3 +- .../ar71xx/base-files/etc/board.d/02_network | 1 + .../base-files/etc/board.d/03_gpio_switches | 3 +- target/linux/ar71xx/base-files/etc/diag.sh | 1 + .../etc/hotplug.d/firmware/11-ath10k-caldata | 3 ++ target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 ++ .../ar71xx/base-files/lib/upgrade/platform.sh | 2 ++ .../files/arch/mips/ath79/Kconfig.openwrt | 1 + .../ar71xx/files/arch/mips/ath79/mach-rbspi.c | 28 +++++++++++++++---- .../ar71xx/files/arch/mips/ath79/machtypes.h | 2 +- target/linux/ar71xx/image/mikrotik.mk | 10 +++++-- 11 files changed, 47 insertions(+), 10 deletions(-) diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds index 686ae31b75..a5b2730603 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds @@ -239,7 +239,8 @@ rb-750up-r2) rb-941-2nd) ucidef_set_led_timer "user" "USR/ACT" "rb:green:user" "1000" "1000" ;; -rb-951ui-2nd) +rb-951ui-2nd|\ +rb-952ui-5ac2nd) ucidef_set_led_timer "user" "USER" "rb:green:user" "1000" "1000" ucidef_set_led_netdev "port1" "port1" "rb:green:port1" "eth0" ucidef_set_led_switch "port2" "port2" "rb:green:port2" "switch0" "0x10" diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network index 20b34e8965..3888cbe897 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/02_network +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network @@ -142,6 +142,7 @@ ar71xx_setup_interfaces() rb-750up-r2|\ rb-951ui-2hnd|\ rb-951ui-2nd|\ + rb-952ui-5ac2nd|\ routerstation|\ tl-wr710n|\ tl-wr720n-v3|\ diff --git a/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches b/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches index 4bb319c937..2b18741cd9 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches +++ b/target/linux/ar71xx/base-files/etc/board.d/03_gpio_switches @@ -28,7 +28,8 @@ rb-912uag-5hpnd) ucidef_add_gpio_switch "usb_power_switch" "USB Power Switch" "52" "1" ;; rb-750up-r2|\ -rb-951ui-2nd) +rb-951ui-2nd|\ +rb-952ui-5ac2nd) ucidef_add_gpio_switch "usb_power_switch" "USB Power Switch" "45" "1" ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "14" ;; diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 0c4349ff2b..8b2cc08269 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -306,6 +306,7 @@ get_status_led() { rb-912uag-5hpnd|\ rb-941-2nd|\ rb-951ui-2nd|\ + rb-952ui-5ac2nd|\ rb-lhg-5nd|\ rb-mapl-2nd) status_led="rb:green:user" diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 4938e2653a..323aa40518 100644 --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -106,6 +106,9 @@ case "$FIRMWARE" in unifiac-pro) ath10kcal_extract "EEPROM" 20480 2116 ;; + rb-952ui-5ac2nd) + ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116 + ;; esac ;; "ath10k/cal-pci-0000:01:00.0.bin") diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 4951e5b625..63c09871d4 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -905,6 +905,9 @@ ar71xx_board_detect() { *"RouterBOARD 951Ui-2nD") name="rb-951ui-2nd" ;; + *"RouterBOARD 952Ui-5ac2nD") + name="rb-952ui-5ac2nd" + ;; *"RouterBOARD LHG 5nD") name="rb-lhg-5nd" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 364a32f76c..f5f37f044d 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -638,6 +638,7 @@ platform_check_image() { rb-750up-r2|\ rb-941-2nd|\ rb-951ui-2nd|\ + rb-952ui-5ac2nd|\ rb-lhg-5nd|\ rb-mapl-2nd) return 0 @@ -690,6 +691,7 @@ platform_pre_upgrade() { rb-750up-r2|\ rb-941-2nd|\ rb-951ui-2nd|\ + rb-952ui-5ac2nd|\ rb-lhg-5nd|\ rb-mapl-2nd) # erase firmware if booted from initramfs diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt index 1bf00bd850..5ee033f57b 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt @@ -942,6 +942,7 @@ config ATH79_MACH_RBSPI MikroTik RouterBOARD mAP lite MikroTik RouterBOARD hAP lite MikroTik RouterBOARD hAP + MikroTik RouterBOARD hAP ac lite MikroTik RouterBOARD hEX PoE lite MikroTik RouterBOARD hEX lite MikroTik RouterBOARD LHG 5 diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c index 3f68b94bcd..d281bf1a6a 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c @@ -4,6 +4,7 @@ * - MikroTik RouterBOARD mAP L-2nD * - MikroTik RouterBOARD 941L-2nD * - MikroTik RouterBOARD 951Ui-2nD + * - MikroTik RouterBOARD 952Ui-5ac2nD * - MikroTik RouterBOARD 750UP r2 * - MikroTik RouterBOARD 750 r2 * - MikroTik RouterBOARD LHG 5nD @@ -23,6 +24,7 @@ * by the Free Software Foundation. */ +#include #include #include #include @@ -47,6 +49,7 @@ #include "dev-usb.h" #include "dev-wmac.h" #include "machtypes.h" +#include "pci.h" #include "routerboot.h" #define RBSPI_KEYS_POLL_INTERVAL 20 /* msecs */ @@ -59,6 +62,7 @@ #define RBSPI_HAS_SSR BIT(4) /* has an SSR on SPI bus 0 */ #define RBSPI_HAS_POE BIT(5) #define RBSPI_HAS_MDIO1 BIT(6) +#define RBSPI_HAS_PCI BIT(7) #define RB_ROUTERBOOT_OFFSET 0x0000 #define RB_BIOS_SIZE 0x1000 @@ -490,6 +494,9 @@ static void __init rbspi_peripherals_setup(u32 flags) if (flags & RBSPI_HAS_USB) ath79_register_usb(); + + if (flags & RBSPI_HAS_PCI) + ath79_register_pci(); } /* @@ -597,7 +604,7 @@ static void __init rbhapl_setup(void) } /* - * The hAP, hEX lite and hEX PoE lite share the same platform + * The hAP, hAP ac lite, hEX lite and hEX PoE lite share the same platform */ static void __init rbspi_952_750r2_setup(u32 flags) { @@ -606,8 +613,11 @@ static void __init rbspi_952_750r2_setup(u32 flags) rbspi_peripherals_setup(flags); - /* GMAC1 is HW MAC + 1, WLAN0 MAC IS HW MAC + 5 */ - rbspi_network_setup(flags, 1, 5, 0); + /* + * GMAC1 is HW MAC + 1, WLAN0 MAC IS HW MAC + 5 (hAP), + * WLAN1 MAC IS HW MAC + 6 (hAP ac lite) + */ + rbspi_network_setup(flags, 1, 5, 6); if (flags & RBSPI_HAS_USB) gpio_request_one(RB952_GPIO_USB_POWER, @@ -628,22 +638,30 @@ static void __init rbspi_952_750r2_setup(u32 flags) } /* - * Init the hAP hardware (QCA953x). + * Init the hAP (ac lite) hardware (QCA953x). * The 951Ui-2nD (hAP) has 5 ethernet ports, with ports 2-5 being assigned * to LAN on the casing, and port 1 being assigned to "internet" (WAN). * Port 1 is connected to PHY4 (the ports are labelled in reverse physical * number), so the SoC can be set to connect GMAC0 to PHY4 and GMAC1 to the * internal switch for the LAN ports. * The device also has USB, PoE output and an SSR used for LED multiplexing. + * The 952Ui-5ac2nD (hAP ac lite) is nearly identical to the hAP, it adds a + * QCA9887 5GHz radio via PCI and moves 2.4GHz from WLAN0 to WLAN1. */ static void __init rb952_setup(void) { - u32 flags = RBSPI_HAS_WLAN0 | RBSPI_HAS_WAN4 | RBSPI_HAS_USB | + u32 flags = RBSPI_HAS_WAN4 | RBSPI_HAS_USB | RBSPI_HAS_SSR | RBSPI_HAS_POE; if (rbspi_platform_setup()) return; + /* differentiate the hAP from the hAP ac lite */ + if (strstr(mips_get_machine_name(), "952Ui-5ac2nD")) + flags |= RBSPI_HAS_WLAN1 | RBSPI_HAS_PCI; + else + flags |= RBSPI_HAS_WLAN0; + rbspi_952_750r2_setup(flags); } diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h index 478a1a9c6f..184d3a71a7 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h @@ -176,7 +176,7 @@ enum ath79_mach_type { ATH79_MACH_RB_941, /* MikroTik RouterBOARD 941-2nD */ ATH79_MACH_RB_951G, /* Mikrotik RouterBOARD 951G */ ATH79_MACH_RB_951U, /* Mikrotik RouterBOARD 951Ui-2HnD */ - ATH79_MACH_RB_952, /* MikroTik RouterBOARD 951Ui-2nD */ + ATH79_MACH_RB_952, /* MikroTik RouterBOARD 951Ui-2nD / 952Ui-5ac2nD */ ATH79_MACH_RB_CAP, /* Mikrotik RouterBOARD cAP2nD */ ATH79_MACH_RB_LHG5, /* Mikrotik RouterBOARD LHG5 */ ATH79_MACH_RB_MAP, /* Mikrotik RouterBOARD mAP2nD */ diff --git a/target/linux/ar71xx/image/mikrotik.mk b/target/linux/ar71xx/image/mikrotik.mk index f41fd34c8c..9b33885e9c 100644 --- a/target/linux/ar71xx/image/mikrotik.mk +++ b/target/linux/ar71xx/image/mikrotik.mk @@ -31,9 +31,15 @@ define Device/rb-nor-flash-16M LOADER_TYPE := elf KERNEL_INSTALL := 1 KERNEL := kernel-bin | lzma | loader-kernel - SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-941-2nd rb-951ui-2nd rb-lhg-5nd rb-mapl-2nd + SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-lhg-5nd rb-mapl-2nd IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \ append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) endef -TARGET_DEVICES += rb-nor-flash-16M +define Device/rb-nor-flash-16M-ac + $(Device/rb-nor-flash-16M) + DEVICE_TITLE := MikroTik RouterBoard with 16 MB SPI NOR flash and ac + DEVICE_PACKAGES += kmod-ath10k ath10k-firmware-qca988x ath10k-firmware-qca9887 +endef + +TARGET_DEVICES += rb-nor-flash-16M rb-nor-flash-16M-ac -- 2.25.1