ipq40xx:add support for Alibaba AP4220 (#13385)

This commit is contained in:
Willem Lee 2025-03-08 17:06:18 +08:00 committed by GitHub
parent ec108ac504
commit 2f337aa482
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 424 additions and 1 deletions

View File

@ -32,6 +32,8 @@ ubootenv_mtdinfo () {
case "$board" in case "$board" in
alfa-network,ap120c-ac|\ alfa-network,ap120c-ac|\
alibaba,ap4220-48m|\
alibaba,ap4220-128m|\
devolo,magic-2-wifi-next|\ devolo,magic-2-wifi-next|\
edgecore,ecw5211|\ edgecore,ecw5211|\
glinet,gl-a1300 |\ glinet,gl-a1300 |\

View File

@ -28,6 +28,7 @@ endef
# <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles> # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
ALLWIFIBOARDS:= \ ALLWIFIBOARDS:= \
alibaba_ap4220 \
aliyun_ap8220 \ aliyun_ap8220 \
arcadyan_aw1000 \ arcadyan_aw1000 \
buffalo_wxr-5950ax12 \ buffalo_wxr-5950ax12 \
@ -144,6 +145,7 @@ endef
# Place files in this directory as board-<devicename>.<qca4019|qca9888|qca9889|qca9984|qca99x0|ipq8074> # Place files in this directory as board-<devicename>.<qca4019|qca9888|qca9889|qca9984|qca99x0|ipq8074>
# Add $(eval $(call generate-ipq-wifi-package,<devicename>,<display name>)) # Add $(eval $(call generate-ipq-wifi-package,<devicename>,<display name>))
$(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,aliyun_ap8220,Aliyun AP8220))
$(eval $(call generate-ipq-wifi-package,arcadyan_aw1000,Arcadyan AW1000)) $(eval $(call generate-ipq-wifi-package,arcadyan_aw1000,Arcadyan AW1000))
$(eval $(call generate-ipq-wifi-package,buffalo_wxr-5950ax12,Buffalo WXR-5950AX12)) $(eval $(call generate-ipq-wifi-package,buffalo_wxr-5950ax12,Buffalo WXR-5950AX12))

Binary file not shown.

View File

@ -42,6 +42,8 @@ ipq40xx_setup_interfaces()
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \
"0u@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "0u@eth1" "5:wan" "0u@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "0u@eth1" "5:wan"
;; ;;
alibaba,ap4220-48m|\
alibaba,ap4220-128m|\
asus,map-ac2200|\ asus,map-ac2200|\
cilab,meshpoint-one|\ cilab,meshpoint-one|\
edgecore,ecw5211|\ edgecore,ecw5211|\
@ -170,6 +172,12 @@ ipq40xx_setup_macs()
local label_mac="" local label_mac=""
case "$board" in 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) 8dev,habanero-dvk)
label_mac=$(mtd_get_mac_binary "ART" 0x1006) label_mac=$(mtd_get_mac_binary "ART" 0x1006)
;; ;;

View File

@ -58,6 +58,11 @@ case "$FIRMWARE" in
qcom,ap-dk01.1-c1) qcom,ap-dk01.1-c1)
caldata_extract "ART" 0x1000 0x2f20 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,map-ac2200|\
asus,rt-ac42u|\ asus,rt-ac42u|\
asus,rt-ac58u) asus,rt-ac58u)
@ -143,6 +148,11 @@ case "$FIRMWARE" in
qcom,ap-dk01.1-c1) qcom,ap-dk01.1-c1)
caldata_extract "ART" 0x5000 0x2f20 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,map-ac2200|\
asus,rt-ac58u) asus,rt-ac58u)
caldata_extract_ubi "Factory" 0x5000 0x2f20 caldata_extract_ubi "Factory" 0x5000 0x2f20

View File

@ -215,6 +215,8 @@ platform_do_upgrade_mikrotik_nand() {
platform_do_upgrade() { platform_do_upgrade() {
case "$(board_name)" in case "$(board_name)" in
8dev,jalapeno |\ 8dev,jalapeno |\
alibaba,ap4220-48m|\
alibaba,ap4220-128m|\
aruba,ap-303 |\ aruba,ap-303 |\
aruba,ap-303h |\ aruba,ap-303h |\
aruba,ap-365 |\ aruba,ap-365 |\

View File

@ -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>;
};

View File

@ -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>;
};

View File

@ -0,0 +1,349 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qcom-ipq4019.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/soc/qcom,tcsr.h>
/ {
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_WIFI_GLB_CFG>;
};
tcsr@194b000 {
compatible = "qcom,tcsr";
reg = <0x194b000 0x100>;
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
};
ess_tcsr@1953000 {
compatible = "qcom,tcsr";
reg = <0x1953000 0x1000>;
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
};
tcsr@1957000 {
compatible = "qcom,tcsr";
reg = <0x1957000 0x100>;
qcom,wifi_noc_memtype_m0_m2 = <TCSR_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 = <KEY_RESTART>;
};
};
};
&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;
};
};
};
&ethphy3 {
qcom,single-led-1000;
qcom,single-led-100;
qcom,single-led-10;
};
&ethphy4 {
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";
};

View File

@ -164,6 +164,30 @@ define Device/alfa-network_ap120c-ac
endef endef
TARGET_DEVICES += alfa-network_ap120c-ac 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 define Device/aruba_glenmorangie
$(call Device/FitImageLzma) $(call Device/FitImageLzma)
DEVICE_VENDOR := Aruba DEVICE_VENDOR := Aruba

View File

@ -10,12 +10,14 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/arch/arm/boot/dts/Makefile --- a/arch/arm/boot/dts/Makefile
+++ b/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-apq8074-dragonboard.dtb \
qcom-apq8084-ifc6540.dtb \ qcom-apq8084-ifc6540.dtb \
qcom-apq8084-mtp.dtb \ qcom-apq8084-mtp.dtb \
+ qcom-ipq4018-a42.dtb \ + qcom-ipq4018-a42.dtb \
+ qcom-ipq4018-ap120c-ac.dtb \ + qcom-ipq4018-ap120c-ac.dtb \
+ qcom-ipq4018-ap4220-48m.dtb \
+ qcom-ipq4018-ap4220-128m.dtb \
+ qcom-ipq4018-dap-2610.dtb \ + qcom-ipq4018-dap-2610.dtb \
+ qcom-ipq4018-cs-w3-wd1200g-eup.dtb \ + qcom-ipq4018-cs-w3-wd1200g-eup.dtb \
+ qcom-ipq4018-magic-2-wifi-next.dtb \ + qcom-ipq4018-magic-2-wifi-next.dtb \