From c9b4c7e25006195fd0242839a3eb47bd05bda6b6 Mon Sep 17 00:00:00 2001 From: Jimmy Cheng Date: Fri, 12 Sep 2025 15:31:59 +0800 Subject: [PATCH] qca-wifi-7: Add Zyxel NWA210BE model Signed-off-by: YenLin Pan --- .github/workflows/build-dev.yml | 2 +- feeds/qca-wifi-7/ath12k-wifi/Makefile | 13 + .../ath12k-wifi/board-2-nwa210be-IPQ5332.json | 20 + .../ath12k-wifi/board-2-nwa210be-QCN92XX.json | 20 + .../ath12k-wifi/board-2.bin.nwa210be.IPQ5332 | Bin 0 -> 89292 bytes .../ath12k-wifi/board-2.bin.nwa210be.QCN92XX | Bin 0 -> 187596 bytes feeds/qca-wifi-7/ath12k-wifi/generate.sh | 3 + .../ath12k-wifi/nwa210be-IPQ5332.bin | Bin 0 -> 63488 bytes .../ath12k-wifi/nwa210be-QCN92XX.bin | Bin 0 -> 161792 bytes .../ipq53xx/base-files/etc/board.d/02_network | 15 +- .../etc/hotplug.d/firmware/10-ath12k-caldata | 2 + .../base-files/lib/upgrade/platform.sh | 1 + .../ipq53xx/dts/ipq5332-zyxel-nwa210be.dts | 655 ++++++++++++++++++ feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk | 15 + .../ath12k/0001-thermal-thermal-setting.patch | 72 ++ .../files-zyxel_nwa210be/qca-ssdk | 317 +++++++++ ...01-pinctrl-make-the-switch-LED-works.patch | 47 ++ profiles/zyxel_nwa210be.yml | 16 + 18 files changed, 1196 insertions(+), 2 deletions(-) create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-IPQ5332.json create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-QCN92XX.json create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2.bin.nwa210be.IPQ5332 create mode 100644 feeds/qca-wifi-7/ath12k-wifi/board-2.bin.nwa210be.QCN92XX create mode 100755 feeds/qca-wifi-7/ath12k-wifi/nwa210be-IPQ5332.bin create mode 100755 feeds/qca-wifi-7/ath12k-wifi/nwa210be-QCN92XX.bin create mode 100755 feeds/qca-wifi-7/ipq53xx/dts/ipq5332-zyxel-nwa210be.dts create mode 100644 feeds/qca-wifi-7/mac80211/patches-zyxel_nwa210be/ath12k/0001-thermal-thermal-setting.patch create mode 100755 feeds/qca-wifi-7/qca-ssdk-qca/files-zyxel_nwa210be/qca-ssdk create mode 100644 feeds/qca-wifi-7/qca-ssdk-qca/patches-zyxel_nwa210be/0001-pinctrl-make-the-switch-LED-works.patch create mode 100644 profiles/zyxel_nwa210be.yml diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index 68bcd25a2..9b51c56a7 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_wf189h', 'cig_wf189w', 'cig_wf660a', 'cig_wf672', '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_rap750e-h', 'sonicfi_rap750e-s', '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', 'emplus_wap588m', 'zyxel_nwa130be', 'sercomm_ap72tip-v4' ] + target: [ 'cig_wf189h', 'cig_wf189w', 'cig_wf660a', 'cig_wf672', '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_rap750e-h', 'sonicfi_rap750e-s', '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', 'emplus_wap588m', 'zyxel_nwa130be', 'zyxel_nwa210be', 'sercomm_ap72tip-v4' ] steps: - uses: actions/checkout@v3 diff --git a/feeds/qca-wifi-7/ath12k-wifi/Makefile b/feeds/qca-wifi-7/ath12k-wifi/Makefile index 4e2e67314..968f576f0 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/Makefile +++ b/feeds/qca-wifi-7/ath12k-wifi/Makefile @@ -98,6 +98,11 @@ $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for NWA50BE endef +define Package/ath12k-wifi-zyxel-nwa210be +$(call Package/ath12k-wifi-default) + TITLE:=board-2.bin for NWA210BE +endef + define Package/ath12k-wifi-cig-wf672 $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for WF672 @@ -204,6 +209,13 @@ define Package/ath12k-wifi-zyxel-nwa50be/install $(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin endef +define Package/ath12k-wifi-zyxel-nwa210be/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.nwa210be.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin + $(INSTALL_DATA) ./board-2.bin.nwa210be.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin +endef + define Package/ath12k-wifi-cig-wf672/install $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ @@ -224,4 +236,5 @@ $(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip)) $(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip-v4)) $(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa130be)) $(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa50be)) +$(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa210be)) $(eval $(call BuildPackage,ath12k-wifi-cig-wf672)) diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-IPQ5332.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-IPQ5332.json new file mode 100644 index 000000000..896b2c372 --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-IPQ5332.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=18" + ], + "data": "nwa210be-IPQ5332.bin" + } + ], + "regdb": [ + { + "names": [ + "bus=ahb,qmi-chip-id=0,qmi-board-id=18" + ], + "data": "ipq5332.regdb" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-QCN92XX.json b/feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-QCN92XX.json new file mode 100644 index 000000000..84812b31c --- /dev/null +++ b/feeds/qca-wifi-7/ath12k-wifi/board-2-nwa210be-QCN92XX.json @@ -0,0 +1,20 @@ +[ + { + "board": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=12" + ], + "data": "nwa210be-QCN92XX.bin" + } + ], + "regdb": [ + { + "names": [ + "bus=pci,qmi-chip-id=0,qmi-board-id=12" + ], + "data": "qcn92xx.regdb" + } + ] + } +] diff --git a/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.nwa210be.IPQ5332 b/feeds/qca-wifi-7/ath12k-wifi/board-2.bin.nwa210be.IPQ5332 new file mode 100644 index 0000000000000000000000000000000000000000..2ff516080945c32bb4f5e92523dcde95aa701fed GIT binary patch literal 89292 zcmeHQ3wRw>o&U|uy~#~_oAT3SdS)B=6v=5>=MH%XJ5qzzR{sZg}lTAs?Q zEfkSO-3N>BZl%iS$LH!Ug7W$8r>yJpt%@&}#Z`QuBFa(~6ctgt`}?1nIWsqDlUpcQ z$~p7DGw1xz|8;)n+_^JzXU=SFPb^KOyO%BRUD`H~80x^TUAw@v`Z-wx3;5Y~`K4D^uisN>|T1w_O&glwC$}I?Ab2GWvi)Yi30U3T;)hs@+&Lth_zCcoa@V0 zjzZRBYQ0IVH>>ryTA!!nP{z%}ZdR?ghVrlJtOZM9JPinWQop|;w%=~RUL~80mJ&3p zS2+SUZdEO~%RV_8;$X=I63JYCWE5KYY6HZWGLw>sW+mGeK{wfvSUmg@dp6BEmTfsU z7bjvl5!)^&ubjMc^2*68CvQG^^Q@@VNd9~~&z?{I3gjb!7}`*P6;h5A+ACOp7&CC# zid%>6nf76)$T}Q}+aE+RK7NiVU*u(%XX<9^Y<m0X_W@+6lpxqQjRt|+KM?11DBGFKqQ0x1?qu~3SIQY@6>UJG&TwGqKy zM^8)dnETB$-P%{@0Hx& zl~tAC?`3u9%<9=V^tHO#_^9MQD!Dr(cZcK-OYX4bJ|?-3N$%s4`?%!pl-!+?``16t zs=(c{`V3bBUrde~V^$1^SOu~wlogv5v)C-I9F$o5Eb{iTmDYaA?U&pQlDk22H%jhC z$sLf~0mSPRYGfayLuvX34!va_^EH(TG??BVrMah(#c3EMib&vH3M}m=d=c zU)*LkZu7)}zwxq)%8G}waXVjDj6QBN`nb*L<3|}3hGh^i2p9wm0tNwtfI+|@U=T0} z7z7Lg1_6VBLBJqj5HJWB1PlTO0fT@+z#w1{FbEg~3<3rLgMdN6AYc$M2p9wm0tNwt zfI;BoMZn@y4{|4J6nT7tA;zZ{3i-rB95eZhLJ6OqDn}*Oa9PXcSZN*BVLg{tE?c;~ zp357!oX=$|mkYRT<8mRF?Ofi-j;~XyMaxuvua4I3- zJ|%f7waB#PI1#x1q)(PS$zzg1z#w1{FbEg~3<3rLgMdN6AYc$M2p9wm0tNwtfI+|@ zU=T0}7z7Lg1_6VBLBJqj5HJWB1PlTO0fT@+z#w1{cUivD==T455 zav4|!h;a6AlMDg|f!8tug?RQg+58#U#Frc#J>4QT?}z2>VVNt$Z65D`GavABcVe#JT9AJeL0xUsUCD*I#_m6D;@Qld60#%Mai&=f3r0EI;OSqp`7(<=fVur^-8V z<(1VeuUfxZmA{GyAB?lS?%bp*e<{+~XtTV`8d2qMuDj~WKd^iND~mu8XW^9Otab{mk_`Vj{IQ|3KCIQSngLYXS%e3#YBnJVC3Vzu`Dso1g#3ZuVppRcXt z8<|c-s>0xLUGqH=K3^dl^=rnj;XtD7dZQ zV8JH}czr%=`3B#~^;y*LIoK-f>yx15% z;>EC&Z8)1aNDR5)C^-1-5G=1_3~!;0mFx?_^1pIuhv0a(YC{e75r;P^9OH~3KPP>^ zFFr#XA7%_U(}uL;9KK=i*_>mTi+lOLw}Z5?pZafRJJwMDw<-p88@jleGPyX^;zNw# zCa)dmDjRutAO{@2uEs+hKEfCdDE)H29cw0@VH+OEr^lFNRJHe=Z12@x zdⅇD28h90m@AmpN~r}?e*tSK#|jE(#Ag;2mz0%P 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 literal 0 HcmV?d00001 diff --git a/feeds/qca-wifi-7/ath12k-wifi/generate.sh b/feeds/qca-wifi-7/ath12k-wifi/generate.sh index 2176ddf84..a48f350b2 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/generate.sh +++ b/feeds/qca-wifi-7/ath12k-wifi/generate.sh @@ -21,3 +21,6 @@ $encoder -c board-2-nwa130be-QCN92XX.json -o board-2.bin.nwa130be.QCN92XX $encoder -c board-2-nwa50be-IPQ5332.json -o board-2.bin.nwa50be.IPQ5332 $encoder -c board-2-nwa50be-QCN6432.json -o board-2.bin.nwa50be.QCN6432 + +$encoder -c board-2-nwa210be-IPQ5332.json -o board-2.bin.nwa210be.IPQ5332 +$encoder -c board-2-nwa210be-QCN92XX.json -o board-2.bin.nwa210be.QCN92XX diff --git a/feeds/qca-wifi-7/ath12k-wifi/nwa210be-IPQ5332.bin b/feeds/qca-wifi-7/ath12k-wifi/nwa210be-IPQ5332.bin new file mode 100755 index 0000000000000000000000000000000000000000..26f4fcbff2bf627f35dcbfde1256ffc5bb0d13c8 GIT binary patch literal 63488 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 +#include +#include +#include "ipq5332.dtsi" +#include "ipq5332-default-memory.dtsi" + +/ { + model = "Zyxel NWA210BE"; + compatible = "zyxel,nwa210be", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332-rdp468", "qcom,ipq5332"; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + ramoops@49c00000 { + compatible = "ramoops"; + no-map; + reg = <0x0 0x49c00000 0x0 0x100000>; + record-size = <0x20000>; + console-size = <0x20000>; + pmsg-size = <0x20000>; + }; + }; + + aliases { + serial0 = &blsp1_uart0; + serial1 = &blsp1_uart1; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + }; + + 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 51 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"; + }; + }; + }; + }; + + ess-instance { + num_devices = <0x2>; + + ess-switch@3a000000 { + 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>; + }; + }; + + led_source@5 { + source = <5>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + + qcom,port_ledinfo { + port@1 { + port = <2>; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "2500M"; + active = "high"; + blink_en = "enable"; + }; + led_source@1 { + source = <1>; + mode = "normal"; + speed = "10M", "100M","1000M"; + active = "high"; + blink_en = "enable"; + }; + }; + }; + }; + + 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 = <0xff>; /* mac mode1 for uniphy instance1 */ + switch_cpu_bmp = <0x1>; /* cpu port bitmap */ + switch_lan_bmp = <0xe>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ + link-polling-required = <0>; + fdb_sync = "interrupt"; + link-intr-gpio = <&tlmm 23 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>; + }; + }; + + qcom,port_ledinfo { + port@3 { + port = <3>; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "2500M"; + active = "high"; + blink_en = "enable"; + }; + led_source@1 { + source = <1>; + mode = "normal"; + speed = "10M", "100M","1000M"; + active = "high"; + blink_en = "enable"; + }; + }; + }; + + 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"; + }; + }; + }; + + dp1 { + 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 = <4>; + qcom,link-poll = <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 */ + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + led_blue{ + label = "led_blue"; + gpio = <&tlmm 22 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_blue"; + default-state = "off"; + }; + led_green { + label = "led_green"; + gpio = <&tlmm 45 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_green"; + default-state = "on"; + }; + led_white { + label = "led_white"; + gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_white"; + default-state = "off"; + }; + led_red { + label = "led_red"; + gpio = <&tlmm 44 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_red"; + default-state = "off"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + button@1 { + label = "reset"; + linux,code = ; + gpios = <&tlmm 30 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 = <0x12>; + 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_spi0 { + pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>; + pinctrl-names = "default"; + status = "okay"; + + flash@0 { + compatible = "n25q128a11", "micron,n25q128a11", "jedec,spi-nor"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <50000000>; + }; +}; + +&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 = <0x000c>; + qcom,wide_band = <1>; + }; + }; +}; + +/* PINCTRL */ + +&tlmm { + + led_pins: led_pins { + fem_en { + pins = "gpio31"; + function = "gpio"; + drive-strength = <8>; + output-high; //Enable Wi-Fi FEM + }; + + led_blue { + pins = "gpio22"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + led_green { + pins = "gpio45"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + led_white { + pins = "gpio43"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + + led_red { + pins = "gpio44"; + function = "gpio"; + 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 { + pins = "gpio33", "gpio34", "gpio35", "gpio36"; + function = "blsp1_uart2"; + drive-strength = <8>; + bias-pull-up; + }; + + button_pins: button-state { + pins = "gpio30"; + 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"; +}; diff --git a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk index 51c6ae544..6fd0cef51 100755 --- a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk +++ b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk @@ -178,6 +178,21 @@ define Device/zyxel_nwa50be endef TARGET_DEVICES += zyxel_nwa50be +define Device/zyxel_nwa210be + DEVICE_TITLE := Zyxel NWA210BE + DEVICE_DTS := ipq5332-zyxel-nwa210be + DEVICE_DTS_DIR := ../dts + DEVICE_DTS_CONFIG := config@mi01.6 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + BLOCKSIZE := 128k + PAGESIZE := 2048 + 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-zyxel-nwa210be ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 +endef +TARGET_DEVICES += zyxel_nwa210be + define Device/cig_wf672 DEVICE_TITLE := CIG WF672 DEVICE_DTS := ipq5332-cig-wf672 diff --git a/feeds/qca-wifi-7/mac80211/patches-zyxel_nwa210be/ath12k/0001-thermal-thermal-setting.patch b/feeds/qca-wifi-7/mac80211/patches-zyxel_nwa210be/ath12k/0001-thermal-thermal-setting.patch new file mode 100644 index 000000000..5f02134ca --- /dev/null +++ b/feeds/qca-wifi-7/mac80211/patches-zyxel_nwa210be/ath12k/0001-thermal-thermal-setting.patch @@ -0,0 +1,72 @@ +From 5f22b2d262ba44ecd0b05b32c6eee6161460718f Mon Sep 17 00:00:00 2001 +From: YenLin Pan +Date: Tue, 15 Jul 2025 16:18:48 +0800 +Subject: [PATCH] thermal: thermal setting + +lv0 -100 -hi0 105 -off0 0 +lv1 95 -hi1 110 -off1 75 +lv2 100 -hi2 115 -off2 99 +lv3 105 -hi3 120 -off3 100 + +Signed-off-by: YenLin Pan +--- + drivers/net/wireless/ath/ath12k/thermal.h | 30 +++++++++++------------ + 1 file changed, 15 insertions(+), 15 deletions(-) + +diff --git a/drivers/net/wireless/ath/ath12k/thermal.h b/drivers/net/wireless/ath/ath12k/thermal.h +index 5c91906..2334901 100644 +--- a/drivers/net/wireless/ath/ath12k/thermal.h ++++ b/drivers/net/wireless/ath/ath12k/thermal.h +@@ -13,34 +13,34 @@ + + /* Below temperatures are in celsius */ + #define ATH12K_THERMAL_LVL0_TEMP_LOW_MARK -100 +-#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 100 ++#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 105 + #define ATH12K_THERMAL_LVL1_TEMP_LOW_MARK 95 +-#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 105 ++#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 110 + #define ATH12K_THERMAL_LVL2_TEMP_LOW_MARK 100 +-#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 110 ++#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 115 + #define ATH12K_THERMAL_LVL3_TEMP_LOW_MARK 105 + #define ATH12K_THERMAL_LVL3_TEMP_HIGH_MARK 120 + + #define ATH12K_THERMAL_LVL0_V2_TEMP_LOW_MARK -100 +-#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 95 +-#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 90 +-#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 100 +-#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 95 +-#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 105 +-#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 100 +-#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 110 ++#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 105 ++#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 95 ++#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 110 ++#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 100 ++#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 115 ++#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 105 ++#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 120 + #define ATH12K_THERMAL_LVL4_V2_TEMP_LOW_MARK 105 + #define ATH12K_THERMAL_LVL4_V2_TEMP_HIGH_MARK 120 + + #define ATH12K_THERMAL_LVL0_DUTY_CYCLE 0 +-#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 50 +-#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 90 ++#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 75 ++#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 99 + #define ATH12K_THERMAL_LVL3_DUTY_CYCLE 100 + + #define ATH12K_THERMAL_LVL0_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE +-#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE +-#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE +-#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE ++#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE ++#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE ++#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE + #define ATH12K_THERMAL_LVL4_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE + + #define THERMAL_CONFIG_POUT0 0 +-- +2.34.1 + diff --git a/feeds/qca-wifi-7/qca-ssdk-qca/files-zyxel_nwa210be/qca-ssdk b/feeds/qca-wifi-7/qca-ssdk-qca/files-zyxel_nwa210be/qca-ssdk new file mode 100755 index 000000000..bfd679400 --- /dev/null +++ b/feeds/qca-wifi-7/qca-ssdk-qca/files-zyxel_nwa210be/qca-ssdk @@ -0,0 +1,317 @@ +#!/bin/sh /etc/rc.common +# Copyright (c) 2018, 2021, The Linux Foundation. All rights reserved. +# Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved. +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +START=16 + +#!/bin/sh +ruletype="ip4 ip6" +side="wan lan" +qwan="1 3 2 0 5 7 6 4" +qlan="0 1 2 3 4 5 6 7" + +function create_war_acl_rules(){ + for lw in $side + do + #echo $lw + if [ "$lw" == "wan" ];then + listid=254 + queue=$qwan + portmap=0x20 + else + listid=255 + queue=$qlan + portmap=0x1e + fi + #echo $queue + #echo "creating list $listid" + ssdk_sh acl list create $listid 255 + ruleid=0 + for rt in $ruletype + do + for qid in $queue + do + cmd="ssdk_sh acl rule add $listid $ruleid 1 n 0 0" + #echo $cmd + if [ "$rt" == "ip4" ];then + cmd="$cmd ip4 n n n n n n n n n n n n n n n n n n n n n n n n n n n n n" + #echo $cmd + else + cmd="$cmd ip6 n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n" + #echo $cmd + fi + if [ $ruleid -le 3 ];then + #non-zero dscp + cmd="$cmd y 0x0 0xff" + elif [ $ruleid -le 7 ];then + #zero dscp + cmd="$cmd n" + elif [ $ruleid -le 11 ];then + #non-zero dscp + cmd="$cmd y 0x0 0xff" + else + #zero dscp + cmd="$cmd n" + fi + p=$((ruleid/2)) + cmd="$cmd y mask $((ruleid%2)) 0x1 y mask $((p%2)) 0x1 n n n n n n n n n n n n n n n y n n n n n n n y $qid n n 0 0 n n n n n n n n n n n n n n n n n n n n 0" + #echo $cmd + $cmd + ruleid=`expr $ruleid + 1` + done + done + ssdk_sh acl list bind $listid 0 1 $portmap + done +} + +function create_war_cosmap(){ + ssdk_sh cosmap pri2q set 0 0 + ssdk_sh cosmap pri2q set 1 0 + ssdk_sh cosmap pri2q set 2 0 + ssdk_sh cosmap pri2q set 3 0 + ssdk_sh cosmap pri2q set 4 1 + ssdk_sh cosmap pri2q set 5 1 + ssdk_sh cosmap pri2q set 6 1 + ssdk_sh cosmap pri2q set 7 1 + ssdk_sh cosmap pri2ehq set 0 0 + ssdk_sh cosmap pri2ehq set 1 0 + ssdk_sh cosmap pri2ehq set 2 0 + ssdk_sh cosmap pri2ehq set 3 0 + ssdk_sh cosmap pri2ehq set 4 1 + ssdk_sh cosmap pri2ehq set 5 1 + ssdk_sh cosmap pri2ehq set 6 1 + ssdk_sh cosmap pri2ehq set 7 1 +} + +function create_acl_byp_egstp_rules(){ + chip_ver=$1 + cmd="ssdk_sh servcode config set 1 n 0 0xfffefc7f 0xffbdff 0 0 0 0 0 0" + if [ "$chip_ver" == "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then + cmd="$cmd 0" + fi + #echo $cmd + $cmd + + ssdk_sh acl list create 56 48 + #action bypass eg stp check + action="y n n n n n n n n n n 0 0 n n n n n n n n n n n n n y n n n n n n n n n n n n y n n n n n n n n n n n n n n n n n n" + if [ "$chip_ver" == "0x2000" ]; then + action="$action n n 0" + elif [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then + action="$action n n n 0" + else + action="$action 0" + fi + + for ruleid in $( seq 0 2 ) + do + if [ "$ruleid" == "0" ];then + cmd="ssdk_sh acl rule add 56 0 1 n 0 0 mac n n n n n y 01-80-c2-00-00-00 ff-ff-ff-ff-ff-ff n n n n n n n n n n n n n n n n n n n n n n n" + elif [ "$ruleid" == "1" ];then + cmd="ssdk_sh acl rule add 56 1 1 n 0 0 mac n n n n n n n yes 0x8809 0xffff n n n n n n n n n n n n n n n n n n n n n" + else + cmd="ssdk_sh acl rule add 56 2 1 n 0 0 mac n n n n n n n yes 0x888e 0xffff n n n n n n n n n n n n n n n n n n n n n" + fi + if [ "$chip_ver" == "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then + cmd="$cmd n $action" + else + cmd="$cmd $action" + fi + #echo $cmd + $cmd + done + ssdk_sh acl list bind 56 0 2 1 +} + +function delete_war_acl_rules(){ + for lw in $side + do + #echo $lw + if [ "$lw" == "wan" ];then + listid=254 + queue=$qwan + portmap=0x20 + else + listid=255 + queue=$qlan + portmap=0x1e + fi + ssdk_sh acl list unbind $listid 0 1 $portmap + for rt in $ruletype + do + for qid in $queue + do + cmd="ssdk_sh acl rule del $listid 0 1" + echo $cmd + $cmd + done + done + #echo "deleting list $listid" + ssdk_sh acl list destroy $listid + done +} + +function delete_war_cosmap(){ + ssdk_sh cosmap pri2q set 0 0 + ssdk_sh cosmap pri2q set 1 0 + ssdk_sh cosmap pri2q set 2 1 + ssdk_sh cosmap pri2q set 3 1 + ssdk_sh cosmap pri2q set 4 2 + ssdk_sh cosmap pri2q set 5 2 + ssdk_sh cosmap pri2q set 6 3 + ssdk_sh cosmap pri2q set 7 3 + ssdk_sh cosmap pri2ehq set 0 1 + ssdk_sh cosmap pri2ehq set 1 0 + ssdk_sh cosmap pri2ehq set 2 2 + ssdk_sh cosmap pri2ehq set 3 2 + ssdk_sh cosmap pri2ehq set 4 3 + ssdk_sh cosmap pri2ehq set 5 3 + ssdk_sh cosmap pri2ehq set 6 4 + ssdk_sh cosmap pri2ehq set 7 5 +} + +function delete_acl_byp_egstp_rules(){ + chip_ver=$1 + cmd="ssdk_sh servcode config set 1 n 0 0xfffefcff 0xffbfff 0 0 0 0 0 0" + if [ "$chip_ver" == "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then + cmd="$cmd 0" + fi + #echo $cmd + $cmd + ssdk_sh acl list unbind 56 0 2 1 + ssdk_sh acl rule del 56 0 1 + ssdk_sh acl rule del 56 1 1 + ssdk_sh acl rule del 56 2 1 + ssdk_sh acl list destroy 56 +} + +function edma_war_config_add(){ + create_war_cosmap + ssdk_sh acl status set enable + create_war_acl_rules +} + +function edma_war_config_del(){ + delete_war_acl_rules + delete_war_cosmap +} + +function ipq50xx_serdes_monitor () { + #if qca808x phy exist, need to monitor the serdes to avoid the effect for WIFI + port_id=2 + old_linkstatus="DISABLE" + phy_id_info=`ssdk_sh port phyid get $port_id | grep Org | awk -F '!' '{print $2}'` + if [ "$phy_id_info" = "[Org ID]:0x004d[Rev ID]:0xd101" ]; then + ssdk_sh debug phy set 29 0xb 0x300d + ssdk_sh debug uniphy set 0 0x7ac 0x300d 4 + + while true + do + cur_linkstatus=`ssdk_sh port linkstatus get $port_id | grep Status | awk -F ':' '{print $2}'` + #when qca808x phy link status is from down to up, serdes tx would be enabled + if [ "$cur_linkstatus" = "ENABLE" ] && [ "$old_linkstatus" = "DISABLE" ]; then + ssdk_sh debug phy set 29 0xb 0xb00d + ssdk_sh debug uniphy set 0 0x7ac 0xb00d 4 + fi + #when qca808x phy link status is from up to down, serdes tx would be disabled + if [ "$cur_linkstatus" = "DISABLE" ] && [ "$old_linkstatus" = "ENABLE" ]; then + ssdk_sh debug phy set 29 0xb 0x300d + ssdk_sh debug uniphy set 0 0x7ac 0x300d 4 + fi + old_linkstatus=$cur_linkstatus + done + fi +} + +function ipq53xx_phy_amplitude_set () { + #for qca808x phy sgmii, set half amplitude with src_half_swing register + port_id=2 + phy_id_info=`ssdk_sh port phyid get $port_id | grep Org | awk -F '!' '{print $2}'` + if [ "$phy_id_info" = "[Org ID]:0x004d[Rev ID]:0xd180" ]; then + ssdk_sh debug phy set 5 0x40010087 0x208a + ssdk_sh debug phy set 6 0x40010087 0x208a + #Set the Reg0x67 bits[7:5]=3’b000 and bit4=1’b1 + ampl_val=$(eval "ssdk_sh debug phy get 5 0x40010067 | grep SSDK | grep -oE '0x[0-9a-fA-F]+' | sed 's/\(0x..\)./\11/'") + ssdk_sh debug phy set 5 0x40010067 $ampl_val + ampl_val=$(eval "ssdk_sh debug phy get 6 0x40010067 | grep SSDK | grep -oE '0x[0-9a-fA-F]+' | sed 's/\(0x..\)./\11/'") + ssdk_sh debug phy set 6 0x40010067 $ampl_val + fi +} + +function ipq53xx_uniphy_amplitude_set () { + #for ipq50xx sgmii, set half amplitude with tx_emp_lvl/margin_index and tx_margin + ssdk_sh debug uniphy set 0 0x7ac 0xb10d 4 + ssdk_sh debug uniphy set 0 0x24 0 4 + ssdk_sh debug uniphy set 1 0x7ac 0xb10d 4 + ssdk_sh debug uniphy set 1 0x24 0 4 +} + +ssdk_dependency() { + counter=0 + [ -e /lib/modules/$(uname -r)/qca-ssdk.ko ] && [ ! -d /sys/module/qca_ssdk ] && { + insmod qca-ssdk.ko + } + while [ ! -d /sys/ssdk ] && [ "$counter" -le 5 ] + do + sleep 1 + counter=$((counter+1)) + done +} + +start() { + ssdk_dependency + chip_ver=`ssdk_sh debug reg get 0 4 | grep Data | tr -d 'SSDK Init OK![Data]:'` + #The following commands should be uncommented to enable EDMA WAR + if [ "$chip_ver" = "0x1401" ]; then + #edma_war_config_add + echo '' + fi + #The following commands should be uncommented to add acl egress stp bypass rules + if [ "$chip_ver" = "0x1500" ] || [ "$chip_ver" = "0x1501" ] || [ "$chip_ver" = "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then + #create_acl_byp_egstp_rules $chip_ver + echo '' + fi + #The following commands should be uncommented to enable WAR for ipq50xx + chip_type_info=`cat tmp/sysinfo/model` + result=$(echo $chip_type_info | grep "IPQ5018") + if [ "$result" != "" ]; then + #ipq50xx_serdes_monitor & + #ipq50xx_uniphy_amplitude_set + #ipq50xx_phy_amplitude_set + echo '' + fi + if [ "$chip_ver" = "0x2001" ]; then + ipq53xx_uniphy_amplitude_set + ipq53xx_phy_amplitude_set + echo '' + fi + echo starting +} + +stop() { + chip_ver=`ssdk_sh debug reg get 0 4 | grep Data | tr -d 'SSDK Init OK![Data]:'` + #The following commands should be uncommented to disable EDMA WAR + if [ "$chip_ver" = "0x1401" ]; then + #edma_war_config_del + echo '' + fi + #The following commands should be uncommented to delete acl egress stp bypass rules + if [ "$chip_ver" = "0x1500" ] || [ "$chip_ver" = "0x1501" ] || [ "$chip_ver" = "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then + #delete_acl_byp_egstp_rules $chip_ver + echo '' + fi + echo stoping +} diff --git a/feeds/qca-wifi-7/qca-ssdk-qca/patches-zyxel_nwa210be/0001-pinctrl-make-the-switch-LED-works.patch b/feeds/qca-wifi-7/qca-ssdk-qca/patches-zyxel_nwa210be/0001-pinctrl-make-the-switch-LED-works.patch new file mode 100644 index 000000000..0fd4afc5b --- /dev/null +++ b/feeds/qca-wifi-7/qca-ssdk-qca/patches-zyxel_nwa210be/0001-pinctrl-make-the-switch-LED-works.patch @@ -0,0 +1,47 @@ +From 7fa9e9b683f1c573c58a14755347988919bc7d06 Mon Sep 17 00:00:00 2001 +From: YenLin Pan +Date: Wed, 14 May 2025 13:47:06 +0800 +Subject: [PATCH] pinctrl: make the switch LED works + +Enable switch LED pin definition for LED0/LED1/LED2 control + +Signed-off-by: YenLin Pan +--- + src/init/ssdk_mht_pinctrl.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/init/ssdk_mht_pinctrl.c b/src/init/ssdk_mht_pinctrl.c +index 2debe59..1ae0002 100755 +--- a/src/init/ssdk_mht_pinctrl.c ++++ b/src/init/ssdk_mht_pinctrl.c +@@ -33,11 +33,17 @@ static struct mht_pinctrl_setting mht_pin_settings[] = { + /*PINs default MUX Setting*/ + MHT_PIN_SETTING_MUX(0, MHT_PIN_FUNC_INTN_WOL), + MHT_PIN_SETTING_MUX(1, MHT_PIN_FUNC_INTN), +-#if 0 ++#if 1 + MHT_PIN_SETTING_MUX(2, MHT_PIN_FUNC_P0_LED_0), + MHT_PIN_SETTING_MUX(3, MHT_PIN_FUNC_P1_LED_0), + MHT_PIN_SETTING_MUX(4, MHT_PIN_FUNC_P2_LED_0), + MHT_PIN_SETTING_MUX(5, MHT_PIN_FUNC_P3_LED_0), ++ MHT_PIN_SETTING_MUX(6, MHT_PIN_FUNC_P0_LED_2), ++ MHT_PIN_SETTING_MUX(7, MHT_PIN_FUNC_P1_LED_2), ++ MHT_PIN_SETTING_MUX(8, MHT_PIN_FUNC_P2_LED_2), ++ MHT_PIN_SETTING_MUX(9, MHT_PIN_FUNC_P3_LED_2), ++#endif ++#if 0 + MHT_PIN_SETTING_MUX(6, MHT_PIN_FUNC_PPS_IN), + MHT_PIN_SETTING_MUX(7, MHT_PIN_FUNC_TOD_IN), + MHT_PIN_SETTING_MUX(8, MHT_PIN_FUNC_RTC_REFCLK_IN), +@@ -49,7 +55,7 @@ static struct mht_pinctrl_setting mht_pin_settings[] = { + MHT_PIN_SETTING_MUX(13, MHT_PIN_FUNC_P0_TOD_OUT), + MHT_PIN_SETTING_MUX(14, MHT_PIN_FUNC_P0_CLK125_TDI), + MHT_PIN_SETTING_MUX(15, MHT_PIN_FUNC_P0_SYNC_CLKO_PTP), +-#if 0 ++#if 1 + MHT_PIN_SETTING_MUX(16, MHT_PIN_FUNC_P0_LED_1), + MHT_PIN_SETTING_MUX(17, MHT_PIN_FUNC_P1_LED_1), + MHT_PIN_SETTING_MUX(18, MHT_PIN_FUNC_P2_LED_1), +-- +2.34.1 + diff --git a/profiles/zyxel_nwa210be.yml b/profiles/zyxel_nwa210be.yml new file mode 100644 index 000000000..18ee8f80a --- /dev/null +++ b/profiles/zyxel_nwa210be.yml @@ -0,0 +1,16 @@ +--- +profile: zyxel_nwa210be +target: ipq53xx +subtarget: generic +description: Build image for the zyxel nwa210be +image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-zyxel_nwa210be-squashfs-sysupgrade.tar +feeds: + - name: qca + path: ../../feeds/qca-wifi-7 +packages: + - ipq53xx + - qca-ssdk-shell +include: + - ucentral-ap +diffconfig: | + CONFIG_KERNEL_IPQ_MEM_PROFILE=0