From f2e1d373817c05aa9feac7fd67262010b4064d23 Mon Sep 17 00:00:00 2001 From: Andrzej Mialkowski Date: Fri, 19 May 2023 04:09:54 -0700 Subject: [PATCH] ipq806x: Add support for Netgear Nighthawk Pro Gaming XR450 Motivation: Firmware with platform ID "XR450" required for easy installation. Manufacturer pages: Product page: https://www.netgear.com/support/product/xr450 Product Data Sheet: https://www.netgear.com/images/datasheet/networking/wifirouter/XR450.pdf Current firmware: https://www.downloads.netgear.com/files/GDC/XR450/XR450-V2.3.2.134.zip Specifications: Almost identical to Netgear XR500(https://openwrt.org/toh/hwdata/netgear/netgear_xr500) Differences: Platform ID: XR450, utilized for firmware validation WLAN 2.4GHz: b/g/n Supports QAM64 (XR500 QAM256) SoC: Qualcomm Atheros IPQ8065 RAM: 512 MB Storage: 256 MiB Wireless: Qualcomm Atheros QCA9984 Switch: Qualcomm Atheros AR8337 rev. 2 Ethernet: 5x 1000/100/10 USB: 2x 3.0 Install via WEB GUI (recommended): 1. Navigate within GUI to firmware update section 2. Select openwrt-ipq806x-netgear_xr450-squashfs-factory.img 3. Dismiss downgrade warning Install via TFTP recovery (same as XR500/R7800): 1. Configure host PC to use static address 192.168.1.10 https://openwrt.org/toh/netgear/r7800#prerequisites_for_tftp_flashing 2. Flash openwrt-ipq806x-netgear_xr450-squashfs-factory.img using procedure https://openwrt.org/toh/netgear/r7800#tftp_flashing_process Revert to stock firmware 1. Download current manufacturer firmware, decompress zip file to obtain img file 2. Use TFTP recovery method flash img file (currently XR450-V2.3.2.134.img) ipq806x: add support to netgear_xr450 Signed-off-by: Andrzej Mialkowski --- .../ipq806x/base-files/etc/board.d/01_leds | 1 + .../ipq806x/base-files/etc/board.d/02_network | 1 + .../base-files/lib/upgrade/platform.sh | 1 + .../arch/arm/boot/dts/qcom-ipq8065-xr450.dts | 50 +++++++++++++++++++ target/linux/ipq806x/image/generic.mk | 14 ++++++ 5 files changed, 67 insertions(+) create mode 100644 target/linux/ipq806x/files-5.15/arch/arm/boot/dts/qcom-ipq8065-xr450.dts diff --git a/target/linux/ipq806x/base-files/etc/board.d/01_leds b/target/linux/ipq806x/base-files/etc/board.d/01_leds index 82ca270dd6b..d4d40bd6463 100644 --- a/target/linux/ipq806x/base-files/etc/board.d/01_leds +++ b/target/linux/ipq806x/base-files/etc/board.d/01_leds @@ -37,6 +37,7 @@ netgear,d7800 |\ netgear,r7500 |\ netgear,r7500v2 |\ netgear,r7800 |\ +netgear,xr450 |\ netgear,xr500) ucidef_set_led_usbport "usb1" "USB 1" "white:usb1" "usb1-port1" "usb2-port1" ucidef_set_led_usbport "usb2" "USB 2" "white:usb2" "usb3-port1" "usb4-port1" diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network b/target/linux/ipq806x/base-files/etc/board.d/02_network index 8dd52452b17..70812a1013c 100644 --- a/target/linux/ipq806x/base-files/etc/board.d/02_network +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network @@ -59,6 +59,7 @@ nec,wg2600hp3) "2:lan" "3:lan" "4:lan" "5:lan" "0@eth1" "1:wan" "6@eth0" ;; netgear,r7800 |\ +netgear,xr450 |\ netgear,xr500 |\ tplink,c2600 |\ tplink,vr2600v) diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh index 5ec4f513bd3..108b0b76307 100644 --- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh @@ -17,6 +17,7 @@ platform_do_upgrade() { netgear,r7500 |\ netgear,r7500v2 |\ netgear,r7800 |\ + netgear,xr450 |\ netgear,xr500 |\ nokia,ac400i |\ qcom,ipq8064-ap148 |\ diff --git a/target/linux/ipq806x/files-5.15/arch/arm/boot/dts/qcom-ipq8065-xr450.dts b/target/linux/ipq806x/files-5.15/arch/arm/boot/dts/qcom-ipq8065-xr450.dts new file mode 100644 index 00000000000..4353aec7ac0 --- /dev/null +++ b/target/linux/ipq806x/files-5.15/arch/arm/boot/dts/qcom-ipq8065-xr450.dts @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "qcom-ipq8065-nighthawk.dtsi" + +/ { + model = "Netgear Nighthawk XR450"; + compatible = "netgear,xr450", "qcom,ipq8065", "qcom,ipq8064"; + +}; + +&leds { + usb1 { + label = "white:usb1"; + gpios = <&qcom_pinmux 8 GPIO_ACTIVE_HIGH>; + }; + + usb2 { + label = "white:usb2"; + gpios = <&qcom_pinmux 26 GPIO_ACTIVE_HIGH>; + }; +}; + +&partitions { + partition@1880000 { + label = "ubi"; + reg = <0x1880000 0xce00000>; + }; + + partition@e680000 { + label = "reserve"; + reg = <0xe680000 0x0780000>; + read-only; + }; +}; + +&wifi0 { + nvmem-cells = <&macaddr_art_c>, <&precal_art_1000>; + nvmem-cell-names = "mac-address", "pre-calibration"; +}; + +&wifi1 { + nvmem-cells = <&macaddr_art_0>, <&precal_art_5000>; + nvmem-cell-names = "mac-address", "pre-calibration"; +}; + +&art { + macaddr_art_c: macaddr@c { + reg = <0xc 0x6>; + }; +}; diff --git a/target/linux/ipq806x/image/generic.mk b/target/linux/ipq806x/image/generic.mk index b83999dd00e..7ed2b808473 100644 --- a/target/linux/ipq806x/image/generic.mk +++ b/target/linux/ipq806x/image/generic.mk @@ -320,6 +320,20 @@ define Device/netgear_r7800 endef TARGET_DEVICES += netgear_r7800 +define Device/netgear_xr450 + $(call Device/DniImage) + DEVICE_VENDOR := NETGEAR + DEVICE_MODEL := Nighthawk XR450 + SOC := qcom-ipq8065 + KERNEL_SIZE := 4096k + NETGEAR_BOARD_ID := XR450 + NETGEAR_HW_ID := 29764958+0+256+512+4x4+4x4+cascade + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_PACKAGES := ath10k-firmware-qca9984-ct kmod-ramoops +endef +TARGET_DEVICES += netgear_xr450 + define Device/netgear_xr500 $(call Device/DniImage) DEVICE_VENDOR := NETGEAR -- 2.30.2