[openwrt/openwrt] ramips: add support for Mikrotik LtAP-2HnD

LEDE Commits lede-commits at lists.infradead.org
Sat Nov 12 09:30:17 PST 2022


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/ffa4b5283b390099a207dcd22c6e9b0b528ac1e4

commit ffa4b5283b390099a207dcd22c6e9b0b528ac1e4
Author: Arne Zachlod <arne at nerdkeller.org>
AuthorDate: Sat Aug 6 15:35:15 2022 +0200

    ramips: add support for Mikrotik LtAP-2HnD
    
    Mikrotik LtAP-2HnD is a outdoor/automotive WLAN 4 router with integrated GPS
    receiver and two mPCIe slots.
    
    Specifications:
    * SoC: MT7621A
    * RAM: 128 MiB Nanya NT5CC64M16GP-DI
    * Flash: 16 MiB winbond W25Q128JV
    * WLAN:
      * Atheros AR9382 with power amplifier SKY 85330 (2x2 internal antennas,
        with RF switches for external connectors)
    * Ethernet: 1 Gbps, single port
    * USB Host: USB 2.0 Speeds
    * Serial: 115200 baud
    * LEDs: Power, System, GPS, 5* RSSI
    *  mPCIe:
       * miniPCIe slot 1: PCIe and USB 2.0 Host (via switch shared with USB Host)
       * miniPCIe slot 2: USB 2.0 and 3.0
    * SIM Cards:
      * Slot 1 Connected to mPCIe slot 1
      * Slot 2 and 3 connected to mPCIe slot 2 via switch
    * GPS: MTK 3333 on serial port 2 (/dev/ttyS1), 115200 baud and PPS on gpio 14
    
    gpios are exposed to /sys/class/gpio:
    
    * usb-select: swithes USB 2.0 interface between external port and internal
    mPCIe slot 1 default is the external USB interface
    * gps-reset: resets the GPS interface chip
    * sim-select: switches between sim slot 2 and 3 connected to mPCIe slot 2
    * gps-ant-select: switches GPS antenna between internal antenna and SMA
    connected antenna
    * lte-reset: resets mPCIe slot 2
    
    Flashing:
     TFTP boot initramfs image and then perform sysupgrade. Follow common
     MikroTik procedure as in https://openwrt.org/toh/mikrotik/common.
    
    Signed-off-by: Arne Zachlod <arne at nerdkeller.org>
---
 .../linux/ramips/dts/mt7621_mikrotik_ltap-2hnd.dts | 171 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |   7 +
 .../ramips/mt7621/base-files/etc/board.d/01_leds   |   1 +
 .../mt7621/base-files/etc/board.d/02_network       |   4 +
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         |  33 ++++
 .../mt7621/base-files/lib/upgrade/platform.sh      |   1 +
 6 files changed, 217 insertions(+)

