From bf665a29b29a647b51d08b372d0860483e2e4921 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 13 Feb 2025 18:17:57 +0800 Subject: [PATCH] qualcommax: ipq50xx: add CMCC RAX3000Q support --- package/firmware/ipq-wifi/Makefile | 6 +- .../ipq-wifi/src/board-cmcc_rax3000q.ipq5018 | Bin 0 -> 131156 bytes .../ipq-wifi/src/board-cmcc_rax3000q.qcn6122 | Bin 0 -> 131156 bytes .../arm64/boot/dts/qcom/ipq5018-rax3000q.dts | 414 ++++++++++++++++++ target/linux/qualcommax/image/ipq50xx.mk | 13 + .../ipq50xx/base-files/etc/board.d/02_network | 1 + .../etc/hotplug.d/firmware/11-ath11k-caldata | 2 + 7 files changed, 435 insertions(+), 1 deletion(-) create mode 100644 package/firmware/ipq-wifi/src/board-cmcc_rax3000q.ipq5018 create mode 100644 package/firmware/ipq-wifi/src/board-cmcc_rax3000q.qcn6122 create mode 100644 target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-rax3000q.dts diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 50ed49082..24ee81656 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -31,6 +31,7 @@ ALLWIFIBOARDS:= \ aliyun_ap8220 \ arcadyan_aw1000 \ buffalo_wxr-5950ax12 \ + cmcc_rax3000q \ compex_wpq873 \ dynalink_dl-wrx36 \ edgecore_eap102 \ @@ -101,10 +102,12 @@ define ipq-wifi-install-one $(call ipq-wifi-install-ath11-one-to,$(1),$(2),IPQ6018/hw1.0),\ $(if $(filter $(suffix $(1)),.IPQ8074 .ipq8074),\ $(call ipq-wifi-install-ath11-one-to,$(1),$(2),IPQ8074/hw2.0),\ + $(if $(filter $(suffix $(1)),.QCN6122 .qcn6122),\ + $(call ipq-wifi-install-ath11-one-to,$(1),$(2),QCN6122/hw1.0),\ $(if $(filter $(suffix $(1)),.QCN9074 .qcn9074),\ $(call ipq-wifi-install-ath11-one-to,$(1),$(2),QCN9074/hw1.0),\ $(error Unrecognized board-file suffix '$(suffix $(1))' for '$(1)')\ - ))))))))) + )))))))))) endef # Blank line required at end of above define due to foreach context @@ -143,6 +146,7 @@ endef $(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)) +$(eval $(call generate-ipq-wifi-package,cmcc_rax3000q,CMCC RAX3000Q)) $(eval $(call generate-ipq-wifi-package,compex_wpq873,Compex WPQ-873)) $(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36)) $(eval $(call generate-ipq-wifi-package,edgecore_eap102,Edgecore EAP102)) diff --git a/package/firmware/ipq-wifi/src/board-cmcc_rax3000q.ipq5018 b/package/firmware/ipq-wifi/src/board-cmcc_rax3000q.ipq5018 new file mode 100644 index 0000000000000000000000000000000000000000..7411a41d4bf76ed44144c84c0d82e5916a9772db GIT binary patch literal 131156 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%0APtKBDY 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 literal 0 HcmV?d00001 diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-rax3000q.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-rax3000q.dts new file mode 100644 index 000000000..432da2d80 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq5018-rax3000q.dts @@ -0,0 +1,414 @@ +// SPDX-License-Identifier: (GPL-2.0+) + +/dts-v1/; +#include "ipq5018.dtsi" +#include "ipq5018-ess.dtsi" +#include +#include + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "CMCC RAX3000Q"; + compatible = "cmcc,rax3000q", "qcom,ipq5018"; + interrupt-parent = <&intc>; + + aliases { + ethernet1 = &dp2; + label-mac-device = &dp2; + serial0 = &blsp1_uart1; + led-boot = &led_blue; + led-failsafe = &led_blue; + led-running = &led_blue; + led-upgrade = &led_white; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs-append = " root=/dev/ubiblock0_1"; + }; + + keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + + led_blue: status_blue { + label = "blue:status"; + gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>; + }; + + led_white: status_white { + label = "white:status"; + gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>; + }; + }; + + reserved-memory { + tz_appps@4a400000 { + no-map; + reg = <0x0 0x4a400000 0x0 0x400000>; + }; + + q6_mem_regions: q6_mem_regions@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x3000000>; + }; + }; +}; + +&sleep_clk { + clock-frequency = <32000>; +}; + +&xo_board_clk { + clock-frequency = <24000000>; +}; + +&blsp1_uart1 { + pinctrl-0 = <&blsp0_uart_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&dp1 { + status = "okay"; +}; + +&dp2 { + phy-mode = "sgmii"; + status = "okay"; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +&ge_phy { + status = "okay"; +}; + +&mdio0 { + status = "okay"; +}; + +&mdio1 { + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>; + status = "okay"; + + // QCA8337 Phy0 -> WAN + qca8337_0: ethernet-phy@0 { + reg = <0>; + }; + // QCA8337 Phy1 -> LAN1 + qca8337_1: ethernet-phy@1 { + reg = <1>; + }; + // QCA8337 Phy3 -> LAN2 + qca8337_2: ethernet-phy@2 { + reg = <2>; + }; + // QCA8337 Phy2 -> IPQ5018 GE Phy + qca8337_3: ethernet-phy@3 { + reg = <3>; + }; + // QCA8337 Phy4 -> LAN3 + qca8337_4: ethernet-phy@4 { + reg = <4>; + }; + // QCA8337 switch + switch0: ethernet-switch@17 { + compatible = "qca,qca8337"; + reg = <17>; + #address-cells = <1>; + #size-cells = <0>; + switch_cpu_bmp = <0x48>; // CPU port bitmap: 3 6 + switch_lan_bmp = <0x34>; // LAN port bitmap: 2 4 5 + switch_wan_bmp = <0x02>; // WAN port bitmap: 1 + + ports { + #address-cells = <1>; + #size-cells = <0>; + + switch0cpu: port@0 { + reg = <0>; + label = "cpu"; + phy-mode = "sgmii"; + ethernet = <&dp2>; + qca,sgmii-enable-pll; + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + // QCA8337 Phy0 -> WAN + port@1 { + reg = <1>; + label = "wan"; + phy-handle = <&qca8337_0>; + port_id = <1>; + phy_address = <0>; + }; + + // QCA8337 Phy1 -> LAN1 + port@2 { + reg = <2>; + label = "lan1"; + phy-handle = <&qca8337_1>; + port_id = <2>; + phy_address = <1>; + }; + // QCA8337 Phy3 -> LAN2 + port@3 { + reg = <3>; + label = "lan2"; + phy-handle = <&qca8337_2>; + port_id = <3>; + phy_address = <2>; + }; + // QCA8337 Phy4 -> LAN3 + port@5 { + reg = <5>; + label = "lan3"; + phy-handle = <&qca8337_4>; + port_id = <5>; + phy_address = <4>; + }; + }; + }; +}; + +&prng { + status = "okay"; +}; + +&q6v5_wcss { + status = "okay"; + memory-region = <&q6_mem_regions>; + firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt", + "ath11k/IPQ5018/hw1.0/m3_fw.mdt", + "ath11k/qcn6122/hw1.0/m3_fw.mdt"; + + boot-args = + ; + + // IPQ5018 + q6_wcss_pd1: pd-1 { + firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt"; + resets = + <&gcc GCC_WCSSAON_RESET>, + <&gcc GCC_WCSS_BCR>, + <&gcc GCC_CE_BCR>; + reset-names = + "wcss_aon_reset", + "wcss_reset", + "ce_reset"; + clocks = + <&gcc GCC_WCSS_AHB_S_CLK>, + <&gcc GCC_WCSS_ACMT_CLK>, + <&gcc GCC_WCSS_AXI_M_CLK>; + clock-names = + "gcc_wcss_ahb_s_clk", + "gcc_wcss_acmt_clk", + "gcc_wcss_axi_m_clk"; + + interrupts-extended = + <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names = + "fatal", + "ready", + "spawn-ack", + "stop-ack"; + qcom,smem-states = + <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = + "shutdown", + "stop", + "spawn"; + }; + + // QCN6102 5G + q6_wcss_pd3: pd-3 { + firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt"; + interrupts-extended = + <&wcss_smp2p_in 24 0>, + <&wcss_smp2p_in 25 0>, + <&wcss_smp2p_in 28 0>, + <&wcss_smp2p_in 27 0>; + interrupt-names = + "fatal", + "ready", + "spawn-ack", + "stop-ack"; + qcom,smem-states = + <&wcss_smp2p_out 24>, + <&wcss_smp2p_out 25>, + <&wcss_smp2p_out 26>; + qcom,smem-state-names = + "shutdown", + "stop", + "spawn"; + }; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + pinctrl-0 = <&qpic_pins>; + pinctrl-names = "default"; + status = "okay"; + + nand@0 { + compatible = "spi-nand"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + + nand-ecc-engine = <&qpic_nand>; + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + + partitions { + compatible = "qcom,smem-part"; + }; + }; +}; + +&switch { + switch_mac_mode = ; + status = "okay"; + + qcom,port_phyinfo { + // MAC0 -> GE Phy -> QCA8337 Phy2 + port@0 { + port_id = <1>; + mdiobus = <&mdio0>; + phy_address = <7>; + phy_dac = <0x10 0x10>; + }; + // MAC1 ---SGMII---> QCA8337 SerDes + port@1 { + port_id = <2>; + forced-speed = <1000>; + forced-duplex = <1>; + }; + }; +}; + +&tlmm { + blsp0_uart_pins: uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + button_pins: button_pins { + mux { + pins = "gpio27"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + leds_pins: leds_pins { + mux { + pins = "gpio23", "gpio24"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + mdio1_pins: mdio-state { + mdc-pins { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + mdio-pins { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + qpic_pins: qpic-state { + clock-pins { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + cs-pins { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + data-pins { + pins = "gpio4", "gpio5", "gpio6", "gpio7"; + function = "qspi_data"; + drive-strength = <8>; + bias-disable; + }; + }; +}; + +&wifi0 { + qcom,rproc = <&q6_wcss_pd1>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + qcom,ath11k-calibration-variant = "CMCC-RAX3000Q"; + qcom,ath11k-fw-memory-mode = <2>; + qcom,bdf-addr = <0x4c400000>; + status = "okay"; +}; + +&wifi1 { + qcom,rproc = <&q6_wcss_pd3>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; + qcom,ath11k-calibration-variant = "CMCC-RAX3000Q"; + qcom,ath11k-fw-memory-mode = <2>; + qcom,bdf-addr = <0x4d100000>; + qcom,m3-dump-addr = <0x4df00000>; + status = "okay"; +}; diff --git a/target/linux/qualcommax/image/ipq50xx.mk b/target/linux/qualcommax/image/ipq50xx.mk index 0404117e3..2de1b7669 100644 --- a/target/linux/qualcommax/image/ipq50xx.mk +++ b/target/linux/qualcommax/image/ipq50xx.mk @@ -5,6 +5,19 @@ define Device/EmmcImage IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-to 64k | sysupgrade-tar rootfs=$$$$@ | append-metadata endef +define Device/cmcc_rax3000q + $(call Device/FitImage) + $(call Device/UbiFit) + SOC := ipq5018 + DEVICE_VENDOR := CMCC + DEVICE_MODEL := RAX3000Q + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@mp02.1 + DEVICE_PACKAGES := ath11k-firmware-qcn6122 ipq-wifi-cmcc_rax3000q +endef +TARGET_DEVICES += cmcc_rax3000q + define Device/glinet_gl-b3000 $(call Device/FitImage) $(call Device/UbiFit) diff --git a/target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network index 363c446af..0beda336f 100644 --- a/target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network +++ b/target/linux/qualcommax/ipq50xx/base-files/etc/board.d/02_network @@ -10,6 +10,7 @@ ipq50xx_setup_interfaces() glinet,gl-b3000) ucidef_set_interfaces_lan_wan "lan1 lan2" "wan" ;; + cmcc,rax3000q|\ jdcloud,re-cs-03|\ linksys,mx2000|\ linksys,mx5500) diff --git a/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata index 77311502b..e815bc17f 100644 --- a/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +++ b/target/linux/qualcommax/ipq50xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata @@ -9,6 +9,7 @@ board=$(board_name) case "$FIRMWARE" in "ath11k/IPQ5018/hw1.0/cal-ahb-c000000.wifi.bin") case "$board" in + cmcc,rax3000q|\ glinet,gl-b3000) caldata_extract "0:ART" 0x1000 0x20000 addr=$(mtd_get_mac_binary "0:ART" 0x6) @@ -30,6 +31,7 @@ case "$FIRMWARE" in ;; "ath11k/QCN6122/hw1.0/cal-ahb-b00a040.wifi1.bin") case "$board" in + cmcc,rax3000q|\ glinet,gl-b3000) caldata_extract "0:ART" 0x26800 0x20000 addr=$(mtd_get_mac_binary "0:ART" 0x6)