ar71xx: add support for MikroTik RB931-2nD
authorThibaut VARÈNE <hacks@slashdirt.org>
Thu, 12 Jul 2018 11:43:36 +0000 (13:43 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:32:20 +0000 (17:32 +0100)
This patch adds support for the MikroTik RB931-2nD (hAP mini):
https://mikrotik.com/product/RB931-2nD

Specifications:
  * SoC: Qualcomm QCA9533 (650MHz)
  * RAM: 32MiB
  * Storage: 16MiB SPI NOR flash
  * Ethernet: 3x100M
  * Wireless: QCA9533 built-in, dual-chain 802.11b/g/n

Installation:

1. Setup a DHCP/BOOTP Server with the following parameters:
   * DHCP-Option 66 (TFTP server name): pointing to a local TFTP
     server within the same subnet of the DHCP range
   * DHCP-Option 67 (Bootfile-Name): matching the initramfs filename
     of the to be booted image. The usable intramfs files are:
       - openwrt-ar71xx-mikrotik-vmlinux-initramfs.elf
       - openwrt-ar71xx-mikrotik-vmlinux-initramfs-lzma.elf
       - openwrt-ar71xx-mikrotik-rb-nor-flash-16M-initramfs-kernel.bin

2. Press the reset button on the board and keep that pressed.

3. Connect the board to your local network via its Internet port.

4. Release the button after the LEDs on the board are turned off.
   Now the board should load and start the initramfs image from
   the TFTP server.

5. Now connect the board via either of its LAN ports (2 or 3).

6. Upload the sysupgrade image to the board with scp:
     $ scp openwrt-ar71xx-mikrotik-rb-nor-flash-16M-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/fw.bin

7. Log in to the running system listening on 192.168.1.1 via ssh
   as root (without password):
     $ ssh root@192.168.1.1

8. Flash the uploaded firmware file from the ssh session via the
   sysupgrade command:
     root@OpenWrt:~# sysupgrade /tmp/fw.bin

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
(backported from c2d2647c099679d64c8d5ef5260ba0f9d4c8f2ba)

target/linux/ar71xx/base-files/etc/board.d/01_leds
target/linux/ar71xx/base-files/etc/board.d/02_network
target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
target/linux/ar71xx/image/mikrotik.mk

index 3162f00cba8f9662103c0935ce58a2e61972a77a..e1d7e27be36ec8f9fe716f0ac521397512bf7b05 100755 (executable)
@@ -643,6 +643,7 @@ rb-911-2hn|\
 rb-911-5hn)
        ucidef_set_led_netdev "eth" "ETH" "rb:green:eth" "eth0"
        ;;
+rb-931-2nd|\
 rb-941-2nd)
        ucidef_set_led_timer "user" "USR/ACT" "rb:green:user" "1000" "1000"
        ;;
index fb5fb1791792f75c8f93530a88459f4b0520dbed..a687878096833a5ba7f9599d41c48c2e5dcbb970 100755 (executable)
@@ -315,6 +315,10 @@ ar71xx_setup_interfaces()
        dap-2695-a1)
                ucidef_add_switch "switch0" "0@eth0" "2:lan" "3:wan" "6@eth1"
                ;;
+       rb-931-2nd)
+               ucidef_add_switch "switch0" \
+                       "0@eth0" "1:lan:3" "2:lan:2" "3:wan:1"
+       ;;
        rb-941-2nd)
                ucidef_add_switch "switch0" \
                        "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:wan:1"
index 4eb2abb26ca2676576babb14eb1baa38a2f0de2b..1458b87dac220418ed8e84371d18cdfdb1ef78b4 100644 (file)
@@ -371,6 +371,7 @@ get_status_led() {
        rb-911g-2hpnd|\
        rb-911g-5hpacd|\
        rb-911g-5hpnd|\
+       rb-931-2nd|\
        rb-941-2nd|\
        rb-951ui-2nd|\
        rb-952ui-5ac2nd|\
index d6efcc5a5f4dcdb6f12d96c91a94706276405c9f..e436fab2d9195d6fb6aa2b8801216cd78f61c65c 100755 (executable)
@@ -1076,6 +1076,9 @@ ar71xx_board_detect() {
        *"RouterBOARD 921GS-5HPacD r2")
                name="rb-921gs-5hpacd-r2"
                ;;
+       *"RouterBOARD 931-2nD")
+               name="rb-931-2nd"
+               ;;
        *"RouterBOARD 941-2nD")
                name="rb-941-2nd"
                ;;
