From 2f337aa482c2931d2d8359358f79de4b43b8b461 Mon Sep 17 00:00:00 2001 From: Willem Lee <1980490718@qq.com> Date: Sat, 8 Mar 2025 17:06:18 +0800 Subject: [PATCH] ipq40xx:add support for Alibaba AP4220 (#13385) --- package/boot/uboot-envtools/files/ipq40xx | 2 + package/firmware/ipq-wifi/Makefile | 2 + .../ipq-wifi/src/board-alibaba_ap4220.qca4019 | Bin 0 -> 24316 bytes .../ipq40xx/base-files/etc/board.d/02_network | 8 + .../etc/hotplug.d/firmware/11-ath10k-caldata | 10 + .../base-files/lib/upgrade/platform.sh | 2 + .../arm/boot/dts/qcom-ipq4018-ap4220-128m.dts | 12 + .../arm/boot/dts/qcom-ipq4018-ap4220-48m.dts | 12 + .../arm/boot/dts/qcom-ipq4018-ap4220.dtsi | 349 ++++++++++++++++++ target/linux/ipq40xx/image/generic.mk | 24 ++ .../901-arm-boot-add-dts-files.patch | 4 +- 11 files changed, 424 insertions(+), 1 deletion(-) create mode 100755 package/firmware/ipq-wifi/src/board-alibaba_ap4220.qca4019 create mode 100644 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-128m.dts create mode 100644 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-48m.dts create mode 100755 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220.dtsi diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx index 8d993fae3..30d2de754 100644 --- a/package/boot/uboot-envtools/files/ipq40xx +++ b/package/boot/uboot-envtools/files/ipq40xx @@ -32,6 +32,8 @@ ubootenv_mtdinfo () { case "$board" in alfa-network,ap120c-ac|\ +alibaba,ap4220-48m|\ +alibaba,ap4220-128m|\ devolo,magic-2-wifi-next|\ edgecore,ecw5211|\ glinet,gl-a1300 |\ diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index fc021818d..a1d45dded 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -28,6 +28,7 @@ endef # ALLWIFIBOARDS:= \ + alibaba_ap4220 \ aliyun_ap8220 \ arcadyan_aw1000 \ buffalo_wxr-5950ax12 \ @@ -144,6 +145,7 @@ endef # Place files in this directory as board-. # Add $(eval $(call generate-ipq-wifi-package,,)) +$(eval $(call generate-ipq-wifi-package,alibaba_ap4220,Alibaba AP4220)) $(eval $(call generate-ipq-wifi-package,aliyun_ap8220,Aliyun AP8220)) $(eval $(call generate-ipq-wifi-package,arcadyan_aw1000,Arcadyan AW1000)) $(eval $(call generate-ipq-wifi-package,buffalo_wxr-5950ax12,Buffalo WXR-5950AX12)) diff --git a/package/firmware/ipq-wifi/src/board-alibaba_ap4220.qca4019 b/package/firmware/ipq-wifi/src/board-alibaba_ap4220.qca4019 new file mode 100755 index 0000000000000000000000000000000000000000..f833accaf4fb976fe7333bd4a32fa3fedc14bc69 GIT binary patch literal 24316 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 literal 0 HcmV?d00001 diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network index d2177a579..864462487 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -42,6 +42,8 @@ ipq40xx_setup_interfaces() ucidef_add_switch "switch0" \ "0u@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "0u@eth1" "5:wan" ;; + alibaba,ap4220-48m|\ + alibaba,ap4220-128m|\ asus,map-ac2200|\ cilab,meshpoint-one|\ edgecore,ecw5211|\ @@ -170,6 +172,12 @@ ipq40xx_setup_macs() local label_mac="" case "$board" in + alibaba,ap4220-48m|\ + alibaba,ap4220-128m) + wan_mac=$(mtd_get_mac_text product_info 0x40) + lan_mac=$(macaddr_add "$wan_mac" 1) + label_mac="$wan_mac" + ;; 8dev,habanero-dvk) label_mac=$(mtd_get_mac_binary "ART" 0x1006) ;; diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 8fb9d81d3..827468f34 100644 --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -58,6 +58,11 @@ case "$FIRMWARE" in qcom,ap-dk01.1-c1) caldata_extract "ART" 0x1000 0x2f20 ;; + alibaba,ap4220|\ + alibaba,ap4220-48m) + caldata_extract "ART" 0x1000 0x2f20 + ath10k_patch_mac $(macaddr_add "$(mtd_get_mac_text product_info 0x40)" 2) + ;; asus,map-ac2200|\ asus,rt-ac42u|\ asus,rt-ac58u) @@ -143,6 +148,11 @@ case "$FIRMWARE" in qcom,ap-dk01.1-c1) caldata_extract "ART" 0x5000 0x2f20 ;; + alibaba,ap4220|\ + alibaba,ap4220-48m) + caldata_extract "ART" 0x5000 0x2f20 + ath10k_patch_mac $(macaddr_add "$(mtd_get_mac_text product_info 0x40)" 3) + ;; asus,map-ac2200|\ asus,rt-ac58u) caldata_extract_ubi "Factory" 0x5000 0x2f20 diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh index 8ee7cedcf..83aff67d3 100644 --- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh @@ -215,6 +215,8 @@ platform_do_upgrade_mikrotik_nand() { platform_do_upgrade() { case "$(board_name)" in 8dev,jalapeno |\ + alibaba,ap4220-48m|\ + alibaba,ap4220-128m|\ aruba,ap-303 |\ aruba,ap-303h |\ aruba,ap-365 |\ diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-128m.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-128m.dts new file mode 100644 index 000000000..07886f798 --- /dev/null +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-128m.dts @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "qcom-ipq4018-ap4220.dtsi" + +/ { + model = "Alibaba AP4220 128M"; + compatible = "alibaba,ap4220-128m"; +}; + +&nand_rootfs { + reg = <0x0 0x08000000>; +}; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-48m.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-48m.dts new file mode 100644 index 000000000..b2b3dcdc4 --- /dev/null +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220-48m.dts @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "qcom-ipq4018-ap4220.dtsi" + +/ { + model = "Alibaba AP4220 48M"; + compatible = "alibaba,ap4220-48m"; +}; + +&nand_rootfs { + reg = <0x0 0x03000000>; +}; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220.dtsi b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220.dtsi new file mode 100755 index 000000000..689cd2bbf --- /dev/null +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap4220.dtsi @@ -0,0 +1,349 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "qcom-ipq4019.dtsi" +#include +#include +#include + +/ { + aliases { + led-boot = &status; + led-failsafe = &status; + led-running = &status; + led-upgrade = &status; + label-mac-device = &gmac0; + }; + + chosen { + bootargs-append = " root=/dev/ubiblock0_1"; + }; + + soc { + rng@22000 { + status = "okay"; + }; + + ess-psgmii@98000 { + status = "okay"; + }; + + tcsr@1949000 { + compatible = "qcom,tcsr"; + reg = <0x1949000 0x100>; + qcom,wifi_glb_cfg = ; + }; + + tcsr@194b000 { + compatible = "qcom,tcsr"; + reg = <0x194b000 0x100>; + qcom,usb-hsphy-mode-select = ; + }; + + ess_tcsr@1953000 { + compatible = "qcom,tcsr"; + reg = <0x1953000 0x1000>; + qcom,ess-interface-select = ; + }; + + tcsr@1957000 { + compatible = "qcom,tcsr"; + reg = <0x1957000 0x100>; + qcom,wifi_noc_memtype_m0_m2 = ; + }; + + usb2@60f8800 { + status = "okay"; + }; + + usb3@8af8800 { + status = "okay"; + }; + + crypto@8e3a000 { + status = "okay"; + }; + + watchdog@b017000 { + status = "okay"; + }; + + ess-switch@c000000 { + status = "okay"; + }; + + edma@c080000 { + status = "okay"; + }; + }; + + leds { + compatible = "gpio-leds"; + + status: status { + label = "green:status"; + gpios = <&tlmm 5 GPIO_ACTIVE_LOW>; + default-state = "keep"; + }; + + wlan2g { + label = "green:wlan2g"; + gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tpt"; + }; + + wlan5g { + label = "green:wlan5g"; + gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&tlmm 63 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&blsp_dma { + status = "okay"; +}; + +&blsp1_spi1 { + status = "okay"; + + pinctrl-0 = <&spi0_pins>; + pinctrl-names = "default"; + cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>, + <&tlmm 4 GPIO_ACTIVE_HIGH>; + + flash@0 { + reg = <0>; + compatible = "jedec,spi-nor"; + spi-max-frequency = <24000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "SBL1"; + reg = <0x0 0x40000>; + read-only; + }; + + partition@40000 { + label = "MIBIB"; + reg = <0x40000 0x20000>; + read-only; + }; + + partition@60000 { + label = "QSEE"; + reg = <0x60000 0x60000>; + read-only; + }; + + partition@c0000 { + label = "CDT"; + reg = <0xc0000 0x10000>; + read-only; + }; + + partition@d0000 { + label = "DDRPARAMS"; + reg = <0xd0000 0x10000>; + read-only; + }; + + partition@e0000 { + label = "APPSBLENV"; + reg = <0xe0000 0x10000>; + read-only; + }; + + partition@f0000 { + label = "APPSBL"; + reg = <0xf0000 0x80000>; + read-only; + }; + + partition@170000 { + label = "ART"; + reg = <0x170000 0x10000>; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; + + partition@180000 { + label = "product_info"; + reg = <0x00180000 0x00010000>; + read-only; + }; + + partition@190000 { + label = "mtdoops"; + reg = <0x00190000 0x00020000>; + read-only; + }; + + partition@1b0000 { + label = "priv_data1"; + reg = <0x001b0000 0x00010000>; + read-only; + }; + + partition@1c0000 { + label = "priv_data2"; + reg = <0x001c0000 0x00010000>; + read-only; + }; + + partition@1d0000 { + label = "priv_data3"; + reg = <0x001d0000 0x00200000>; + read-only; + }; + }; + }; + + nand@1 { + compatible = "spi-nand"; + reg = <1>; + spi-max-frequency = <24000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + nand_rootfs: partition@0 { + label = "rootfs"; + /* reg defined in 48M/128M variant dts. */ + }; + }; + }; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial0_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&mdio { + status = "okay"; +}; + +&tlmm { + mdio_pins: mdio_pinmux { + mux_mdio { + pins = "gpio53"; + function = "mdio"; + bias-pull-up; + }; + + mux_mdc { + pins = "gpio52"; + function = "mdc"; + bias-pull-up; + }; + }; + + enable-usb-power { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "enable USB2 power"; + }; + + serial0_pins: serial0_pinmux { + mux_uart { + pins = "gpio60", "gpio61"; + function = "blsp_uart0"; + bias-disable; + }; + }; + + spi0_pins: spi0_pinmux { + mux_spi { + function = "blsp_spi0"; + pins = "gpio55", "gpio56", "gpio57"; + drive-strength = <12>; + bias-disable; + }; + + mux_cs { + function = "gpio"; + pins = "gpio54", "gpio4"; + drive-strength = <2>; + bias-disable; + output-high; + }; + }; +}; + +ðphy3 { + qcom,single-led-1000; + qcom,single-led-100; + qcom,single-led-10; +}; + +ðphy4 { + qcom,single-led-1000; + qcom,single-led-100; + qcom,single-led-10; +}; + +&usb3_ss_phy { + status = "okay"; +}; + +&usb3_hs_phy { + status = "okay"; +}; + +&usb2_hs_phy { + status = "okay"; +}; + +&vqmmc { + status = "okay"; +}; + +&wifi0 { + status = "okay"; + nvmem-cell-names = "pre-calibration"; + nvmem-cells = <&precal_art_1000>; + qcom,ath10k-calibration-variant = "Alibaba-AP4220"; +}; + +&wifi1 { + status = "okay"; + nvmem-cell-names = "pre-calibration"; + nvmem-cells = <&precal_art_5000>; + qcom,ath10k-calibration-variant = "Alibaba-AP4220"; +}; diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index b3f596a9c..00209b418 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -164,6 +164,30 @@ define Device/alfa-network_ap120c-ac endef TARGET_DEVICES += alfa-network_ap120c-ac +define Device/alibaba_ap4220 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := Alibaba + DEVICE_MODEL := AP4220 + SOC := qcom-ipq4018 + KERNEL_SIZE := 4096k + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_PACKAGES += ipq-wifi-alibaba_ap4220 +endef + +define Device/alibaba_ap4220-48m + $(call Device/alibaba_ap4220) + DEVICE_VARIANT := 48M +endef +TARGET_DEVICES += alibaba_ap4220-48m + +define Device/alibaba_ap4220-128m + $(call Device/alibaba_ap4220) + DEVICE_VARIANT := 128M +endef +TARGET_DEVICES += alibaba_ap4220-128m + define Device/aruba_glenmorangie $(call Device/FitImageLzma) DEVICE_VENDOR := Aruba diff --git a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch index 6fb0be0ec..0f276aa1b 100644 --- a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch +++ b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch @@ -10,12 +10,14 @@ Signed-off-by: John Crispin --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -904,11 +904,77 @@ dtb-$(CONFIG_ARCH_QCOM) += \ +@@ -904,11 +904,79 @@ dtb-$(CONFIG_ARCH_QCOM) += \ qcom-apq8074-dragonboard.dtb \ qcom-apq8084-ifc6540.dtb \ qcom-apq8084-mtp.dtb \ + qcom-ipq4018-a42.dtb \ + qcom-ipq4018-ap120c-ac.dtb \ ++ qcom-ipq4018-ap4220-48m.dtb \ ++ qcom-ipq4018-ap4220-128m.dtb \ + qcom-ipq4018-dap-2610.dtb \ + qcom-ipq4018-cs-w3-wd1200g-eup.dtb \ + qcom-ipq4018-magic-2-wifi-next.dtb \