ar71xx: complete support for RB mAP 2nD
authorRobert Marko <robimarko@gmail.com>
Tue, 14 Nov 2017 11:15:03 +0000 (12:15 +0100)
committerPiotr Dymacz <pepe2k@gmail.com>
Tue, 14 Nov 2017 21:36:46 +0000 (22:36 +0100)
This patch adds support for the MikroTik RouterBOARD mAP 2nD
https://mikrotik.com/product/RBmAP2nD

Specifications:

- SoC: Qualcomm QCA9531 (650 MHz)
- RAM: 64 MB
- Storage: 16 MB NOR SPI flash
- Wireless: builtin QCA9531, 2x2:2
- Ethernet: 2x100M (802.3af/at POE in and passive POE out on ETH2)
- USB: microUSB type AB port

This patch adds missing code to fully support mAP. Machfile already
contained configuration for mAP 2nD, but device specific configuration
like LEDs etc., was missing.

Note: The POE LED works but doesn't turn on when POE passthrough is
enabled, despite being configured with GPIO trigger.

Installation

1. Login to the Mikrotik WebUI to backup your licence keys
2. Setup a DHCP/BOOTP server with:
   - 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
3. Connect the port labeled internet to your local network
4. Keep the reset button pushed down and power on the board

The board should load and start the initramfs image from the TFTP
server. Login as root/without password to the started LEDE via SSH
listing on IPv4 address 192.168.1.1. Use sysupgrade to install LEDE.

Revert to RouterOS

Use the "rbcfg" package on in LEDE:
- rbcfg set boot_protocol bootp
- rbcfg set boot_device ethnand
- rbcfg apply

Open Netinstall and reboot routerboard. Now Netinstall sees RouterBOARD
and you can install RouterOS. If NetInstall gets stuck on Sending offer
just wait for it to timeout and then close and open Netinstall again.

Click on install again.

In order for RouterOS to function properly, you need to restore license
for the device. You can do that by including license in NetInstall.

Signed-off-by: Robert Marko <robimarko@gmail.com>
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/image/mikrotik.mk
target/linux/ar71xx/patches-4.4/701-MIPS-ath79-add-routerboard-detection.patch
target/linux/ar71xx/patches-4.9/701-MIPS-ath79-add-routerboard-detection.patch

index 867fa9d38112c6476efbea9b66dd42b09d007e7b..97abd914230c5416ab847bad3fd2059d6b5f4292 100755 (executable)
@@ -320,6 +320,12 @@ rb-lhg-5nd)
        ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "rb:green:rssi3" "wlan0" "60" "100" "-59" "13"
        ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "rb:green:rssi4" "wlan0" "80" "100" "-79" "13"
        ;;
+rb-map-2nd)
+       ucidef_set_led_switch "eth1" "WAN" "rb:green:eth1" "switch0" "0x02"
+       ucidef_set_led_switch "eth2" "LAN" "rb:green:eth2" "switch0" "0x04"
+       ucidef_set_led_gpio "poe" "POE" "rb:red:poe_out" "14" "0"
+       ucidef_set_led_wlan "wlan" "WLAN" "rb:green:wlan" "phy0tpt"
+       ;;
 rb-mapl-2nd)
        ucidef_set_led_default "power" "POWER" "rb:green:power" "1"
        ucidef_set_led_netdev "lan" "LAN" "rb:green:eth" "eth0"
index a5b8a95cc825cd6d1568296a00fa70382c664147..614c82de05f2d3f7ed6d7b3db10b4a424ca1c349 100755 (executable)
@@ -419,6 +419,10 @@ ar71xx_setup_interfaces()
                ucidef_add_switch "switch1" \
                        "0@eth1" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan"
                ;;
+       rb-map-2nd)
+               ucidef_add_switch "switch0" \
+                       "0@eth0" "1:wan" "2:lan"
+               ;;
        tellstick-znet-lite)
                ucidef_set_interface_wan "eth0"
                ucidef_set_interface_raw "wlan" "wlan0" "dhcp"
index e767eec52054feb0615bd98a202b843b1cd10aa5..3fcbe306ad6dcca890b93fcb5fe6786907d67942 100644 (file)
@@ -320,6 +320,7 @@ get_status_led() {
        rb-952ui-5ac2nd|\
        rb-962uigs-5hact2hnt|\
        rb-lhg-5nd|\
+       rb-map-2nd|\
        rb-mapl-2nd)
                status_led="rb:green:user"
                ;;
