From b61ecb7d756b9302fa4e1463f47a591f0a81028e Mon Sep 17 00:00:00 2001 From: Chukun Pan Date: Sat, 26 Aug 2023 23:29:20 +0800 Subject: [PATCH] ipq807x: add support for CMCC RM2-6 Hardware specifications: SoC: Qualcomm IPQ8070A RAM: 512MB of DDR3 Flash: 256MB Micron NAND Ethernet: 2x 1G RJ45 port WiFi1: QCN5024 2x2 2.4GHz WiFi2: QCN5054 2x2 5GHz Fan: 1x GPIO controlled Button: Reset, WPS Flash instructions: Upload factory.bin in stock firmware's upgrade page. Signed-off-by: Chukun Pan Reviewed-by: Robert Marko --- package/firmware/ipq-wifi/Makefile | 2 + .../arm64/boot/dts/qcom/ipq8070-rm2-6.dts | 310 ++++++++++++++++++ target/linux/qualcommax/image/ipq807x.mk | 15 + .../ipq807x/base-files/etc/board.d/02_network | 3 + .../etc/hotplug.d/firmware/11-ath11k-caldata | 1 + .../etc/hotplug.d/ieee80211/11_fix_wifi_mac | 9 +- .../base-files/lib/upgrade/platform.sh | 1 + 7 files changed, 337 insertions(+), 4 deletions(-) create mode 100644 target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8070-rm2-6.dts diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 5806654ecfb6..34faf5c3db4c 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -30,6 +30,7 @@ endef ALLWIFIBOARDS:= \ arcadyan_aw1000 \ buffalo_wxr-5950ax12 \ + cmcc_rm2-6 \ compex_wpq873 \ dynalink_dl-wrx36 \ edgecore_eap102 \ @@ -141,6 +142,7 @@ endef $(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_rm2-6,CMCC RM2-6)) $(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/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8070-rm2-6.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8070-rm2-6.dts new file mode 100644 index 000000000000..d935e19ad248 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8070-rm2-6.dts @@ -0,0 +1,310 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +/dts-v1/; + +#include "ipq8074-512m.dtsi" +#include "ipq8074-ac-cpu.dtsi" +#include "ipq8074-ess.dtsi" +#include +#include +#include + +/ { + model = "CMCC RM2-6"; + compatible = "cmcc,rm2-6", "qcom,ipq8074"; + + aliases { + serial0 = &blsp1_uart5; + serial1 = &blsp1_uart3; + led-boot = &led_status_red; + led-failsafe = &led_status_red; + led-running = &led_status_blue; + led-upgrade = &led_status_amber; + /* + * Aliases as required by u-boot + * to patch MAC addresses + */ + ethernet0 = &dp4; + ethernet1 = &dp2; + ethernet2 = &dp5; + label-mac-device = &dp4; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs-append = " root=/dev/ubiblock0_1"; + }; + + keys { + compatible = "gpio-keys"; + + wps { + label = "wps"; + linux,code = ; + gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; + }; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 30 GPIO_ACTIVE_LOW>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_status_amber: status-amber { + color = ; + function = LED_FUNCTION_STATUS; + gpio = <&tlmm 25 GPIO_ACTIVE_HIGH>; + }; + + led_status_blue: status-blue { + color = ; + function = LED_FUNCTION_STATUS; + gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>; + }; + + led_status_red: status-red { + color = ; + function = LED_FUNCTION_STATUS; + gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>; + }; + }; + + fan: gpio-fan { + #cooling-cells = <2>; + compatible = "gpio-fan"; + gpio = <&tlmm 29 GPIO_ACTIVE_HIGH>; + gpio-fan,speed-map = <0 0>, <1 1>; + }; +}; + +&tlmm { + mdio_pins: mdio-pins { + mdc { + pins = "gpio68"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mdio { + pins = "gpio69"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + +&blsp1_uart3 { + status = "okay"; +}; + +&blsp1_uart5 { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&prng { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + status = "okay"; + + nand@0 { + reg = <0>; + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + + partitions { + compatible = "qcom,smem-part"; + }; + }; +}; + +&cpu0_thermal { + trips { + cpu0_trip_active: cpu-active { + temperature = <60000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cpu-active { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu0_trip_active>; + }; + }; +}; + +&cpu1_thermal { + trips { + cpu1_trip_active: cpu-active { + temperature = <60000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cpu-active { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu1_trip_active>; + }; + }; +}; + +&cpu2_thermal { + trips { + cpu2_trip_active: cpu-active { + temperature = <60000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cpu-active { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu2_trip_active>; + }; + }; +}; + +&cpu3_thermal { + trips { + cpu3_trip_active: cpu-active { + temperature = <60000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cpu-active { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cpu3_trip_active>; + }; + }; +}; + +&cluster_thermal { + trips { + cluster_active: cluster-active { + temperature = <60000>; + hysteresis = <2000>; + type = "active"; + }; + }; + + cooling-maps { + cluster-active { + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + trip = <&cluster_active>; + }; + }; +}; + +&mdio { + status = "okay"; + + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; + + ethernet-phy-package@0 { + compatible = "qcom,qca8075-package"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + qca8075_1: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <1>; + }; + + qca8075_3: ethernet-phy@3 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <3>; + }; + + qca8075_4: ethernet-phy@4 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <4>; + }; + }; +}; + +&switch { + status = "okay"; + + switch_lan_bmp = <(ESS_PORT2 | ESS_PORT4)>; + switch_wan_bmp = ; + switch_mac_mode = ; + + qcom,port_phyinfo { + port@2 { + port_id = <2>; + phy_address = <1>; + }; + port@4 { + port_id = <4>; + phy_address = <3>; + }; + port@5 { + port_id = <5>; + phy_address = <4>; + }; + }; +}; + +&edma { + status = "okay"; +}; + +/* + * Directly connect to the Hi5630 + * PLC (Power Line Communication) + */ +&dp2 { + status = "okay"; + phy-handle = <&qca8075_1>; + label = "plc"; +}; + +&dp4 { + status = "okay"; + phy-handle = <&qca8075_3>; + label = "lan"; +}; + +&dp5 { + status = "okay"; + phy-handle = <&qca8075_4>; + label = "wan"; +}; + +&wifi { + status = "okay"; + + qcom,ath11k-calibration-variant = "CMCC-RM2-6"; + qcom,ath11k-fw-memory-mode = <1>; +}; diff --git a/target/linux/qualcommax/image/ipq807x.mk b/target/linux/qualcommax/image/ipq807x.mk index 3a30b161b421..3bbd0b3d112e 100644 --- a/target/linux/qualcommax/image/ipq807x.mk +++ b/target/linux/qualcommax/image/ipq807x.mk @@ -36,6 +36,21 @@ define Device/buffalo_wxr-5950ax12 endef TARGET_DEVICES += buffalo_wxr-5950ax12 +define Device/cmcc_rm2-6 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := CMCC + DEVICE_MODEL := RM2-6 + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@ac02 + SOC := ipq8070 + IMAGES := factory.bin sysupgrade.bin + IMAGE/factory.bin := append-ubi | qsdk-ipq-factory-nand + DEVICE_PACKAGES := ipq-wifi-cmcc_rm2-6 kmod-hwmon-gpiofan +endef +TARGET_DEVICES += cmcc_rm2-6 + define Device/compex_wpq873 $(call Device/FitImage) $(call Device/UbiFit) diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network index f38c4b669844..d24fb235055b 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network +++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network @@ -17,6 +17,9 @@ ipq807x_setup_interfaces() xiaomi,ax9000) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; + cmcc,rm2-6) + ucidef_set_interfaces_lan_wan "lan plc" "wan" + ;; compex,wpq873|\ linksys,mx4200v1|\ linksys,mx4200v2|\ diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata index 85d107079ee5..95011ee568e2 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata @@ -11,6 +11,7 @@ case "$FIRMWARE" in case "$board" in arcadyan,aw1000|\ buffalo,wxr-5950ax12|\ + cmcc,rm2-6|\ compex,wpq873|\ dynalink,dl-wrx36|\ edgecore,eap102|\ diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac index 343e42d6346e..500f01c31f13 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac +++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac @@ -18,6 +18,11 @@ case "$board" in [ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 8 > /sys${DEVPATH}/macaddress [ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) 16 > /sys${DEVPATH}/macaddress ;; + cmcc,rm2-6|\ + zte,mf269) + [ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 2 > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) 3 > /sys${DEVPATH}/macaddress + ;; linksys,mx4200v1|\ linksys,mx4200v2) label_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr) @@ -25,8 +30,4 @@ case "$board" in [ "$PHYNBR" = "1" ] && macaddr_add $label_mac 1 > /sys${DEVPATH}/macaddress [ "$PHYNBR" = "2" ] && macaddr_add $label_mac 3 > /sys${DEVPATH}/macaddress ;; - zte,mf269) - [ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 2 > /sys${DEVPATH}/macaddress - [ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) 3 > /sys${DEVPATH}/macaddress - ;; esac diff --git a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh index 78842e1c4d30..b03a063af38b 100644 --- a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh +++ b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh @@ -44,6 +44,7 @@ platform_pre_upgrade() { platform_do_upgrade() { case "$(board_name)" in arcadyan,aw1000|\ + cmcc,rm2-6|\ compex,wpq873|\ dynalink,dl-wrx36|\ edimax,cax1800|\ -- 2.30.2