[openwrt/openwrt] ath79: add support for ZyXEL NWA1121-NI

LEDE Commits lede-commits at lists.infradead.org
Sat Aug 20 15:49:56 PDT 2022


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

commit 251ecfe37914919422d74dd32fab15a86f65e879
Author: Sebastian Schaper <openwrt at sebastianschaper.net>
AuthorDate: Wed Sep 9 20:42:53 2020 +0200

    ath79: add support for ZyXEL NWA1121-NI
    
    Specifications:
     * AR9342, 16 MiB Flash, 64 MiB RAM, 802.11n 2T2R, 2.4 GHz
     * 1x Gigabit Ethernet (AR8035), 802.3af PoE
    
    Installation:
    * OEM Web UI is at 192.168.1.2
      login as `admin` with password `1234`
    * Flash factory-AABJ.bin
    
    The string `AABJ` needs to be present within the file name of the uploaded
    image to be accepted by the OEM Web-based updater, the factory image is
    named accordingly to save the user from the hassle of manual renaming.
    
    TFTP Recovery:
    * Open the case, connect to TTL UART port (this is the official method
      described by Zyxel, the reset button is useless during power-on)
    * Extract factory image (.tar.bz2), serve `vmlinux_mi124_f1e.lzma.uImage`
      and `mi124_f1e-jffs2` via tftp at 192.168.1.10
    * Interrupt uboot countdown, execute commands
      `run lk`
      `run lf`
      to flash the kernel / filesystem accordingly
    
    MAC addresses as verified by OEM firmware:
    use   address   source
    LAN   *:cc      mib0 0x30 ('eth0mac'), art 0x1002 (label)
    2g    *:cd      mib0 0x4b ('wifi0mac')
    
    Signed-off-by: Sebastian Schaper <openwrt at sebastianschaper.net>
---
 target/linux/ath79/dts/ar9342_zyxel_nwa1121-ni.dts |  31 ++++
 target/linux/ath79/dts/ar9342_zyxel_nwa11xx.dtsi   | 166 +++++++++++++++++++++
 .../generic/base-files/etc/board.d/02_network      |   3 +-
 target/linux/ath79/image/generic.mk                |  31 +++-
 4 files changed, 229 insertions(+), 2 deletions(-)

diff --git a/target/linux/ath79/dts/ar9342_zyxel_nwa1121-ni.dts b/target/linux/ath79/dts/ar9342_zyxel_nwa1121-ni.dts
new file mode 100644
index 0000000000..65dc8c0440
--- /dev/null
+++ b/target/linux/ath79/dts/ar9342_zyxel_nwa1121-ni.dts
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9342_zyxel_nwa11xx.dtsi"
+
+/ {
+	compatible = "zyxel,nwa1121-ni", "qca,ar9342";
+	model = "Zyxel NWA1121-NI";
+
+	aliases {
+		label-mac-device = &eth0;
+		led-boot = &led_status_green;
+		led-failsafe = &led_status_amber;
+		led-running = &led_status_green;
+		led-upgrade = &led_status_amber;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_status_green: status_green {
+			label = "green:status";
+			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+			default-state = "on";
+		};
+
+		led_status_amber: status_amber {
+			label = "amber:status";
+			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
diff --git a/target/linux/ath79/dts/ar9342_zyxel_nwa11xx.dtsi b/target/linux/ath79/dts/ar9342_zyxel_nwa11xx.dtsi
new file mode 100644
index 0000000000..7cc1bba3fc
--- /dev/null
+++ b/target/linux/ath79/dts/ar9342_zyxel_nwa11xx.dtsi
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9344.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
+
+/ {
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	virtual_flash {
+		compatible = "mtd-concat";
+
+		devices = <&fwconcat0 &fwconcat1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				compatible = "openwrt,uimage", "denx,uimage";
+				openwrt,ih-magic = <IH_MAGIC_OKLI>;
+				label = "firmware";
+				reg = <0x0 0x0>;
+			};
+		};
+	};
+};
+
+&ref {
+	clock-frequency = <40000000>;
+};
+
+&spi {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x000000 0x040000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "u-boot-env";
+				reg = <0x040000 0x010000>;
+			};
+
+			fwconcat0: partition at 50000 {
+				label = "fwconcat0";
+				reg = <0x050000 0x800000>;
+			};
+
+			partition at 850000 {
+				label = "loader";
+				reg = <0x850000 0x010000>;
+				read-only;
+			};
+
+			fwconcat1: partition at 860000 {
+				label = "fwconcat1";
+				reg = <0x860000 0x740000>;
+			};
+
+			partition at fa0000 {
+				label = "config";
+				reg = <0xfa0000 0x040000>;
+				read-only;
+			};
+
+			partition at fe0000 {
+				label = "mib0";
+				reg = <0xfe0000 0x010000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				macaddr_mib0_4b: macaddr at 4b {
+					reg = <0x4b 0x11>;
+				};
+
+				macaddr_mib0_66: macaddr at 66 {
+					reg = <0x66 0x11>;
+				};
+			};
+
+			art: partition at ff0000 {
+				label = "art";
+				reg = <0xff0000 0x010000>;
+				read-only;
+
+				compatible = "nvmem-cells";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				calibration_ath9k: calibration at 1000 {
+					reg = <0x1000 0x440>;
+				};
+
+				macaddr_art_1002: macaddr at 1002 {
+					reg = <0x1002 0x6>;
+				};
+			};
+		};
+	};
+};
+
+&mdio0 {
+	status = "okay";
+
+	phy0: ethernet-phy at 0 {
+		reg = <0>;
+		phy-mode = "rgmii";
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	pll-data = <0x06000000 0x00000101 0x00001313>;
+
+	nvmem-cells = <&macaddr_art_1002>;
+	nvmem-cell-names = "mac-address";
+
+	phy-mode = "rgmii-id";
+	phy-handle = <&phy0>;
+
+	gmac-config {
+		device = <&gmac>;
+		rxdv-delay = <3>;
+		rxd-delay = <3>;
+		txen-delay = <3>;
+		txd-delay = <3>;
+		rgmii-gmac0 = <1>;
+	};
+};
+
+&wmac {
+	status = "okay";
+
+	ieee80211-freq-limit = <2402000 2482000>;
+
+	nvmem-cells = <&macaddr_mib0_4b>, <&calibration_ath9k>;
+	nvmem-cell-names = "mac-address-ascii", "calibration";
+};
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 f10737f2fb..34f04b5300 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
@@ -109,7 +109,8 @@ ath79_setup_interfaces()
 	ubnt,unifiac-mesh|\
 	ubnt,unifi|\
 	wd,mynet-wifi-rangeextender|\
-	winchannel,wb2000)
+	winchannel,wb2000|\
+	zyxel,nwa1121-ni)
 		ucidef_set_interface_lan "eth0"
 		;;
 	airtight,c-75)
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 4aa6ed6480..9ba5e20e57 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -9,7 +9,7 @@ DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
 DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
 DEVICE_VARS += KERNEL_INITRAMFS_PREFIX DAP_SIGNATURE
 DEVICE_VARS += EDIMAX_HEADER_MAGIC EDIMAX_HEADER_MODEL