index 2062610dc83a4950710d6d91ea360387931ec2ef..5a1f71b431fb7190f4140449bf44ad07dbd83cc1 100755 (executable)
@@ -707,6 +707,7 @@ platform_check_image() {
        rb-750up-r2|\
        rb-911-2hn|\
        rb-911-5hn|\
+       rb-931-2nd|\
        rb-941-2nd|\
        rb-951ui-2nd|\
        rb-952ui-5ac2nd|\
@@ -734,6 +735,7 @@ platform_pre_upgrade() {
        rb-750up-r2|\
        rb-911-2hn|\
        rb-911-5hn|\
+       rb-931-2nd|\
        rb-941-2nd|\
        rb-951ui-2nd|\
        rb-952ui-5ac2nd|\
index c79b7c821a57b36cdff6baae897813a8d1cadf84..f04a075e039d0063baddc27a31cae1d8bffcceb0 100644 (file)
@@ -1166,6 +1166,7 @@ config ATH79_MACH_RBSPI
          MikroTik ROuterBOARD 911-5Hn (911 Lite5)
          MikroTik RouterBOARD mAP
          MikroTik RouterBOARD mAP lite
+         MikroTik RouterBOARD hAP mini
          MikroTik RouterBOARD hAP lite
          MikroTik RouterBOARD hAP
          MikroTik RouterBOARD hAP ac
index d6f3696257d3db30e49ce6e38a7667c31b80c8f5..778772384102ef8adef50bcd5dbc3b31ac5c8dec 100644 (file)
@@ -5,6 +5,7 @@
  *  - MikroTik RouterBOARD mAP L-2nD
  *  - MikroTik RouterBOARD 911-2Hn (911 Lite2)
  *  - MikroTik RouterBOARD 911-5Hn (911 Lite5)
+ *  - MikroTik RouterBOARD 931-2nD (hAP mini)
  *  - MikroTik RouterBOARD 941L-2nD
  *  - MikroTik RouterBOARD 951Ui-2nD
  *  - MikroTik RouterBOARD 952Ui-5ac2nD
@@ -23,7 +24,7 @@
  *  hardware as the mAP L-2nD. It is unknown if they share the same board
  *  identifier.
  *
- *  Copyright (C) 2017 Thibaut VARENE <varenet@parisc-linux.org>
+ *  Copyright (C) 2017-2018 Thibaut VARENE <varenet@parisc-linux.org>
  *  Copyright (C) 2016 David Hutchison <dhutchison@bluemesh.net>
  *  Copyright (C) 2017 Ryan Mounce <ryan@mounce.com.au>
  *
@@ -559,6 +560,37 @@ static struct gpio_led rb911l_leds[] __initdata = {
        },
 };
 
+/* RB 931-2nD gpios */
+#define RB931_GPIO_BTN_RESET   0
+#define RB931_GPIO_BTN_MODE    9
+#define RB931_GPIO_LED_USER    1
+
+static struct gpio_keys_button rb931_gpio_keys[] __initdata = {
+       {
+               .desc = "Reset button",
+               .type = EV_KEY,
+               .code = KEY_RESTART,
+               .debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = RB931_GPIO_BTN_RESET,
+               .active_low = 1,
+       }, {
+               .desc = "Mode button",
+               .type = EV_KEY,
+               .code = BTN_0,
+               .debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL,
+               .gpio = RB931_GPIO_BTN_MODE,
+               .active_low = 1,
+       }
+};
+
+static struct gpio_led rb931_leds[] __initdata = {
+       {
+               .name = "rb:green:user",
+               .gpio = RB931_GPIO_LED_USER,
+               .active_low = 1,
+       },
+};
+
 static struct gen_74x164_chip_platform_data rbspi_ssr_data = {
        .base = RBSPI_SSR_GPIO_BASE,
        .num_registers = 1,
@@ -1109,6 +1141,33 @@ static void __init rb911l_setup(void)
        ath79_register_leds_gpio(-1, ARRAY_SIZE(rb911l_leds), rb911l_leds);
 }
 
+/*
+ * Init the hAP mini hardware (QCA953x).
+ * The 931-2nD (hAP mini) has 3 ethernet ports, with port 2-3
+ * being assigned to LAN on the casing, and port 1 being assigned
+ * to "internet" (WAN) on the casing. Port 1 is connected to PHY2.
+ * Since WAN is neither PHY0 nor PHY4, we cannot use GMAC0 with this device.
+ */
+static void __init rb931_setup(void)
+{
+       u32 flags = RBSPI_HAS_WLAN0;
+
+       if (!rbspi_platform_setup())
+               return;
+
+       rbspi_peripherals_setup(flags);
+
+       /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 3 */
+       rbspi_network_setup(flags, 0, 3, 0);
+
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(rb931_leds), rb931_leds);
+
+       /* hAP mini has two buttons */
+       ath79_register_gpio_keys_polled(-1, RBSPI_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(rb931_gpio_keys),
+                                       rb931_gpio_keys);
+}
+
 MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAPL, "map-hb", rbmapl_setup);
 MIPS_MACHINE_NONAME(ATH79_MACH_RB_941, "H951L", rbhapl_setup);
 MIPS_MACHINE_NONAME(ATH79_MACH_RB_911L, "911L", rb911l_setup);
