[openwrt/openwrt] ath79: add support for NEC Aterm WG2200HP

LEDE Commits lede-commits at lists.infradead.org
Sun Apr 6 15:43:04 PDT 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f76185c3f3c0896fce5d120df8eeb55cc952002c

commit f76185c3f3c0896fce5d120df8eeb55cc952002c
Author: INAGAKI Hiroshi <musashino.open at gmail.com>
AuthorDate: Fri Jan 3 17:41:46 2025 +0900

    ath79: add support for NEC Aterm WG2200HP
    
    NEC Aterm WG2200HP is a 2.4/5 GHz band 11ac (Wi-Fi 5) router, based on
    QCA9558.
    
    Specification:
    
    - SoC              : Qualcomm Atheros QCA9558
    - RAM              : DDR2 128 MiB (2x ESMT M14D5121632A)
    - Flash            : SPI-NOR 16 MiB (Macronix MX25L12835FM2I-10G)
    - WLAN             : 2.4/5 GHz
      - 2.4 GHz        : 3T3R (Qualcomm Atheros QCA9558 (SoC))
      - 5 GHz          : 4T4R (Qualcomm Atheros QCA9984)
    - Ethernet         : 5x 10/100/1000 Mbps
      - switch         : Qualcomm Atheros QCA8337
    - LEDs/Keys (GPIO) : 12x/4x
    - UART             : through-hole on PCB
      - assignment     : 3.3V, GND, NC, TX, RX from tri-angle marking
      - settings       : 9600n8
    - USB              : 1x USB 2.0 Type-A
    - Power            : 12 VDC, 1.5 A (Max: 20 W)
    - Stock OS         : NetBSD based
    
    Flash instruction using initramfs-factory.bin image:
    
     1. Connect and open serial console
     2. Power on WG2200HP and interrupt bootloader by ESC key
     3. Login to the bootloader CLI with a password "chiron"
     4. Start TFTP server by "tftpd" command
     5. Upload initramfs-factory.bin via tftp from your computer
    
        example (Windows): tftp -i 192.168.0.1 PUT initramfs-factory.bin
    
     6. Boot initramfs image by "boot" command
     7. On the initramfs image, back up the stock bootloader and firmware if
        needed
     8. Upload (or download) uboot.bin and sysupgrade.bin image to the device
     9. Rplace the bootloader with a uboot.bin image
    
        mtd write <uboot.bin image> bootloader
    
    10. Perform sysupgrade with a sysupgrade.bin image
    11. Wait ~120 seconds to complete flashing
    
    Notes:
    
    - All LEDs are connected to the Diodes PI4IOE5V9539LE I2C Expander chip.
      (compatible with NXP PCA9539)
    
    - The stock bootloader requires an unknown filesystem on firmware area
      in the flash. Booting of OpenWrt from that filesystem cannot be
      handled, so the bootloader needs to be replaced to mainline U-Boot
      before OpenWrt installation.
    
    - The data length of blocks in firmware image will be checked
      (4M < threshold < 6M) on the stock WebUI of all versions, and
      initramfs-factory.bin image of OpenWrt has the larger block data for
      initramfs image. So that image cannot be applied to the stock WebUI
      at all.
    
    MAC addresses:
    
    LAN    : 98:F1:99:xx:xx:7C (config, 0x6  (hex))
    WAN    : 98:F1:99:xx:xx:7D (config, 0xc  (hex))
    2.4 GHz: 98:F1:99:xx:xx:7E (config, 0x0  (hex))
    5 GHz  : 98:F1:99:xx:xx:7F (config, 0x12 (hex))
    
    Signed-off-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/17584
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 target/linux/ath79/dts/qca9558_nec_wg2200hp.dts    | 57 ++++++++++++++++++++++
 .../generic/base-files/etc/board.d/02_network      |  1 +
 target/linux/ath79/image/generic.mk                | 10 ++++
 target/linux/ath79/image/lzma-loader/src/board.c   |  7 ++-
 4 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/target/linux/ath79/dts/qca9558_nec_wg2200hp.dts b/target/linux/ath79/dts/qca9558_nec_wg2200hp.dts