index 702ed215ca9e3b87ccd45d262f2d90e0b566ed6e..306af08cc5029b05fedefb26e45e6c69513df5a2 100755 (executable)
@@ -965,6 +965,9 @@ ar71xx_board_detect() {
        *"RouterBOARD LHG 5nD")
                name="rb-lhg-5nd"
                ;;
+       *"RouterBOARD mAP 2nD")
+               name="rb-map-2nd"
+               ;;
        *"RouterBOARD mAP L-2nD")
                name="rb-mapl-2nd"
                ;;
index 4639ae32cf921d5f3dc5c2c9382a09ee8bd05a29..e7947a319f1b40e857aa8bc4c878d6fcc88c6814 100755 (executable)
@@ -666,6 +666,7 @@ platform_check_image() {
        rb-952ui-5ac2nd|\
        rb-962uigs-5hact2hnt|\
        rb-lhg-5nd|\
+       rb-map-2nd|\
        rb-mapl-2nd|\
        rb-wap-2nd)
                return 0
@@ -726,6 +727,7 @@ platform_pre_upgrade() {
        rb-952ui-5ac2nd|\
        rb-962uigs-5hact2hnt|\
        rb-lhg-5nd|\
+       rb-map-2nd|\
        rb-mapl-2nd|\
        rb-wap-2nd)
                # erase firmware if booted from initramfs
index 77e523bcc43a7a417d764c34e2b86ae52ea013cc..aa2905231691d6d81af52935c0fd2f73a2c9c06c 100644 (file)
@@ -1024,6 +1024,7 @@ config ATH79_MACH_RBSPI
        select ATH79_ROUTERBOOT
        help
          Say 'Y' here if you want your kernel to support the
+         MikroTik RouterBOARD mAP
          MikroTik RouterBOARD mAP lite
          MikroTik RouterBOARD hAP lite
          MikroTik RouterBOARD hAP
@@ -1034,7 +1035,6 @@ config ATH79_MACH_RBSPI
          MikroTik RouterBOARD Powerbox
          MikroTik RouterBOARD LHG 5
          MikroTik RouterBOARD cAP (EXPERIMENTAL)
-         MikroTik RouterBOARD mAP (EXPERIMENTAL)
          MikroTik RouterBOARD wAP
 
 config ATH79_MACH_RBSXTLITE
index 2e1ecd0f5296eaa561e460a65a17e55baf44ce32..cfd7373164eeea274462e7cee61bf8f33d4eb59a 100644 (file)
@@ -1,6 +1,7 @@
 /*
  *  MikroTik SPI-NOR RouterBOARDs support
  *
+ *  - MikroTik RouterBOARD mAP 2nD
  *  - MikroTik RouterBOARD mAP L-2nD
  *  - MikroTik RouterBOARD 941L-2nD
  *  - MikroTik RouterBOARD 951Ui-2nD
@@ -14,7 +15,6 @@
  *
  *  Preliminary support for the following hardware
  *  - MikroTik RouterBOARD cAP2nD
- *  - MikroTik RouterBOARD mAP2nD
  *  Furthermore, the cAP lite (cAPL2nD) appears to feature the exact same
  *  hardware as the mAP L-2nD. It is unknown if they share the same board
  *  identifier.
@@ -405,7 +405,7 @@ static struct gpio_led rbmap_leds[] __initdata = {
                .active_low = 1,
        }, {
                .name = "rb:green:eth2",
-               .gpio = RBMAP_GPIO_LED_WLAN,
+               .gpio = RBMAP_GPIO_LED_LAN2,
                .active_low = 1,
        }, {
                .name = "rb:red:poe_out",
@@ -920,13 +920,14 @@ static void __init rbcap_setup(void)
 }
 
 /*
- * Init the mAP hardware (EXPERIMENTAL).
- * The mAP 2nD has two ethernet ports, PoE output and an SSR for LED
- * multiplexing.
+ * Init the mAP hardware.
+ * The mAP 2nD has two ethernet ports, PoE output, SSR for LED
+ * multiplexing and USB port.
  */
 static void __init rbmap_setup(void)
 {
-       u32 flags = RBSPI_HAS_WLAN0 | RBSPI_HAS_SSR | RBSPI_HAS_POE;
+       u32 flags = RBSPI_HAS_USB | RBSPI_HAS_WLAN0 |
+                       RBSPI_HAS_SSR | RBSPI_HAS_POE;
 
        if (rbspi_platform_setup())
                return;
@@ -939,10 +940,22 @@ static void __init rbmap_setup(void)
 
        if (flags & RBSPI_HAS_POE)
                gpio_request_one(RBMAP_GPIO_POE_POWER,
-                               GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
+                               GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
                                "POE power");
 
+       /* USB power GPIO is inverted, set GPIOF_ACTIVE_LOW for consistency */
+       if (flags & RBSPI_HAS_USB)
+               gpio_request_one(RBMAP_GPIO_USB_POWER,
+                               GPIOF_OUT_INIT_HIGH | GPIOF_ACTIVE_LOW |
+                                       GPIOF_EXPORT_DIR_FIXED,
+                               "USB power");
+
        ath79_register_leds_gpio(-1, ARRAY_SIZE(rbmap_leds), rbmap_leds);
+
+       /* mAP 2nD has a single reset button as gpio 16 */
+       ath79_register_gpio_keys_polled(-1, RBSPI_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(rbspi_gpio_keys_reset16),
+                                       rbspi_gpio_keys_reset16);
 }
 
 
