diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index 4505f1c52..d848f777a 100755 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - target: [ 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap7110c-341x', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] + target: [ 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap650c', 'sonicfi_rap7110c-341x', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] steps: - uses: actions/checkout@v3 diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/Makefile b/feeds/ipq807x_v5.4/ath11k-wifi/Makefile index fb1c93778..d158bf6de 100755 --- a/feeds/ipq807x_v5.4/ath11k-wifi/Makefile +++ b/feeds/ipq807x_v5.4/ath11k-wifi/Makefile @@ -53,6 +53,7 @@ ALLWIFIBOARDS:= \ sonicfi-rap630c-311g \ sonicfi-rap630w-311g \ sonicfi-rap630w-312g \ + sonicfi-rap650c \ tplink-ex227 \ tplink-ex447 \ yuncore-ax840 \ @@ -410,6 +411,7 @@ $(eval $(call generate-ath11k-wifi-package,indio-um-510axm-v1,Indio UM-510AXM V1 $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630c-311g,Sonicfi RAP630C 311G)) $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-311g,Sonicfi RAP630W 311G)) $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-312g,Sonicfi RAP630W 312G)) +$(eval $(call generate-ath11k-wifi-package,sonicfi-rap650c,SonicFi RAP650C)) $(eval $(call generate-ath11k-wifi-package,tplink-ex227,TP-Link EX227)) $(eval $(call generate-ath11k-wifi-package,tplink-ex447,TP-Link EX447)) $(eval $(call generate-ath11k-wifi-package,yuncore-ax840,YunCore AX840)) diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/board-sonicfi-rap650c.bin.IPQ8074 b/feeds/ipq807x_v5.4/ath11k-wifi/board-sonicfi-rap650c.bin.IPQ8074 new file mode 100644 index 000000000..637e8fd2f Binary files /dev/null and b/feeds/ipq807x_v5.4/ath11k-wifi/board-sonicfi-rap650c.bin.IPQ8074 differ diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/01_leds b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/01_leds index c3c0d37fb..d53c857c7 100755 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/01_leds +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/01_leds @@ -21,6 +21,7 @@ edgecore,oap103) ucidef_set_led_wlan "power" "POWER" "green:power" "default-on" ;; sonicfi,rap630w-311g|\ +sonicfi,rap650c|\ cybertan,eww631-b1) ucidef_set_led_default "power" "POWER" "sys:blue" "on" ;; diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/02_network b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/02_network index 0be4450b3..70539436d 100755 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/02_network +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/board.d/02_network @@ -24,6 +24,7 @@ qcom_setup_interfaces() edgecore,eap102|\ edgecore,oap102|\ edgecore,oap103|\ + sonicfi,rap650c|\ cig,wf196) ucidef_set_interface_lan "eth1" ucidef_set_interface_wan "eth0" @@ -50,6 +51,16 @@ qcom_setup_macs() ip link set eth1 address $lan_mac ucidef_set_label_macaddr $wan_mac ;; + sonicfi,rap650c) + mac=$(fw_printenv -n BaseMacAddress) + [ -z "$mac" ] && return; + wan_mac=$(macaddr_canonicalize $mac) + lan_mac=$(macaddr_add "$wan_mac" 1) + ucidef_set_network_device_mac eth0 $wan_mac + ucidef_set_network_device_mac eth1 $lan_mac + ip link set eth0 address $wan_mac + ip link set eth1 address $lan_mac + ;; *) wan_mac=$(cat /sys/class/net/eth0/address) lan_mac=$(macaddr_add "$wan_mac" 1) diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata index 8ccb1afe9..baec71c76 100755 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata @@ -16,6 +16,20 @@ ath11k_generate_macs() { echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs } +ath11k_generate_macs_sonicfi() { + mac=$(fw_printenv -n BaseMacAddress) + [ -z "$mac" ] && return; + + touch /lib/firmware/ath11k-macs + eth=$(macaddr_canonicalize $mac) + mac1=$(macaddr_add $eth 2) + mac2=$(macaddr_add $eth 3) + mac3=$(macaddr_add $eth 4) + echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs + echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs + echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs +} + ath11k_generate_macs_wf196() { touch /lib/firmware/ath11k-macs mac=$(grep BaseMacAddress= /dev/mtd18 | cut -dx -f2) @@ -63,6 +77,7 @@ case "$FIRMWARE" in tplink,ex227|\ tplink,ex447|\ yuncore,ax840|\ + sonicfi,rap650c|\ sercomm,wallaby) caldata_extract "0:ART" 0x1000 0x20000 ;; @@ -97,6 +112,9 @@ ath11k-macs) cig,wf196) ath11k_generate_macs_wf196 ;; + sonicfi*) + ath11k_generate_macs_sonicfi + ;; esac ;; ath11k/IPQ8074/hw2.0/board.bin) diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-pdev-stats b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-pdev-stats index 12ac910d8..198a6ecff 100755 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-pdev-stats +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-pdev-stats @@ -10,7 +10,8 @@ case "$board" in ln -s /sys/kernel/debug/ath11k/ipq6018\ hw1.0/mac1/fw_stats/pdev_stats /tmp/pdev_stats_phy2g ;; "edgecore,eap102"|\ - "edgecore,oap103") + "edgecore,oap103"|\ + "sonicfi,rap650c") ln -s /sys/kernel/debug/ath11k/ipq8074\ hw2.0/mac0/fw_stats/pdev_stats /tmp/pdev_stats_phy5g ln -s /sys/kernel/debug/ath11k/ipq8074\ hw2.0/mac1/fw_stats/pdev_stats /tmp/pdev_stats_phy2g ;; diff --git a/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh b/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh index 6d28b9800..4746b06f4 100755 --- a/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x_v5.4/ipq807x/base-files/lib/upgrade/platform.sh @@ -29,6 +29,7 @@ platform_check_image() { edgecore,oap102|\ edgecore,oap103|\ edgecore,eap106|\ + sonicfi,rap650c|\ tplink,ex227|\ tplink,ex447) [ "$magic_long" = "73797375" ] && return 0 @@ -83,5 +84,17 @@ platform_do_upgrade() { fi nand_upgrade_tar "$1" ;; + sonicfi,rap650c) + boot_part=$(fw_printenv -n bootfrom) + [ ${#boot_part} -eq 0 ] && boot_part=0 + echo "Current bootfrom is $boot_part" + if [[ $boot_part == 1 ]]; then + CI_UBIPART="rootfs" + CI_FWSETENV="bootfrom 0" + elif [[ $boot_part == 0 ]]; then + CI_UBIPART="rootfs_1" + CI_FWSETENV="bootfrom 1" + fi + nand_upgrade_tar "$1" esac } diff --git a/feeds/ipq807x_v5.4/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-rap650c.dts b/feeds/ipq807x_v5.4/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-rap650c.dts new file mode 100644 index 000000000..e6a5bcad2 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-rap650c.dts @@ -0,0 +1,650 @@ +// SPDX-License-Identifier: GPL-2.0-only +/dts-v1/; +/* Copyright (c) 2020 The Linux Foundation. All rights reserved. + */ +#include "ipq8074.dtsi" +#include "ipq8074-hk-cpu.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "SonicFi RAP650C"; + compatible = "sonicfi,rap650c", "qcom,ipq8074-ap-hk09", "qcom,ipq8074"; + qcom,msm-id = <0x157 0x0>, <0x187 0x0>; + interrupt-parent = <&intc>; + + aliases { + serial0 = &blsp1_uart5; + /* Aliases as required by u-boot to patch MAC addresses */ + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + }; + + chosen { + stdout-path = "serial0"; + }; + + soc { + pinctrl@1000000 { + button_pins: button_pins { + reset_button { + pins = "gpio57"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + usb_mux_sel_pins: usb_mux_pins { + mux { + pins = "gpio27"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + pcie0_pins: pcie_pins { + pcie0_rst { + pins = "gpio58"; + function = "pcie0_rst"; + drive-strength = <8>; + bias-pull-down; + }; + pcie0_wake { + pins = "gpio59"; + function = "pcie0_wake"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + mdio_pins: mdio_pinmux { + mux_0 { + pins = "gpio68"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + mux_1 { + pins = "gpio69"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + mux_2 { + pins = "gpio25"; + function = "gpio"; + bias-pull-up; + }; + mux_3 { + pins = "gpio44"; + function = "gpio"; + bias-pull-up; + }; + }; + + led_pins: led_pins { + red { + pins = "gpio0"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + green { + pins = "gpio2"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + blue { + pins = "gpio9"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + spi_3_pins: spi_3_pins { + mux { + pins = "gpio50", "gpio52", "gpio53"; + function = "blsp3_spi"; + drive-strength = <8>; + bias-disable; + }; + spi_cs { + pins = "gpio22"; + function = "blsp3_spi2"; + drive-strength = <8>; + bias-disable; + }; + quartz_interrupt { + pins = "gpio47"; + function = "gpio"; + input; + bias-disable; + }; + quartz_reset { + pins = "gpio21"; + function = "gpio"; + output-low; + bias-disable; + }; + }; + }; + + serial@78b3000 { + status = "ok"; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <5>; + reg = <0x3a001800 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <24>; + phy-mode = "sgmii"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <6>; + reg = <0x3a001a00 0x200>; + qcom,mactype = <0>; + local-mac-address = [000000000000]; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <28>; + phy-mode = "sgmii"; + }; + + spi@78b5000 { + status = "ok"; + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + cs-select = <0>; + + m25p80@0 { + compatible = "n25q128a11"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + spi-max-frequency = <50000000>; + }; + }; + + spi@78b8000 { + status = "ok"; + pinctrl-0 = <&spi_3_pins>; + pinctrl-names = "default"; + cs-select = <2>; + quartz-reset-gpio = <&tlmm 21 1>; + + spidev3: spi@3 { + compatible = "qti,spidev"; + reg = <0>; + spi-max-frequency = <24000000>; + }; + }; + + dma@7984000 { + status = "ok"; + }; + + nand@79b0000 { + status = "ok"; + + nand@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; + }; + + qusb@79000 { + status = "ok"; + }; + + ssphy@78000 { + status = "ok"; + }; + + usb3@8A00000 { + status = "ok"; + }; + + qusb@59000 { + status = "ok"; + }; + + ssphy@58000 { + status = "ok"; + }; + + usb3@8C00000 { + status = "ok"; + }; + + phy@84000 { + status = "ok"; + }; + + phy@86000 { + status = "ok"; + }; + + pci@20000000 { + perst-gpio = <&tlmm 58 1>; + status = "ok"; + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + status = "ok"; + + button@1 { + label = "reset"; + linux,code = ; + gpios = <&tlmm 57 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + + red { + label = "sys:red"; + gpio = <&tlmm 0 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + + green { + label = "sys:green"; + gpio = <&tlmm 2 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + + led_power: blue { + label = "sys:blue"; + gpio = <&tlmm 9 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + }; + + mdio: mdio@90000 { + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 37 0 &tlmm 25 0 &tlmm 44 0>; + phy0: ethernet-phy@0 { + reg = <0>; + }; + phy1: ethernet-phy@1 { + reg = <1>; + }; + phy2: ethernet-phy@2 { + reg = <2>; + }; + phy3: ethernet-phy@3 { + reg = <3>; + }; + phy4: ethernet-phy@4 { + reg = <24>; + }; + phy5: ethernet-phy@5 { + reg = <28>; + }; + }; + + ess-switch@3a000000 { + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x3e>; /* lan port bitmap */ + switch_wan_bmp = <0x40>; /* wan port bitmap */ + switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xf>; /* mac mode for uniphy instance2*/ + bm_tick_mode = <0>; /* bm tick mode */ + tm_tick_mode = <0>; /* tm tick mode */ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + port@4 { + port_id = <5>; + phy_address = <24>; + port_mac_sel = "QGMAC_PORT"; + }; + port@5 { + port_id = <6>; + phy_address = <28>; + port_mac_sel = "QGMAC_PORT"; + }; + }; + port_scheduler_resource { + port@0 { + port_id = <0>; + ucast_queue = <0 143>; + mcast_queue = <256 271>; + l0sp = <0 35>; + l0cdrr = <0 47>; + l0edrr = <0 47>; + l1cdrr = <0 7>; + l1edrr = <0 7>; + }; + port@1 { + port_id = <1>; + ucast_queue = <144 159>; + mcast_queue = <272 275>; + l0sp = <36 39>; + l0cdrr = <48 63>; + l0edrr = <48 63>; + l1cdrr = <8 11>; + l1edrr = <8 11>; + }; + port@2 { + port_id = <2>; + ucast_queue = <160 175>; + mcast_queue = <276 279>; + l0sp = <40 43>; + l0cdrr = <64 79>; + l0edrr = <64 79>; + l1cdrr = <12 15>; + l1edrr = <12 15>; + }; + port@3 { + port_id = <3>; + ucast_queue = <176 191>; + mcast_queue = <280 283>; + l0sp = <44 47>; + l0cdrr = <80 95>; + l0edrr = <80 95>; + l1cdrr = <16 19>; + l1edrr = <16 19>; + }; + port@4 { + port_id = <4>; + ucast_queue = <192 207>; + mcast_queue = <284 287>; + l0sp = <48 51>; + l0cdrr = <96 111>; + l0edrr = <96 111>; + l1cdrr = <20 23>; + l1edrr = <20 23>; + }; + port@5 { + port_id = <5>; + ucast_queue = <208 223>; + mcast_queue = <288 291>; + l0sp = <52 55>; + l0cdrr = <112 127>; + l0edrr = <112 127>; + l1cdrr = <24 27>; + l1edrr = <24 27>; + }; + port@6 { + port_id = <6>; + ucast_queue = <224 239>; + mcast_queue = <292 295>; + l0sp = <56 59>; + l0cdrr = <128 143>; + l0edrr = <128 143>; + l1cdrr = <28 31>; + l1edrr = <28 31>; + }; + port@7 { + port_id = <7>; + ucast_queue = <240 255>; + mcast_queue = <296 299>; + l0sp = <60 63>; + l0cdrr = <144 159>; + l0edrr = <144 159>; + l1cdrr = <32 35>; + l1edrr = <32 35>; + }; + }; + port_scheduler_config { + port@0 { + port_id = <0>; + l1scheduler { + group@0 { + sp = <0 1>; /*L0 SPs*/ + /*cpri cdrr epri edrr*/ + cfg = <0 0 0 0>; + }; + }; + l0scheduler { + group@0 { + /*unicast queues*/ + ucast_queue = <0 4 8>; + /*multicast queues*/ + mcast_queue = <256 260>; + /*sp cpri cdrr epri edrr*/ + cfg = <0 0 0 0 0>; + }; + group@1 { + ucast_queue = <1 5 9>; + mcast_queue = <257 261>; + cfg = <0 1 1 1 1>; + }; + group@2 { + ucast_queue = <2 6 10>; + mcast_queue = <258 262>; + cfg = <0 2 2 2 2>; + }; + group@3 { + ucast_queue = <3 7 11>; + mcast_queue = <259 263>; + cfg = <0 3 3 3 3>; + }; + }; + }; + port@1 { + port_id = <1>; + l1scheduler { + group@0 { + sp = <36>; + cfg = <0 8 0 8>; + }; + group@1 { + sp = <37>; + cfg = <1 9 1 9>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <144>; + ucast_loop_pri = <16>; + mcast_queue = <272>; + mcast_loop_pri = <4>; + cfg = <36 0 48 0 48>; + }; + }; + }; + port@2 { + port_id = <2>; + l1scheduler { + group@0 { + sp = <40>; + cfg = <0 12 0 12>; + }; + group@1 { + sp = <41>; + cfg = <1 13 1 13>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <160>; + ucast_loop_pri = <16>; + mcast_queue = <276>; + mcast_loop_pri = <4>; + cfg = <40 0 64 0 64>; + }; + }; + }; + port@3 { + port_id = <3>; + l1scheduler { + group@0 { + sp = <44>; + cfg = <0 16 0 16>; + }; + group@1 { + sp = <45>; + cfg = <1 17 1 17>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <176>; + ucast_loop_pri = <16>; + mcast_queue = <280>; + mcast_loop_pri = <4>; + cfg = <44 0 80 0 80>; + }; + }; + }; + port@4 { + port_id = <4>; + l1scheduler { + group@0 { + sp = <48>; + cfg = <0 20 0 20>; + }; + group@1 { + sp = <49>; + cfg = <1 21 1 21>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <192>; + ucast_loop_pri = <16>; + mcast_queue = <284>; + mcast_loop_pri = <4>; + cfg = <48 0 96 0 96>; + }; + }; + }; + port@5 { + port_id = <5>; + l1scheduler { + group@0 { + sp = <52>; + cfg = <0 24 0 24>; + }; + group@1 { + sp = <53>; + cfg = <1 25 1 25>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <208>; + ucast_loop_pri = <16>; + mcast_queue = <288>; + mcast_loop_pri = <4>; + cfg = <52 0 112 0 112>; + }; + }; + }; + port@6 { + port_id = <6>; + l1scheduler { + group@0 { + sp = <56>; + cfg = <0 28 0 28>; + }; + group@1 { + sp = <57>; + cfg = <1 29 1 29>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <224>; + ucast_loop_pri = <16>; + mcast_queue = <292>; + mcast_loop_pri = <4>; + cfg = <56 0 128 0 128>; + }; + }; + }; + port@7 { + port_id = <7>; + l1scheduler { + group@0 { + sp = <60>; + cfg = <0 32 0 32>; + }; + group@1 { + sp = <61>; + cfg = <1 33 1 33>; + }; + }; + l0scheduler { + group@0 { + ucast_queue = <240>; + ucast_loop_pri = <16>; + mcast_queue = <296>; + cfg = <60 0 144 0 144>; + }; + }; + }; + }; + }; + + nss-macsec0 { + compatible = "qcom,nss-macsec"; + phy_addr = <0x18>; + phy_access_mode = <0>; + mdiobus = <&mdio>; + }; + nss-macsec1 { + compatible = "qcom,nss-macsec"; + phy_addr = <0x1c>; + phy_access_mode = <0>; + mdiobus = <&mdio>; + }; + }; +}; + +&wifi0 { + qcom,board_id = <0x90>; +}; + +&wifi1 { + qcom,board_id = <0x290>; +}; diff --git a/feeds/ipq807x_v5.4/ipq807x/image/ipq807x.mk b/feeds/ipq807x_v5.4/ipq807x/image/ipq807x.mk index fa9ccf0e0..487f3c322 100644 --- a/feeds/ipq807x_v5.4/ipq807x/image/ipq807x.mk +++ b/feeds/ipq807x_v5.4/ipq807x/image/ipq807x.mk @@ -57,6 +57,17 @@ define Device/edgecore_eap106 endef #TARGET_DEVICES += edgecore_eap106 +define Device/sonicfi_rap650c + DEVICE_TITLE := SonicFi RAP650C + DEVICE_DTS := qcom-ipq807x-rap650c + DEVICE_DTS_CONFIG=config@hk09 + SUPPORTED_DEVICES := sonicfi,rap650c + DEVICE_PACKAGES := ath11k-wifi-sonicfi-rap650c uboot-envtools + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/nand-factory.ubi := append-ubi +endef +TARGET_DEVICES += sonicfi_rap650c + define Device/tplink_ex227 DEVICE_TITLE := TP-Link EX227 DEVICE_DTS := qcom-ipq807x-ex227 diff --git a/feeds/qca-wifi-7/ath12k-wifi/Makefile b/feeds/qca-wifi-7/ath12k-wifi/Makefile index dcf1e3df9..0f82c0e00 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/Makefile +++ b/feeds/qca-wifi-7/ath12k-wifi/Makefile @@ -53,11 +53,27 @@ $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for RAP750W_311a endef +define Package/ath12k-wifi-cig-wf189h +$(call Package/ath12k-wifi-default) + TITLE:=board-2.bin for WF189H +endef + define Package/ath12k-wifi-cig-wf189w $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for WF189W endef +define Package/ath12k-wifi-sercomm-ap72tip +$(call Package/ath12k-wifi-default) + TITLE:=board-2.bin for AP72TIP +endef + +define Package/ath12k-wifi-sercomm-ap72tip-v4 +$(call Package/ath12k-wifi-default) + TITLE:=board-2.bin for AP72TIP-v4 +endef + + define Package/ath12k-wifi-cig-wf189/install $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ @@ -96,8 +112,34 @@ define Package/ath12k-wifi-cig-wf189w/install $(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin endef + +define Package/ath12k-wifi-cig-wf189h/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN6432/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.189h.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin + $(INSTALL_DATA) ./board-2.bin.189h.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin + $(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin +endef + +define Package/ath12k-wifi-sercomm-ap72tip/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.ap72tip.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin + $(INSTALL_DATA) ./board-2.bin.ap72tip.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin +endef + +define Package/ath12k-wifi-sercomm-ap72tip-v4/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.ap72tip-v4.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin + $(INSTALL_DATA) ./board-2.bin.ap72tip-v4.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin +endef + $(eval $(call BuildPackage,ath12k-wifi-cig-wf189)) $(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105)) $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap7110c-341x)) $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap750w-311a)) $(eval $(call BuildPackage,ath12k-wifi-cig-wf189w)) +$(eval $(call BuildPackage,ath12k-wifi-cig-wf189h)) +$(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip)) +$(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip-v4)) diff --git a/feeds/qca-wifi-7/ath12k-wifi/ap72tip-IPQ5332.bin b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-IPQ5332.bin new file mode 100644 index 000000000..6d918ff1c Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-IPQ5332.bin differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/ap72tip-QCN92XX.bin b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-QCN92XX.bin new file mode 100644 index 000000000..1b856243a Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-QCN92XX.bin differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-IPQ5332.bin b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-IPQ5332.bin new file mode 100644 index 000000000..6d918ff1c Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-IPQ5332.bin differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-QCN92XX.bin b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-QCN92XX.bin new file mode 100644 index 000000000..1b856243a Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-QCN92XX.bin differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-IPQ5332.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-IPQ5332.json new file mode 100644 index 000000000..d673e529a --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-IPQ5332.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "ap72tip-IPQ5332.bin" + } + ], + "regdb": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "ipq5332.regdb" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-QCN92XX.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-QCN92XX.json new file mode 100644 index 000000000..417fe467d --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-QCN92XX.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "ap72tip-QCN92XX.bin" + } + ], + "regdb": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "qcn92xx.regdb" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-IPQ5332.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-IPQ5332.json new file mode 100644 index 000000000..9d99c4823 --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-IPQ5332.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "ap72tip-v4-IPQ5332.bin" + } + ], + "regdb": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "ipq5332.regdb" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-QCN92XX.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-QCN92XX.json new file mode 100644 index 000000000..9db4316ea --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-QCN92XX.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "ap72tip-v4-QCN92XX.bin" + } + ], + "regdb": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=255" + ], + "data": "qcn92xx.regdb" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.IPQ5332 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.IPQ5332 new file mode 100644 index 000000000..ccfab569c Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.IPQ5332 differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.QCN6432 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.QCN6432 new file mode 100644 index 000000000..8c99c91be Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.QCN6432 differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.IPQ5332 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.IPQ5332 new file mode 100644 index 000000000..e238ea31e Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.IPQ5332 differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.QCN92XX b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.QCN92XX new file mode 100644 index 000000000..7816c6475 Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.QCN92XX differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.IPQ5332 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.IPQ5332 new file mode 100644 index 000000000..e238ea31e Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.IPQ5332 differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.QCN92XX b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.QCN92XX new file mode 100644 index 000000000..7816c6475 Binary files /dev/null and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.QCN92XX differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.IPQ5332 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.IPQ5332 index 0b36ffa66..70be46d21 100755 Binary files a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.IPQ5332 and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.IPQ5332 differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.QCN6432 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.QCN6432 index ab69e80b9..d853cb9ea 100755 Binary files a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.QCN6432 and b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.rap750w_311a.QCN6432 differ diff --git a/feeds/qca-wifi-7/ath12k-wifi/generate.sh b/feeds/qca-wifi-7/ath12k-wifi/generate.sh index e00710172..e19ddd6cb 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/generate.sh +++ b/feeds/qca-wifi-7/ath12k-wifi/generate.sh @@ -9,3 +9,9 @@ $encoder -c board-2-eap105-QCN92XX.json -o board-2.bin.eap105.QCN92XX $encoder -c board-2-rap7110c_341x-IPQ5332.json -o board-2.bin.rap7110c_341x.IPQ5332 $encoder -c board-2-rap7110c_341x-QCN92XX.json -o board-2.bin.rap7110c_341x.QCN92XX + +$encoder -c board-2-ap72tip-IPQ5332.json -o board-2.bin.ap72tip.IPQ5332 +$encoder -c board-2-ap72tip-QCN92XX.json -o board-2.bin.ap72tip.QCN92XX + +$encoder -c board-2-ap72tip-v4-IPQ5332.json -o board-2.bin.ap72tip-v4.IPQ5332 +$encoder -c board-2-ap72tip-v4-QCN92XX.json -o board-2.bin.ap72tip-v4.QCN92XX diff --git a/feeds/qca-wifi-7/hostapd/files/hostapd.sh b/feeds/qca-wifi-7/hostapd/files/hostapd.sh index 6de4d50b4..1192151ba 100644 --- a/feeds/qca-wifi-7/hostapd/files/hostapd.sh +++ b/feeds/qca-wifi-7/hostapd/files/hostapd.sh @@ -126,12 +126,15 @@ hostapd_common_add_device_config() { config_add_int maxassoc config_add_int reg_power_type config_add_boolean stationary_ap + config_add_boolean maxassoc_ignore_probe config_add_string acs_chan_bias + config_add_boolean acs_exclude_dfs config_add_array hostapd_options config_add_int airtime_mode config_add_int mbssid + config_add_boolean rnr_beacon ema hostapd_add_log_config } @@ -142,10 +145,11 @@ hostapd_prepare_device_config() { local base_cfg= - json_get_vars country country3 country_ie beacon_int:100 doth require_mode legacy_rates \ + json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \ rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc \ - mbssid:0 band reg_power_type stationary_ap + rnr_beacon mbssid:0 band reg_power_type stationary_ap acs_exclude_dfs\ + maxassoc_ignore_probe band hostapd_set_log_options base_cfg @@ -155,6 +159,9 @@ hostapd_prepare_device_config() { set_default legacy_rates 0 set_default airtime_mode 0 set_default cell_density 0 + set_default rnr_beacon 0 + set_default ema 0 + set_default acs_exclude_dfs 0 [ -n "$country" ] && { append base_cfg "country_code=$country" "$N" @@ -244,8 +251,14 @@ hostapd_prepare_device_config() { [ -n "$brlist" ] && append base_cfg "basic_rates=$brlist" "$N" append base_cfg "beacon_int=$beacon_int" "$N" [ -n "$rts_threshold" ] && append base_cfg "rts_threshold=$rts_threshold" "$N" + append base_cfg "dtim_period=$dtim_period" "$N" [ "$airtime_mode" -gt 0 ] && append base_cfg "airtime_mode=$airtime_mode" "$N" [ -n "$maxassoc" ] && append base_cfg "iface_max_num_sta=$maxassoc" "$N" + [ "$maxassoc_ignore_probe" -gt 0 ] && append base_cfg "no_probe_resp_if_max_sta=1" "$N" + [ "$rnr_beacon" -gt 0 ] && append base_cfg "rnr_beacon=$rnr_beacon" "$N" + [ "$ema" -gt 0 ] && append base_cfg "ema=$ema" "$N" + [ "$acs_exclude_dfs" -gt 0 ] && append base_cfg "acs_exclude_dfs=$acs_exclude_dfs" "$N" + [ "$mbssid" -gt 0 ] && [ "$mbssid" -le 2 ] && append base_cfg "mbssid=$mbssid" "$N" [ "$band" = "6g" ] && { @@ -287,15 +300,24 @@ hostapd_common_add_bss_config() { config_add_int ieee80211w config_add_int eapol_version - config_add_array auth_server acct_server - config_add_string 'server:host' + config_add_string 'auth_server:host' 'server:host' config_add_string auth_secret key config_add_int 'auth_port:port' 'port:port' + config_add_string acct_server config_add_string acct_secret config_add_int acct_port + + config_add_string acct_server_secondary + config_add_string acct_secret_secondary + config_add_int acct_port_secondary + config_add_int acct_interval + config_add_string auth_server_secondary + config_add_string auth_secret_secondary + config_add_int auth_port_secondary + config_add_int bss_load_update_period chan_util_avg_period config_add_string dae_client @@ -339,8 +361,8 @@ hostapd_common_add_bss_config() { config_add_string lci civic config_add_boolean ieee80211r pmk_r1_push ft_psk_generate_local ft_over_ds - config_add_int r0_key_lifetime reassociation_deadline - config_add_string mobility_domain r1_key_holder + config_add_int r0_key_lifetime reassociation_deadline ft_l2_refresh + config_add_string mobility_domain r1_key_holder ft_key config_add_array r0kh r1kh config_add_int ieee80211w_max_timeout ieee80211w_retry_timeout @@ -391,14 +413,18 @@ hostapd_common_add_bss_config() { config_add_array radius_auth_req_attr config_add_array radius_acct_req_attr - config_add_int eap_server radius_server_auth_port - config_add_string eap_user_file ca_cert server_cert private_key private_key_passwd server_id radius_server_clients + config_add_int eap_server + config_add_string eap_user_file ca_cert server_cert private_key private_key_passwd server_id config_add_boolean fils config_add_string fils_dhcp + config_add_boolean ratelimit config_add_int ocv + config_add_string uci_section + config_add_boolean dynamic_probe_resp + config_add_boolean apup config_add_string apup_peer_ifname_prefix } @@ -433,6 +459,7 @@ hostapd_set_psk() { local ifname="$1" rm -f /var/run/hostapd-${ifname}.psk + touch /var/run/hostapd-${ifname}.psk for_each_station hostapd_set_psk_file ${ifname} } @@ -549,18 +576,83 @@ append_airtime_sta_weight() { [ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N" } -append_auth_server() { - [ -n "$1" ] || return - append bss_conf "auth_server_addr=$1" "$N" - append bss_conf "auth_server_port=$auth_port" "$N" - [ -n "$auth_secret" ] && append bss_conf "auth_server_shared_secret=$auth_secret" "$N" -} +append_radius_server() { -append_acct_server() { - [ -n "$1" ] || return - append bss_conf "acct_server_addr=$1" "$N" - append bss_conf "acct_server_port=$acct_port" "$N" - [ -n "$acct_secret" ] && append bss_conf "acct_server_shared_secret=$acct_secret" "$N" + json_get_vars \ + auth_server auth_secret auth_port \ + auth_server_secondary auth_secret_secondary auth_port_secondary \ + dae_client dae_secret dae_port \ + dynamic_ownip ownip radius_client_addr \ + eap_reauth_period request_cui \ + erp_domain mobility_domain \ + fils_realm fils_dhcp + + set_default dynamic_ownip 1 + + # legacy compatibility + [ -n "$auth_server" ] || json_get_var auth_server server + [ -n "$auth_port" ] || json_get_var auth_port port + [ -n "$auth_secret" ] || json_get_var auth_secret key + + [ "$fils" -gt 0 ] && { + set_default erp_domain "$mobility_domain" + set_default erp_domain "$(echo "$ssid" | md5sum | head -c 8)" + set_default fils_realm "$erp_domain" + + append bss_conf "erp_send_reauth_start=1" "$N" + append bss_conf "erp_domain=$erp_domain" "$N" + append bss_conf "fils_realm=$fils_realm" "$N" + append bss_conf "fils_cache_id=$(echo "$fils_realm" | md5sum | head -c 4)" "$N" + + [ "$fils_dhcp" = "*" ] && { + json_get_values network network + fils_dhcp= + for net in $network; do + fils_dhcp="$(ifstatus "$net" | jsonfilter -e '@.data.dhcpserver')" + [ -n "$fils_dhcp" ] && break + done + + [ -z "$fils_dhcp" -a -n "$network_bridge" -a -n "$network_ifname" ] && \ + fils_dhcp="$(udhcpc -B -n -q -s /lib/netifd/dhcp-get-server.sh -t 1 -i "$network_ifname" 2>/dev/null)" + } + [ -n "$fils_dhcp" ] && append bss_conf "dhcp_server=$fils_dhcp" "$N" + } + + set_default auth_port 1812 + set_default auth_port_secondary 1812 + set_default dae_port 3799 + set_default request_cui 0 + + [ "$eap_server" -eq 0 -a -n "$auth_server" ] && { + append bss_conf "auth_server_addr=$auth_server" "$N" + append bss_conf "auth_server_port=$auth_port" "$N" + append bss_conf "auth_server_shared_secret=$auth_secret" "$N" + } + + [ -n "$auth_server_secondary" ] && { + append bss_conf "auth_server_addr=$auth_server_secondary" "$N" + append bss_conf "auth_server_port=$auth_port_secondary" "$N" + [ -n "$auth_secret_secondary" ] && \ + append bss_conf "auth_server_shared_secret=$auth_secret_secondary" "$N" + } + + [ "$request_cui" -gt 0 ] && append bss_conf "radius_request_cui=$request_cui" "$N" + [ -n "$eap_reauth_period" ] && append bss_conf "eap_reauth_period=$eap_reauth_period" "$N" + + [ -n "$dae_client" -a -n "$dae_secret" ] && { + append bss_conf "radius_das_port=$dae_port" "$N" + append bss_conf "radius_das_client=$dae_client $dae_secret" "$N" + } + json_for_each_item append_radius_auth_req_attr radius_auth_req_attr + + if [ -n "$ownip" ]; then + append bss_conf "own_ip_addr=$ownip" "$N" + elif [ "$dynamic_ownip" -gt 0 ]; then + append bss_conf "dynamic_own_ip_addr=$dynamic_ownip" "$N" + fi + + [ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N" + [ "$macfilter" = radius ] && append bss_conf "macaddr_acl=2" "$N" } hostapd_set_bss_options() { @@ -570,7 +662,7 @@ hostapd_set_bss_options() { wireless_vif_parse_encryption - local bss_conf bss_md5sum ft_key + local bss_conf bss_md5sum local wep_rekey wpa_group_rekey wpa_pair_rekey wpa_master_rekey wpa_key_mgmt json_get_vars \ @@ -581,13 +673,14 @@ hostapd_set_bss_options() { wps_independent wps_device_type wps_device_name wps_manufacturer wps_pin \ macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ - acct_secret acct_port acct_interval \ + acct_server acct_secret acct_port acct_interval \ + acct_server_secondary acct_secret_secondary acct_port_secondary \ bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \ multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \ ppsk airtime_bss_weight airtime_bss_limit airtime_sta_weight \ multicast_to_unicast_all proxy_arp per_sta_vif \ eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id radius_server_clients radius_server_auth_port \ - vendor_elements fils ocv apup multi_psk + vendor_elements fils ocv apup uci_section dynamic_probe_resp multi_psk set_default fils 0 set_default isolate 0 @@ -604,6 +697,7 @@ hostapd_set_bss_options() { set_default tdls_prohibit 0 set_default eapol_version $((wpa & 1)) set_default acct_port 1813 + set_default acct_port_secondary 1813 set_default bss_load_update_period 60 set_default chan_util_avg_period 600 set_default utf8_ssid 1 @@ -612,6 +706,7 @@ hostapd_set_bss_options() { set_default airtime_bss_weight 0 set_default airtime_bss_limit 0 set_default eap_server 0 + set_default dynamic_probe_resp 0 set_default apup 0 /usr/sbin/hostapd -vfils || fils=0 @@ -638,6 +733,7 @@ hostapd_set_bss_options() { append bss_conf "preamble=$short_preamble" "$N" append bss_conf "wmm_enabled=$wmm" "$N" append bss_conf "ignore_broadcast_ssid=$hidden" "$N" + append bss_conf "dynamic_probe_resp=$dynamic_probe_resp" "$N" append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" append bss_conf "utf8_ssid=$utf8_ssid" "$N" append bss_conf "multi_ap=$multi_ap" "$N" @@ -654,10 +750,22 @@ hostapd_set_bss_options() { [ -n "$nasid" ] && append bss_conf "nas_identifier=$nasid" "$N" - [ -n "$acct_interval" ] && \ - append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" - json_for_each_item append_acct_server acct_server - json_for_each_item append_radius_acct_req_attr radius_acct_req_attr + [ -n "$acct_server" ] && { + append bss_conf "acct_server_addr=$acct_server" "$N" + append bss_conf "acct_server_port=$acct_port" "$N" + [ -n "$acct_secret" ] && \ + append bss_conf "acct_server_shared_secret=$acct_secret" "$N" + [ -n "$acct_interval" ] && \ + append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" + json_for_each_item append_radius_acct_req_attr radius_acct_req_attr + } + + [ -n "$acct_server_secondary" ] && { + append bss_conf "acct_server_addr=$acct_server_secondary" "$N" + append bss_conf "acct_server_port=$acct_port_secondary" "$N" + [ -n "$acct_secret_secondary" ] && \ + append bss_conf "acct_server_shared_secret=$acct_secret_secondary" "$N" + } [ -n "$ocv" ] && append bss_conf "ocv=$ocv" "$N" @@ -690,6 +798,8 @@ hostapd_set_bss_options() { # Here we make the assumption that if we're in open mode # with WPS enabled, we got to be in unconfigured state. wps_not_configured=1 + vlan_possible=1 + append_radius_server ;; psk|sae|psk-sae) json_get_vars key wpa_psk_file @@ -714,74 +824,15 @@ hostapd_set_bss_options() { } [ "$eapol_version" -ge "1" -a "$eapol_version" -le "2" ] && append bss_conf "eapol_version=$eapol_version" "$N" + append_radius_server set_default dynamic_vlan 0 vlan_possible=1 wps_possible=1 ;; - eap|eap2|eap-eap2|eap192) - json_get_vars \ - auth_server auth_secret auth_port \ - dae_client dae_secret dae_port \ - dynamic_ownip ownip radius_client_addr \ - eap_reauth_period request_cui \ - erp_domain mobility_domain \ - fils_realm fils_dhcp - + eap|eap192|eap-eap2|eap2) + append_radius_server # radius can provide VLAN ID for clients vlan_possible=1 - - set_default dynamic_ownip 1 - - # legacy compatibility - [ -n "$auth_server" ] || json_get_var auth_server server - [ -n "$auth_port" ] || json_get_var auth_port port - [ -n "$auth_secret" ] || json_get_var auth_secret key - - [ "$fils" -gt 0 ] && { - set_default erp_domain "$mobility_domain" - set_default erp_domain "$(echo "$ssid" | md5sum | head -c 8)" - set_default fils_realm "$erp_domain" - - append bss_conf "erp_send_reauth_start=1" "$N" - append bss_conf "erp_domain=$erp_domain" "$N" - append bss_conf "fils_realm=$fils_realm" "$N" - append bss_conf "fils_cache_id=$(echo "$fils_realm" | md5sum | head -c 4)" "$N" - - [ "$fils_dhcp" = "*" ] && { - json_get_values network network - fils_dhcp= - for net in $network; do - fils_dhcp="$(ifstatus "$net" | jsonfilter -e '@.data.dhcpserver')" - [ -n "$fils_dhcp" ] && break - done - - [ -z "$fils_dhcp" -a -n "$network_bridge" -a -n "$network_ifname" ] && \ - fils_dhcp="$(udhcpc -B -n -q -s /lib/netifd/dhcp-get-server.sh -t 1 -i "$network_ifname" 2>/dev/null)" - } - [ -n "$fils_dhcp" ] && append bss_conf "dhcp_server=$fils_dhcp" "$N" - } - - set_default auth_port 1812 - set_default dae_port 3799 - set_default request_cui 0 - - [ "$eap_server" -eq 0 ] && json_for_each_item append_auth_server auth_server - [ "$request_cui" -gt 0 ] && append bss_conf "radius_request_cui=$request_cui" "$N" - [ -n "$eap_reauth_period" ] && append bss_conf "eap_reauth_period=$eap_reauth_period" "$N" - - [ -n "$dae_client" -a -n "$dae_secret" ] && { - append bss_conf "radius_das_port=$dae_port" "$N" - append bss_conf "radius_das_client=$dae_client $dae_secret" "$N" - } - json_for_each_item append_radius_auth_req_attr radius_auth_req_attr - - if [ -n "$ownip" ]; then - append bss_conf "own_ip_addr=$ownip" "$N" - elif [ "$dynamic_ownip" -gt 0 ]; then - append bss_conf "dynamic_own_ip_addr=$dynamic_ownip" "$N" - fi - - [ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N" append bss_conf "eapol_key_index_workaround=1" "$N" append bss_conf "ieee8021x=1" "$N" @@ -798,6 +849,7 @@ hostapd_set_bss_options() { append bss_conf "wpa_psk_radius=3" "$N" append_radius_server vlan_possible=1 + ;; esac case "$auth_type" in @@ -921,45 +973,42 @@ hostapd_set_bss_options() { } fi - json_get_vars ieee80211r - set_default ieee80211r 0 if [ "$wpa" -ge "1" ]; then - if [ "$fils" -gt 0 ]; then - json_get_vars fils_realm - set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)" - fi + json_get_vars ieee80211r + set_default ieee80211r 0 - append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N" - - hostapd_append_wpa_key_mgmt - [ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" - fi - - if [ "$wpa" -ge "2" ]; then if [ "$ieee80211r" -gt "0" ]; then - json_get_vars mobility_domain ft_psk_generate_local ft_over_ds reassociation_deadline + json_get_vars mobility_domain ft_psk_generate_local ft_over_ds reassociation_deadline ft_l2_refresh set_default mobility_domain "$(echo "$ssid" | md5sum | head -c 4)" - set_default ft_over_ds 0 + set_default ft_over_ds 1 + set_default ft_l2_refresh 30 set_default reassociation_deadline 1000 + skip_kh_setup=0 case "$auth_type" in - psk) + psk|psk-sae) set_default ft_psk_generate_local 1 + skip_kh_setup="$ft_psk_generate_local" ;; *) set_default ft_psk_generate_local 0 ;; esac + case "$auth_type" in + *sae*) skip_kh_setup=0;; + esac + [ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N" append bss_conf "mobility_domain=$mobility_domain" "$N" append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" append bss_conf "ft_over_ds=$ft_over_ds" "$N" append bss_conf "reassociation_deadline=$reassociation_deadline" "$N" + [ -n "$ft_l2_refresh" ] && append bss_conf "ft_l2_refresh=$ft_l2_refresh" "$N" - if [ "$ft_psk_generate_local" -eq "0" ]; then - json_get_vars r0_key_lifetime r1_key_holder pmk_r1_push + if [ "$skip_kh_setup" -eq "0" ]; then + json_get_vars r0_key_lifetime r1_key_holder pmk_r1_push ft_key json_get_values r0kh r0kh json_get_values r1kh r1kh @@ -971,12 +1020,15 @@ hostapd_set_bss_options() { wireless_setup_vif_failed FT_KEY_CANT_BE_DERIVED return 1 fi - ft_key=`echo -n "$mobility_domain/${auth_secret:-${key}}" | md5sum | awk '{print $1}'` + [ -z "$ft_key" ] && { + key=`echo -n "$mobility_domain/$auth_secret" | md5sum | awk '{print $1}'` - set_default r0kh "ff:ff:ff:ff:ff:ff,*,$ft_key" - set_default r1kh "00:00:00:00:00:00,00:00:00:00:00:00,$ft_key" + set_default r0kh "ff:ff:ff:ff:ff:ff,*,$key" + set_default r1kh "00:00:00:00:00:00,00:00:00:00:00:00,$key" + } } + [ -n "$ft_key" ] && append bss_conf "ft_key=$ft_key" "$N" [ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N" append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N" append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" @@ -989,7 +1041,18 @@ hostapd_set_bss_options() { done fi fi + if [ "$fils" -gt 0 ]; then + json_get_vars fils_realm + set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)" + fi + append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N" + + hostapd_append_wpa_key_mgmt + [ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" + fi + + if [ "$wpa" -ge "2" ]; then if [ -n "$network_bridge" -a "$rsn_preauth" = 1 ]; then set_default auth_cache 1 append bss_conf "rsn_preauth=1" "$N" @@ -1189,6 +1252,8 @@ hostapd_set_bss_options() { append bss_conf "per_sta_vif=$per_sta_vif" "$N" fi + [ -n "$uci_section" ] && append bss_conf "uci_section=$uci_section" "$N" + if [ "$apup" -gt 0 ]; then append bss_conf "apup=$apup" "$N" diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/01_leds b/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/01_leds index e877479cf..e2c35f2ab 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/01_leds +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/01_leds @@ -7,14 +7,14 @@ board_config_update board=$(board_name) case "$board" in +sercomm,ap72tip-v4|\ sercomm,ap72tip) + ucidef_set_led_default "power" "POWER" "blue:status" "on" ucidef_set_led_netdev "wan_link" "wan_link" "green:phy" "eth0" "link" ucidef_set_led_netdev "wan_act" "wan_act" "yellow:phy" "eth0" "rx tx" ;; -sonicfi,rap7110c-341x) - ucidef_set_led_default "power" "POWER" "pwm:blue" "on" - ;; -cig,wf189w) +sonicfi,rap7110c-341x|\ +sonicfi,rap750w-311a) ucidef_set_led_default "power" "POWER" "pwm:blue" "on" ;; esac diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network b/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network index b0495b4e1..37abf9b8d 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/board.d/02_network @@ -22,8 +22,16 @@ ipq53xx_setup_interfaces() ucidef_set_interfaces_lan_wan "" "eth0" ;; cig,wf189w) - ucidef_add_switch "switch1" "5u@eth0" "3:lan" "2:lan" "1:lan" "0u@eth1" "4:wan" + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch1" "0u@eth1" "3:lan" "2:lan" "1:lan" ;; + cig,wf189h) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch1" "0u@eth1" "3:lan" "2:lan" + ;; + sercomm,ap72tip-v4) + ucidef_set_interface_wan "eth0" + ;; esac } @@ -32,6 +40,7 @@ qcom_setup_macs() local board="$1" case $board in cig,wf189w|\ + cig,wf189h|\ cig,wf189) mtd=$(find_mtd_chardev "0:APPSBLENV") [ -z "$mtd" ] && return; @@ -46,12 +55,30 @@ qcom_setup_macs() ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4) ;; + sercomm,ap72tip) + wan_mac=$(cat /sys/class/net/eth0/address) + lan_mac=$(cat /sys/class/net/eth1/address) + ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 2) + ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) + ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4) + ;; edgecore,eap105) wan_mac=$(cat /sys/class/net/eth0/address) lan_mac=$(macaddr_add "$wan_mac" 1) ;; - sonicfi,rap7110c-341x|\ + sonicfi,rap7110c-341x) + wan_mac=$(cat /sys/class/net/eth0/address) + ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1) + ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2) + ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 3) + ;; sonicfi,rap750w-311a) + wan_mac=$(cat /sys/class/net/eth0/address) + lan_mac=$(macaddr_add "$wan_mac" 1) + ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 2) + ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) + ;; + sercomm,ap72tip-v4) wan_mac=$(cat /sys/class/net/eth0/address) ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1) ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2) diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata b/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata index da0be5001..408ec36f6 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata @@ -28,8 +28,10 @@ case "$FIRMWARE" in ath12k/IPQ5332/hw1.0/caldata.bin) case "$board" in cig,wf189w|\ + cig,wf189h|\ cig,wf189|\ edgecore,eap105|\ + sercomm,ap72tip-v4|\ sercomm,ap72tip) caldata_extract "0:ART" 0x1000 0x20000 ;; @@ -45,6 +47,7 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin) case "$board" in cig,wf189|\ edgecore,eap105|\ + sercomm,ap72tip-v4|\ sercomm,ap72tip) caldata_extract "0:ART" 0x58800 0x2d000 ;; @@ -56,12 +59,13 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin) ath12k/QCN6432/hw1.0/caldata_1.bin) case "$board" in sonicfi,rap750w-311a) - caldata_extract "0:ART" 0x26800 0x18800 + caldata_extract "0:ART" 0x12800 0x18800 ;; esac ;; ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi1@c0000000.bin) case "$board" in + cig,wf189h|\ cig,wf189w) caldata_extract "0:ART" 0x26800 0x20000 ;; @@ -69,6 +73,7 @@ ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi1@c0000000.bin) ;; ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi2@c0000000.bin) case "$board" in + cig,wf189h|\ cig,wf189w) caldata_extract "0:ART" 0x58800 0x20000 ;; diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/etc/init.d/smp-affinity b/feeds/qca-wifi-7/ipq53xx/base-files/etc/init.d/smp-affinity new file mode 100755 index 000000000..37d71c848 --- /dev/null +++ b/feeds/qca-wifi-7/ipq53xx/base-files/etc/init.d/smp-affinity @@ -0,0 +1,77 @@ +#!/bin/sh /etc/rc.common + +START=99 + +boot() { + # For CE(assigned 2 core to copy engine) + # using 3 core will cause firmware crash due to bss channel survey timed out + i=0 + cpu_mul=2 + ce="ce" + ce1="ce_" + ce_name="$ce$i" + ce_name1="$ce1$i" + while [ $i -lt 15 ] + do + cpu=1 + for irq_num in `grep -e "$ce_name" -e "$ce_name1" /proc/interrupts | cut -d ':' -f 1` + do + [ -n "$irq_num" ] && echo $cpu > /proc/irq/$irq_num/smp_affinity + cpu=$((cpu * cpu_mul)) + if [ $cpu -gt 4 ] ; then cpu=1; fi + done + i=$((i+1)) + ce_name="$ce$i" + ce_name1="$ce1$i" + done + + #For IPQ5332 2G radio + irq_affinity_num=`grep -E -m1 'reo2host-destination-ring4' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'reo2host-destination-ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'reo2host-destination-ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'reo2host-destination-ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring4' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'reo2ost-exception' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'wbm2host-rx-release' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 'reo2host-status' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + + # 5G and 6G radio + # pci0 and pci1 for Wkiki (two radio and one radio split mode) + # pcic1 and pcic2 are for Pebble + for j in pci0 pci1 pcic1 pcic2; do + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_4 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_5 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_6 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_7 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_0 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_1 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_2 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_11 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_3 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity + irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_8 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` + [ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity + done +} diff --git a/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh b/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh index ade52dfcc..3cfb5b485 100755 --- a/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh +++ b/feeds/qca-wifi-7/ipq53xx/base-files/lib/upgrade/platform.sh @@ -87,6 +87,7 @@ platform_do_upgrade() { board=$(board_name) case $board in cig,wf189w|\ + cig,wf189h|\ cig,wf189) if [ -f /proc/boot_info/bootconfig0/rootfs/upgradepartition ]; then CI_UBIPART="$(cat /proc/boot_info/bootconfig0/rootfs/upgradepartition)" @@ -119,5 +120,9 @@ platform_do_upgrade() { sonicfi_dualimage_check nand_upgrade_tar "$1" ;; + sercomm,ap72tip-v4|\ + sercomm,ap72tip) + nand_upgrade_tar "$1" + ;; esac } diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189.dts index d95ed9d18..13538363f 100644 --- a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189.dts +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189.dts @@ -23,6 +23,10 @@ serial1 = &blsp1_uart1; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; + led-boot = &led_power_green; + led-failsafe = &led_power_red; + led-running = &led_power_green; + led-upgrade = &led_power_green; }; chosen { @@ -40,9 +44,11 @@ uniphyaddr_fixup = <0xC90F014>; mdio_clk_fixup; /* MDIO clock sequence fix up flag */ tip,clk_div = <0xff>; /* MDIO Frequency reduction*/ + limit_rtlphy_10g_ablity; phy0: ethernet-phy@0 { reg = <8>; + compatible ="ethernet-phy-ieee802.3-c45"; }; phy1: ethernet-phy@1 { @@ -178,13 +184,26 @@ pinctrl-0 = <&gpio_leds_default>; pinctrl-names = "default"; - led-0 { - color = ; - function = LED_FUNCTION_WLAN; - gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "phy0tx"; - default-state = "off"; - }; + led_power_blue: led@26 { + label = "status:blue"; + gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>; + max-brightness = <160>; + linux,default-trigger = "none"; + }; + + led_power_green:led@30 { + label = "status:green"; + gpios = <&tlmm 26 GPIO_ACTIVE_HIGH>; + max-brightness = <160>; + linux,default-trigger = "none"; + }; + + led_power_red:led@45 { + label = "status:red"; + gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + max-brightness = <160>; + linux,default-trigger = "none"; + }; }; gpio_keys { @@ -194,9 +213,9 @@ status = "okay"; button@1 { - label = "wps"; - linux,code = ; - gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; + label = "rst"; + linux,code = ; + gpios = <&tlmm 17 GPIO_ACTIVE_LOW>; linux,input-type = <1>; debounce-interval = <60>; }; @@ -462,7 +481,7 @@ }; button_pins: button-state { - pins = "gpio35"; + pins = "gpio17"; function = "gpio"; drive-strength = <8>; bias-pull-up; @@ -481,6 +500,24 @@ bias-pull-up; output-low; }; + + led_pins: led_pins { + mux_1 { + pins = "gpio26"; + function = "gpio"; + drive-strength = <8>; + }; + mux_2 { + pins = "gpio30"; + function = "gpio"; + drive-strength = <8>; + }; + mux_3 { + pins = "gpio45"; + function = "gpio"; + drive-strength = <8>; + }; + }; }; &license_manager { diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189h.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189h.dts new file mode 100644 index 000000000..ce673d787 --- /dev/null +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189h.dts @@ -0,0 +1,777 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * IPQ5332 RDP446 board device tree source + * + * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; + +#include "ipq5332.dtsi" +#include +#include +#include +#include "ipq5332-default-memory.dtsi" + +/ { + model = "CIG WF189H"; + compatible = "cig,wf189h", "qcom,ipq5332-ap-mi04.1", "qcom,ipq5332-rdp446", "qcom,ipq5332"; + + /* 1G Layout for IPQ5332 + QCN6432 + QCN6432 + * +==========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +---------+--------------+-------------------------+ + * | Q6 | | | + * | code/ | 0x4A900000 | 25MB | + * | data | | | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | data | 0x4C200000 | 21MB | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | M3 Dump | 0x4D700000 | 1MB | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | QDSS | 0x4D800000 | 1MB | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | CALDB | 0x4D900000 | 5MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | data | 0x4DE00000 | 21MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | M3 Dump | 0x4F300000 | 1MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | QDSS | 0x4E400000 | 1MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | CALDB | 0x4F500000 | 5MB | + * +---------+--------------+-------------------------+ + * |QCN6432_2| | | + * | data | 0x4FA00000 | 21MB | + * +---------+--------------+-------------------------+ + * |QCN6432_2| | | + * | M3 Dump | 0x50F00000 | 1MB | + * +---------+--------------+-------------------------+ + * |QCN6432_2| | | + * | QDSS | 0x51000000 | 1MB | + * +---------+--------------+-------------------------+ + * |QCN6432_2| | | + * | CALDB | 0x51100000 | 5MB | + * +---------+--------------+-------------------------+ + * | | | | + * | MLO | 0x51600000 | 12MB | + * +==================================================+ + * | | + * | | + * | | + * | Rest of memory for Linux | + * | | + * | | + * | | + * +==================================================+ + */ + + reserved-memory { + + /delete-node/ m3_dump@4cc00000; + /delete-node/ q6_etr_dump@1; + /delete-node/ mlo_global_mem_0@0x4db00000; + /delete-node/ wcnss@4a900000; + /delete-node/ q6_caldb_region@4ce00000; + + q6_mem_regions: q6_mem_regions@4A900000 { + reg = <0x0 0x4a900000 0x0 0x6D00000>; + no-map; + }; + + q6_code_data: q6_code_data@4A900000 { + reg = <0x0 0x4a900000 0x0 0x1900000>; + no-map; + }; + + q6_ipq5332_data: q6_ipq5332_data@4C200000 { + reg = <0x0 0x4C200000 0x0 0x1500000>; + no-map; + }; + + m3_dump: m3_dump@4D700000 { + reg = <0x0 0x4D700000 0x0 0x100000>; + no-map; + }; + + q6_etr_region: q6_etr_dump@4D800000 { + reg = <0x0 0x4D800000 0x0 0x100000>; + no-map; + }; + + q6_ipq5332_caldb: q6_ipq5332_caldb@4D900000 { + reg = <0x0 0x4D900000 0x0 0x500000>; + no-map; + }; + + q6_qcn6432_data_1: q6_qcn6432_data_1@4DE00000 { + reg = <0x0 0x4DE00000 0x0 0x1500000>; + no-map; + }; + + m3_dump_qcn6432_1: m3_dump_qcn6432_1@4F300000 { + reg = <0x0 0x4F300000 0x0 0x100000>; + no-map; + }; + + q6_qcn6432_etr_1: q6_qcn6432_etr_1@4F400000 { + reg = <0x0 0x4F400000 0x0 0x100000>; + no-map; + }; + + q6_qcn6432_caldb_1: q6_qcn6432_caldb_1@4F500000 { + reg = <0x0 0x4F500000 0x0 0x500000>; + no-map; + }; + + q6_qcn6432_data_2: q6_qcn6432_data_2@4FA00000 { + reg = <0x0 0x4FA00000 0x0 0x1500000>; + no-map; + }; + + m3_dump_qcn6432_2: m3_dump_qcn6432_2@50F00000 { + reg = <0x0 0x50F00000 0x0 0x100000>; + no-map; + }; + + q6_qcn6432_etr_2: q6_qcn6432_etr_2@51000000 { + reg = <0x0 0x51000000 0x0 0x100000>; + no-map; + }; + + q6_qcn6432_caldb_2: q6_qcn6432_caldb_2@51100000 { + reg = <0x0 0x51100000 0x0 0x500000>; + no-map; + }; + + mlo_global_mem0: mlo_global_mem_0@51600000 { + reg = <0x0 0x51600000 0x0 0xC00000>; + no-map; + }; + }; + + aliases { + serial0 = &blsp1_uart0; + serial1 = &blsp1_uart1; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + led-boot = &led_power_green; + led-failsafe = &led_power_red; + led-running = &led_power_green; + led-upgrade = &led_power_green; + }; + + chosen { + stdout-path = "serial0"; + }; + + soc@0 { + mdio:mdio@90000 { + pinctrl-0 = <&mdio1_pins &mdio0_pins>; + pinctrl-names = "default"; + /*gpio51 for manhattan reset*/ + phy-reset-gpio = <&tlmm 22 GPIO_ACTIVE_LOW>; + phyaddr_fixup = <0xC90F018>; + uniphyaddr_fixup = <0xC90F014>; + mdio_clk_fixup; /* MDIO clock sequence fix up flag */ + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <1>; + fixup; + }; + phy1: ethernet-phy@1 { + reg = <2>; + fixup; + }; + phy2: ethernet-phy@2 { + reg = <3>; + fixup; + }; + phy3: ethernet-phy@3 { + reg = <4>; + fixup; + }; + + switch0@10 { + compatible = "qca,qca8386"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x10>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "cpu"; + ethernet = <&gmac2>; + dsa-tag-protocol = "qca_4b"; + }; + + port@1 { + reg = <1>; + label = "lan1"; + phy-handle = <&phy0>; + phy-mode = "usxgmii"; + }; + + port@2 { + reg = <2>; + label = "lan2"; + phy-handle = <&phy1>; + phy-mode = "usxgmii"; + }; + + port@3 { + reg = <3>; + label = "lan3"; + phy-handle = <&phy2>; + phy-mode = "usxgmii"; + }; + + port@4 { + reg = <4>; + label = "lan4"; + phy-handle = <&phy3>; + phy-mode = "usxgmii"; + }; + + port@5 { + reg = <5>; + forced-speed = <2500>; + forced-duplex = <1>; + }; + }; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + + led_power_red: red { + label = "pwm:red"; + pwms = <&pwm 3 1250000>; + max-brightness = <160>; + linux,default-trigger = "none"; + }; + + led_power_green: green { + label = "pwm:green"; + pwms = <&pwm 2 1250000>; + max-brightness = <160>; + linux,default-trigger = "none"; + }; + + led_power_blue: blue { + label = "pwm:blue"; + pwms = <&pwm 1 1250000>; + max-brightness = <160>; + linux,default-trigger = "none"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + status = "okay"; + + button@1 { + label = "rst"; + linux,code = ; + gpios = <&tlmm 21 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + ess-instance { + num_devices = <0x2>; + + ess-switch@3a000000 { + pinctrl-names = "default"; + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x2>; /* lan port bitmap */ + switch_wan_bmp = <0x4>; /* wan port bitmap */ + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + forced-speed = <2500>; + forced-duplex = <1>; + }; + port@1 { + port_id = <2>; + phy_address = <4>; + }; + }; + }; + + ess-switch1@1 { + compatible = "qcom,ess-switch-qca8386"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio>; + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0 */ + switch_mac_mode1 = <0xc>; /* mac mode1 for uniphy instance1 */ + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x0e>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ +// link-polling-required = <0>; + fdb_sync = "interrupt"; + link-intr-gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>; + + qcom,port_phyinfo { + port@0 { + port_id = <0>; + forced-speed = <2500>; + forced-duplex = <1>; + }; + port@1 { + port_id = <1>; + phy_address = <1>; + }; + port@2 { + port_id = <2>; + phy_address = <2>; + }; + port@3 { + port_id = <3>; + phy_address = <3>; + }; + }; + + led_source@2 { + source = <2>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + led_source@5 { + source = <5>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + led_source@8 { + source = <8>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + led_source@11 { + source = <11>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a504000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + qcom,mht-dev = <1>; + qcom,is_switch_connected = <1>; + qcom,ppe-offload-disabled = <1>; + phy-mode = "sgmii"; + }; + + gmac2:dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a500000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + qcom,mht-dev = <1>; + qcom,is_switch_connected = <1>; + qcom,ppe-offload-disabled = <1>; + }; + + /* EDMA host driver configuration for the board */ + edma@3ab00000 { + qcom,txdesc-ring-start = <4>; /* Tx desc ring start ID */ + qcom,txdesc-rings = <12>; /* Total number of Tx desc rings to be provisioned */ + qcom,mht-txdesc-rings = <8>; /* Extra Tx desc rings to be provisioned for MHT SW ports */ + qcom,txcmpl-ring-start = <4>; /* Tx complete ring start ID */ + qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */ + qcom,mht-txcmpl-rings = <8>; /* Extra Tx complete rings to be provisioned for mht sw ports. */ + qcom,rxfill-ring-start = <4>; /* Rx fill ring start ID */ + qcom,rxfill-rings = <4>; /* Total number of Rx fill rings to be provisioned */ + qcom,rxdesc-ring-start = <12>; /* Rx desc ring start ID */ + qcom,rxdesc-rings = <4>; /* Total number of Rx desc rings to be provisioned */ + qcom,rx-page-mode = <0>; /* Rx fill ring page mode */ + qcom,tx-map-priority-level = <1>; /* Tx priority level per port */ + qcom,rx-map-priority-level = <1>; /* Rx priority level per core */ + qcom,ppeds-num = <2>; /* Number of PPEDS nodes */ + /* PPE-DS node format: */ + qcom,ppeds-map = <1 1 1 1 32 8>, /* PPEDS Node#0 ring and queue map */ + <2 2 2 2 40 8>; /* PPEDS Node#1 ring and queue map */ + qcom,txdesc-map = <8 9 10 11>, /* Port0 per-core Tx ring map */ + <12 13 14 15>, /* MHT-Port1 per-core Tx ring map */ + <4 5 6 7>, /* MHT-Port2 per-core Tx ring map/packets from vp*/ + <16 17 18 19>, /* MHT-Port3 per-core Tx ring map */ + <20 21 22 23>; /* MHT-Port4 per-core Tx ring map */ + qcom,txdesc-fc-grp-map = <1 2 3 4 5>; /* Per GMAC flow control group map */ + qcom,rxfill-map = <4 5 6 7>; /* Per-core Rx fill ring map */ + qcom,rxdesc-map = <12 13 14 15>; /* Per-core Rx desc ring map */ + qcom,rx-queue-start = <0>; /* Rx queue start */ + qcom,rx-ring-queue-map = <0 8 16 24>, /* Priority 0 queues per-core Rx ring map */ + <1 9 17 25>, /* Priority 1 queues per-core Rx ring map */ + <2 10 18 26>, /* Priority 2 queues per-core Rx ring map */ + <3 11 19 27>, /* Priority 3 queues per-core Rx ring map */ + <4 12 20 28>, /* Priority 4 queues per-core Rx ring map */ + <5 13 21 29>, /* Priority 5 queues per-core Rx ring map */ + <6 14 22 30>, /* Priority 6 queues per-core Rx ring map */ + <7 15 23 31>; /* Priority 7 queues per-core Rx ring map */ + interrupts = <0 163 4>, /* Tx complete ring id #4 IRQ info */ + <0 164 4>, /* Tx complete ring id #5 IRQ info */ + <0 165 4>, /* Tx complete ring id #6 IRQ info */ + <0 166 4>, /* Tx complete ring id #7 IRQ info */ + <0 167 4>, /* Tx complete ring id #8 IRQ info */ + <0 168 4>, /* Tx complete ring id #9 IRQ info */ + <0 169 4>, /* Tx complete ring id #10 IRQ info */ + <0 170 4>, /* Tx complete ring id #11 IRQ info */ + <0 171 4>, /* Tx complete ring id #12 IRQ info */ + <0 172 4>, /* Tx complete ring id #13 IRQ info */ + <0 173 4>, /* Tx complete ring id #14 IRQ info */ + <0 174 4>, /* Tx complete ring id #15 IRQ info */ + <0 139 4>, /* Rx desc ring id #12 IRQ info */ + <0 140 4>, /* Rx desc ring id #13 IRQ info */ + <0 141 4>, /* Rx desc ring id #14 IRQ info */ + <0 142 4>, /* Rx desc ring id #15 IRQ info */ + <0 191 4>, /* Misc error IRQ info */ + <0 160 4>, /* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ + <0 128 4>, /* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ + <0 152 4>, /* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ + <0 161 4>, /* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ + <0 129 4>, /* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ + <0 153 4>, /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ + <0 175 4>, /* MHT port Tx complete ring id #16 IRQ info */ + <0 176 4>, /* MHT port Tx complete ring id #17 IRQ info */ + <0 177 4>, /* MHT port Tx complete ring id #18 IRQ info */ + <0 178 4>, /* MHT port Tx complete ring id #19 IRQ info */ + <0 179 4>, /* MHT port Tx complete ring id #20 IRQ info */ + <0 180 4>, /* MHT port Tx complete ring id #21 IRQ info */ + <0 181 4>, /* MHT port Tx complete ring id #22 IRQ info */ + <0 182 4>; /* MHT port Tx complete ring id #23 IRQ info */ + }; + + wsi: wsi { + id = <0>; + num_chip = <3>; + status = "okay"; + chip_info = <0 2 1 2>, + <1 2 2 0>, + <2 2 0 1>; + }; + + q6v5_wcss: remoteproc@d100000 { + boot-args = <0x1 0x4 0x3 0x1 0x2f 0x2>, + <0x1 0x4 0x4 0x2 0x2c 0x2>; + memory-region = <&q6_mem_regions>, + <&mlo_global_mem0>; + + /delete-node/ remoteproc_pd1; + /delete-node/ remoteproc_pd2; + /delete-node/ remoteproc_pd3; + + q6_wcss_pd4: remoteproc_pd4 { + compatible = "qcom,ipq5332-mpd-upd-text"; + firmware = "IPQ5332/q6_fw4.mdt"; + + q6_wcss_pd1: remoteproc_pd1 { + compatible = "qcom,ipq5332-wcss-ahb-mpd"; + firmware = "IPQ5332/q6_fw1.mdt"; + m3_firmware = "IPQ5332/iu_fw.mdt"; + 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"; + }; + + q6_wcss_pd2: remoteproc_pd2 { + compatible = "qcom,ipq5332-wcss-pcie-mpd"; + firmware = "IPQ5332/q6_fw2.mdt"; + m3_firmware = "qcn6432/iu_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 16 0>, + <&wcss_smp2p_in 17 0>, + <&wcss_smp2p_in 20 0>, + <&wcss_smp2p_in 19 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + qcom,smem-states = <&wcss_smp2p_out 16>, + <&wcss_smp2p_out 17>, + <&wcss_smp2p_out 18>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + status = "ok"; + }; + + q6_wcss_pd3: remoteproc_pd3 { + compatible = "qcom,ipq5332-wcss-pcie-mpd"; + firmware = "IPQ5332/q6_fw3.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"; + status = "ok"; + }; + }; + }; + }; +}; + +&blsp1_uart0 { + pinctrl-0 = <&serial_0_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial_1_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&sleep_clk { + clock-frequency = <32000>; +}; + +&xo { + clock-frequency = <24000000>; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + pinctrl-0 = <&qspi_default_state>; + pinctrl-names = "default"; + status = "okay"; + + nandcs@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&tlmm { + qspi_default_state: qspi-default-state { + qspi_clock { + pins = "gpio13"; + function = "qspi_clk"; + drive-strength = <8>; + bias-pull-down; + }; + + qspi_cs { + pins = "gpio12"; + function = "qspi_cs"; + drive-strength = <8>; + bias-pull-up; + }; + + qspi_data { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "qspi_data"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + pwm_pins: pwm_pinmux { + /* PWM LED GREEN */ + mux_1 { + pins = "gpio30"; + function = "pwm1"; + drive-strength = <8>; + }; + /* PWM LED BLUE */ + mux_2 { + pins = "gpio31"; + function = "pwm1"; + drive-strength = <8>; + }; + /* PWM LED RED */ + mux_3 { + pins = "gpio29"; + function = "pwm1"; + drive-strength = <8>; + }; + }; + + serial_1_pins: serial1-pinmux { + pins = "gpio33", "gpio34", "gpio35", "gpio36"; + function = "blsp1_uart2"; + drive-strength = <8>; + bias-pull-up; + }; + + + button_pins: button-state { + pins = "gpio21"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + spi_0_data_clk_pins: spi-0-data-clk-state { + pins = "gpio14", "gpio15", "gpio16"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-down; + }; + + spi_0_cs_pins: spi-0-cs-state { + pins = "gpio17"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-up; + }; + + mdio1_pins: mdio1-state { + mux_0 { + pins = "gpio27"; + function = "mdc1"; + drive-strength = <2>; + bias-pull-up; + }; + mux_1 { + pins = "gpio28"; + function = "mdio1"; + drive-strength = <2>; + bias-pull-up; + }; + }; +}; + +&license_manager { + status = "okay"; +}; + +&pwm { + pinctrl-0 = <&pwm_pins>; + used-pwm-indices = <1>, <1>, <0>, <1>; + pinctrl-names = "default"; + status = "okay"; +}; + +&hs_m31phy_0 { + status = "okay"; +}; + +&wifi0 { + qcom,multipd_arch; + qcom,rproc = <&q6_wcss_pd1>; + qcom,rproc_rpd = <&q6v5_wcss>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + qcom,tgt-mem-mode = <0>; + qcom,bdf-addr = <0x4C200000 0x4C200000 0x4C200000 0x0 0x0 0x0>; + qcom,caldb-addr = <0x4D900000 0x4D900000 0x4D900000 0x0 0x0 0x0>; + qcom,caldb-size = <0x500000>; + qcom,board_id = <0x41>; + mem-region = <&q6_ipq5332_data>; + memory-region = <&q6_ipq5332_data>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <0>; + status = "okay"; +}; + +&wifi1 { + qcom,multipd_arch; + qcom,rproc = <&q6_wcss_pd2>; + qcom,rproc_rpd = <&q6v5_wcss>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; + qcom,tgt-mem-mode = <0>; + qcom,bdf-addr = <0x4DE00000 0x4DE00000 0x4DE00000 0x0 0x0 0x0>; + qcom,caldb-addr = <0x4F500000 0x4F500000 0x4F500000 0x0 0x0 0x0>; + qcom,umac-irq-reset-addr = <0x20000884>; + qcom,caldb-size = <0x500000>; + qcom,board_id = <0x061>; + mem-region = <&q6_qcn6432_data_1>; + memory-region = <&q6_qcn6432_data_1>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <1>; + status = "okay"; + interrupts = ; + interrupt-names = "umac_reset"; +}; + +&wifi2 { + qcom,multipd_arch; + qcom,rproc = <&q6_wcss_pd3>; + qcom,rproc_rpd = <&q6v5_wcss>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; + qcom,tgt-mem-mode = <0>; + qcom,bdf-addr = <0x4FA00000 0x4FA00000 0x4FA00000 0x0 0x0 0x0>; + qcom,caldb-addr = <0x51100000 0x51100000 0x51100000 0x0 0x0 0x0>; + qcom,umac-irq-reset-addr = <0x18000884>; + qcom,caldb-size = <0x500000>; + qcom,board_id = <0x0b1>; + mem-region = <&q6_qcn6432_data_2>; + memory-region = <&q6_qcn6432_data_2>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <2>; + status = "okay"; + interrupts = ; + interrupt-names = "umac_reset"; +}; diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189w.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189w.dts index 33bf479df..f49528a1b 100644 --- a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189w.dts +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189w.dts @@ -166,10 +166,10 @@ serial1 = &blsp1_uart1; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; - led-boot = &led_power; - led-failsafe = &led_power; - led-running = &led_power; - led-upgrade = &led_power; + led-boot = &led_power_green; + led-failsafe = &led_power_red; + led-running = &led_power_green; + led-upgrade = &led_power_green; }; chosen { @@ -261,21 +261,21 @@ pwmleds { compatible = "pwm-leds"; - red { + led_power_red: red { label = "pwm:red"; pwms = <&pwm 3 1250000>; max-brightness = <160>; linux,default-trigger = "none"; }; - green { + led_power_green: green { label = "pwm:green"; pwms = <&pwm 2 1250000>; max-brightness = <160>; linux,default-trigger = "none"; }; - led_power: blue { + led_power_blue: blue { label = "pwm:blue"; pwms = <&pwm 1 1250000>; max-brightness = <160>; @@ -307,7 +307,7 @@ switch_lan_bmp = <0x2>; /* lan port bitmap */ switch_wan_bmp = <0x4>; /* wan port bitmap */ switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ - switch_mac_mode1 = <0xc>; /* mac mode for uniphy instance1*/ + switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ qcom,port_phyinfo { @@ -318,8 +318,7 @@ }; port@1 { port_id = <2>; - forced-speed = <2500>; - forced-duplex = <1>; + phy_address = <4>; }; }; }; @@ -331,9 +330,9 @@ mdio-bus = <&mdio>; switch_mac_mode = <0xc>; /* mac mode for uniphy instance0 */ switch_mac_mode1 = <0xc>; /* mac mode1 for uniphy instance1 */ - switch_cpu_bmp = <0x21>; /* cpu port bitmap */ + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ switch_lan_bmp = <0x0e>; /* lan port bitmap */ - switch_wan_bmp = <0x10>; /* wan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ // link-polling-required = <0>; fdb_sync = "interrupt"; link-intr-gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>; @@ -356,15 +355,6 @@ port_id = <3>; phy_address = <3>; }; - port@4 { - port_id = <4>; - phy_address = <4>; - }; - port@5 { - port_id = <5>; - forced-speed = <2500>; - forced-duplex = <1>; - }; }; led_source@2 { diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip-v4.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip-v4.dts new file mode 100644 index 000000000..2778dd24e --- /dev/null +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip-v4.dts @@ -0,0 +1,591 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * IPQ5332 RDP468 board device tree source + * + * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; + +#include +#include +#include +#include "ipq5332.dtsi" +#include "ipq5332-default-memory.dtsi" + +/ { + model = "Sercomm WiFi-7"; + compatible = "sercomm,ap72tip-v4", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332"; + + aliases { + serial0 = &blsp1_uart0; /*console*/ + serial1 = &blsp1_uart1; /*ble*/ + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + }; + + chosen { + stdout-path = "serial0"; + }; + + soc@0 { + +#if 0 //AQR114C + mdio:mdio@90000 { + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 0 GPIO_ACTIVE_LOW>; + phyaddr_fixup = <0xC90F018>; + uniphyaddr_fixup = <0xC90F014>; + mdio_clk_fixup; /* MDIO clock sequence fix up flag */ + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <24>; + }; + + phy1: ethernet-phy@1 { //aqr114c + reg = <0>; + compatible ="ethernet-phy-ieee802.3-c45"; + }; + }; + + ess-instance { + ess-switch@3a000000 { + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x0>; /* lan port bitmap */ + switch_wan_bmp = <0x6>; /* wan port bitmap */ + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <24>; + mdiobus = <&mdio>; + }; + port@1 { //aqr114c + port_id = <2>; + phy_address = <0>; + mdiobus = <&mdio>; + ethernet-phy-ieee802.3-c45; + }; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a500000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <24>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a504000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + qcom,phy-mdio-addr = <0>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; +#else //SFP + mdio:mdio@90000 { + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + /*gpio0 for napa*/ + phy-reset-gpio = <&tlmm 0 GPIO_ACTIVE_LOW>; + status = "okay"; + phy0: ethernet-phy@0 { + reg = <24>; + }; + }; + ess-instance { + ess-switch@3a000000 { + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x0>; /* lan port bitmap */ + switch_wan_bmp = <0x6>; /* wan port bitmap */ + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1 sfp PORT_WRAPPER_10GBASE_R*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <24>; + mdiobus = <&mdio>; + }; + port@1 { + port_id = <2>; + phy_address = <30>; + media-type = "sfp"; + }; + }; + }; + }; + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a500000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <24>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a504000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <30>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + +#endif + + /* EDMA host driver configuration for the board */ + edma@3ab00000 { + qcom,txdesc-ring-start = <4>; /* Tx desc ring start ID */ + qcom,txdesc-rings = <12>; /* Total number of Tx desc rings to be provisioned */ + qcom,mht-txdesc-rings = <8>; /* Extra Tx desc rings to be provisioned for MHT SW ports */ + qcom,txcmpl-ring-start = <4>; /* Tx complete ring start ID */ + qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */ + qcom,mht-txcmpl-rings = <8>; /* Extra Tx complete rings to be provisioned for mht sw ports. */ + qcom,rxfill-ring-start = <4>; /* Rx fill ring start ID */ + qcom,rxfill-rings = <4>; /* Total number of Rx fill rings to be provisioned */ + qcom,rxdesc-ring-start = <12>; /* Rx desc ring start ID */ + qcom,rxdesc-rings = <4>; /* Total number of Rx desc rings to be provisioned */ + qcom,rx-page-mode = <0>; /* Rx fill ring page mode */ + qcom,tx-map-priority-level = <1>; /* Tx priority level per port */ + qcom,rx-map-priority-level = <1>; /* Rx priority level per core */ + qcom,ppeds-num = <2>; /* Number of PPEDS nodes */ + /* PPE-DS node format: */ + qcom,ppeds-map = <1 1 1 1 32 8>, /* PPEDS Node#0 ring and queue map */ + <2 2 2 2 40 8>; /* PPEDS Node#1 ring and queue map */ + qcom,txdesc-map = <8 9 10 11>, /* Port0 per-core Tx ring map */ + <12 13 14 15>, /* MHT-Port1 per-core Tx ring map */ + <4 5 6 7>, /* MHT-Port2 per-core Tx ring map/packets from vp*/ + <16 17 18 19>, /* MHT-Port3 per-core Tx ring map */ + <20 21 22 23>; /* MHT-Port4 per-core Tx ring map */ + qcom,txdesc-fc-grp-map = <1 2 3 4 5>; /* Per GMAC flow control group map */ + qcom,rxfill-map = <4 5 6 7>; /* Per-core Rx fill ring map */ + qcom,rxdesc-map = <12 13 14 15>; /* Per-core Rx desc ring map */ + qcom,rx-queue-start = <0>; /* Rx queue start */ + qcom,rx-ring-queue-map = <0 8 16 24>, /* Priority 0 queues per-core Rx ring map */ + <1 9 17 25>, /* Priority 1 queues per-core Rx ring map */ + <2 10 18 26>, /* Priority 2 queues per-core Rx ring map */ + <3 11 19 27>, /* Priority 3 queues per-core Rx ring map */ + <4 12 20 28>, /* Priority 4 queues per-core Rx ring map */ + <5 13 21 29>, /* Priority 5 queues per-core Rx ring map */ + <6 14 22 30>, /* Priority 6 queues per-core Rx ring map */ + <7 15 23 31>; /* Priority 7 queues per-core Rx ring map */ + interrupts = <0 163 4>, /* Tx complete ring id #4 IRQ info */ + <0 164 4>, /* Tx complete ring id #5 IRQ info */ + <0 165 4>, /* Tx complete ring id #6 IRQ info */ + <0 166 4>, /* Tx complete ring id #7 IRQ info */ + <0 167 4>, /* Tx complete ring id #8 IRQ info */ + <0 168 4>, /* Tx complete ring id #9 IRQ info */ + <0 169 4>, /* Tx complete ring id #10 IRQ info */ + <0 170 4>, /* Tx complete ring id #11 IRQ info */ + <0 171 4>, /* Tx complete ring id #12 IRQ info */ + <0 172 4>, /* Tx complete ring id #13 IRQ info */ + <0 173 4>, /* Tx complete ring id #14 IRQ info */ + <0 174 4>, /* Tx complete ring id #15 IRQ info */ + <0 139 4>, /* Rx desc ring id #12 IRQ info */ + <0 140 4>, /* Rx desc ring id #13 IRQ info */ + <0 141 4>, /* Rx desc ring id #14 IRQ info */ + <0 142 4>, /* Rx desc ring id #15 IRQ info */ + <0 191 4>, /* Misc error IRQ info */ + <0 160 4>, /* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ + <0 128 4>, /* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ + <0 152 4>, /* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ + <0 161 4>, /* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ + <0 129 4>, /* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ + <0 153 4>, /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ + <0 175 4>, /* MHT port Tx complete ring id #16 IRQ info */ + <0 176 4>, /* MHT port Tx complete ring id #17 IRQ info */ + <0 177 4>, /* MHT port Tx complete ring id #18 IRQ info */ + <0 178 4>, /* MHT port Tx complete ring id #19 IRQ info */ + <0 179 4>, /* MHT port Tx complete ring id #20 IRQ info */ + <0 180 4>, /* MHT port Tx complete ring id #21 IRQ info */ + <0 181 4>, /* MHT port Tx complete ring id #22 IRQ info */ + <0 182 4>; /* MHT port Tx complete ring id #23 IRQ info */ + }; + + leds { + compatible = "gpio-leds"; + + led@25 { + label = "blue:status"; + gpios = <&tca6416 9 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + led@61 { + label = "green:phy"; + gpios = <&tca6416 15 GPIO_ACTIVE_HIGH>; + }; + led@62 { + label = "yellow:phy"; + gpios = <&tca6416 14 GPIO_ACTIVE_HIGH>; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + button@1 { + label = "rst"; + linux,code = ; + gpios = <&tlmm 1 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + wsi: wsi { + id = <0>; + num_chip = <2>; + status = "okay"; + chip_info = <0 1 1>, + <1 1 0>; + }; + }; +}; + +&wifi0 { +// led-gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; + qcom,rproc = <&q6_wcss_pd1>; + qcom,rproc_rpd = <&q6v5_wcss>; + qcom,multipd_arch; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + memory-region = <&q6_region>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <0>; + qcom,board_id = <0x16>; + status = "okay"; +}; + +&qcn9224_pcie1 { + status = "okay"; +}; + +&blsp1_uart0 { + pinctrl-0 = <&serial_0_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial_1_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&blsp1_i2c2 { + clock-frequency = <400000>; + pinctrl-0 = <&i2c_0_pins>; + pinctrl-names = "default"; + status = "okay"; + + tca6416: gpio@20 { + compatible = "ti,tca6416"; + reg = <0x20>; + gpio-controller; + #gpio-cells = <2>; + }; +}; + +&blsp1_spi0 { //nor flash + pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>; + pinctrl-names = "default"; + status = "okay"; + + flash@0 { + compatible = "n25q128a11"; + //, "jedec,spi-nor"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <50000000>; + }; +}; + +&blsp1_spi1 { /*tpm*/ + pinctrl-0 = <&spi_1_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "okay"; + + tpm: spi-tpm@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "st,st33htpm-spi"; + reg = <0>; + spi-max-frequency = <20000000>; + status = "okay"; + }; +}; + +&pcm { + pinctrl-0 = <&audio_pins_pri>; + pinctrl-names = "primary"; + status = "disabled"; +}; + +&sdhc { + bus-width = <4>; + max-frequency = <192000000>; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + non-removable; + pinctrl-0 = <&sdc_default_state>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&sleep_clk { + clock-frequency = <32000>; +}; + +&xo { + clock-frequency = <24000000>; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + pinctrl-0 = <&qspi_default_state>; + pinctrl-names = "default"; + status = "okay"; + + nandcs@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&pcie1_phy_x2 { + status = "okay"; +}; + +&pcie1 { + pinctrl-0 = <&pcie1_default_state>; + pinctrl-names = "default"; + perst-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; + status = "okay"; + + pcie1_rp { + reg = <0 0 0 0 0>; + + qcom,mhi@1 { + reg = <0 0 0 0 0>; + boot-args = <0x2 0x4 0x34 0x3 0x0 0x0 /* MX Rail, GPIO52, Drive strength 0x3 */ + 0x4 0x4 0x18 0x3 0x0 0x0 /* RFA1p2 Rail, GPIO24, Drive strength 0x3 */ + 0x0 0x4 0x0 0x0 0x0 0x0>; /* End of arguments */ + memory-region = <&qcn9224_pcie1>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <1>; + qcom,board_id = <0x100f>; //0x1019->0x100f + }; + }; +}; + +/* PINCTRL */ + +&tlmm { + + audio_pins_pri: audio_pinmux_pri { + mux_1 { + pins = "gpio29"; + function = "audio_pri"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio30"; + function = "audio_pri"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio31"; + function = "audio_pri"; + drive-strength = <4>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio32"; + function = "audio_pri"; + drive-strength = <4>; + bias-pull-down; + }; + }; + + i2c_0_pins: i2c-0-state { + pins = "gpio43", "gpio45"; + function = "blsp2_i2c0"; + drive-strength = <8>; + bias-pull-up; + }; + + spi_1_pins: spi-1-pins { /* tpm */ + pins = "gpio29", "gpio30", "gpio31", "gpio32"; + function = "blsp1_spi0"; + drive-strength = <8>; + bias-pull-down; + }; + + sdc_default_state: sdc-default-state { + clk-pins { + pins = "gpio13"; + function = "sdc_clk"; + drive-strength = <8>; + bias-disable; + }; + + cmd-pins { + pins = "gpio12"; + function = "sdc_cmd"; + drive-strength = <8>; + bias-pull-up; + }; + + data-pins { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "sdc_data"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + spi_0_data_clk_pins: spi-0-data-clk-state { + pins = "gpio14", "gpio15", "gpio16"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-down; + }; + + spi_0_cs_pins: spi-0-cs-state { + pins = "gpio17"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-up; + }; + + qspi_default_state: qspi-default-state { + qspi_clock { + pins = "gpio13"; + function = "qspi_clk"; + drive-strength = <8>; + bias-pull-down; + }; + + qspi_cs { + pins = "gpio12"; + function = "qspi_cs"; + drive-strength = <8>; + bias-pull-up; + }; + + qspi_data { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "qspi_data"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + serial_1_pins: serial1-pinmux { /*ble*/ +// pins = "gpio33", "gpio34", "gpio35", "gpio36"; + pins = "gpio33", "gpio35"; + function = "blsp1_uart2"; + drive-strength = <8>; + bias-pull-up; + }; + +/* gpio_leds_default: gpio-leds-default-state { + pins = "gpio36"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + };*/ + + button_pins: button-state { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + pwm_pins: pwm-state { + pins = "gpio46"; + function = "pwm0"; + drive-strength = <8>; + }; + + pcie1_default_state: pcie1-default-state { + pins = "gpio47"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + output-low; + }; +}; + +&license_manager { + status = "okay"; +}; + +&usb3 { + qcom,multiplexed-phy; + status = "okay"; +}; + +&pwm { + pinctrl-0 = <&pwm_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&hs_m31phy_0 { + status = "okay"; +}; + +&ssuniphy_0 { + status = "okay"; +}; + +//sercomm add +&wifi3 { + /* QCN9224 5G+6G */ + hremote_node = <&qcn9224_pcie1>; + qcom,board_id = <0x100f>; + status = "okay"; +}; diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip.dts new file mode 100644 index 000000000..9c3e783cd --- /dev/null +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip.dts @@ -0,0 +1,601 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * IPQ5332 RDP468 board device tree source + * + * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; + +#include +#include +#include +#include "ipq5332.dtsi" +#include "ipq5332-default-memory.dtsi" + +/ { + model = "Sercomm WiFi-7"; + compatible = "sercomm,ap72tip", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332"; + + aliases { + serial0 = &blsp1_uart0; /*console*/ + serial1 = &blsp1_uart1; /*ble*/ + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + }; + + chosen { + stdout-path = "serial0"; + }; + + soc@0 { + +#if 1 //AQR114C + mdio:mdio@90000 { + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 0 GPIO_ACTIVE_LOW>; + phyaddr_fixup = <0xC90F018>; + uniphyaddr_fixup = <0xC90F014>; + mdio_clk_fixup; /* MDIO clock sequence fix up flag */ + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <24>; + }; + + phy1: ethernet-phy@1 { //aqr114c + reg = <0>; + compatible ="ethernet-phy-ieee802.3-c45"; + }; + }; + + ess-instance { + ess-switch@3a000000 { + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x0>; /* lan port bitmap */ + switch_wan_bmp = <0x6>; /* wan port bitmap */ + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <24>; + mdiobus = <&mdio>; + }; + port@1 { //aqr114c + port_id = <2>; + phy_address = <0>; + mdiobus = <&mdio>; + ethernet-phy-ieee802.3-c45; + }; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a500000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <24>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a504000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + qcom,phy-mdio-addr = <0>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; +#else //SFP + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <1>; + reg = <0x3a500000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <24>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <2>; + reg = <0x3a504000 0x4000>; + qcom,mactype = <1>; + local-mac-address = [000000000000]; + mdio-bus = <&mdio>; + qcom,phy-mdio-addr = <30>; + qcom,link-poll = <1>; + phy-mode = "sgmii"; + }; + + mdio:mdio@90000 { + status = "okay"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + /*gpio0 for napa*/ + phy-reset-gpio = <&tlmm 0 0>; + + phy0: ethernet-phy@0 { + reg = <24>; + }; + }; + + ess-instance { + ess-switch@3a000000 { + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0x0>; /* lan port bitmap */ + switch_wan_bmp = <0x6>; /* wan port bitmap */ + switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1 sfp PORT_WRAPPER_10GBASE_R*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <24>; + }; + port@1 { + port_id = <2>; + phy_address = <30>; + media-type = "sfp"; + }; + }; + }; + }; + +#endif + + /* EDMA host driver configuration for the board */ + edma@3ab00000 { + qcom,txdesc-ring-start = <4>; /* Tx desc ring start ID */ + qcom,txdesc-rings = <12>; /* Total number of Tx desc rings to be provisioned */ + qcom,mht-txdesc-rings = <8>; /* Extra Tx desc rings to be provisioned for MHT SW ports */ + qcom,txcmpl-ring-start = <4>; /* Tx complete ring start ID */ + qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */ + qcom,mht-txcmpl-rings = <8>; /* Extra Tx complete rings to be provisioned for mht sw ports. */ + qcom,rxfill-ring-start = <4>; /* Rx fill ring start ID */ + qcom,rxfill-rings = <4>; /* Total number of Rx fill rings to be provisioned */ + qcom,rxdesc-ring-start = <12>; /* Rx desc ring start ID */ + qcom,rxdesc-rings = <4>; /* Total number of Rx desc rings to be provisioned */ + qcom,rx-page-mode = <0>; /* Rx fill ring page mode */ + qcom,tx-map-priority-level = <1>; /* Tx priority level per port */ + qcom,rx-map-priority-level = <1>; /* Rx priority level per core */ + qcom,ppeds-num = <2>; /* Number of PPEDS nodes */ + /* PPE-DS node format: */ + qcom,ppeds-map = <1 1 1 1 32 8>, /* PPEDS Node#0 ring and queue map */ + <2 2 2 2 40 8>; /* PPEDS Node#1 ring and queue map */ + qcom,txdesc-map = <8 9 10 11>, /* Port0 per-core Tx ring map */ + <12 13 14 15>, /* MHT-Port1 per-core Tx ring map */ + <4 5 6 7>, /* MHT-Port2 per-core Tx ring map/packets from vp*/ + <16 17 18 19>, /* MHT-Port3 per-core Tx ring map */ + <20 21 22 23>; /* MHT-Port4 per-core Tx ring map */ + qcom,txdesc-fc-grp-map = <1 2 3 4 5>; /* Per GMAC flow control group map */ + qcom,rxfill-map = <4 5 6 7>; /* Per-core Rx fill ring map */ + qcom,rxdesc-map = <12 13 14 15>; /* Per-core Rx desc ring map */ + qcom,rx-queue-start = <0>; /* Rx queue start */ + qcom,rx-ring-queue-map = <0 8 16 24>, /* Priority 0 queues per-core Rx ring map */ + <1 9 17 25>, /* Priority 1 queues per-core Rx ring map */ + <2 10 18 26>, /* Priority 2 queues per-core Rx ring map */ + <3 11 19 27>, /* Priority 3 queues per-core Rx ring map */ + <4 12 20 28>, /* Priority 4 queues per-core Rx ring map */ + <5 13 21 29>, /* Priority 5 queues per-core Rx ring map */ + <6 14 22 30>, /* Priority 6 queues per-core Rx ring map */ + <7 15 23 31>; /* Priority 7 queues per-core Rx ring map */ + interrupts = <0 163 4>, /* Tx complete ring id #4 IRQ info */ + <0 164 4>, /* Tx complete ring id #5 IRQ info */ + <0 165 4>, /* Tx complete ring id #6 IRQ info */ + <0 166 4>, /* Tx complete ring id #7 IRQ info */ + <0 167 4>, /* Tx complete ring id #8 IRQ info */ + <0 168 4>, /* Tx complete ring id #9 IRQ info */ + <0 169 4>, /* Tx complete ring id #10 IRQ info */ + <0 170 4>, /* Tx complete ring id #11 IRQ info */ + <0 171 4>, /* Tx complete ring id #12 IRQ info */ + <0 172 4>, /* Tx complete ring id #13 IRQ info */ + <0 173 4>, /* Tx complete ring id #14 IRQ info */ + <0 174 4>, /* Tx complete ring id #15 IRQ info */ + <0 139 4>, /* Rx desc ring id #12 IRQ info */ + <0 140 4>, /* Rx desc ring id #13 IRQ info */ + <0 141 4>, /* Rx desc ring id #14 IRQ info */ + <0 142 4>, /* Rx desc ring id #15 IRQ info */ + <0 191 4>, /* Misc error IRQ info */ + <0 160 4>, /* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ + <0 128 4>, /* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ + <0 152 4>, /* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ + <0 161 4>, /* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ + <0 129 4>, /* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ + <0 153 4>, /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ + <0 175 4>, /* MHT port Tx complete ring id #16 IRQ info */ + <0 176 4>, /* MHT port Tx complete ring id #17 IRQ info */ + <0 177 4>, /* MHT port Tx complete ring id #18 IRQ info */ + <0 178 4>, /* MHT port Tx complete ring id #19 IRQ info */ + <0 179 4>, /* MHT port Tx complete ring id #20 IRQ info */ + <0 180 4>, /* MHT port Tx complete ring id #21 IRQ info */ + <0 181 4>, /* MHT port Tx complete ring id #22 IRQ info */ + <0 182 4>; /* MHT port Tx complete ring id #23 IRQ info */ + }; + + leds { + compatible = "gpio-leds"; + + led@25 { + label = "blue:status"; + gpios = <&tca6416 9 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + led@24 { + label = "red:status"; + gpios = <&tca6416 10 GPIO_ACTIVE_HIGH>; + }; + led_power: led@16 { + label = "green:status"; + gpios = <&tca6416 11 GPIO_ACTIVE_HIGH>; + }; + led@61 { + label = "green:phy"; + gpios = <&tca6416 15 GPIO_ACTIVE_HIGH>; + }; + led@62 { + label = "yellow:phy"; + gpios = <&tca6416 14 GPIO_ACTIVE_HIGH>; + }; + }; +/* + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + button@1 { + label = "rst"; + linux,code = ; + gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + };*/ + + wsi: wsi { + id = <0>; + num_chip = <2>; + status = "okay"; + chip_info = <0 1 1>, + <1 1 0>; + }; + }; +}; + +&wifi0 { +// led-gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; + qcom,rproc = <&q6_wcss_pd1>; + qcom,rproc_rpd = <&q6v5_wcss>; + qcom,multipd_arch; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + memory-region = <&q6_region>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <0>; + qcom,board_id = <0x16>; + status = "okay"; +}; + +&qcn9224_pcie1 { + status = "okay"; +}; + +&blsp1_uart0 { + pinctrl-0 = <&serial_0_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial_1_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&blsp1_i2c2 { + clock-frequency = <400000>; + pinctrl-0 = <&i2c_0_pins>; + pinctrl-names = "default"; + status = "okay"; + + tca6416: gpio@20 { + compatible = "ti,tca6416"; + reg = <0x20>; + gpio-controller; + #gpio-cells = <2>; + }; +}; + +&blsp1_spi0 { //nor flash + pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>; + pinctrl-names = "default"; + status = "okay"; + + flash@0 { + compatible = "n25q128a11"; + //, "jedec,spi-nor"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <50000000>; + }; +}; + +&blsp1_spi1 { /*tpm*/ + pinctrl-0 = <&spi_1_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "okay"; + + tpm: spi-tpm@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "st,st33htpm-spi"; + reg = <0>; + spi-max-frequency = <20000000>; + status = "okay"; + }; +}; + +&pcm { + pinctrl-0 = <&audio_pins_pri>; + pinctrl-names = "primary"; + status = "disabled"; +}; + +&sdhc { + bus-width = <4>; + max-frequency = <192000000>; + mmc-ddr-1_8v; + mmc-hs200-1_8v; + non-removable; + pinctrl-0 = <&sdc_default_state>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&sleep_clk { + clock-frequency = <32000>; +}; + +&xo { + clock-frequency = <24000000>; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + pinctrl-0 = <&qspi_default_state>; + pinctrl-names = "default"; + status = "okay"; + + nandcs@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&pcie1_phy_x2 { + status = "okay"; +}; + +&pcie1 { + pinctrl-0 = <&pcie1_default_state>; + pinctrl-names = "default"; + perst-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; + status = "okay"; + + pcie1_rp { + reg = <0 0 0 0 0>; + + qcom,mhi@1 { + reg = <0 0 0 0 0>; + boot-args = <0x2 0x4 0x34 0x3 0x0 0x0 /* MX Rail, GPIO52, Drive strength 0x3 */ + 0x4 0x4 0x18 0x3 0x0 0x0 /* RFA1p2 Rail, GPIO24, Drive strength 0x3 */ + 0x0 0x4 0x0 0x0 0x0 0x0>; /* End of arguments */ + memory-region = <&qcn9224_pcie1>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <1>; + qcom,board_id = <0x100f>; //0x1019->0x100f + }; + }; +}; + +/* PINCTRL */ + +&tlmm { + + audio_pins_pri: audio_pinmux_pri { + mux_1 { + pins = "gpio29"; + function = "audio_pri"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio30"; + function = "audio_pri"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio31"; + function = "audio_pri"; + drive-strength = <4>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio32"; + function = "audio_pri"; + drive-strength = <4>; + bias-pull-down; + }; + }; + + i2c_0_pins: i2c-0-state { + pins = "gpio43", "gpio45"; + function = "blsp2_i2c0"; + drive-strength = <8>; + bias-pull-up; + }; + + spi_1_pins: spi-1-pins { /* tpm */ + pins = "gpio29", "gpio30", "gpio31", "gpio32"; + function = "blsp1_spi0"; + drive-strength = <8>; + bias-pull-down; + }; + + sdc_default_state: sdc-default-state { + clk-pins { + pins = "gpio13"; + function = "sdc_clk"; + drive-strength = <8>; + bias-disable; + }; + + cmd-pins { + pins = "gpio12"; + function = "sdc_cmd"; + drive-strength = <8>; + bias-pull-up; + }; + + data-pins { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "sdc_data"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + spi_0_data_clk_pins: spi-0-data-clk-state { + pins = "gpio14", "gpio15", "gpio16"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-down; + }; + + spi_0_cs_pins: spi-0-cs-state { + pins = "gpio17"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-pull-up; + }; + + qspi_default_state: qspi-default-state { + qspi_clock { + pins = "gpio13"; + function = "qspi_clk"; + drive-strength = <8>; + bias-pull-down; + }; + + qspi_cs { + pins = "gpio12"; + function = "qspi_cs"; + drive-strength = <8>; + bias-pull-up; + }; + + qspi_data { + pins = "gpio8", "gpio9", "gpio10", "gpio11"; + function = "qspi_data"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + serial_1_pins: serial1-pinmux { /*ble*/ +// pins = "gpio33", "gpio34", "gpio35", "gpio36"; + pins = "gpio33", "gpio35"; + function = "blsp1_uart2"; + drive-strength = <8>; + bias-pull-up; + }; + +/* gpio_leds_default: gpio-leds-default-state { + pins = "gpio36"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + };*/ +/* + button_pins: button-state { + pins = "gpio25"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + };*/ + + pwm_pins: pwm-state { + pins = "gpio46"; + function = "pwm0"; + drive-strength = <8>; + }; + + pcie1_default_state: pcie1-default-state { + pins = "gpio47"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + output-low; + }; +}; + +&license_manager { + status = "okay"; +}; + +&usb3 { + qcom,multiplexed-phy; + status = "okay"; +}; + +&pwm { + pinctrl-0 = <&pwm_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&hs_m31phy_0 { + status = "okay"; +}; + +&ssuniphy_0 { + status = "okay"; +}; + +//sercomm add +&wifi3 { + /* QCN9224 5G+6G */ + hremote_node = <&qcn9224_pcie1>; + qcom,board_id = <0x100f>; + status = "okay"; +}; diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sonicfi-rap750w-311a.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sonicfi-rap750w-311a.dts index c6171c319..600ad6b66 100755 --- a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sonicfi-rap750w-311a.dts +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sonicfi-rap750w-311a.dts @@ -242,6 +242,10 @@ serial1 = &blsp1_uart1; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; }; chosen { @@ -324,19 +328,6 @@ }; }; - leds { - compatible = "gpio-leds"; - pinctrl-0 = <&gpio_leds_default>; - pinctrl-names = "default"; - - led-0 { - color = ; - function = LED_FUNCTION_WLAN; - gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "phy0tx"; - default-state = "off"; - }; - }; gpio_keys { compatible = "gpio-keys"; @@ -345,14 +336,39 @@ status = "okay"; button@1 { - label = "wps"; - linux,code = ; - gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; + label = "reset"; + linux,code = ; + gpios = <&tlmm 24 GPIO_ACTIVE_LOW>; linux,input-type = <1>; debounce-interval = <60>; }; }; + pwmleds { + compatible = "pwm-leds"; + + red { + label = "pwm:red"; + pwms = <&pwm 2 1250000>; + max-brightness = <1>; + linux,default-trigger = "none"; + }; + + green { + label = "pwm:green"; + pwms = <&pwm 3 1250000>; + max-brightness = <1>; + linux,default-trigger = "none"; + }; + + led_power: blue { + label = "pwm:blue"; + pwms = <&pwm 1 1250000>; + max-brightness = <1>; + linux,default-trigger = "none"; + }; + }; + ess-instance { num_devices = <0x2>; @@ -411,34 +427,6 @@ }; }; - led_source@2 { - source = <2>; - mode = "normal"; - speed = "all"; - blink_en = "enable"; - active = "high"; - }; - led_source@5 { - source = <5>; - mode = "normal"; - speed = "all"; - blink_en = "enable"; - active = "high"; - }; - led_source@8 { - source = <8>; - mode = "normal"; - speed = "all"; - blink_en = "enable"; - active = "high"; - }; - led_source@11 { - source = <11>; - mode = "normal"; - speed = "all"; - blink_en = "enable"; - active = "high"; - }; }; }; @@ -549,7 +537,7 @@ memory-region = <&q6_mem_regions>; q6_wcss_pd1: remoteproc_pd1 { - status = "ok"; + status = "okay"; }; q6_wcss_pd2: remoteproc_pd2 { @@ -570,7 +558,7 @@ qcom,smem-state-names = "shutdown", "stop", "spawn"; - status = "ok"; + status = "okay"; }; }; }; @@ -581,13 +569,13 @@ pinctrl-names = "default"; status = "okay"; }; - +/* &blsp1_uart1 { pinctrl-0 = <&serial_1_pins>; pinctrl-names = "default"; status = "disabled"; }; - +*/ &blsp1_i2c1 { clock-frequency = <400000>; pinctrl-0 = <&i2c_1_pins>; @@ -664,29 +652,50 @@ }; }; + pwm_pins: pwm_pinmux { + /* PWM LED GREEN */ + mux_1 { + pins = "gpio43"; + function = "pwm0"; + drive-strength = <8>; + }; + /* PWM LED BLUE */ + mux_2 { + pins = "gpio45"; + function = "pwm0"; + drive-strength = <8>; + }; + /* PWM LED RED */ + mux_3 { + pins = "gpio44"; + function = "pwm0"; + drive-strength = <8>; + }; + }; +/* serial_1_pins: serial1-pinmux { pins = "gpio33", "gpio34", "gpio35", "gpio36"; function = "blsp1_uart2"; drive-strength = <8>; bias-pull-up; }; - +*/ i2c_1_pins: i2c-1-state { pins = "gpio29", "gpio30"; function = "blsp1_i2c0"; drive-strength = <8>; bias-pull-up; }; - +/* gpio_leds_default: gpio-leds-default-state { pins = "gpio36"; function = "gpio"; drive-strength = <8>; bias-pull-down; - }; - + }; +*/ button_pins: button-state { - pins = "gpio35"; + pins = "gpio24"; function = "gpio"; drive-strength = <8>; bias-pull-up; @@ -725,6 +734,13 @@ status = "disabled"; }; +&pwm { + pinctrl-0 = <&pwm_pins>; + used-pwm-indices = <0>, <1>, <1>, <1>; + pinctrl-names = "default"; + status = "okay"; +}; + &hs_m31phy_0 { status = "okay"; }; @@ -747,7 +763,7 @@ memory-region = <&q6_ipq5332_data>; qcom,wsi = <&wsi>; qcom,wsi_index = <0>; - status = "ok"; + status = "okay"; }; &wifi1 { @@ -768,7 +784,7 @@ memory-region = <&q6_qcn6432_data_1>; qcom,wsi = <&wsi>; qcom,wsi_index = <1>; - status = "ok"; + status = "okay"; interrupts = ; interrupt-names = "umac_reset"; }; diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332.dtsi b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332.dtsi index 1f4c9af98..e6dc15524 100755 --- a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332.dtsi +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332.dtsi @@ -736,6 +736,36 @@ status = "disabled"; }; + blsp1_spi1: spi@78b6000 { + compatible = "qcom,spi-qup-v2.2.1"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x078b6000 0x600>; + interrupts = ; + spi-max-frequency = <50000000>; + clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; + dmas = <&blsp_dma 6>, <&blsp_dma 7>; + dma-names = "tx", "rx"; + status = "disabled"; + }; + + blsp1_i2c2: i2c@78b7000 { + compatible = "qcom,i2c-qup-v2.2.1"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x78b7000 0x600>; + interrupts = ; + clocks = <&gcc GCC_BLSP1_AHB_CLK>, + <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>; + clock-names = "iface", "core"; + clock-frequency = <400000>; + dmas = <&blsp_dma 8>, <&blsp_dma 9>; + dma-names = "rx", "tx"; + status = "disabled"; + }; + blsp1_i2c1: i2c@78b6000 { compatible = "qcom,i2c-qup-v2.2.1"; reg = <0x078b6000 0x600>; diff --git a/feeds/qca-wifi-7/ipq53xx/files-6.1/drivers/net/phy/rtk/rtk_phy.c b/feeds/qca-wifi-7/ipq53xx/files-6.1/drivers/net/phy/rtk/rtk_phy.c old mode 100755 new mode 100644 index 94a8825e2..787ba809b --- a/feeds/qca-wifi-7/ipq53xx/files-6.1/drivers/net/phy/rtk/rtk_phy.c +++ b/feeds/qca-wifi-7/ipq53xx/files-6.1/drivers/net/phy/rtk/rtk_phy.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "phy_rtl826xb_patch.h" #include "phy_rtl8251b_patch.h" @@ -30,6 +31,7 @@ static int rtl8251_match_phy_device(struct phy_device *phydev) static int rtl826xb_get_features(struct phy_device *phydev) { int ret; + struct device_node *np; ret = genphy_c45_pma_read_abilities(phydev); if (ret) return ret; @@ -48,6 +50,14 @@ static int rtl826xb_get_features(struct phy_device *phydev) linkmode_clear_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, phydev->supported); + np = of_find_node_by_name(NULL, "mdio"); + if (np) + if (of_property_read_bool(np, "limit_rtlphy_10g_ablity")) + { + linkmode_clear_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, phydev->supported); + } + + return 0; } @@ -80,7 +90,6 @@ static int rtkphy_config_init(struct phy_device *phydev) case REALTEK_PHY_ID_RTL8261N: case REALTEK_PHY_ID_RTL8264B: phydev_info(phydev, "%s:%u [RTL8261N/RTL826XB] phy_id: 0x%X PHYAD:%d\n", __FUNCTION__, __LINE__, phydev->drv->phy_id, phydev->mdio.addr); - phy_modify_mmd_changed(phydev, 7, 0x20, BIT(12), 0); #if 1 /* toggle reset */ phy_modify_mmd_changed(phydev, 30, 0x145, BIT(0) , 1); @@ -213,7 +222,6 @@ static int rtkphy_c45_aneg_done(struct phy_device *phydev) static int rtkphy_c45_read_status(struct phy_device *phydev) { int ret = 0, status = 0; - uint16_t local; phydev->speed = SPEED_UNKNOWN; phydev->duplex = DUPLEX_UNKNOWN; phydev->pause = 0; @@ -232,9 +240,6 @@ static int rtkphy_c45_read_status(struct phy_device *phydev) if (ret) return ret; - phy_write_mmd(phydev, 7, 0x20, 0x181); - local = phy_read_mmd(phydev, 7, 0x20); - status = phy_read_mmd(phydev, 31, 0xA414); if (status < 0) return status; @@ -242,11 +247,6 @@ static int rtkphy_c45_read_status(struct phy_device *phydev) phydev->lp_advertising, status & BIT(11)); phy_resolve_aneg_linkmode(phydev); - if((phydev->speed == 10000) && (local == 0x181)) - { - phydev->speed = 5000; - phydev->duplex = DUPLEX_FULL; - } } else { diff --git a/feeds/qca-wifi-7/ipq53xx/generic/config-6.1-platform b/feeds/qca-wifi-7/ipq53xx/generic/config-6.1-platform index cab2fbd90..7a3ad85fa 100644 --- a/feeds/qca-wifi-7/ipq53xx/generic/config-6.1-platform +++ b/feeds/qca-wifi-7/ipq53xx/generic/config-6.1-platform @@ -2288,7 +2288,7 @@ CONFIG_GPIOLIB_FASTPATH_LIMIT=512 # CONFIG_GPIO_ML_IOH is not set # CONFIG_GPIO_MOCKUP is not set # CONFIG_GPIO_MPC8XXX is not set -# CONFIG_GPIO_PCA953X is not set +CONFIG_GPIO_PCA953X=y # CONFIG_GPIO_PCA953X_IRQ is not set # CONFIG_GPIO_PCA9570 is not set # CONFIG_GPIO_PCF857X is not set diff --git a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk index a288760a0..346e0624b 100755 --- a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk +++ b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk @@ -14,16 +14,30 @@ endef TARGET_DEVICES += cig_wf189 define Device/sercomm_ap72tip - DEVICE_TITLE := Sercomm AP72 TIP + DEVICE_TITLE := Sercomm AP72TIP DEVICE_DTS := ipq5332-sercomm-ap72tip - DEVICE_DTS_CONFIG := config@mi01.2-qcn9160-c1 + DEVICE_DTS_DIR := ../dts + DEVICE_DTS_CONFIG := config@mi01.6 IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand IMAGE/nand-factory.ubi := append-ubi DEVICE_PACKAGES := ath12k-wifi-sercomm-ap72tip ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 endef -#TARGET_DEVICES += sercomm_ap72tip +TARGET_DEVICES += sercomm_ap72tip + +define Device/sercomm_ap72tip-v4 + DEVICE_TITLE := Sercomm AP72TIP-v4 + DEVICE_DTS := ipq5332-sercomm-ap72tip-v4 + DEVICE_DTS_DIR := ../dts + DEVICE_DTS_CONFIG := config@mi01.6 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi + DEVICE_PACKAGES := ath12k-wifi-sercomm-ap72tip-v4 ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 +endef +TARGET_DEVICES += sercomm_ap72tip-v4 define Device/edgecore_eap105 DEVICE_TITLE := Edgecore EAP105 @@ -61,7 +75,7 @@ define Device/sonicfi_rap750w_311a IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand IMAGE/nand-factory.ubi := append-ubi - DEVICE_PACKAGES := ath12k-wifi-sonicfi-rap750w-311a ath12k-firmware-ipq5332-peb + DEVICE_PACKAGES := ath12k-wifi-sonicfi-rap750w-311a ath12k-firmware-ipq5332-peb -ath12k-firmware-qcn92xx endef TARGET_DEVICES += sonicfi_rap750w_311a @@ -77,3 +91,17 @@ define Device/cig_wf189w DEVICE_PACKAGES := ath12k-wifi-cig-wf189w ath12k-firmware-ipq5332-peb-peb endef TARGET_DEVICES += cig_wf189w + + +define Device/cig_wf189h + DEVICE_TITLE := CIG WF189H + DEVICE_DTS := ipq5332-cig-wf189h + DEVICE_DTS_DIR := ../dts + DEVICE_DTS_CONFIG := config@mi04.1 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi + DEVICE_PACKAGES := ath12k-wifi-cig-wf189h ath12k-firmware-ipq5332-peb-peb +endef +TARGET_DEVICES += cig_wf189h diff --git a/feeds/qca-wifi-7/qca-ssdk-qca/patches/0006-qca-ssdk-Fix-10G-rtl-phy-driver-for-c45-mdio-read-wr.patch b/feeds/qca-wifi-7/qca-ssdk-qca/patches/0006-qca-ssdk-Fix-10G-rtl-phy-driver-for-c45-mdio-read-wr.patch new file mode 100644 index 000000000..8be733510 --- /dev/null +++ b/feeds/qca-wifi-7/qca-ssdk-qca/patches/0006-qca-ssdk-Fix-10G-rtl-phy-driver-for-c45-mdio-read-wr.patch @@ -0,0 +1,116 @@ +From 85a7c62d4e3385de1a379959dd45148cfdc95b3b Mon Sep 17 00:00:00 2001 +From: huangyunxiang +Date: Tue, 29 Apr 2025 09:56:28 +0800 +Subject: [PATCH] qca-ssdk modify rtl826x phy mdio read/write as c45 mode and + clear 10G ablity + +--- + src/hsl/phy/rtl826xb_phy.c | 55 ++++++------------- + 1 file changed, 17 insertions(+), 38 deletions(-) + +diff --git a/src/hsl/phy/rtl826xb_phy.c b/src/hsl/phy/rtl826xb_phy.c +index a336348aa9..9a67b45948 100644 +--- a/src/hsl/phy/rtl826xb_phy.c ++++ b/src/hsl/phy/rtl826xb_phy.c +@@ -48,46 +48,39 @@ void rtl826xb_phy_lock_init(void) + + static a_uint16_t rtl826x_phy_mmd_read(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t reg_mmd, a_uint16_t reg_id) + { +- a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(reg_mmd, reg_id); +- +- return __hsl_phy_mii_reg_read(dev_id, phy_id, reg_id_c45); ++ return hsl_phy_mmd_reg_read(dev_id, phy_id, A_TRUE, reg_mmd, reg_id); + } + + + static sw_error_t rtl826x_phy_mmd_write(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t reg_mmd, a_uint16_t reg_id, a_uint16_t reg_val) + { +- a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(reg_mmd, reg_id); +- +- return __hsl_phy_mii_reg_write(dev_id, phy_id, reg_id_c45, reg_val); ++ return hsl_phy_mmd_reg_write(dev_id, phy_id, A_TRUE, reg_mmd, reg_id, reg_val); + } + + + static a_uint16_t rtl826x_phy_reg_read(a_uint32_t dev_id, a_uint32_t phy_id, a_uint32_t reg) + { +- return __hsl_phy_mii_reg_read(dev_id, phy_id, reg); ++ return hsl_phy_mii_reg_read(dev_id, phy_id, reg); + } + + + static sw_error_t rtl826x_phy_reg_write(a_uint32_t dev_id, a_uint32_t phy_id, a_uint32_t reg, a_uint16_t reg_val) + { +- return __hsl_phy_mii_reg_write(dev_id, phy_id, reg, reg_val); ++ ++ return hsl_phy_mii_reg_write(dev_id, phy_id, reg, reg_val); + } + + + static a_int16_t hal_miim_mmd_read(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t mmdAddr, a_uint16_t mmdReg) + { +- a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(mmdAddr, mmdReg); +- +- return __hsl_phy_mii_reg_read(dev_id, phy_id, reg_id_c45); ++ return hsl_phy_mmd_reg_read(dev_id, phy_id, A_TRUE, mmdAddr, mmdReg); + } + + + + static a_int32_t hal_miim_mmd_write(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t mmdAddr, a_uint16_t mmdReg, a_uint16_t phy_data) + { +- a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(mmdAddr, mmdReg); +- +- return __hsl_phy_mii_reg_write(dev_id, phy_id, reg_id_c45, phy_data); ++ return hsl_phy_mmd_reg_write(dev_id, phy_id, A_TRUE, mmdAddr, mmdReg, phy_data); + } + + +@@ -1281,34 +1274,20 @@ phy_826xb_autoNegoAbility_set(a_uint32_t dev_id, a_uint32_t phy_id, a_uint32_t a + hsl_phy_phydev_autoneg_update(dev_id, phy_id, A_TRUE, autoneg); + + phyData = phy_common_general_reg_mmd_get(dev_id, phy_id, PHY_MMD_AN, 16); ++ phyData &= (~(0x0020 | 0x0040 | FAL_PHY_ADV_100TX_HD | FAL_PHY_ADV_100TX_FD | FAL_PHY_ADV_PAUSE | FAL_PHY_ADV_ASY_PAUSE)); ++ phyData |= (autoneg & FAL_PHY_ADV_100TX_HD) ? (FAL_PHY_ADV_100TX_HD) : (0); ++ phyData |= ((autoneg & FAL_PHY_ADV_100TX_FD)) ? (FAL_PHY_ADV_100TX_FD) : (0); + +- phyData &= (~(0x0020 | 0x0040 | 0x0080 | 0x0100 | 0x0400 | 0x0800)); +- phyData |= ((autoneg & 1 << 1)) ? (0x0040) : (0); +- phyData |= ((autoneg & 1 << 2)) ? (0x0080) : (0); +- phyData |= ((autoneg & 1 << 3)) ? (0x0100) : (0); +- phyData |= ((autoneg & 1 << 4)) ? (0x0400) : (0); +- phyData |= ((autoneg & 1 << 5)) ? (0x0800) : (0); +-// phyData |= ((autoneg & 1 << 9)) ? (0x0400) : (0); +-// phyData |= ((autoneg & 1 << 10)) ? (0x0800) : (0); +- +- phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 16, phyData); +- ++ phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 16, phyData); + phyData = phy_common_general_reg_mmd_get(dev_id, phy_id, PHY_MMD_AN, 32); ++ phyData &= (~(FAL_PHY_ADV_2500T_FD | FAL_PHY_ADV_5000T_FD | FAL_PHY_ADV_10000T_FD)); ++ phyData |= (autoneg & FAL_PHY_ADV_2500T_FD) ? (FAL_PHY_ADV_2500T_FD) : (0); ++ phyData |= (autoneg & FAL_PHY_ADV_5000T_FD) ? (FAL_PHY_ADV_5000T_FD) : (0); + +- phyData &= (~(0x4000 | 0x2000 | 0x1000)); +- phyData |= (autoneg & 1 << 12) ? (0x0080) : (0); +- phyData |= (autoneg & 1 << 13) ? (0x0100) : (0); +- phyData |= (autoneg & 1 << 14) ? (0x1000) : (0); +- +- phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 32, phyData); +- +- ++ phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 32, phyData); + phyData = phy_common_general_reg_mmd_get(dev_id, phy_id, PHY_MMD_VEND2, 0xA412); +- +- +- phyData &= (~(0x0100 | 0x0200)); +- phyData |= (autoneg & 1 << 9) ? (0x0200) : (0); +-// phyData |= (autoneg & 1 << 5) ? (0x0200) : (0); ++ phyData &= (~(0x0100 | FAL_PHY_ADV_1000T_FD)); ++ phyData |= (autoneg & FAL_PHY_ADV_1000T_FD) ? (FAL_PHY_ADV_1000T_FD) : (0); + + phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_VEND2, 0xA412, phyData); + +-- +2.34.1 + diff --git a/feeds/tip/certificates/files/usr/bin/mount_certs b/feeds/tip/certificates/files/usr/bin/mount_certs index 4161c1121..3c001a1dd 100755 --- a/feeds/tip/certificates/files/usr/bin/mount_certs +++ b/feeds/tip/certificates/files/usr/bin/mount_certs @@ -79,6 +79,8 @@ hfcl,ion4xe) ;; cig,wf186w|\ cig,wf189|\ +cig,wf189w|\ +cig,wf189h|\ cig,wf186h|\ yuncore,ax840|\ yuncore,fap655) diff --git a/feeds/ucentral/rrmd/files/etc/init.d/rrmd b/feeds/ucentral/rrmd/files/etc/init.d/rrmd index 0d6337ac0..871e077d4 100755 --- a/feeds/ucentral/rrmd/files/etc/init.d/rrmd +++ b/feeds/ucentral/rrmd/files/etc/init.d/rrmd @@ -6,8 +6,8 @@ STOP=01 USE_PROCD=1 start_service() { - rm -rf /tmp/threshold_breach_count_phy* - rm -rf /tmp/fixed_channel_phy* + rm -rf /tmp/threshold_breach_count* + rm -rf /tmp/fixed_channel* procd_open_instance procd_set_param command /usr/bin/rrmd.uc diff --git a/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc b/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc index f3dba8070..f2549c207 100644 --- a/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc +++ b/feeds/ucentral/rrmd/files/usr/share/rrmd/policy_chanutil.uc @@ -265,7 +265,7 @@ function dfs_chan_check(iface_num, rcs_channel) { } function fixed_channel_config(iface, iface_num, fixed_channel_f, auto_channel_f, fixed_chan_bkp, channel_config) { - // if fixed channel config is stored in the /tmp/fixed_channel_phyX file + // if fixed channel config is stored in the /tmp/fixed_channel_ file if (fixed_channel_f == 1) { if (auto_channel_f == 1) { // if current channel is auto => change to fixed @@ -290,6 +290,7 @@ function fixed_channel_config(iface, iface_num, fixed_channel_f, auto_channel_f, function get_chan_util(radio_band, sleep_time) { let pdev_stats = {}; let chan_util = 0; + let total_usage = 0; let prev_values = { txFrameCount: null, @@ -348,7 +349,8 @@ function get_chan_util(radio_band, sleep_time) { if (ignore != 1) { let cycle_count_delta = curr_values.cycleCount - prev_values.cycleCount; let rx_clear_delta = curr_values.rxClearCount - prev_values.rxClearCount; - let total_usage = (rx_clear_delta * 100) / cycle_count_delta; + if (cycle_count_delta && cycle_count_delta > 0) + total_usage = (rx_clear_delta * 100) / cycle_count_delta; chan_util = total_usage; } @@ -673,7 +675,7 @@ function channel_optimize() { ulog_info(`[%s] Allowed consecutive Channel Utilization threshold breach count = %d \n`, radio_iface[j], config.consecutive_threshold_breach); if (!current_threshold_breach_count || current_threshold_breach_count == null || current_threshold_breach_count == 'NaN') { - // /tmp/phyX_breachcount file doesn't exist yet or has invalid value + // /tmp/threshold_breach_count_ file doesn't exist yet or has invalid value current_threshold_breach_count = 0; } ulog_info(`[%s] Previous consecutive Channel Utilization threshold breach count = %d \n`, radio_iface[j], current_threshold_breach_count); diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 41f5b62c8..575932ccd 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=fe33f072d7bcbbb14c7c3415e0750699bb5dae8a9af06c59c90c020f8b192a15 +PKG_MIRROR_HASH:=280d87658fa36c1d5d6852dcb8203042eba6bbc9101ac317a2088e2dd68249da PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2025-01-27 -PKG_SOURCE_VERSION:=5a6d23b76bc51289ae99d22fdf406516b0c630e6 +PKG_SOURCE_VERSION:=52afdf8f1d1cb8445b6b56eba3768d0edffa63e1 PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause diff --git a/feeds/ucentral/udhcpinject/files/etc/config/dhcpinject b/feeds/ucentral/udhcpinject/files/etc/config/dhcpinject index 3fc4fcc5c..e37c2306a 100644 --- a/feeds/ucentral/udhcpinject/files/etc/config/dhcpinject +++ b/feeds/ucentral/udhcpinject/files/etc/config/dhcpinject @@ -5,3 +5,6 @@ # list ssid 'EAP101-ERICHI' # list ssid 'EAP101-AKIHO' # list ssid 'EAP101-DAMAYU' +# +# config dhcpinject 'dhcpinject' +# option iface_count '6' diff --git a/feeds/ucentral/udhcpinject/files/etc/init.d/dhcpinject b/feeds/ucentral/udhcpinject/files/etc/init.d/dhcpinject index 94f9f1b9b..49beb305b 100755 --- a/feeds/ucentral/udhcpinject/files/etc/init.d/dhcpinject +++ b/feeds/ucentral/udhcpinject/files/etc/init.d/dhcpinject @@ -9,9 +9,9 @@ SERVICE_NAME="dhcpinject" PROG=/usr/bin/udhcpinject start_service() { - local ssid_list="" local ssids="" local ports="" + local ifaces="" # Function to process each ssid append_ssid() { @@ -40,6 +40,9 @@ start_service() { # Get the list of ports config_list_foreach uplink port append_port + + # Get the iface_count + config_get ifaces dhcpinject iface_count # Fallback to eth0 if no ports are specified if [ -z "$ports" ]; then @@ -47,11 +50,11 @@ start_service() { fi # Optional: Log or echo for debugging - logger -t dhcp_inject "Generated SSIDs=$ssids, Uplink=$ports" + logger -t dhcp_inject "Generated SSIDs=$ssids, Uplink=$ports, IFACEs=$ifaces" procd_open_instance "$SERVICE_NAME" procd_set_param command $PROG - procd_set_param env SSIDs="$ssids" PORTs="$ports" + procd_set_param env SSIDs="$ssids" PORTs="$ports" IFACEs="$ifaces" procd_set_param respawn 3600 10 10 procd_set_param file /etc/config/dhcpinject procd_set_param reload_signal SIGHUP diff --git a/feeds/ucentral/udhcpinject/src/udhcpinject.c b/feeds/ucentral/udhcpinject/src/udhcpinject.c index 35df2abaf..f598cb12b 100644 --- a/feeds/ucentral/udhcpinject/src/udhcpinject.c +++ b/feeds/ucentral/udhcpinject/src/udhcpinject.c @@ -26,6 +26,7 @@ struct iface_info *iface_map = NULL; static struct port_info *ports = NULL; int iface_count = 0; int port_count = 0; +int total_iface = 0; static pcap_t *handle = NULL; static char *provided_ssids = NULL; static char *provided_ports = NULL; @@ -192,6 +193,11 @@ int parse_ssids(const char *ssids) { return -1; } + if (iface_count != total_iface) { + syslog(LOG_ERR, "Expect %d but only %d interfaces were found.\n", total_iface, iface_count); + return -1; + } + syslog(LOG_INFO, "Found %d matching interfaces\n", iface_count); return 0; } @@ -310,7 +316,6 @@ void signal_handler(int sig) { exit(0); } else if (sig == SIGHUP) { syslog(LOG_INFO, "Received reload signal, reconfiguring...\n"); - sleep(5); // Clean up existing resources cleanup_tc(); @@ -561,7 +566,19 @@ int main(int argc, char *argv[]) { signal(SIGTERM, signal_handler); signal(SIGHUP, signal_handler); - sleep(5); + // Read IFACEs from environment variable + char *iface_env = getenv("IFACEs"); + if (!iface_env) { + syslog(LOG_ERR, "No IFACEs provided. Exiting...\n"); + cleanup(); + return 1; + } + total_iface = atoi(iface_env); + if (total_iface <= 0) { + syslog(LOG_ERR, "Invalid IFACEs value: %s. Exiting...\n", iface_env); + cleanup(); + return 1; + } provided_ssids = getenv("SSIDs"); syslog(LOG_INFO, "Provided SSIDs: %s\n", provided_ssids); @@ -618,4 +635,4 @@ int main(int argc, char *argv[]) { cleanup(); return 0; -} \ No newline at end of file +} diff --git a/profiles/cig_wf189.yml b/profiles/cig_wf189.yml index 00042ac76..4418ce151 100644 --- a/profiles/cig_wf189.yml +++ b/profiles/cig_wf189.yml @@ -12,3 +12,4 @@ include: packages: - ipq53xx - ftm + - qca-ssdk-shell diff --git a/profiles/cig_wf189h.yml b/profiles/cig_wf189h.yml new file mode 100644 index 000000000..61d9eaa36 --- /dev/null +++ b/profiles/cig_wf189h.yml @@ -0,0 +1,14 @@ +--- +profile: cig_wf189h +target: ipq53xx +subtarget: generic +description: Build image for the CIG WF189h +image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-cig_wf189h-squashfs-sysupgrade.tar +feeds: + - name: qca + path: ../../feeds/qca-wifi-7 +include: + - ucentral-ap +packages: + - ipq53xx + - qca-ssdk-shell diff --git a/profiles/sercomm_ap72tip-v4.yml b/profiles/sercomm_ap72tip-v4.yml new file mode 100644 index 000000000..3f36991c6 --- /dev/null +++ b/profiles/sercomm_ap72tip-v4.yml @@ -0,0 +1,16 @@ +--- +profile: sercomm_ap72tip-v4 +target: ipq53xx +subtarget: generic +description: Build image for the Sercomm AP72TIP-v4 +image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-sercomm_ap72tip-v4-squashfs-sysupgrade.tar +feeds: + - name: qca + path: ../../feeds/qca-wifi-7 +include: + - ucentral-ap +packages: + - ipq53xx + - qca-ssdk-shell +diffconfig: | + CONFIG_KERNEL_IPQ_MEM_PROFILE=0 diff --git a/profiles/sercomm_ap72tip.yml b/profiles/sercomm_ap72tip.yml index 39efb1864..95900925c 100644 --- a/profiles/sercomm_ap72tip.yml +++ b/profiles/sercomm_ap72tip.yml @@ -2,14 +2,14 @@ profile: sercomm_ap72tip target: ipq53xx subtarget: generic -description: Build image for the Sercomm AP72 TIP +description: Build image for the Sercomm AP72TIP image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-sercomm_ap72tip-squashfs-sysupgrade.tar feeds: - - name: ipq95xx - path: ../../feeds/ipq95xx -packages: - - ipq53xx + - name: qca + path: ../../feeds/qca-wifi-7 include: - ucentral-ap +packages: + - ipq53xx diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=0 diff --git a/profiles/sonicfi_rap650c.yml b/profiles/sonicfi_rap650c.yml new file mode 100644 index 000000000..ed09bd1aa --- /dev/null +++ b/profiles/sonicfi_rap650c.yml @@ -0,0 +1,15 @@ +--- +profile: sonicfi_rap650c +target: ipq807x +subtarget: generic +description: Build image for the SonicFi RAP650C +image: bin/targets/ipq807x/generic/openwrt-ipq807x-sonicfi_rap650c-squashfs-sysupgrade.tar +feeds: + - name: ipq807x + path: ../../feeds/ipq807x_v5.4 +include: + - ucentral-ap +packages: + - ipq807x +diffconfig: | + CONFIG_KERNEL_IPQ_MEM_PROFILE=0 diff --git a/profiles/ucentral-ap.yml b/profiles/ucentral-ap.yml index 5d93bef72..7acbeb748 100644 --- a/profiles/ucentral-ap.yml +++ b/profiles/ucentral-ap.yml @@ -45,6 +45,7 @@ packages: - ucentral-schema - ucentral-state - ucentral-tools + - udhcpinject - udhcprelay - ufp - ugps