ath79: add support for RouterBOARD mAP
authorThibaut VARÈNE <hacks@slashdirt.org>
Sat, 23 Jul 2022 09:18:02 +0000 (11:18 +0200)
committerPetr Štetiar <ynezz@true.cz>
Sun, 28 Aug 2022 06:32:02 +0000 (08:32 +0200)
The MikroTik mAP-2nd (sold as mAP) is an indoor 2.4Ghz AP with
802.3af/at PoE input and passive PoE passthrough.

See https://mikrotik.com/product/RBmAP2nD for more details.

Specifications:
 - SoC: QCA9533
 - RAM: 64MB
 - Storage: 16MB NOR
 - Wireless: QCA9533 802.11b/g/n 2x2
 - Ethernet: 2x 10/100 ports,
    802.3af/at PoE in port 1, 500 mA passive PoE out on port 2
 - 7 user-controllable LEDs

Note: the device is a tiny AP and does not distinguish between both
ethernet ports roles, so they are both assigned to lan.
With the current setup, ETH1 is connected to eth1 and ETH2 is connected
to eth0 via the embedded switch port 2.

Flashing:
 TFTP boot initramfs image and then perform sysupgrade. The "ETH1" port
 must be used to upload the TFTP image. Follow common MikroTik procedure
 as in https://openwrt.org/toh/mikrotik/common.

Tested-By: Andrew Powers-Holmes <aholmes@omnom.net>
Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
(cherry picked from commit e1223dbee332b89caf71850eb909104529595c31)

target/linux/ath79/dts/qca9533_mikrotik_routerboard-map-2nd.dts [new file with mode: 0644]
target/linux/ath79/image/mikrotik.mk
target/linux/ath79/mikrotik/base-files/etc/board.d/01_leds
target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom

