ramips: Add support for ComFast CF-E390AX
authorUsama Nassir <usama.nassir@gmail.com>
Fri, 19 May 2023 00:35:51 +0000 (03:35 +0300)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 1 Jul 2023 14:18:55 +0000 (16:18 +0200)
Add support for ComFast CF-E390AX. It is a 802.11 wifi6 cieling AP, based on MediaTek MT7261AT.

Specifications:
SoC: MediaTek MT7621AT
RAM: 128 MiB
Flash: 16 MiB NOR (Macronix mx25l12805d)

Wireless: MT7915E (2.4G) 802.11ax/b/g/n MT7915E (5G) 802.11ac/ax/n
Ethernet: 2 x 1Gbs
Button: 1 x "Reset" button
LED: 1x Blue LED + 1x Red LED + 1x green LED
Power: PoE

Manufacturer Page:
http://en.comfast.com.cn/index.php?m=content&c=index&a=show&catid=84&id=75

Flash Layout:
0x000000000000-0x000000030000 : "bootloader"
0x000000030000-0x000000040000 : "config"
0x000000050000-0x000000060000 : "factory"
0x000000090000-0x000001000000 : "firmware"

First install:
1. Set device into http firmware fail safe upload mode by pressing the reset button for 10 seconds while powering
   it on. Once the LED stops flashing, safe mode will be running.
2. Set PC IP address to 192.168.1.2
3. Browse to 192.168.1.1 and upload the factory image using the web interface.

Signed-off-by: Usama Nassir <usama.nassir@gmail.com>
target/linux/ramips/dts/mt7621_comfast_cf-e390ax.dts [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk
target/linux/ramips/mt7621/base-files/etc/board.d/02_network
target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac

diff --git a/target/linux/ramips/dts/mt7621_comfast_cf-e390ax.dts b/target/linux/ramips/dts/mt7621_comfast_cf-e390ax.dts
new file mode 100644 (file)
index 0000000..8060047
--- /dev/null
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       compatible = "comfast,cf-e390ax", "mediatek,mt7621-soc";
+       model = "COMFAST CF-E390AX";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_status_green: status_green {
+                       label = "green:status";
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+               };
+
+               led_status_blue: status_blue {
+                       label = "blue:status";
+                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+               };
+
+               led_status_red: status_red {
+                       label = "red:status";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       aliases {
+               led-boot = &led_status_green;
+               led-failsafe = &led_status_red;
+               led-running = &led_status_blue;
+               led-upgrade = &led_status_red;
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie1 {
+       wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x0>;
+       };
+};
+
+&spi0 {
+       status = "okay";
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <14000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bootloader";
+                               reg = <0x0 0x30000>;
+                               read-only;
+                       };
+
+                       partition@30000 {
+                               label = "config";
+                               reg = <0x30000 0x10000>;
+                               read-only;
+                       };
+
+                       factory: partition@50000 {
+                               label = "factory";
+                               reg = <0x50000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@90000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x90000 0xf70000>;
+                       };
+               };
+       };
+};
+
+&factory {
+       compatible = "nvmem-cells";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       macaddr_factory_e000: macaddr@e000 {
+               reg = <0xe000 0x6>;
+       };
+};
+
+&gmac0 {
+       nvmem-cells = <&macaddr_factory_e000>;
+       nvmem-cell-names = "mac-address";
+};
+
+&switch0 {
+       ports {
+               port@0 {
+                       status = "okay";
+                       label = "wan";
+                       nvmem-cells = <&macaddr_factory_e000>;
+                       nvmem-cell-names = "mac-address";
+                       mac-address-increment = <1>;
+               };
+
+               port@4 {
+                       status = "okay";
+                       label = "lan";
+               };
+       };
+};
+
index 4dc7607126a224913164f934da25c5fb14466680..92053e087c424bbdc9b5eae3aa6fc704b590c581 100644 (file)
@@ -501,6 +501,20 @@ define Device/bolt_arion
 endef
 TARGET_DEVICES += bolt_arion
 
+define Device/comfast_cf-e390ax
+  $(Device/dsa-migration)
+  $(Device/uimage-lzma-loader)
+  IMAGE_SIZE := 15808k
+  DEVICE_VENDOR := ComFast
+  DEVICE_MODEL := CF-E390AX
+  DEVICE_PACKAGES := kmod-mt7915-firmware -uboot-envtools
+  IMAGES += factory.bin
+  IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
+       check-size | append-metadata
+  IMAGE/factory.bin := append-kernel | append-rootfs | pad-rootfs | check-size
+endef
+TARGET_DEVICES += comfast_cf-e390ax
+
 define Device/cudy_m1800
   $(Device/dsa-migration)
   DEVICE_VENDOR := Cudy
index 180713d96471393a8c785a3fbf86fce3014eb905..a5671af82f709e7602bb7ef110e9eb19d936f1af 100644 (file)
@@ -143,6 +143,9 @@ ramips_setup_interfaces()
                ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
                ucidef_set_interface "qtn" ifname "eth1" protocol "static" ipaddr "1.1.1.1" netmask "255.255.255.0"
                ;;
+       comfast,cf-e390ax)
+               ucidef_set_interfaces_lan_wan "lan" "wan"
+               ;;
        *)
                ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
                ;;
@@ -186,6 +189,11 @@ ramips_setup_macs()
                lan_mac=$wan_mac
                label_mac=$wan_mac
                ;;
+       comfast,cf-e390ax)
+               lan_mac=$(cat /sys/class/net/eth0/address)
+               label_mac=$lan_mac
+               wan_mac=$(macaddr_add "$lan_mac" 1)
+               ;;
        dlink,dir-860l-b1)
                lan_mac=$(mtd_get_mac_ascii factory lanmac)
                wan_mac=$(mtd_get_mac_ascii factory wanmac)
index b36ac028b0fc12fdbeca5d19b8d15528d91fbca9..351aa396e9b18ea12c30966e718c1e0bc71339ed 100644 (file)
@@ -27,6 +27,10 @@ case "$board" in
                hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
                [ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
                ;;
+       comfast,cf-e390ax)
+               [ "$PHYNBR" = "0" ] && echo -n "$(mtd_get_mac_binary factory 0x0004)" > /sys${DEVPATH}/macaddress
+               [ "$PHYNBR" = "1" ] && echo -n "$(mtd_get_mac_binary factory 0x8004)" > /sys${DEVPATH}/macaddress
+               ;;
        cudy,x6-v1|\
        cudy,x6-v2)
                hw_mac_addr="$(mtd_get_mac_binary bdinfo 0xde00)"