From f8d9597a3a99d3ba447f86f50957e13d9554fcb5 Mon Sep 17 00:00:00 2001 From: andy79_yang Date: Wed, 1 Oct 2025 17:24:38 +0800 Subject: [PATCH] qca-wifi-7: Add Edgecore OAP106 model Signed-off-by: Andy Yang --- feeds/qca-wifi-7/ath12k-wifi/Makefile | 13 + .../ipq53xx/dts/ipq5332-edgecore-oap106.dts | 914 ++++++++++++++++++ feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk | 13 + profiles/edgecore_oap106.yml | 14 + 4 files changed, 954 insertions(+) create mode 100644 feeds/qca-wifi-7/ipq53xx/dts/ipq5332-edgecore-oap106.dts create mode 100644 profiles/edgecore_oap106.yml diff --git a/feeds/qca-wifi-7/ath12k-wifi/Makefile b/feeds/qca-wifi-7/ath12k-wifi/Makefile index 4e2e67314..c0ad8ad7c 100755 --- a/feeds/qca-wifi-7/ath12k-wifi/Makefile +++ b/feeds/qca-wifi-7/ath12k-wifi/Makefile @@ -43,6 +43,11 @@ $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for EAP105 endef +define Package/ath12k-wifi-edgecore-oap106 +$(call Package/ath12k-wifi-default) + TITLE:=board-2.bin for OAP106 +endef + define Package/ath12k-wifi-emplus-wap7635 $(call Package/ath12k-wifi-default) TITLE:=board-2.bin for WAP7635 @@ -117,6 +122,13 @@ define Package/ath12k-wifi-edgecore-eap105/install $(INSTALL_DATA) ./board-2.bin.eap105.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin endef +define Package/ath12k-wifi-edgecore-oap106/install + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ + $(INSTALL_DATA) ./board-2.bin.eap105.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin + $(INSTALL_DATA) ./board-2.bin.eap105.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin +endef + define Package/ath12k-wifi-emplus-wap7635/install $(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ @@ -213,6 +225,7 @@ endef $(eval $(call BuildPackage,ath12k-wifi-cig-wf189)) $(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105)) +$(eval $(call BuildPackage,ath12k-wifi-edgecore-oap106)) $(eval $(call BuildPackage,ath12k-wifi-emplus-wap7635)) $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap7110c-341x)) $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap750e-h)) diff --git a/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-edgecore-oap106.dts b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-edgecore-oap106.dts new file mode 100644 index 000000000..7fdfcdc48 --- /dev/null +++ b/feeds/qca-wifi-7/ipq53xx/dts/ipq5332-edgecore-oap106.dts @@ -0,0 +1,914 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * IPQ5332 RDP480 board device tree source + * + * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +/dts-v1/; + +#include "ipq5332.dtsi" +#include +#include +#include + + +/ { + model = "EdgeCore oap106"; + compatible = "edgecore,oap106", "qcom,ipq5332-ap-mi01.13", "qcom,ipq5332"; + + /* Layout for IPQ5332 + QCN9224 + QCN9224 + QCN9160 + * +==========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +---------+--------------+-------------------------+ + * | Q6 | | | + * | code/ | 0x4A900000 | 27MB | + * | data | | | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | data | 0x4C400000 | 21MB | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | M3 Dump | 0x4D900000 | 1MB | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | QDSS | 0x4DA00000 | 1MB | + * +---------+--------------+-------------------------+ + * | IPQ5332 | | | + * | CALDB | 0x4DB00000 | 5MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | data | 0x4E000000 | 21MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | M3 Dump | 0x4F500000 | 1MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | QDSS | 0x4F600000 | 1MB | + * +---------+--------------+-------------------------+ + * |QCN6432_1| | | + * | CALDB | 0x4F700000 | 5MB | + * +---------+--------------+-------------------------+ + * | QCN9160 | | | + * | data | 0x4FC00000 | 14MB | + * +---------+--------------+-------------------------+ + * | QCN9160 | | | + * | M3 Dump | 0x50A00000 | 1MB | + * +---------+--------------+-------------------------+ + * | QCN9160 | | | + * | QDSS | 0x50B00000 | 1MB | + * +---------+--------------+-------------------------+ + * | QCN9160 | | | + * | CALDB | 0x50C00000 | 5MB | + * +---------+--------------+-------------------------+ + * | | | | + * | MLO | 0x51100000 | 18MB | + * +---------+--------------+-------------------------+ + * | | | | + * | WKK1 | 0x52300000 | 50MB | + * | | | | + * +---------+--------------+-------------------------+ + * | | | | + * | WKK0 | 0x55500000 | 50MB | + * | | | | + * +---------+--------------+-------------------------+ + * | | | | + * | MHI0 | DYNAMIC | 9MB | + * | | | | + * +---------+--------------+-------------------------+ + * | | | | + * | MHI1 | DYNAMIC | 9MB | + * | | | | + * +==================================================+ + * | | + * | | + * | | + * | Rest of memory for Linux | + * | | + * | | + * | | + * +==================================================+ + */ + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + q6_mem_regions: q6_mem_regions@4A900000 { + no-map; + reg = <0x0 0x4a900000 0x0 0x6800000>; + }; + + q6_code_data: q6_code_data@4A900000 { + no-map; + reg = <0x0 0x4a900000 0x0 0x1B00000>; + }; + + q6_ipq5332_data: q6_ipq5332_data@4C400000 { + no-map; + reg = <0x0 0x4C400000 0x0 0x1500000>; + }; + + m3_dump: m3_dump@4D900000 { + no-map; + reg = <0x0 0x4D900000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4DA00000 { + no-map; + reg = <0x0 0x4DA00000 0x0 0x100000>; + }; + + q6_ipq5332_caldb: q6_ipq5332_caldb@4DB00000 { + no-map; + reg = <0x0 0x4DB00000 0x0 0x500000>; + }; + + q6_qcn6432_data_1: q6_qcn6432_data_1@4E000000 { + no-map; + reg = <0x0 0x4E000000 0x0 0x1500000>; + }; + + m3_dump_qcn6432_1: m3_dump_qcn6432_1@4F500000 { + no-map; + reg = <0x0 0x4F500000 0x0 0x100000>; + }; + + q6_qcn6432_etr_1: q6_qcn6432_etr_1@4F600000 { + no-map; + reg = <0x0 0x4F600000 0x0 0x100000>; + }; + + q6_qcn6432_caldb_1: q6_qcn6432_caldb_1@4F700000 { + no-map; + reg = <0x0 0x4F700000 0x0 0x500000>; + }; + + q6_qcn9160_data_2: q6_qcn9160_data_2@4FC00000 { + no-map; + reg = <0x0 0x4FC00000 0x0 0xe00000>; + }; + + m3_dump_qcn9160_2: m3_dump_qcn9160_2@50A00000 { + no-map; + reg = <0x0 0x50A00000 0x0 0x100000>; + }; + + q6_qcn9160_etr_2: q6_qcn9160_etr_2@50B00000 { + no-map; + reg = <0x0 0x50B00000 0x0 0x100000>; + }; + + q6_qcn9160_caldb_2: q6_qcn9160_caldb_2@50C00000 { + no-map; + reg = <0x0 0x50C00000 0x0 0x500000>; + }; + + mlo_global_mem0: mlo_global_mem_0@51100000 { + no-map; + reg = <0x0 0x51100000 0x0 0x1200000>; + }; + + qcn9224_pcie1: qcn9224_pcie1@52300000 { + no-map; + reg = <0x0 0x52300000 0x0 0x03200000>; + }; + + qcn9224_pcie0: qcn9224_pcie0@55500000 { + no-map; + reg = <0x0 0x55500000 0x0 0x03200000>; + }; + mhi_region0: dma_pool0@0 { + compatible = "shared-dma-pool"; + no-map; + size = <0x0 0x00900000>; + }; + mhi_region1: dma_pool1@1 { + compatible = "shared-dma-pool"; + no-map; + size = <0x0 0x00900000>; + }; + }; + + 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>; + pinctrl-names = "default"; + /*gpio22 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 = <12>; + compatible ="ethernet-phy-ieee802.3-c45"; + }; + + phy1: ethernet-phy@1 { + reg = <8>; + compatible ="ethernet-phy-ieee802.3-c45"; + }; + + }; + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + status = "okay"; + + button@1 { + label = "reset"; + linux,code = ; + gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + ess-instance { + num_devices = <0x1>; + + 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 = <0xd>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xd>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <12>; + ethernet-phy-ieee802.3-c45; + }; + port@1 { + port_id = <2>; + phy_address = <8>; + ethernet-phy-ieee802.3-c45; + }; + }; + }; + }; + + 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 = <8>; + qcom,link-poll = <1>; + phy-mode = "usxgmii"; + }; + + dp2 { + 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 = <12>; + qcom,link-poll = <1>; + phy-mode = "usxgmii"; + }; + + /* 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 155 4>, /* RxFill ring id #4 IRQ info */ + <0 156 4>, /* RxFill ring id #5 IRQ info */ + <0 157 4>, /* RxFill ring id #6 IRQ info */ + <0 158 4>, /* RxFill ring id #7 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 0 2>, + <2 2 0 1>; + }; + + q6v5_wcss: remoteproc@d100000 { + boot-args = <0x1 0x5 0x3 0x0 0x26 0x2 0x0>, + <0x1 0x5 0x4 0x2 0x2C 0x0 0x0>; + memory-region = <&q6_mem_regions>, + <&mlo_global_mem0>; + + upd-firmware-names = "IPQ5332/q6_fw1.mdt", + "IPQ5332/q6_fw3.mdt"; + /delete-node/ remoteproc_pd1; + /delete-node/ remoteproc_pd3; + + 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"; + memory-region = <&q6_ipq5332_data>, + <&m3_dump>, + <&q6_etr_region>, + <&q6_ipq5332_caldb>, + <&mlo_global_mem0>; + }; + + q6_wcss_pd3: remoteproc_pd3 { + compatible = "qcom,ipq5332-wcss-pcie-mpd"; + firmware = "IPQ5332/q6_fw3.mdt"; + m3_firmware = "qcn9160/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 24 0>, + <&wcss_smp2p_in 25 0>, + <&wcss_smp2p_in 28 0>, + <&wcss_smp2p_in 27 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + qcom,smem-states = <&wcss_smp2p_out 24>, + <&wcss_smp2p_out 25>, + <&wcss_smp2p_out 26>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + memory-region = <&q6_qcn9160_data_2>, + <&m3_dump_qcn9160_2>, + <&q6_qcn9160_etr_2>, + <&q6_qcn9160_caldb_2>; + 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"; +}; + +&blsp1_i2c1 { + clock-frequency = <400000>; + pinctrl-0 = <&i2c_1_pins>; + pinctrl-names = "default"; + status = "okay"; + + gpio_expander: gpio@74 { + compatible = "ti,tca9539"; + reg = <0x74>; + gpio-controller; + #gpio-cells = <2>; + status = "okay"; + + gpio-export { + compatible = "gpio-export"; + #size-cells = <0>; + + led_o { + gpios = <&gpio_expander 0 GPIO_ACTIVE_HIGH>; // P00 + gpio-export,name = "led_o"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + led_g { + gpios = <&gpio_expander 1 GPIO_ACTIVE_HIGH>; // P01 + gpio-export,name = "led_g"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + led_b { + gpios = <&gpio_expander 2 GPIO_ACTIVE_HIGH>; // P02 + gpio-export,name = "led_b"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + w_disable1 { + gpios = <&gpio_expander 3 GPIO_ACTIVE_HIGH>; // P03 + gpio-export,name = "w_disable1_l"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + w_disable2 { + gpios = <&gpio_expander 4 GPIO_ACTIVE_HIGH>; // P04 + gpio-export,name = "w_disable2_l"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + heater_1 { + gpios = <&gpio_expander 7 GPIO_ACTIVE_HIGH>; // P07 + gpio-export,name = "heater_1"; + gpio-export,direction = "out"; + gpio-export,output = <0>; + }; + + heater_2 { + gpios = <&gpio_expander 8 GPIO_ACTIVE_HIGH>; // P10 + gpio-export,name = "heater_2"; + gpio-export,direction = "out"; + gpio-export,output = <0>; + }; + + tpm_int { + gpios = <&gpio_expander 9 GPIO_ACTIVE_LOW>; // P11 + gpio-export,name = "tpm_int_l"; + gpio-export,direction = "in"; + }; + + tpm_rst { + gpios = <&gpio_expander 10 GPIO_ACTIVE_LOW>; // P12 + gpio-export,name = "tpm_rst_l"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + gps_rst { + gpios = <&gpio_expander 11 GPIO_ACTIVE_LOW>; // P13 + gpio-export,name = "gps_rst_l"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + ble_rst { + gpios = <&gpio_expander 12 GPIO_ACTIVE_LOW>; // P14 + gpio-export,name = "ble_rst_l"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + ble_backdoor { + gpios = <&gpio_expander 13 GPIO_ACTIVE_HIGH>; // P15 + gpio-export,name = "ble_backdoor"; + gpio-export,direction = "in"; + }; + + m2_coex_txd { + gpios = <&gpio_expander 14 GPIO_ACTIVE_HIGH>; // P16 + gpio-export,name = "m2_coex_txd"; + gpio-export,direction = "out"; + gpio-export,output = <1>; + }; + + m2_coex_rxd { + gpios = <&gpio_expander 15 GPIO_ACTIVE_HIGH>; // P17 + gpio-export,name = "m2_coex_rxd"; + gpio-export,direction = "in"; + }; + + }; + }; + + st33htpi: tpm@2e { + compatible = "infineon,slb9673"; + reg = <0x2e>; + status = "okay"; + }; +}; + +&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 = "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 = "disabled"; + + nandcs@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&pcie0_phy { + status = "okay"; +}; + +&pcie1_phy { + status = "okay"; +}; + +&pcie0 { + pinctrl-0 = <&pcie0_default_state>; + pinctrl-names = "default"; + perst-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + status = "okay"; + + pcie0_rp { + reg = <0 0 0 0 0>; + + qcom,mhi@2 { + 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_pcie0>, <&mhi_region0>; + qcom,board_id = <0x12>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <1>; + }; + }; +}; + +&pcie1 { + pinctrl-0 = <&pcie1_default_state>; + pinctrl-names = "default"; + phys = <&pcie1_phy>; + num-lanes = <1>; + 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>; + memory-region = <&qcn9224_pcie1>, <&mhi_region1>; + qcom,board_id = <0x4>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <2>; + }; + }; +}; + +&qcn9224_pcie0 { + status = "okay"; +}; + +&qcn9224_pcie1 { + status = "okay"; +}; + +/* PINCTRL */ + +&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; + }; + }; + + 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; + }; + + pcie0_default_state: pcie0-default-state { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + output-low; + }; + + pcie1_default_state: pcie1-default-state { + pins = "gpio47"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + output-low; + }; + + button_pins: button-state { + pins = "gpio25"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + 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; + }; + +}; + +&license_manager { + status = "okay"; +}; + +&usb3 { + qcom,select-utmi-as-pipe-clk; + status = "okay"; + + dwc3@8a00000 { + phys = <&hs_m31phy_0>; + phy-names = "usb2-phy"; + }; +}; + +&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 = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0 0x0>; + qcom,caldb-addr = <0x4DB00000 0x4DB00000 0x4DB00000 0x0 0x0 0x0>; + qcom,caldb-size = <0x500000>; + qcom,board_id = <0x13>; + mem-region = <&q6_ipq5332_data>; + memory-region = <&q6_ipq5332_data>; + qcom,wsi = <&wsi>; + qcom,wsi_index = <0>; + status = "ok"; +}; + +&qcn9224_pcie0 { + status = "ok"; +}; + +&qcn9224_pcie1 { + status = "ok"; +}; + +&mhi_region1 { + status = "ok"; +}; + +&wifi3 { + hremote_node = <&qcn9224_pcie0>; + /* QCN9224 radio 5G + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x55500000 | 28MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x57100000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x57200000 | 1MB | + * +---------+--------------+---------+ + * | Caldb | 0x57300000 | 8MB | + * +---------+--------------+---------+ + * |Pageable | 0x57B00000 | 12MB | + * +==================================+ + */ + base-addr = <0x55500000>; + m3-dump-addr = <0x57100000>; + etr-addr = <0x57200000>; + caldb-addr = <0x57300000>; + pageable-addr = <0x57B00000>; + hremote-size = <0x1C00000>; + pageable-size = <0xC00000>; + tgt-mem-mode = <0x0>; + board_id = <0x2>; + status = "ok"; +}; + +&wifi4 { + hremote_node = <&qcn9224_pcie1>; + /* QCN9224 radio 6G + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x52300000 | 28MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x53F00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x54000000 | 1MB | + * +---------+--------------+---------+ + * | Caldb | 0x54100000 | 8MB | + * +---------+--------------+---------+ + * |Pageable | 0x54900000 | 12MB | + * +==================================+ + */ + base-addr = <0x52300000>; + m3-dump-addr = <0x53F00000>; + etr-addr = <0x54000000>; + caldb-addr = <0x54100000>; + pageable-addr = <0x54900000>; + hremote-size = <0x1C00000>; + pageable-size = <0xC00000>; + tgt-mem-mode = <0x0>; + node_id=<0x1>; + board_id = <0x4>; + status = "ok"; +}; + +//&wifi5 { +// qcom,multipd_arch; +// qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; +// qcom,rproc = <&q6_wcss_pd3>; +// qcom,tgt-mem-mode = <0>; +// qcom,board_id = <0x101>; +// qcom,bdf-addr = <0x4FC00000 0x4FC00000 0x4FC00000 0x0 0x0 0x0>; +// qcom,caldb-addr = <0x50C00000 0x50C00000 0x50C00000 0x0 0x0 0x0>; +// qcom,caldb-size = <0x500000>; +// m3-dump-addr = <0x50A00000>; +// mem-region = <&q6_qcn9160_data_2>; +// memory-region = <&q6_qcn9160_data_2>; +// qcom,pci_slot_id = <2>; +// status = "ok"; +//}; diff --git a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk index 51c6ae544..1c738cac3 100755 --- a/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk +++ b/feeds/qca-wifi-7/ipq53xx/image/ipq53xx.mk @@ -52,6 +52,19 @@ define Device/edgecore_eap105 endef TARGET_DEVICES += edgecore_eap105 +define Device/edgecore_oap106 + DEVICE_TITLE := Edgecore OAP106 + DEVICE_DTS := ipq5332-edgecore-oap106 + DEVICE_DTS_DIR := ../dts + DEVICE_DTS_CONFIG := config@mi01.13 + IMAGES := sysupgrade.tar kernel.bin rootfs.bin + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/kernel.bin := append-kernel + IMAGE/rootfs.bin := append-rootfs + DEVICE_PACKAGES := ath12k-wifi-edgecore-oap106 ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 +endef +TARGET_DEVICES += edgecore_oap106 + define Device/emplus_wap7635 DEVICE_TITLE := EMPLUS WAP7635 DEVICE_DTS := ipq5332-emplus-wap7635 diff --git a/profiles/edgecore_oap106.yml b/profiles/edgecore_oap106.yml new file mode 100644 index 000000000..5697b4234 --- /dev/null +++ b/profiles/edgecore_oap106.yml @@ -0,0 +1,14 @@ +--- +profile: edgecore_oap106 +target: ipq53xx +subtarget: generic +description: Build image for the edgecore oap106 +image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-edgecore_oap106-squashfs-sysupgrade.tar +feeds: + - name: qca + path: ../../feeds/qca-wifi-7 +include: + - ucentral-ap +packages: + - ipq53xx + - qca-ssdk-shell