diff --git a/target/linux/ramips/dts/mt7621_mikrotik_ltap-2hnd.dts b/target/linux/ramips/dts/mt7621_mikrotik_ltap-2hnd.dts
new file mode 100644
index 0000000000..feeda9685e
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_mikrotik_ltap-2hnd.dts
@@ -0,0 +1,171 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621_mikrotik.dtsi"
+
+/ {
+	compatible = "mikrotik,ltap-2hnd", "mediatek,mt7621-soc";
+	model = "MikroTik RouterBOARD LtAP-2HnD";
+
+	aliases {
+		led-boot = &led_usr;
+		led-failsafe = &led_usr;
+		led-running = &led_usr;
+		led-upgrade = &led_usr;
+	};
+
+	ath9k-leds {
+		compatible = "gpio-leds";
+
+		rssi0 {
+			label = "green:rssi0";
+			gpios = <&ath9k 0 GPIO_ACTIVE_LOW>;
+		};
+		rssi1 {
+			label = "green:rssi1";
+			gpios = <&ath9k 1 GPIO_ACTIVE_LOW>;
+		};
+		rssi2 {
+			label = "green:rssi2";
+			gpios = <&ath9k 2 GPIO_ACTIVE_LOW>;
+		};
+		rssi3 {
+			label = "green:rssi3";
+			gpios = <&ath9k 3 GPIO_ACTIVE_LOW>;
+		};
+		rssi4 {
+			label = "green:rssi4";
+			gpios = <&ath9k 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		pwr {
+			label = "blue:pwr";
+			gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+
+		led_usr: usr {
+			label = "green:usr";
+			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+		};
+
+		gps {
+			label = "green:gps";
+			gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	/* TODO: find GPIOs for the WLAN antenna switches */
+	gpio-export {
+		compatible = "gpio-export";
+
+		usb-select {
+			gpio-export,name = "usb-select";
+			gpio-export,output = <1>;
+			gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
+		};
+		gps-reset {
+			gpio-export,name = "gps-reset";
+			gpio-export,output = <1>;
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		};
+		sim-select {
+			gpio-export,name = "sim-select";
+			gpio-export,output = <1>;
+			gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+		};
+		gps-ant-select {
+			/* internal antenna = 0 */
+			gpio-export,name = "gps-ant-select";
+			gpio-export,output = <0>;
+			gpios = <&gpio 27 GPIO_ACTIVE_HIGH>;
+		};
+		lte-reset {
+			gpio-export,name = "lte-reset";
+			gpio-export,output = <1>;
+			gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	pps {
+		compatible = "pps-gpio";
+		gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+	};
+
+	pcie1_vcc_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "pcie1_vcc";
+
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio 10 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		regulator-boot-on;
+	};
+
+	pcie2_vcc_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "pcie2_vcc";
+
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio 11 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		regulator-boot-on;
+	};
+};
+
+&partitions {
+	partition at 40000 {
+		compatible = "mikrotik,minor";
+		label = "firmware";
+		reg = <0x040000 0xfc0000>;
+	};
+};
+
+&ethernet {
+	pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
+};
+
+&switch0 {
+	ports {
+		port at 0 {
+			status = "okay";
+			label = "lan";
+		};
+	};
+};
+
+&pcie0 {
+	status = "okay";
+
+	ath9k: wifi at 0,0 {
+		compatible = "pci168c,0030";
+		reg = <0x0000 0 0 0 0>;
+		qca,no-eeprom;
+		gpio-controller;
+		#gpio-cells = <2>;
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "uart2", "wdt", "rgmii2";
+		function = "gpio";
+	};
+};
+
+&i2c {
+	status = "okay";
+};
+
+&pcie {
+	status = "okay";
+};
+
+&uartlite3 {
+	status = "okay";
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 222809dbbe..cf1813f79c 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -1350,6 +1350,13 @@ define Device/MikroTik
 	append-metadata
 endef
 
+define Device/mikrotik_ltap-2hnd
+  $(Device/MikroTik)
+  DEVICE_MODEL := LtAP-2HnD
+  DEVICE_PACKAGES += kmod-ath9k kmod-pps-gpio rssileds
+endef
+TARGET_DEVICES += mikrotik_ltap-2hnd
+
 define Device/mikrotik_routerboard-750gr3
   $(Device/MikroTik)
   DEVICE_MODEL := RouterBOARD 750Gr3
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
index 9cf83c357c..a3c233a20f 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
@@ -95,6 +95,7 @@ linksys,ea8100-v2)
 mikrotik,routerboard-760igs)
 	ucidef_set_led_netdev "sfp" "SFP" "blue:sfp" "sfp"
 	;;
+mikrotik,ltap-2hnd|\
 mikrotik,routerboard-m11g)
 	ucidef_set_rssimon "wlan0" "200000" "1"
 	ucidef_set_led_rssi "rssilow" "RSSILOW" "green:rssi0" "wlan0" "1" "100"
diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
index bfc654a23a..cef5d55925 100644
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -12,6 +12,7 @@ ramips_setup_interfaces()
 	asus,rp-ac56|\
 	asus,rp-ac87|\
 	edimax,re23s|\
+	mikrotik,ltap-2hnd|\
 	mikrotik,routerboard-m11g|\
 	netgear,ex6150|\
 	sercomm,na502|\
@@ -218,6 +219,9 @@ ramips_setup_macs()
 		lan_mac=$(mtd_get_mac_ascii Config lan_hwaddr)
 		wan_mac=$(mtd_get_mac_ascii Config wan_hwaddr)
 		label_mac=$lan_mac
+	mikrotik,ltap-2hnd)
+		label_mac=$(cat "/sys/firmware/mikrotik/hard_config/mac_base")
+		lan_mac=$label_mac
 		;;
 	tplink,mr600-v2-eu)
 		label_mac=$(cat "/sys/class/net/eth0/address")
diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
new file mode 100644
index 0000000000..0bf5e85cd0
--- /dev/null
+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
+
+. /lib/functions/caldata.sh
+
+caldata_mikrotik_ath9k() {
+	local offset=$(($1))
+	local count=$(($2))
+	local macaddr=$3
+	local wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
+
+	caldata_from_file $wlan_data $offset $count /tmp/$FIRMWARE
+	ath9k_patch_mac "$macaddr" /tmp/$FIRMWARE
+	caldata_sysfsload_from_file /tmp/$FIRMWARE 0x0 $count
+	rm -f /tmp/$FIRMWARE
+}
+
+board=$(board_name)
+
+case "$FIRMWARE" in
+"ath9k-eeprom-pci-0000:01:00.0.bin")
+	case $board in
+	mikrotik,ltap-2hnd)
+		mac_base="$(cat /sys/firmware/mikrotik/hard_config/mac_base)"
+		caldata_mikrotik_ath9k 0x5000 0x440 $(macaddr_add "$mac_base" 1)
+		;;
+	*)
+		caldata_die "board $board is not supported yet"
+		;;
+	esac
+	;;
+esac
diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
index ebe4c638be..d380ea66f7 100755
--- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh
@@ -33,6 +33,7 @@ platform_do_upgrade() {
 			fw_setenv --lock / bootImage 0 || exit 1
 		fi
 		;;
+	mikrotik,ltap-2hnd|\
 	mikrotik,routerboard-750gr3|\
 	mikrotik,routerboard-760igs|\
 	mikrotik,routerboard-m11g|\




More information about the lede-commits mailing list