From 5dee5965012e788f06e4d095e8cfb73200d818cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Valentin?= Date: Tue, 3 Jan 2023 19:23:41 +0100 Subject: [PATCH] ipq807x: Add ZyXEL NBG7815 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ZyXEL NBG7815 is a premium 802.11ax "tri"-band router/AP. Specifications: * CPU: Qualcomm IPQ8072A Quad core Cortex-A53 2.2GHz * RAM: 1 GB 2x Nanya NT5CC256M16ER-EK * Storage: * 8MB serial flash Winbond W25Q64DW * 4GB eMMC flash Kingston EMMC04G-M627 * Ethernet: * 4x1G RJ45 ports (QCA8074A) with 1x status LED per port * 1x2.5G RJ45 port (QCA8081) with 1x status LED * 1x10G RJ45 port (AQR113C) with 1x status LED * Switch: Qualcomm Atheros QCA8075 * WLAN: * 2.4GHz: Qualcomm QCN5024 4x4@40MHz 802.11b/g/n/ax 1147 Mbps PHY rate * 2x 5GHz: Qualcomm QCN5054 4x4 802.11a/b/g/n/ac/ax 2402 PHY rate * Bluetooth CSR8811 using HSUART, currently unsupported * USB: 1x USB3.0 Type-A port * LED-s currently not supported: * White * Dark Blu * Amber * Purple * Purple and dark blue * Red * Buttons: * 1x Soft reset * Power: 12V DC Jack Installation instructions: * Disconnect WAN * Reset device to factory defaults by pushing reset button 15 sec, LEDs should lit orange color. * After 5-10 minutes, when the LEDs turn constant dark blue, put your LAN cable and connect at address 192.168.123.1 by telnet on port 23 * Login with NBG7815 login: root password: nbg7815@2019 * cd /tmp/ApplicationData * wget -O openwrt-ipq807x-generic-zyxel_nbg7815-squashfs-sysupgrade.bin http://... * wget https://github.com/itorK/nbg7815_tools/blob/main/flash_to_openwrt.sh * run flash_to_openwrt.sh If you can't use wget, you can transfer the files via nc. See https://openwrt.org/inbox/toh/zyxel/nbg7815_armor_g5 for installation details. Bluetooth usage: * you need at least package bluez-utils, recommended bluez-daemon * run following commands to enable and start hciattach /dev/ttyMSM1 bcsp hciconfig hci0 up Many thanks to itorK for his work on this device: https://github.com/itorK/openwrt/tree/nbg7815 Reviewed-by: Robert Marko Signed-off-by: André Valentin --- package/boot/uboot-envtools/files/ipq807x | 3 +- package/firmware/ipq-wifi/Makefile | 4 +- .../ipq-wifi/board-zyxel_nbg7815.ipq8074 | Bin 0 -> 131176 bytes .../ipq807x/base-files/etc/board.d/02_network | 3 + .../etc/hotplug.d/firmware/11-ath11k-caldata | 3 +- .../base-files/lib/upgrade/platform.sh | 16 +- .../arm64/boot/dts/qcom/ipq8074-nbg7815.dts | 445 ++++++++++++++++++ target/linux/ipq807x/image/generic.mk | 15 + 8 files changed, 485 insertions(+), 4 deletions(-) create mode 100644 package/firmware/ipq-wifi/board-zyxel_nbg7815.ipq8074 create mode 100644 target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts diff --git a/package/boot/uboot-envtools/files/ipq807x b/package/boot/uboot-envtools/files/ipq807x index 63fd04ec5b5..6e4fadbdf5e 100644 --- a/package/boot/uboot-envtools/files/ipq807x +++ b/package/boot/uboot-envtools/files/ipq807x @@ -13,7 +13,8 @@ dynalink,dl-wrx36) [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x20000" "2" ;; -edgecore,eap102) +edgecore,eap102|\ +zyxel,nbg7815) idx="$(find_mtd_index 0:appsblenv)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1" diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 32988910c0a..861eec13dc9 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -49,7 +49,8 @@ ALLWIFIBOARDS:= \ xiaomi_ax3600 \ xiaomi_ax9000 \ zte_mf18a \ - zte_mf289f + zte_mf289f \ + zyxel_nbg7815 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD)) @@ -148,5 +149,6 @@ $(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600)) $(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000)) $(eval $(call generate-ipq-wifi-package,zte_mf18a,ZTE MF18A)) $(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F)) +$(eval $(call generate-ipq-wifi-package,zyxel_nbg7815,Zyxel NBG7815)) $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE)))) diff --git a/package/firmware/ipq-wifi/board-zyxel_nbg7815.ipq8074 b/package/firmware/ipq-wifi/board-zyxel_nbg7815.ipq8074 new file mode 100644 index 0000000000000000000000000000000000000000..3a1c88b76eabfe3ed262811cf8a674ccb737cee2 GIT binary patch literal 131176 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 literal 0 Hc-jL100001 diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network index e2bd46f0959..de237e8541f 100644 --- a/target/linux/ipq807x/base-files/etc/board.d/02_network +++ b/target/linux/ipq807x/base-files/etc/board.d/02_network @@ -30,6 +30,9 @@ ipq807x_setup_interfaces() xiaomi,ax9000) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; + zyxel,nbg7815) + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 10g" "wan" + ;; *) echo "Unsupported hardware. Network interfaces not initialized" ;; diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata index 974e7607aa3..304d3a71b89 100644 --- a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata @@ -15,7 +15,8 @@ case "$FIRMWARE" in qnap,301w|\ redmi,ax6|\ xiaomi,ax3600|\ - xiaomi,ax9000) + xiaomi,ax9000|\ + zyxel,nbg7815) caldata_extract "0:art" 0x1000 0x20000 ;; esac diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh index 63f546444f3..4a6a91b5f5d 100644 --- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh @@ -1,7 +1,7 @@ PART_NAME=firmware REQUIRE_IMAGE_METADATA=1 -RAMFS_COPY_BIN='fw_printenv fw_setenv' +RAMFS_COPY_BIN='fw_printenv fw_setenv head' RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock' xiaomi_initramfs_prepare() { @@ -66,6 +66,20 @@ platform_do_upgrade() { rootfsname="rootfs" mmc_do_upgrade "$1" ;; + zyxel,nbg7815) + local config_mtdnum="$(find_mtd_index 0:bootconfig)" + [ -z "$config_mtdnum" ] && reboot + part_num="$(hexdump -e '1/1 "%01x|"' -n 1 -s 168 -C /dev/mtd$config_mtdnum | cut -f 1 -d "|" | head -n1)" + if [ "$part_num" -eq "0" ]; then + kernelname="0:HLOS" + rootfsname="rootfs" + mmc_do_upgrade "$1" + else + kernelname="0:HLOS_1" + rootfsname="rootfs_1" + mmc_do_upgrade "$1" + fi + ;; redmi,ax6|\ xiaomi,ax3600|\ xiaomi,ax9000) diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts new file mode 100644 index 00000000000..537dd52032d --- /dev/null +++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts @@ -0,0 +1,445 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) 2022, Karol Przybylski + * Copyright (c) 2023, Andre Valentin + */ + +/dts-v1/; + +#include "ipq8074.dtsi" +#include "ipq8074-hk-cpu.dtsi" +#include "ipq8074-ess.dtsi" +#include +#include +#include + + +/ { + model = "Zyxel NBG7815"; + compatible = "zyxel,nbg7815", "qcom,ipq8074"; + + aliases { + serial0 = &blsp1_uart5; + serial1 = &blsp1_uart3; + /* Alias as required by u-boot to patch MAC addresses */ + ethernet0 = &dp1; + label-mac-device = &dp1; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 54 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&tlmm { + mdio_pins: mdio-pins { + mdc { + pins = "gpio68"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mdio { + pins = "gpio69"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + + +&blsp1_uart3 { + status = "okay"; +}; + +&blsp1_uart5 { + status = "okay"; +}; + +&prng { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + + +&blsp1_spi1 { + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + cs-gpios = <0>; + status = "okay"; + + /* + * Bootloader will find the NAND DT node by the compatible and + * then "fixup" it by adding the partitions from the SMEM table + * using the legacy bindings thus making it impossible for us + * to change the partition table or utilize NVMEM for calibration. + * So add a dummy partitions node that bootloader will populate + * and set it as disabled so the kernel ignores it instead of + * printing warnings due to the broken way bootloader adds the + * partitions. + */ + partitions { + status = "disabled"; + }; + + + flash@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "jedec,spi-nor"; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "0:sbl1"; + reg = <0x0 0x50000>; + read-only; + }; + + partition@50000 { + label = "0:mibib"; + reg = <0x50000 0x10000>; + read-only; + }; + + partition@60000 { + label = "0:bootconfig"; + reg = <0x60000 0x20000>; + read-only; + }; + + partition@80000 { + label = "0:bootconfig1"; + reg = <0x80000 0x20000>; + read-only; + }; + + partition@a0000 { + label = "0:qsee"; + reg = <0xa0000 0x180000>; + read-only; + }; + + partition@220000 { + label = "0:qsee_1"; + reg = <0x220000 0x180000>; + read-only; + }; + + partition@3a0000 { + label = "0:devcfg"; + reg = <0x3a0000 0x10000>; + read-only; + }; + + partition@3b0000 { + label = "0:devcfg_1"; + reg = <0x3b0000 0x10000>; + read-only; + }; + + partition@3c0000 { + label = "0:apdp"; + reg = <0x3c0000 0x10000>; + read-only; + }; + + partition@3d0000 { + label = "0:apdp_1"; + reg = <0x3d0000 0x10000>; + read-only; + }; + + partition@3e0000 { + label = "0:rpm"; + reg = <0x3e0000 0x40000>; + read-only; + }; + + partition@420000 { + label = "0:rpm_1"; + reg = <0x420000 0x40000>; + read-only; + }; + + partition@460000 { + label = "0:cdt"; + reg = <0x460000 0x10000>; + read-only; + }; + + partition@470000 { + label = "0:cdt_1"; + reg = <0x470000 0x10000>; + read-only; + }; + + partition@480000 { + label = "0:appsbl"; + reg = <0x480000 0xc0000>; + read-only; + }; + + partition@540000 { + label = "0:appsbl_1"; + reg = <0x540000 0xc0000>; + read-only; + }; + + partition@600000 { + compatible = "u-boot,env"; + label = "0:appsblenv"; + reg = <0x600000 0x10000>; + + macaddr_lan: ethaddr { + }; + }; + + partition@610000 { + label = "0:art"; + reg = <0x610000 0x40000>; + read-only; + }; + + partition@650000 { + label = "0:ethphyfw"; + reg = <0x650000 0x80000>; + read-only; + }; + + partition@6d0000 { + label = "0:crt"; + reg = <0x6d0000 0x10000>; + read-only; + }; + + partition@6e0000 { + label = "dual_flag"; + reg = <0x6e0000 0x10000>; + }; + + partition@6f0000 { + label = "reserved"; + reg = <0x6f0000 0x110000>; + read-only; + }; + }; + }; +}; + +&mdio { + status = "okay"; + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; + + qca8075_1: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0>; + }; + + qca8075_2: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <1>; + }; + + qca8075_3: ethernet-phy@2 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <2>; + }; + + qca8075_4: ethernet-phy@3 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <3>; + }; + + qca8081: ethernet-phy@4{ + compatible = "ethernet-phy-id004d.d101"; + reg = <28>; + reset-gpios = <&tlmm 31 GPIO_ACTIVE_LOW>; + }; + + aqr113c: ethernet-phy@5 { + compatible = "ethernet-phy-ieee802.3-c45"; + reg = <8>; + reset-gpios = <&tlmm 63 GPIO_ACTIVE_LOW>; + }; +}; + +&switch { + status = "okay"; + + switch_cpu_bmp = <0x1>; + switch_lan_bmp = <0x3e>; + switch_wan_bmp = <0x40>; + switch_mac_mode = <0x0>; + switch_mac_mode1 = <0xf>; + switch_mac_mode2 = <0xd>; + bm_tick_mode = <0>; + tm_tick_mode = <0>; + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + + port@1 { + port_id = <2>; + phy_address = <1>; + }; + + port@2 { + port_id = <3>; + phy_address = <2>; + }; + + port@3 { + port_id = <4>; + phy_address = <3>; + }; + + port@4 { + port_id = <5>; + phy_address = <28>; + port_mac_sel = "QGMAC_PORT"; + }; + + port@5 { + port_id = <6>; + ethernet-phy-ieee802.3-c45; + phy_address = <8>; + }; + }; +}; + +&edma { + status = "okay"; +}; + +&dp1 { + status = "okay"; + phy-handle = <&qca8075_1>; + label = "lan1"; + nvmem-cells = <&macaddr_lan>; + nvmem-cell-names = "mac-address-ascii"; +}; + +&dp2 { + status = "okay"; + phy-handle = <&qca8075_2>; + label = "lan2"; + nvmem-cells = <&macaddr_lan>; + nvmem-cell-names = "mac-address-ascii"; +}; + +&dp3 { + status = "okay"; + phy-handle = <&qca8075_3>; + label = "lan3"; + nvmem-cells = <&macaddr_lan>; + nvmem-cell-names = "mac-address-ascii"; +}; + +&dp4 { + status = "okay"; + phy-handle = <&qca8075_4>; + label = "lan4"; + nvmem-cells = <&macaddr_lan>; + nvmem-cell-names = "mac-address-ascii"; +}; + +&dp5 { + status = "okay"; + phy-handle = <&qca8081>; + label = "wan"; + nvmem-cells = <&macaddr_lan>; + nvmem-cell-names = "mac-address-ascii"; + mac-address-increment = <1>; +}; + +&dp6_syn { + status = "okay"; + phy-handle = <&aqr113c>; + label = "10g"; + nvmem-cells = <&macaddr_lan>; + nvmem-cell-names = "mac-address-ascii"; +}; + +&blsp1_i2c2 { + pinctrl-0 = <&i2c_0_pins>; + pinctrl-names = "default"; + status = "okay"; + + tmp103@70 { + compatible = "ti,tmp103"; + reg = <0x70>; + }; +}; + +&sdhc_1 { + status = "okay"; + /* unstable, problem with the hs400 > h200 speed switch */ + /delete-property/ mmc-hs400-1_8v; + mmc-hs200-1_8v; + mmc-ddr-1_8v; + vqmmc-supply = <&l11>; +}; + +&ssphy_0 { + status = "okay"; +}; + +&qusb_phy_0 { + status = "okay"; +}; + +&ssphy_1 { + status = "okay"; +}; + +&qusb_phy_1 { + status = "okay"; +}; + +&usb_0 { + status = "okay"; +}; + +&usb_1 { + status = "okay"; +}; + +&wifi { + status = "okay"; + + qcom,ath11k-calibration-variant = "Zyxel-NBG7815"; +}; diff --git a/target/linux/ipq807x/image/generic.mk b/target/linux/ipq807x/image/generic.mk index 811a32e942b..3145e1b53f1 100644 --- a/target/linux/ipq807x/image/generic.mk +++ b/target/linux/ipq807x/image/generic.mk @@ -116,3 +116,18 @@ ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) endif endef TARGET_DEVICES += xiaomi_ax9000 + +define Device/zyxel_nbg7815 + $(call Device/FitImage) + DEVICE_VENDOR := ZYXEL + DEVICE_MODEL := NBG7815 + DEVICE_DTS_CONFIG := config@nbg7815 + BLOCKSIZE := 128k + PAGESIZE := 2048 + SOC := ipq8074 + IMAGES += factory.bin sysupgrade.bin + IMAGE/factory.bin := append-rootfs | pad-rootfs | pad-to 64k + IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-to 64k | sysupgrade-tar rootfs=$$$$@ | append-metadata + DEVICE_PACKAGES := ipq-wifi-zyxel_nbg7815 kmod-ath11k-pci e2fsprogs kmod-fs-ext4 losetup kmod-hwmon-tmp103 +endef +TARGET_DEVICES += zyxel_nbg7815 -- 2.47.2