mediatek: filogic: add support for Cudy AP3000 Outdoor
authorPawel Dembicki <paweldembicki@gmail.com>
Sun, 4 Aug 2024 20:47:47 +0000 (22:47 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 25 Aug 2024 13:35:53 +0000 (15:35 +0200)
Hardware highlights:
  - MediaTek MT7981 WiSoC
  - 256MB DDR3 RAM
  - 64MB SPI-NAND
  - MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)
  - 1x LED in two colors
  - 2x Button
  - 1x 1GbE
  - Two detachable antenas, two internal pcb antenas
  - PoE powered (standalone)

MAC:
LAN MAC: label mac
2.4G MAC: label mac -1
5G MAC: label mac

How to install:
1. Apply Cudy Intermediate OpenWrt image for AP3000 Outdoor V1
2. Install OpenWrt sysupgrade image

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16156
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/mediatek/base-files/lib/preinit/05_set_preinit_iface
target/linux/mediatek/dts/mt7981b-cudy-ap3000outdoor-v1.dts [new file with mode: 0644]
target/linux/mediatek/filogic/base-files/etc/board.d/02_network
target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
target/linux/mediatek/image/filogic.mk

index 6dfa52c291146183c67bc4b1813b48cd9bf0d7dc..8e74c577cd505bbf8b2109d8f34fe8013887dc1e 100644 (file)
@@ -6,6 +6,7 @@ set_preinit_iface() {
                ip link set eth1 up
                ifname=eth1
                ;;
+       cudy,ap3000outdoor-v1|\
        cudy,re3000-v1|\
        ubnt,unifi-6-lr|\
        zyxel,nwa50ax-pro)
diff --git a/target/linux/mediatek/dts/mt7981b-cudy-ap3000outdoor-v1.dts b/target/linux/mediatek/dts/mt7981b-cudy-ap3000outdoor-v1.dts
new file mode 100644 (file)
index 0000000..62e4063
--- /dev/null
@@ -0,0 +1,209 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+
+#include "mt7981.dtsi"
+
+/ {
+       model = "Cudy AP3000 Outdoor v1";
+       compatible = "cudy,ap3000outdoor-v1", "mediatek,mt7981-spim-snand-rfb";
+
+       aliases {
+               label-mac-device = &gmac1;
+               led-boot = &led_status_green;
+               led-failsafe = &led_status_red;
+               led-running = &led_status_green;
+               led-upgrade = &led_status_red;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+               };
+
+               wps {
+                       label = "wps";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_status_green: led@0 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&pio 10 GPIO_ACTIVE_HIGH>;
+               };
+
+               led_status_red: led_1 {
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_RED>;
+                       gpios = <&pio 11 GPIO_ACTIVE_HIGH>;
+               };
+       };
+       gpio_export {
+               compatible = "gpio-export";
+               #size-cells = <0>;
+
+               antctrl {
+                       /* Not sure if this pin does anything.
+                        * It was taken from GPL sources.
+                        * Intermediate image doesn't have it.
+                        */
+                       gpio-export,name = "antctrl";
+                       gpio-export,output = <1>;
+                       gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       watchdog-hw {
+               compatible = "linux,wdt-gpio";
+               gpios = <&pio 6 GPIO_ACTIVE_HIGH>;
+               hw_algo = "level";
+               hw_margin_ms = <10000>;
+               always-running;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&eth {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mdio_pins>;
+
+       status = "okay";
+
+       gmac1: mac@1 {
+               compatible = "mediatek,eth-mac";
+               reg = <1>;
+               phy-mode = "gmii";
+               phy-handle = <&int_gbe_phy>;
+               nvmem-cell-names = "mac-address";
+               nvmem-cells = <&macaddr_bdinfo_de00 1>;
+       };
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi0_flash_pins>;
+       status = "okay";
+
+       spi_nand: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+               reg = <0>;
+               spi-max-frequency = <52000000>;
+
+               spi-cal-enable;
+               spi-cal-mode = "read-data";
+               spi-cal-datalen = <7>;
+               spi-cal-data = /bits/ 8 <0x53 0x50 0x49 0x4E 0x41 0x4E 0x44>;
+               spi-cal-addrlen = <5>;
+               spi-cal-addr = /bits/ 32 <0x0 0x0 0x0 0x0 0x0>;
+
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+               mediatek,nmbm;
+               mediatek,bmt-max-ratio = <1>;
+               mediatek,bmt-max-reserved-blocks = <64>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "BL2";
+                               reg = <0x00000 0x0100000>;
+                               read-only;
+                       };
+
+                       partition@100000 {
+                               label = "u-boot-env";
+                               reg = <0x0100000 0x0080000>;
+                               read-only;
+                       };
+
+                       factory: partition@180000 {
+                               label = "Factory";
+                               reg = <0x180000 0x0200000>;
+                               read-only;
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       eeprom_factory_0: eeprom@0 {
+                                               reg = <0x0 0x1000>;
+                                       };
+                               };
+                       };
+
+                       partition@380000 {
+                               label = "bdinfo";
+                               reg = <0x380000 0x0040000>;
+                               read-only;
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       macaddr_bdinfo_de00: macaddr@de00 {
+                                               compatible = "mac-base";
+                                               reg = <0xde00 0x6>;
+                                               #nvmem-cell-cells = <1>;
+                                       };
+                               };
+
+                       };
+
+                       partition@3C0000 {
+                               label = "FIP";
+                               reg = <0x3C0000 0x0200000>;
+                               read-only;
+                       };
+
+                       partition@580000 {
+                               label = "ubi";
+                               reg = <0x5C0000 0x4000000>;
+                               compatible = "linux,ubi";
+                       };
+               };
+       };
+};
+
+
+&pio {
+       spi0_flash_pins: spi0-pins {
+               mux {
+                       function = "spi";
+                       groups = "spi0", "spi0_wp_hold";
+               };
+       };
+};
+
+&wifi {
+       status = "okay";
+       nvmem-cells = <&eeprom_factory_0>;
+       nvmem-cell-names = "eeprom";
+};
index cf48926ad1ecf2d3d63133a8ccddd7be390f7010..abe7682dfb861c2efe9a9045d367d2b984d03f31 100644 (file)
@@ -87,6 +87,7 @@ mediatek_setup_interfaces()
        mercusys,mr90x-v1)
                ucidef_set_interfaces_lan_wan "lan0 lan1 lan2" eth1
                ;;
