diff --git a/package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq60xx b/package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq60xx index ba6d9ff1fa3..02926424ab4 100644 --- a/package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq60xx +++ b/package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq60xx @@ -26,6 +26,8 @@ linksys,mr7500) ubootenv_add_mtd "u_env" "0x0" "0x40000" "0x20000" ;; netgear,wax214|\ +netgear,wax610|\ +netgear,wax610y|\ tplink,eap610-outdoor) ubootenv_add_mtd "0:appsblenv" "0x0" "0x40000" "0x20000" ;; diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 107f5ffed20..31f2364b065 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -6,9 +6,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git -PKG_SOURCE_DATE:=2025-02-17 -PKG_SOURCE_VERSION:=dd3577ec9f2d9d3ef5e35602d3fe731cb259ff39 -PKG_MIRROR_HASH:=0da921982b33a831dd19e570974a22ad2b1f3324397b1203a8a38d7d044b073a +PKG_SOURCE_DATE:=2025-04-01 +PKG_SOURCE_VERSION:=c220fac7fdb35628ba53ff53ed36cf883a401161 +PKG_MIRROR_HASH:=26338b4f165eb2e90273cd61ed26715b99e496ccf738167e22ff9213ca42c973 PKG_FLAGS:=nonshared include $(INCLUDE_DIR)/package.mk @@ -56,6 +56,8 @@ ALLWIFIBOARDS:= \ netgear_sxk80 \ netgear_wax214 \ netgear_wax218 \ + netgear_wax610 \ + netgear_wax610y \ netgear_wax620 \ netgear_wax630 \ prpl_haze \ @@ -171,7 +173,7 @@ endef # 2. Add $(eval $(call generate-ipq-wifi-package,,)) # # Board files should follow this name structure: -# board-. +# board-. $(eval $(call generate-ipq-wifi-package,8devices_mango,8devices Mango)) $(eval $(call generate-ipq-wifi-package,aliyun_ap8220,Aliyun AP8220)) @@ -202,6 +204,8 @@ $(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2)) $(eval $(call generate-ipq-wifi-package,netgear_sxk80,Netgear SXK80)) $(eval $(call generate-ipq-wifi-package,netgear_wax214,Netgear WAX214)) $(eval $(call generate-ipq-wifi-package,netgear_wax218,Netgear WAX218)) +$(eval $(call generate-ipq-wifi-package,netgear_wax610,Netgear WAX610)) +$(eval $(call generate-ipq-wifi-package,netgear_wax610y,Netgear WAX610Y)) $(eval $(call generate-ipq-wifi-package,netgear_wax620,Netgear WAX620)) $(eval $(call generate-ipq-wifi-package,netgear_wax630,Netgear WAX630)) $(eval $(call generate-ipq-wifi-package,qihoo_360v6,Qihoo 360V6)) diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610-base.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610-base.dtsi new file mode 100644 index 00000000000..4dcaa6e1265 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610-base.dtsi @@ -0,0 +1,206 @@ +#include "ipq6018.dtsi" +#include "ipq6018-cp-cpu.dtsi" +#include "ipq6018-ess.dtsi" +#include +#include +#include + +/ { + aliases { + serial0 = &blsp1_uart3; + ethernet0 = &dp5; + label-mac-device = &dp5; + + led-boot = &led_system_blue; + led-failsafe = &led_system_orange; + led-running = &led_system_green; + led-upgrade = &led_system_blue; + }; + + chosen { + stdout-path = "serial0:115200n8"; + /* + * Netgear's U-Boot adds "ubi.mtd=rootfs root=mtd:ubi_rootfs" + * That fails to create a UBI block device, so add it here. + */ + bootargs-append = " root=/dev/ubiblock0_1"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_system_orange: system-orange { + color = ; + function = LED_FUNCTION_POWER; + function-enumerator = <0>; + gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; + }; + + led_system_green: system-green { + color = ; + function = LED_FUNCTION_POWER; + function-enumerator = <1>; + gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; + }; + + led_system_blue: system-blue { + color = ; + function = LED_FUNCTION_POWER; + function-enumerator = <2>; + gpios = <&tlmm 29 GPIO_ACTIVE_HIGH>; + }; + + led_lan_g { + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + }; + + led_lan_o { + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>; + }; + + led_2g_b { + color = ; + function = LED_FUNCTION_WLAN; + function-enumerator = <0>; + gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>; + }; + + led_2g_g { + color = ; + function = LED_FUNCTION_WLAN; + function-enumerator = <1>; + gpios = <&tlmm 33 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0radio"; + }; + + led_5g_b { + color = ; + function = LED_FUNCTION_WLAN; + function-enumerator = <2>; + gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; + }; + + led_5g_g { + color = ; + function = LED_FUNCTION_WLAN; + function-enumerator = <3>; + gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy1radio"; + }; + }; +}; + +&edma { + status = "okay"; +}; + +&switch { + status = "okay"; + + switch_lan_bmp = ; + switch_mac_mode1 = ; + + qcom,port_phyinfo { + port@5 { + port_id = <5>; + phy_address = <24>; + port_mac_sel = "QGMAC_PORT"; + }; + }; +}; + +&tlmm { + mdio_pins: mdio-pins { + mdc { + pins = "gpio64"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mdio { + pins = "gpio65"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + +&mdio { + status = "okay"; + + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 77 GPIO_ACTIVE_LOW>; + + qca8081_24: ethernet-phy@24 { + reg = <24>; + }; +}; + +&dp5 { + status = "okay"; + phy-handle = <&qca8081_24>; + label = "lan"; +}; + +&blsp1_uart3 { + pinctrl-0 = <&serial_3_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&prng { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + status = "okay"; + + nand@0 { + reg = <0>; + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + + partitions { + compatible = "qcom,smem-part"; + }; + }; +}; + +&wifi { + status = "okay"; + + qcom,m3-dump-addr = <0x50100000>; +}; diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610.dts new file mode 100644 index 00000000000..f8530b38e71 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610.dts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: (GPL-2.0+) + +/dts-v1/; + +#include "ipq6010-wax610-base.dtsi" + +/ { + model = "Netgear WAX610"; + compatible = "netgear,wax610", "qcom,ipq6018"; +}; + +&wifi { + qcom,ath11k-calibration-variant = "Netgear-WAX610"; +}; diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610y.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610y.dts new file mode 100644 index 00000000000..79d1ae403d5 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6010-wax610y.dts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: (GPL-2.0+) + +/dts-v1/; + +#include "ipq6010-wax610-base.dtsi" + +/ { + model = "Netgear WAX610Y"; + compatible = "netgear,wax610y", "qcom,ipq6018"; +}; + +&wifi { + qcom,ath11k-calibration-variant = "Netgear-WAX610Y"; +}; diff --git a/target/linux/qualcommax/image/ipq60xx.mk b/target/linux/qualcommax/image/ipq60xx.mk index 41e06c53840..8c77890966d 100644 --- a/target/linux/qualcommax/image/ipq60xx.mk +++ b/target/linux/qualcommax/image/ipq60xx.mk @@ -1,5 +1,15 @@ DEVICE_VARS += TPLINK_SUPPORT_STRING +define Build/wax610-netgear-tar + mkdir $@.tmp + mv $@ $@.tmp/nand-ipq6018-apps.img + md5sum $@.tmp/nand-ipq6018-apps.img | cut -c 1-32 > $@.tmp/nand-ipq6018-apps.md5sum + echo "WAX610" > $@.tmp/metadata.txt + echo "WAX610-610Y_V99.9.9.9" > $@.tmp/version + tar -C $@.tmp/ -cf $@ . + rm -rf $@.tmp +endef + define Device/8devices_mango-dvk $(call Device/FitImageLzma) DEVICE_VENDOR := 8devices @@ -100,6 +110,32 @@ define Device/netgear_wax214 endef TARGET_DEVICES += netgear_wax214 +define Device/netgear_wax610-common + $(call Device/FitImage) + DEVICE_VENDOR := Netgear + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@cp03-c1 + SOC := ipq6010 + KERNEL_IN_UBI := 1 + IMAGES += ui-factory.tar + IMAGE/ui-factory.tar := append-ubi | qsdk-ipq-factory-nand | pad-to 4096 | wax610-netgear-tar +endef + +define Device/netgear_wax610 + $(Device/netgear_wax610-common) + DEVICE_MODEL := WAX610 + DEVICE_PACKAGES := ipq-wifi-netgear_wax610 +endef +TARGET_DEVICES += netgear_wax610 + +define Device/netgear_wax610y + $(Device/netgear_wax610-common) + DEVICE_MODEL := WAX610Y + DEVICE_PACKAGES := ipq-wifi-netgear_wax610y +endef +TARGET_DEVICES += netgear_wax610y + define Device/qihoo_360v6 $(call Device/FitImage) $(call Device/UbiFit) diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network index e45bc32fb47..f907a29ae08 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network +++ b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network @@ -30,6 +30,8 @@ ipq60xx_setup_interfaces() qihoo,360v6) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan" ;; + netgear,wax610|\ + netgear,wax610y|\ tplink,eap610-outdoor) ucidef_set_interface_lan "lan" "dhcp" ;; diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata index 0d240cd4f7a..ef8afd6bd4b 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +++ b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata @@ -35,6 +35,14 @@ case "$FIRMWARE" in netgear,wax214) caldata_extract "0:art" 0x1000 0x10000 ;; + netgear,wax610|\ + netgear,wax610y) + caldata_extract "0:art" 0x1000 0x10000 + label_mac=$(get_mac_label) + ath11k_patch_mac $(macaddr_add $label_mac -30) 1 + ath11k_patch_mac $(macaddr_add $label_mac 2) 0 + ath11k_set_macflag + ;; qihoo,360v6) caldata_extract "0:art" 0x1000 0x10000 label_mac=$(mtd_get_mac_ascii factory lanMac) diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/init.d/bootcount b/target/linux/qualcommax/ipq60xx/base-files/etc/init.d/bootcount index d2039eb0549..5490e653809 100755 --- a/target/linux/qualcommax/ipq60xx/base-files/etc/init.d/bootcount +++ b/target/linux/qualcommax/ipq60xx/base-files/etc/init.d/bootcount @@ -11,5 +11,9 @@ boot() { yuncore,fap650) fw_setenv owrt_bootcount 0 ;; + netgear,wax610|\ + netgear,wax610y) + fw_setenv boot_count 0 + ;; esac } diff --git a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh index 59e5ef7ca2f..bc3603682dd 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh @@ -113,6 +113,8 @@ platform_do_upgrade() { glinet,gl-ax1800|\ glinet,gl-axt1800|\ netgear,wax214|\ + netgear,wax610|\ + netgear,wax610y|\ qihoo,360v6) nand_do_upgrade "$1" ;;