diff --git a/target/linux/ath79/dts/qca9533_mikrotik_routerboard-map-2nd.dts b/target/linux/ath79/dts/qca9533_mikrotik_routerboard-map-2nd.dts
new file mode 100644 (file)
index 0000000..25971e6
--- /dev/null
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca9533_mikrotik_routerboard-16m.dtsi"
+
+/ {
+       compatible = "mikrotik,routerboard-map-2nd", "qca,qca9533";
+       model = "MikroTik RouterBOARD mAP-2nD (mAP)";
+
+       aliases {
+               led-boot = &led_user;
+               led-failsafe = &led_user;
+               led-running = &led_user;
+               led-upgrade = &led_user;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               power {
+                       label = "green:power";
+                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+
+               eth_1 {
+                       label = "green:eth_1";
+                       gpios = <&gpio_ext 0 GPIO_ACTIVE_LOW>;
+               };
+
+               eth_2 {
+                       label = "green:eth_2";
+                       gpios = <&gpio_ext 1 GPIO_ACTIVE_LOW>;
+               };
+
+               poe_out {
+                       label = "red:poe_out";
+                       gpios = <&gpio_ext 2 GPIO_ACTIVE_LOW>;
+               };
+
+               led_user: user {
+                       label = "green:user";
+                       gpios = <&gpio_ext 3 GPIO_ACTIVE_LOW>;
+               };
+
+               wlan {
+                       label = "green:wlan";
+                       gpios = <&gpio_ext 4 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               ap_cap {
+                       label = "green:ap_cap";
+                       gpios = <&gpio_ext 6 GPIO_ACTIVE_LOW>;
+               };
+
+       };
+
+       gpio-export {
+               compatible = "gpio-export";
+
+               usb_power {
+                       gpio-export,name = "usb-power";
+                       gpio-export,output = <1>;
+                       gpios = <&gpio_ext 5 GPIO_ACTIVE_LOW>;
+               };
+
+               enable_poe_port5 {
+                       gpio-export,name = "enable-poe";
+                       gpio-export,output = <0>;
+                       gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&spi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pin_spi_cs1>;
+
+       gpio_ext: gpio_ext@1 {
+               compatible = "fairchild,74hc595";
+               reg = <1>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               registers-number = <1>;
+               spi-max-frequency = <25000000>;
+       };
+};
+
+
+&pinmux {
+       pin_spi_cs1: pinmux_spi_cs1 {
+               pinctrl-single,bits = <0x8 0x0a000000 0xff000000>;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       phy-handle = <&swphy0>;
+
+       gmac-config {
+               device = <&gmac>;
+               switch-phy-swap = <1>;
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb_phy {
+       status = "okay";
+};
index 30bfa0cd8e77d516eb895326bdbe6b5a29f927b0..08759f98ad6a78591198a926db9ec19efd7aab63 100644 (file)
@@ -55,6 +55,15 @@ define Device/mikrotik_routerboard-lhg-2nd
 endef
 TARGET_DEVICES += mikrotik_routerboard-lhg-2nd
 
+define Device/mikrotik_routerboard-map-2nd
+  $(Device/mikrotik_nor)
+  SOC := qca9533
+  DEVICE_MODEL := RouterBOARD mAP-2nD (mAP)
+  DEVICE_PACKAGES += kmod-usb2 kmod-ledtrig-gpio
+  IMAGE_SIZE := 16256k
+endef
+TARGET_DEVICES += mikrotik_routerboard-map-2nd
+
 define Device/mikrotik_routerboard-mapl-2nd
   $(Device/mikrotik_nor)
   SOC := qca9533
index f5df9ee1c39724727c1bd4673198f4185cd452a1..9f42a09a2ee55f8cfee80ba61ce96e06b2ce79b0 100755 (executable)
@@ -18,6 +18,11 @@ mikrotik,routerboard-lhg-2nd|\
 mikrotik,routerboard-mapl-2nd)
        ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0"
        ;;
+mikrotik,routerboard-map-2nd)
+       ucidef_set_led_netdev "eth_1" "eth_1" "green:eth_1" "eth1"
+       ucidef_set_led_switch "eth_2" "eth_2" "green:eth_2" "switch0" "0x4"
+       ucidef_set_led_gpio "poe" "poe" "red:poe_out" "14" "0"
+       ;;
 mikrotik,routerboard-wapr-2nd)
        ucidef_set_rssimon "wlan0" "200000" "1"
        ucidef_set_led_rssi "rssilow" "rssilow" "green:rssilow" "wlan0" "1" "100"
index 8b78dd7e634b58ba3d8c6e2f192c4d8a0f524c95..e14db83ed184ddc29574d2caf793ab43f3c2e1f5 100755 (executable)
@@ -29,6 +29,9 @@ ath79_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
                ;;
+       mikrotik,routerboard-map-2nd)
+               ucidef_set_interface_lan "eth0 eth1"
+               ;;
        *)
                ucidef_set_interfaces_lan_wan "eth0" "eth1"
                ;;
@@ -47,6 +50,7 @@ ath79_setup_macs()
        mikrotik,routerboard-912uag-2hpnd|\
        mikrotik,routerboard-921gs-5hpacd-15s|\
        mikrotik,routerboard-lhg-2nd|\
+       mikrotik,routerboard-map-2nd|\
        mikrotik,routerboard-mapl-2nd|\
        mikrotik,routerboard-sxt-5nd-r2|\
        mikrotik,routerboard-wap-g-5hact2hnd|\
index 58b5c2d3d9ee7f03edda7a33e098660315014246..9d921de8395536e7aa3e72de0414de87630b4aca 100644 (file)
@@ -29,6 +29,9 @@ case "$FIRMWARE" in
        mikrotik,routerboard-wapr-2nd)
                caldata_mikrotik_ath9k 0x1000 0x440 $(macaddr_add "$mac_base" +1)
                ;;
+       mikrotik,routerboard-map-2nd)
+               caldata_mikrotik_ath9k 0x1000 0x440 $(macaddr_add "$mac_base" 3)
+               ;;
        mikrotik,routerboard-mapl-2nd|\
        mikrotik,routerboard-wap-g-5hact2hnd)
                caldata_mikrotik_ath9k 0x1000 0x440 $(macaddr_add "$mac_base" +2)