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 000000000..f833accaf Binary files /dev/null and b/package/firmware/ipq-wifi/src/board-alibaba_ap4220.qca4019 differ 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 \