From 82b66880f460cec6c7e3f77172316e3f8d313c93 Mon Sep 17 00:00:00 2001 From: JiaY-shi Date: Tue, 19 Dec 2023 22:01:38 +0800 Subject: [PATCH] QualcommAX: ipq60xx: add cmiot ax18 support (NOT TEST) --- package/firmware/ipq-wifi/Makefile | 1 + .../ipq-wifi/src/board-cmiot_ax18.ipq6018 | Bin 0 -> 787208 bytes .../arch/arm64/boot/dts/qcom/ipq6018-ax18.dts | 71 +++++ .../arm64/boot/dts/qcom/ipq6018-cmiot.dtsi | 245 ++++++++++++++++++ target/linux/qualcommax/image/ipq60xx.mk | 13 + .../ipq60xx/base-files/etc/board.d/01_leds | 5 + .../ipq60xx/base-files/etc/board.d/02_network | 3 + .../etc/hotplug.d/firmware/11-ath11-caldata | 1 + .../base-files/lib/upgrade/platform.sh | 1 + 9 files changed, 340 insertions(+) create mode 100644 package/firmware/ipq-wifi/src/board-cmiot_ax18.ipq6018 create mode 100644 target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-ax18.dts create mode 100644 target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-cmiot.dtsi diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index f7cfe3b36ba10..18dcb5c3d8949 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -152,6 +152,7 @@ $(eval $(call generate-ipq-wifi-package,8devices_mango,8devices Mango)) $(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,cmiot_ax18,CMIOT AX18)) $(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-cmiot_ax18.ipq6018 b/package/firmware/ipq-wifi/src/board-cmiot_ax18.ipq6018 new file mode 100644 index 0000000000000000000000000000000000000000..5436c2c3f5ba9a7bce3691a5bb44f582717c5423 GIT binary patch literal 787208 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%0DFU(#|?ljHC2(v3xK`Jku|phVDGa}j|TwzEm#Bq z`!8nojR4s1z?uNCKY}#?V1EV+17M#r^VS1kvb2Ii^#GWeS)?8S%Vg&D0AMy|bshk$ zh&A*20I)JxHUMA?!NLGoC72%oTPD3v-Z}tmCF()|SdCOo-WC9?R=SbA5ddtRi7mYV zm``G}b^y%JK7A1YEGX?FUjP6LaSyFd04%~$`+@*iRCF#Y);9rQ_eed|*a3h&AXQMK2LO9SI!%pX0PHaL(AWlmonYo~1;CE75`Gr| zb{uuh0NCGyH2`2I!6E?IvtTU%*bD3>&;)>0aMXcD0PII>8E6B*ej?>lpdA2vRl0%# ztpM2Tu#5m;KKXqL_yDjsP`3d9dlM`SfV~aY0)Rcq>$*JxfSr=IQXmR|dD&-u008?4 z?dkxq55U|2*oPQV5CHoabshlhG*~kL_K8$Q0Ve>~&3ouT001+~?^4hSfMv?RreFvF z%i`lh&<}uFakK~mUf~w)gaEL`@(v0%0AST<*8+g8 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 + pinctrl-names = "default"; + + led_power: power { + label = "ax18:blue:power"; + gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>; + }; + + wan { + label = "ax18:blue:wan"; + gpio = <&tlmm 74 GPIO_ACTIVE_HIGH>; + }; + + wlan2g { + label = "ax18:blue:wlan2g"; + gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; + }; + + wlan5g { + label = "ax18:blue:wlan5g"; + gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>; + }; + + wps { + label = "ax18:red:wps"; + gpio = <&tlmm 69 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&tlmm { + leds_pins: leds_pins { + mux_0 { + pins = "gpio35", "gpio37", + "gpio69", "gpio74"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_1 { + pins = "gpio73"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + +&wifi { + qcom,ath11k-calibration-variant = "CMIOT-AX18"; +}; \ No newline at end of file diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-cmiot.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-cmiot.dtsi new file mode 100644 index 0000000000000..5bb65bb5be20b --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-cmiot.dtsi @@ -0,0 +1,245 @@ +// SPDX-License-Identifier: (GPL-2.0+) + +/dts-v1/; + +#include "ipq6018.dtsi" +#include "ipq6018-ess.dtsi" +#include "ipq6018-256m.dtsi" + + +#include +#include + +/ { + aliases { + serial0 = &blsp1_uart3; + + /* Aliases as required by u-boot to patch MAC addresses */ + ethernet0 = &dp1; + ethernet1 = &dp2; + ethernet2 = &dp3; + ethernet3 = &dp4; + }; + + chosen { + bootargs-append = " root=/dev/ubiblock0_1 swiotlb=1"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&tlmm 60 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&blsp1_uart3 { + pinctrl-0 = <&serial_3_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&tlmm { + mdio_pins: mdio-pins { + mdc { + pins = "gpio64"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mdio { + pins = "gpio65"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio9"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + reset_button { + pins = "gpio60"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + + +&dp1 { + phy-handle = <&phy_0>; + status = "okay"; +}; + +&dp2 { + phy-handle = <&phy_1>; + status = "okay"; +}; + +&dp3 { + phy-handle = <&phy_2>; + status = "okay"; +}; + +&dp4 { + phy-handle = <&phy_3>; + status = "okay"; +}; + +&edma { + status = "okay"; +}; + +&mdio { + status = "okay"; + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>; + + ethernet_0: ethernet-phy-package@0 { + compatible = "qcom,qca8075-package"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + qcom,package-mode = "psgmii"; + + phy_0: ethernet-phy@0 { + reg = <4>; + }; + + phy_1: ethernet-phy@1 { + reg = <0>; + }; + + phy_2: ethernet-phy@2 { + reg = <1>; + }; + + phy_3: ethernet-phy@3 { + reg = <3>; + }; + }; +}; + +&switch { + status = "okay"; + + qcom,port_phyinfo { + port@0 { + port_id = <0x01>; + phy_address = <0x00>; + }; + port@1 { + port_id = <0x02>; + phy_address = <0x01>; + }; + port@2 { + port_id = <0x04>; + phy_address = <0x03>; + }; + port@3 { + port_id = <0x05>; + phy_address = <0x04>; + }; + }; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + status = "okay"; + + nand@0 { + reg = <0>; + + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&prng { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&qusb_phy_0 { + status = "okay"; +}; + +&qusb_phy_1 { + status = "okay"; +}; + + +&ssphy_0 { + status = "okay"; +}; + +&usb3 { + status = "okay"; +}; + +&usb2 { + status = "okay"; +}; + +&edma { + status = "okay"; +}; + +&rpm { + status = "disabled"; +}; + +&wifi { + status = "okay"; + qcom,ath11k-fw-memory-mode = <2>; + }; + + +&CPU0 { + /delete-property/ cpu-supply; +}; + +&CPU1 { + /delete-property/ cpu-supply; +}; + +&CPU2 { + /delete-property/ cpu-supply; +}; + +&CPU3 { + /delete-property/ cpu-supply; +}; \ No newline at end of file diff --git a/target/linux/qualcommax/image/ipq60xx.mk b/target/linux/qualcommax/image/ipq60xx.mk index 7e4e420c74527..47db86bdb82c6 100644 --- a/target/linux/qualcommax/image/ipq60xx.mk +++ b/target/linux/qualcommax/image/ipq60xx.mk @@ -17,6 +17,19 @@ define Device/EmmcImage IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-to 64k | sysupgrade-tar rootfs=$$$$@ | append-metadata endef +define Device/cmiot_ax18 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := CMIOT + DEVICE_MODEL := AX18 + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@cp03-c1 + SOC := ipq6018 + DEVICE_PACKAGES := ipq-wifi-cmiot_ax18 kmod-fs-ext4 mkf2fs f2fsck kmod-fs-f2fs +endef +TARGET_DEVICES += cmiot_ax18 + define Device/glinet_gl-ax1800 $(call Device/FitImage) $(call Device/UbiFit) diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds index c1d025a34eed3..a557d4901cc3f 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds +++ b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/01_leds @@ -6,6 +6,11 @@ board_config_update board=$(board_name) case "$board" in + cmiot,ax18) + ucidef_set_led_netdev "wan" "WAN" "blue:wan" "eth0" + ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan2g" "wlan1" + ucidef_set_led_netdev "wlan5g" "WLAN5G" "blue:wlan5g" "wlan0" + ;; jdc,ax1800-pro) ucidef_set_led_netdev "wan" "WAN" "net_blue" "eth3" ;; diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network index 95b4f44bcb412..a1f6e23e09840 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network +++ b/target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network @@ -14,6 +14,9 @@ ipq60xx_setup_interfaces() 8devices,mango-dvk) ucidef_set_interfaces_lan_wan "lan1 lan2" "wan" ;; + cmiot,ax18) + ucidef_set_interfaces_lan_wan "eth1 eth2 eth3" "eth0" + ;; glinet,gl-ax1800) ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4" "eth0" ;; diff --git a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata index b9ac4be98269f..3d5058cc7a1b5 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata +++ b/target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11-caldata @@ -12,6 +12,7 @@ case "$FIRMWARE" in 8devices,mango-dvk) caldata_extract "0:ART" 0x1000 0x20000 ;; + cmiot,ax18|\ glinet,gl-ax1800|\ glinet,gl-axt1800|\ netgear,wax214) diff --git a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh index 8526a664cbf90..7d1c201828924 100644 --- a/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh @@ -10,6 +10,7 @@ platform_check_image() { platform_do_upgrade() { case "$(board_name)" in + cmiot,ax18|\ glinet,gl-ax1800|\ glinet,gl-axt1800|\ netgear,wax214)