index 5ee3eee65ea9657d6556392bb44c9c5ec0c386a0..46d2a3e3a642dfa41228e9e23c97d5f7d88ff610 100644 (file)
@@ -25,12 +25,12 @@ TARGET_DEVICES += nand-64m nand-large
 
 define Device/rb-nor-flash-16M
   DEVICE_TITLE := MikroTik RouterBoard (16 MB SPI NOR)
-  DEVICE_PACKAGES := rbcfg rssileds -nand-utils
+  DEVICE_PACKAGES := rbcfg rssileds -nand-utils kmod-ledtrig-gpio
   IMAGE_SIZE := 16000k
   LOADER_TYPE := elf
   KERNEL_INSTALL := 1
   KERNEL := kernel-bin | lzma | loader-kernel
-  SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-750p-pbr2 rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-mapl-2nd rb-wap-2nd
+  SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-750p-pbr2 rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-map-2nd rb-mapl-2nd rb-wap-2nd
   IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \
        append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
 endef
index fc3091ec65e91d1d87e212fe885fa2f72ab39661..1ad5fa68a10185f63f9cfba232bfe4d4bee144cf 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/prom.c
 +++ b/arch/mips/ath79/prom.c
-@@ -136,6 +136,28 @@ void __init prom_init(void)
+@@ -136,6 +136,29 @@ void __init prom_init(void)
                initrd_end = initrd_start + fw_getenvl("initrd_size");
        }
  #endif
@@ -20,6 +20,7 @@
 +          strstr(arcs_cmdline, "board=962") ||
 +          strstr(arcs_cmdline, "board=lhg") ||
 +          strstr(arcs_cmdline, "board=map-hb") ||
++          strstr(arcs_cmdline, "board=map2-hb") ||
 +          strstr(arcs_cmdline, "board=wap-hb") ||
 +          strstr(arcs_cmdline, "board=2011L") ||
 +          strstr(arcs_cmdline, "board=2011r") ||
index fc3091ec65e91d1d87e212fe885fa2f72ab39661..1ad5fa68a10185f63f9cfba232bfe4d4bee144cf 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/prom.c
 +++ b/arch/mips/ath79/prom.c
-@@ -136,6 +136,28 @@ void __init prom_init(void)
+@@ -136,6 +136,29 @@ void __init prom_init(void)
                initrd_end = initrd_start + fw_getenvl("initrd_size");
        }
  #endif
@@ -20,6 +20,7 @@
 +          strstr(arcs_cmdline, "board=962") ||
 +          strstr(arcs_cmdline, "board=lhg") ||
 +          strstr(arcs_cmdline, "board=map-hb") ||
++          strstr(arcs_cmdline, "board=map2-hb") ||
 +          strstr(arcs_cmdline, "board=wap-hb") ||
 +          strstr(arcs_cmdline, "board=2011L") ||
 +          strstr(arcs_cmdline, "board=2011r") ||