@@ -1121,3 +1180,4 @@ MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAPR, "wap-lte", rbwap_setup);
 MIPS_MACHINE_NONAME(ATH79_MACH_RB_CAP, "cap-hb", rbcap_setup);
 MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAP, "map2-hb", rbmap_setup);
 MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAPAC, "wapg-sc", rbwapgsc_setup);
+MIPS_MACHINE_NONAME(ATH79_MACH_RB_931, "931", rb931_setup);
index ca44075e443b3e8181f6892360e6860b40b0f89e..e811dcb25520bf0ea0fdecbfa1e4e743a4aa6894 100644 (file)
@@ -214,6 +214,7 @@ enum ath79_mach_type {
        ATH79_MACH_RB_751G,                     /* Mikrotik RouterBOARD 751G */
        ATH79_MACH_RB_911L,                     /* Mikrotik RouterBOARD 911-2Hn/911-5Hn boards */
        ATH79_MACH_RB_922GS,                    /* Mikrotik RouterBOARD 911/922GS boards */
+       ATH79_MACH_RB_931,                      /* MikroTik RouterBOARD 931-2nD */
        ATH79_MACH_RB_941,                      /* MikroTik RouterBOARD 941-2nD */
        ATH79_MACH_RB_951G,                     /* Mikrotik RouterBOARD 951G */
        ATH79_MACH_RB_951U,                     /* Mikrotik RouterBOARD 951Ui-2HnD */
index 3238a885a829a3baa555b6e7e05bb5cde65f87a0..afef8f7618381b6994e834fffdae4b1d50ca09b1 100644 (file)
@@ -46,7 +46,7 @@ define Device/rb-nor-flash-16M
   DEVICE_PACKAGES := rbcfg rssileds -nand-utils kmod-ledtrig-gpio
   IMAGE_SIZE := 16000k
   KERNEL_INSTALL := 1
-  SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-750p-pbr2 rb-911-2hn rb-911-5hn rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-map-2nd rb-mapl-2nd rb-wap-2nd rb-wapr-2nd
+  SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-750p-pbr2 rb-911-2hn rb-911-5hn rb-931-2nd rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-map-2nd rb-mapl-2nd rb-wap-2nd rb-wapr-2nd
   IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \
        append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
 endef