new file mode 100644
index 0000000000..91ffe6d84c
--- /dev/null
+++ b/target/linux/ath79/dts/qca9558_nec_wg2200hp.dts
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca9558_nec_aterm.dtsi"
+
+/ {
+	compatible = "nec,wg2200hp", "qca,qca9558";
+	model = "NEC Aterm WG2200HP";
+};
+
+&i2c {
+	/delete-node/ gpio at 20;
+
+	/* Diodes PI4IOE5V9539LE */
+	gpio1: gpio at 76 {
+		compatible = "nxp,pca9539";
+		reg = <0x76>;
+		reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		gpio-controller;
+		#gpio-cells = <2>;
+	};
+};
+
+&keys {
+	/delete-node/ button-eco;
+};
+
+&nvmem_art {
+	precal_art_5000: pre-calibration at 5000 {
+		reg = <0x5000 0x2f20>;
+	};
+};
+
+&phy0 {
+	qca,ar8327-initvals = <
+		0x04 0x80000080 /* PORT0_PAD_MODE_CTRL */
+		0x08 0x00000000 /* PORT5_PAD_MODE_CTRL */
+		0x0c 0x07600000 /* PORT6_PAD_MODE_CTRL */
+		0x10 0x812613a0 /* POWER_ON_STRAP */
+		0x50 0xcc36cc36 /* LED_CTRL0 */
+		0x54 0xca36ca36 /* LED_CTRL1 */
+		0x58 0xc936c936 /* LED_CTRL2 */
+		0x5c 0x03ffff00 /* LED_CTRL3 */
+		0x7c 0x0000007e /* PORT0_STATUS */
+		0x94 0x0000007e /* PORT6_STATUS */
+		0xe0 0xc74164de /* SGMII_CONTROL */
+	>;
+};
+
+&eth0 {
+	pll-data = <0x76000000 0x00000101 0x00001616>;
+};
+
+&wifi {
+	compatible = "pci168c,0046";
+	nvmem-cells = <&precal_art_5000>, <&macaddr_config_12>;
+	nvmem-cell-names = "pre-calibration", "mac-address";
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 4da8d36d50..d999784d6a 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -193,6 +193,7 @@ ath79_setup_interfaces()
 	nec,wg1400hp|\
 	nec,wg1800hp|\
 	nec,wg1800hp2|\
+	nec,wg2200hp|\
 	tplink,archer-c5-v1|\
 	tplink,archer-c7-v1|\
 	tplink,archer-c7-v2|\
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 9c74936053..b74a22ba4d 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -2170,6 +2170,16 @@ define Device/nec_wg1800hp2
 endef
 TARGET_DEVICES += nec_wg1800hp2
 
+define Device/nec_wg2200hp
+  SOC := qca9558
+  DEVICE_MODEL := Aterm WG2200HP
+  IMAGE_SIZE := 16128k
+  NEC_FW_TYPE := H055
+  $(Device/nec-netbsd-aterm)
+  DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca9984-ct
+endef
+TARGET_DEVICES += nec_wg2200hp
+
 define Device/nec_wg800hp
   SOC := qca9563
   DEVICE_VENDOR := NEC
diff --git a/target/linux/ath79/image/lzma-loader/src/board.c b/target/linux/ath79/image/lzma-loader/src/board.c
index 294ca307d5..7ed414aa90 100644
--- a/target/linux/ath79/image/lzma-loader/src/board.c
+++ b/target/linux/ath79/image/lzma-loader/src/board.c
@@ -54,7 +54,8 @@ static inline void tlwr1043nd_init(void) {}
 #if defined(CONFIG_BOARD_MERAKI_MR18) || \
     defined(CONFIG_BOARD_NEC_WG1400HP) || \
     defined(CONFIG_BOARD_NEC_WG1800HP) || \
-    defined(CONFIG_BOARD_NEC_WG1800HP2)
+    defined(CONFIG_BOARD_NEC_WG1800HP2) || \
+    defined(CONFIG_BOARD_NEC_WG2200HP)
 
 static int extract_qca955x_sgmii_res_cal(void)
 {
@@ -221,6 +222,7 @@ static inline void huawei_ap_init(void) {}
 #if defined(CONFIG_BOARD_NEC_WG1400HP) || \
     defined(CONFIG_BOARD_NEC_WG1800HP) || \
     defined(CONFIG_BOARD_NEC_WG1800HP2) || \
+    defined(CONFIG_BOARD_NEC_WG2200HP) || \
     defined(CONFIG_BOARD_NEC_WG600HP) || \
     defined(CONFIG_BOARD_NEC_WR8750N) || \
     defined(CONFIG_BOARD_NEC_WR9500N)
@@ -296,7 +298,8 @@ static inline void nec_aterm_init(void)
 }
 #elif defined(CONFIG_BOARD_NEC_WG1400HP) || \
       defined(CONFIG_BOARD_NEC_WG1800HP) || \
-      defined(CONFIG_BOARD_NEC_WG1800HP2)
+      defined(CONFIG_BOARD_NEC_WG1800HP2) || \
+      defined(CONFIG_BOARD_NEC_WG2200HP)
 
 #define QCA955X_GMAC_MR_AN_CONTROL_PHY_RESET_MASK	BIT(15)
 #define QCA955X_GMAC_MR_AN_CONTROL_FULL_DUPLEX_MASK	BIT(8)




More information about the lede-commits mailing list