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@nerdkeller.org>
This commit is contained in:
Arne Zachlod 2022-08-06 15:35:15 +02:00 committed by Hauke Mehrtens
parent 5a1af6ed62
commit ffa4b5283b
6 changed files with 217 additions and 0 deletions

View File

@ -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@40000 {
compatible = "mikrotik,minor";
label = "firmware";
reg = <0x040000 0xfc0000>;
};
};
&ethernet {
pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
};
&switch0 {
ports {
port@0 {
status = "okay";
label = "lan";
};
};
};
&pcie0 {
status = "okay";
ath9k: wifi@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";
};

View File

@ -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

View File

@ -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"

View File

@ -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")

View File

@ -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

View File

@ -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|\