+       cudy,ap3000outdoor-v1|\
        cudy,re3000-v1|\
        netgear,wax220|\
        ubnt,unifi-6-plus|\
index 1605c0086d2c7a97702f04253e4d47013045d530..ff9e9f881c5edfb839d30b9b66839da59bf1a432 100644 (file)
@@ -75,6 +75,7 @@ case "$board" in
                [ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
                [ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 1) > /sys${DEVPATH}/macaddress
                ;;
+       cudy,ap3000outdoor-v1|\
        cudy,m3000-v1|\
        cudy,wr3000-v1)
                addr=$(mtd_get_mac_binary bdinfo 0xde00)
index 40e58f9754d3c489df6d4c1af2e6c98baae46c6a..e21794600dada9561158678c5338b6a1244e428e 100644 (file)
@@ -507,6 +507,23 @@ define Device/confiabits_mt7981
 endef
 TARGET_DEVICES += confiabits_mt7981
 
+define Device/cudy_ap3000outdoor-v1
+  DEVICE_VENDOR := Cudy
+  DEVICE_MODEL := AP3000 Outdoor
+  DEVICE_VARIANT := v1
+  DEVICE_DTS := mt7981b-cudy-ap3000outdoor-v1
+  DEVICE_DTS_DIR := ../dts
+  SUPPORTED_DEVICES += R51
+  UBINIZE_OPTS := -E 5
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  IMAGE_SIZE := 65536k
+  KERNEL_IN_UBI := 1
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  DEVICE_PACKAGES := kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware
+endef
+TARGET_DEVICES += cudy_ap3000outdoor-v1
+
 define Device/cudy_m3000-v1
   DEVICE_VENDOR := Cudy
   DEVICE_MODEL := M3000