-DEVICE_VARS += OPENMESH_CE_TYPE
+DEVICE_VARS += OPENMESH_CE_TYPE ZYXEL_MODEL_STRING
 
 define Build/add-elecom-factory-initramfs
   $(eval edimax_model=$(word 1,$(1)))
@@ -161,6 +161,13 @@ define Build/wrgg-pad-rootfs
 	$(STAGING_DIR_HOST)/bin/padjffs2 $(IMAGE_ROOTFS) -c 64 >>$@
 endef
 
+define Build/zyxel-tar-bz2
+	mkdir -p $@.tmp
+	mv $@ $@.tmp/$(word 2,$(1))
+	cp $(KDIR)/loader-$(DEVICE_NAME).uImage $@.tmp/$(word 1,$(1)).lzma.uImage
+	$(TAR) -cjf $@ -C $@.tmp .
+	rm -rf $@.tmp
+endef
 
 define Device/seama
   KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
@@ -2687,6 +2694,28 @@ define Device/zbtlink_zbt-wd323
 endef
 TARGET_DEVICES += zbtlink_zbt-wd323
 
+define Device/zyxel_nwa11xx
+  $(Device/loader-okli-uimage)
+  SOC := ar9342
+  DEVICE_VENDOR := ZyXEL
+  LOADER_FLASH_OFFS := 0x050000
+  KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49
+  IMAGE_SIZE := 8192k
+  IMAGES += factory-$$$$(ZYXEL_MODEL_STRING).bin
+  IMAGE/factory-$$$$(ZYXEL_MODEL_STRING).bin := \
+	append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \
+	pad-rootfs | pad-to 8192k | check-size | zyxel-tar-bz2 \
+	vmlinux_mi124_f1e mi124_f1e-jffs2 | append-md5sum-bin
+endef
+
+define Device/zyxel_nwa1121-ni
+  $(Device/zyxel_nwa11xx)
+  DEVICE_MODEL := NWA1121
+  DEVICE_VARIANT := NI
+  ZYXEL_MODEL_STRING := AABJ
+endef
+TARGET_DEVICES += zyxel_nwa1121-ni
+
 define Device/zyxel_nbg6616
   SOC := qca9557
   DEVICE_VENDOR := ZyXEL




More information about the lede-commits mailing list