From 92f59a3f225f1f027431f7cf753d7d299adcfcf3 Mon Sep 17 00:00:00 2001 From: esha Date: Wed, 5 Jul 2023 14:06:33 +0530 Subject: [PATCH] Add Support for hfcl_ion4xi_w, hfcl_ion4x_w and hfcl_ion4xi_HMR Fixes: WIFI-12710 Signed-off-by: Esha Aggarwal --- .github/workflows/build-dev.yml | 2 +- .../ipq807x/base-files/etc/board.d/01_leds | 2 + .../ipq807x/base-files/etc/board.d/02_network | 7 +- .../etc/hotplug.d/firmware/10-ath11k-caldata | 8 +- .../ipq807x/base-files/etc/init.d/bootcount | 2 + .../base-files/lib/upgrade/platform.sh | 4 + .../boot/dts/qcom-ipq5018-hfcl-ion4x_w.dts | 23 + .../boot/dts/qcom-ipq5018-hfcl-ion4xi_HMR.dts | 23 + .../boot/dts/qcom/qcom-hfcl-ion4xi_HMR.dtsi | 1441 +++++++++++++++++ .../dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts | 1063 ++++++++++++ .../dts/qcom/qcom-ipq5018-hfcl-ion4xi_HMR.dts | 1059 ++++++++++++ .../dts/qcom/qcom-ipq5018-hfcl-ion4xi_w.dts | 2 +- feeds/ipq807x/ipq807x/image/ipq50xx.mk | 17 + .../files/etc/init.d/certificates | 2 + feeds/wifi-ax/ath11k-wifi/Makefile | 28 + .../board-hfcl-ion4xi_HMR.bin.IPQ5018 | Bin 0 -> 131072 bytes .../board-hfcl-ion4xi_HMR.bin.QCN6122 | Bin 0 -> 131072 bytes profiles/hfcl_ion4x_w.yml | 15 + profiles/hfcl_ion4xi_HMR.yml | 15 + profiles/hfcl_ion4xi_w.yml | 2 +- 20 files changed, 3710 insertions(+), 5 deletions(-) create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4x_w.dts create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4xi_HMR.dts create mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-hfcl-ion4xi_HMR.dtsi create mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts create mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_HMR.dts create mode 100644 feeds/wifi-ax/ath11k-wifi/board-hfcl-ion4xi_HMR.bin.IPQ5018 create mode 100644 feeds/wifi-ax/ath11k-wifi/board-hfcl-ion4xi_HMR.bin.QCN6122 create mode 100644 profiles/hfcl_ion4x_w.yml create mode 100644 profiles/hfcl_ion4xi_HMR.yml diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index c002bdb68..d9427daf8 100644 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - target: ['actiontec_web7200', 'cig_wf186w', 'cig_wf188n', 'cig_wf194c4', 'cig_wf196-us', 'cig_wf196-ca', 'cig_wf196-ca-ath12', 'cig_wf610d', 'cig_wf660a', 'cig_wf660a', 'cig_wf808', 'cybertan_eww622-a1', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'edgecore_eap101', 'edgecore_eap101-ath12', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap104-ath12', 'liteon_wpx8324', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_oap101_6e', 'edgecore_oap101e', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4','hfcl_ion4xi_wp', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'indio_um-305ac', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'indio_um-310ax-v1', 'indio_um-510axp-v1', 'indio_um-510axm-v1', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'meshpp_s618_cp03', 'meshpp_s618_cp01', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4', 'x64_vm', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] + target: ['actiontec_web7200', 'cig_wf186w', 'cig_wf188n', 'cig_wf194c4', 'cig_wf196-us', 'cig_wf196-ca', 'cig_wf196-ca-ath12', 'cig_wf610d', 'cig_wf660a', 'cig_wf660a', 'cig_wf808', 'cybertan_eww622-a1', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'edgecore_eap101', 'edgecore_eap101-ath12', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap104-ath12', 'liteon_wpx8324', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_oap101_6e', 'edgecore_oap101e', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4','hfcl_ion4xi_wp', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4xi_w', 'hfcl_ion4xi_HMR', 'hfcl_ion4x_w', 'indio_um-305ac', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'indio_um-310ax-v1', 'indio_um-510axp-v1', 'indio_um-510axm-v1', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'meshpp_s618_cp03', 'meshpp_s618_cp01', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4', 'x64_vm', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] steps: - uses: actions/checkout@v3 diff --git a/feeds/ipq807x/ipq807x/base-files/etc/board.d/01_leds b/feeds/ipq807x/ipq807x/base-files/etc/board.d/01_leds index 0de1eaa53..de8f2a9d4 100755 --- a/feeds/ipq807x/ipq807x/base-files/etc/board.d/01_leds +++ b/feeds/ipq807x/ipq807x/base-files/etc/board.d/01_leds @@ -44,6 +44,8 @@ hfcl,ion4xi_wp|\ hfcl,ion4x|\ hfcl,ion4x_2|\ hfcl,ion4xi_w|\ +hfcl,ion4x_w|\ +hfcl,ion4xi_HMR|\ hfcl,ion4xe) ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wifi5" "phy0tpt" ucidef_set_led_wlan "wlan2g" "WLAN2G" "blue:wifi2" "phy1tpt" diff --git a/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network b/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network index 5fb037683..13889217a 100755 --- a/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network +++ b/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network @@ -74,9 +74,14 @@ qcom_setup_interfaces() ucidef_set_interface_lan "eth0 eth1 eth2 eth3" ucidef_set_interface_wan "eth4" ;; - hfcl,ion4xi_w) + hfcl,ion4xi_w|\ + hfcl,ion4x_w) ucidef_set_interface_wan "eth0" ;; + hfcl,ion4xi_HMR) + ucidef_set_interface_lan "eth1" + ucidef_set_interface_wan "eth0" + ;; qcom,ipq807x-hk14) ucidef_set_interface_lan "eth0 eth1 eth2 eth3" ucidef_set_interface_wan "eth4" diff --git a/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata index a19fdc013..46e050eba 100755 --- a/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata +++ b/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata @@ -40,7 +40,7 @@ ath11k_generate_macs_wf194() { } ath11k_generate_macs_ion4x() { - local dev=$(find_mtd_chardev "0:APPSBLENV") + local dev=$(find_mtd_chardev "0:ART") touch /lib/firmware/ath11k-macs wifimac0=$(grep WLAN0_BASEMAC= $dev |cut -d '=' -f2) wifimac1=$(grep WLAN1_BASEMAC= $dev |cut -d '=' -f2) @@ -165,6 +165,8 @@ ath11k/IPQ5018/hw1.0/caldata.bin) edgecore,eap104|\ yuncore,fap655|\ hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ liteon,wpx8324|\ motorola,q14|\ muxi,ap3220l|\ @@ -178,6 +180,8 @@ ath11k/qcn6122/hw1.0/caldata_1.bin) case "$board" in cig,wf186w|\ hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ cybertan,eww631-a1|\ cybertan,eww631-b1|\ yuncore,fap655|\ @@ -224,6 +228,8 @@ ath11k-macs) case "$board" in hfcl,ion4xi|\ hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ hfcl,ion4xi_wp|\ hfcl,ion4x|\ hfcl,ion4x_2|\ diff --git a/feeds/ipq807x/ipq807x/base-files/etc/init.d/bootcount b/feeds/ipq807x/ipq807x/base-files/etc/init.d/bootcount index b3e67532b..10bc25405 100755 --- a/feeds/ipq807x/ipq807x/base-files/etc/init.d/bootcount +++ b/feeds/ipq807x/ipq807x/base-files/etc/init.d/bootcount @@ -8,6 +8,8 @@ boot() { hfcl,ion4x|\ hfcl,ion4x_2|\ hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ hfcl,ion4xi_wp|\ hfcl,ion4xi) fw_setenv boot_count 0 diff --git a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh index c2b34cfad..2f6e7e879 100755 --- a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh @@ -134,6 +134,8 @@ platform_check_image() { edgecore,eap106|\ hfcl,ion4xi|\ hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ hfcl,ion4xi_wp|\ hfcl,ion4x|\ hfcl,ion4x_2|\ @@ -218,6 +220,8 @@ platform_do_upgrade() { nand_upgrade_tar "$1" ;; hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ hfcl,ion4xi_wp) wp_part=$(fw_printenv primary | cut -d = -f2) echo "Current Primary is $wp_part" diff --git a/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4x_w.dts b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4x_w.dts new file mode 100644 index 000000000..8bf83f74f --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4x_w.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, The Linux Foundation. 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. + */ + +#include "../../../arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts" + +/ { + pmuv8: pmu { + compatible = "arm,cortex-a7-pmu"; + }; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4xi_HMR.dts b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4xi_HMR.dts new file mode 100644 index 000000000..573e6cd75 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-hfcl-ion4xi_HMR.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, The Linux Foundation. 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. + */ + +#include "../../../arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_HMR.dts" + +/ { + pmuv8: pmu { + compatible = "arm,cortex-a7-pmu"; + }; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-hfcl-ion4xi_HMR.dtsi b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-hfcl-ion4xi_HMR.dtsi new file mode 100755 index 000000000..614547e0a --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-hfcl-ion4xi_HMR.dtsi @@ -0,0 +1,1441 @@ +/* + * Copyright (c) 2018-2021, The Linux Foundation. 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. + */ + +#include +#include +#include +#include +#include +#include +#include "qcom-ipq5018-memory.dtsi" +#include "qcom-ipq5018-mhi.dtsi" +#include "ipq5018_clocks.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. IPQ5018"; + compatible = "qcom,ipq5018"; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + status = "ok"; + }; + +#ifdef ENABLE_QSEECOM + qseecom { + compatible = "ipq5018-qseecom"; + mem-start = <0x4a400000>; + mem-size = <0x200000>; + }; +#endif + + soc: soc { + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges = <0 0 0 0xffffffff>; + compatible = "simple-bus"; + + intc: interrupt-controller@b000000 { + compatible = "qcom,msm-qgic2"; + interrupt-controller; + #interrupt-cells = <0x3>; + reg = <0xb000000 0x1000>, <0xb002000 0x1000>; + ranges = <0x0 0xb00a000 0x1ffa>; + + v2m0: v2m@0 { + compatible = "arm,gic-v2m-frame"; + msi-controller; + reg = <0x0 0xffd>; + }; + + v2m1: v2m@1000 { + compatible = "arm,gic-v2m-frame"; + msi-controller; + reg = <0x1000 0xffd>; + }; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = , + , + , + ; + clock-frequency = <24000000>; + }; + + gcc: gcc@1800000 { + compatible = "qcom,gcc-ipq5018"; + reg = <0x1800000 0x80000>; + #clock-cells = <0x1>; + #reset-cells = <0x1>; + }; + + apss_clk: qcom,apss_clk@b111000 { + compatible = "qcom,apss-ipq5018"; + reg = <0xb111000 0x6000>; + #clock-cells = <0x1>; + #reset-cells = <1>; + }; + + blsp1_uart2: serial@78b0000 { + compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; + reg = <0x78b0000 0x200>; + interrupts = ; + clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; + status = "disabled"; + }; + + blsp1_uart1: serial@78af000 { + compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; + reg = <0x78af000 0x200>; + interrupts = ; + clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; + status = "disabled"; + }; + + blsp_dma: dma@7884000 { + compatible = "qcom,bam-v1.7.0"; + reg = <0x07884000 0x1d000>; + interrupts = ; + clocks = <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "bam_clk"; + #dma-cells = <1>; + qcom,ee = <0>; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + compatible = "qcom,spi-qup-v2.2.1"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x78b5000 0x600>; + interrupts = ; + spi-max-frequency = <50000000>; + clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; + dmas = <&blsp_dma 4>, <&blsp_dma 5>; + dma-names = "tx", "rx"; + status = "disabled"; + }; + pwm { + compatible = "qca,ipq6018-pwm"; + reg = <0x1941010 0x20>; + clocks = <&gcc GCC_ADSS_PWM_CLK>; + clock-names = "core"; + src-freq = <100000000>; + pwm-base-index = <0>; + used-pwm-indices = <1>, <1>, <1>, <1>; + status = "disabled"; + }; + + mdio0: mdio@88000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "qcom,qca-mdio", "qcom,ipq40xx-mdio"; + reg = <0x88000 0x64>; + status = "disabled"; + resets = <&gcc GCC_GEPHY_MDC_SW_ARES>; + reset-names = "gephy_mdc_rst"; + }; + + mdio1: mdio@90000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "qcom,qca-mdio"; + reg = <0x90000 0x64>; + status = "disabled"; + }; + ess-instance { + ess-switch@0x39c00000 { + compatible = "qcom,ess-switch-ipq50xx"; + reg = <0x39c00000 0x200000>; + switch_access_mode = "local bus"; + clocks = <&gcc GCC_CMN_BLK_AHB_CLK>, + <&gcc GCC_CMN_BLK_SYS_CLK>, + <&gcc GCC_UNIPHY_AHB_CLK>, + <&gcc GCC_UNIPHY_SYS_CLK>, + <&gcc GCC_MDIO0_AHB_CLK>, + <&gcc GCC_MDIO1_AHB_CLK>, + <&gcc GCC_GMAC0_CFG_CLK>, + <&gcc GCC_GMAC0_SYS_CLK>, + <&gcc GCC_GMAC1_CFG_CLK>, + <&gcc GCC_GMAC1_SYS_CLK>, + <&gcc GCC_GEPHY_RX_CLK>, + <&gcc GCC_GEPHY_TX_CLK>, + <&gcc GCC_UNIPHY_RX_CLK>, + <&gcc GCC_UNIPHY_TX_CLK>, + <&gcc GCC_GMAC0_RX_CLK>, + <&gcc GCC_GMAC0_TX_CLK>, + <&gcc GCC_GMAC1_RX_CLK>, + <&gcc GCC_GMAC1_TX_CLK>, + <&gcc GCC_SNOC_GMAC0_AHB_CLK>, + <&gcc GCC_SNOC_GMAC1_AHB_CLK>, + <&gcc GCC_GMAC0_PTP_CLK>, + <&gcc GCC_GMAC1_PTP_CLK>; + clock-names = "cmn_ahb_clk", "cmn_sys_clk", + "uniphy_ahb_clk", "uniphy_sys_clk", + "gcc_mdio0_ahb_clk", + "gcc_mdio1_ahb_clk", + "gcc_gmac0_cfg_clk", + "gcc_gmac0_sys_clk", + "gcc_gmac1_cfg_clk", + "gcc_gmac1_sys_clk", + "uniphy0_port1_rx_clk", + "uniphy0_port1_tx_clk", + "uniphy1_port5_rx_clk", + "uniphy1_port5_tx_clk", + "nss_port1_rx_clk", "nss_port1_tx_clk", + "nss_port2_rx_clk", "nss_port2_tx_clk", + "gcc_snoc_gmac0_ahb_clk", + "gcc_snoc_gmac1_ahb_clk", + "gcc_gmac0_ptp_clk", + "gcc_gmac1_ptp_clk"; + resets = <&gcc GCC_GEPHY_BCR>, <&gcc GCC_UNIPHY_BCR>, + <&gcc GCC_GMAC0_BCR>, <&gcc GCC_GMAC1_BCR>, + <&gcc GCC_UNIPHY_SOFT_RESET>, + <&gcc GCC_GEPHY_MISC_ARES>; + reset-names = "gephy_bcr_rst", "uniphy_bcr_rst", + "gmac0_bcr_rst", "gmac1_bcr_rst", + "uniphy1_soft_rst", + "gephy_misc_rst"; + }; + }; + + ess-uniphy@98000 { + compatible = "qcom,ess-uniphy"; + reg = <0x98000 0x800>; + uniphy_access_mode = "local bus"; + }; + + msm_imem: qcom,msm-imem@8600000 { + compatible = "qcom,msm-imem"; + reg = <0x08600000 0x1000>; + ranges = <0x0 0x08600000 0x1000>; + #address-cells = <1>; + #size-cells = <1>; + + mem_dump_table@10 { + compatible = "qcom,msm-imem-mem_dump_table"; + reg = <0x10 8>; + }; + }; + + cryptobam: dma@704000 { + compatible = "qcom,bam-v1.7.0"; + reg = <0x00704000 0x20000>; + interrupts = ; + clocks = <&gcc GCC_CRYPTO_AHB_CLK>; + clock-names = "bam_clk"; + #dma-cells = <1>; + qcom,ee = <1>; + qcom,controlled-remotely = <1>; + }; + + crypto: crypto@73a000 { + compatible = "qcom,crypto-v5.1"; + reg = <0x0073a000 0x6000>; + clocks = <&gcc GCC_CRYPTO_AHB_CLK>, + <&gcc GCC_CRYPTO_AXI_CLK>, + <&gcc GCC_CRYPTO_CLK>; + clock-names = "iface", "bus", "core"; + dmas = <&cryptobam 2>, <&cryptobam 3>; + dma-names = "rx", "tx"; + qce,cmd_desc_support; + }; + + qpic_bam: dma@7984000{ + compatible = "qcom,bam-v1.7.0"; + reg = <0x7984000 0x1c000>; + interrupts = ; + clocks = <&gcc GCC_QPIC_AHB_CLK>; + clock-names = "bam_clk"; + #dma-cells = <1>; + qcom,ee = <0>; + status = "disabled"; + }; + + qcom,sps { + compatible = "qcom,msm_sps_4k"; + qcom,pipe-attr-ee; + }; + + nand: qpic-nand@79b0000 { + compatible = "qcom,ebi2-nandc-bam-v2.1.1"; + reg = <0x79b0000 0x10000>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&gcc GCC_QPIC_CLK>, + <&gcc GCC_QPIC_AHB_CLK>, + <&gcc GCC_QPIC_IO_MACRO_CLK>; + clock-names = "core", "aon", "io_macro"; + + dmas = <&qpic_bam 0>, + <&qpic_bam 1>, + <&qpic_bam 2>, + <&qpic_bam 3>; + dma-names = "tx", "rx", "cmd", "status"; + + qpic,io_macro_clk_rates = <24000000 100000000 200000000 320000000>; + status = "disabled"; + + nandcs@0 { + compatible = "qcom,nandcs"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; + }; + + sdhc_1: sdhci@7804000 { + compatible = "qcom,sdhci-msm-v5"; + reg = <0x7804000 0x1000>; + reg-names = "hc_mem"; + + interrupts = , + ; + interrupt-names = "hc_irq", "pwr_irq"; + + qcom,bus-width = <4>; + qcom,max_clk = <192000000>; + + qcom,dedicated-io = <1>; + + /* device core power supply */ + qcom,vdd-voltage-level = <2900000 2900000>; + qcom,vdd-current-level = <200 570000>; + + /* device communication power supply */ + qcom,vdd-io-lpm-sup; + qcom,vdd-io-voltage-level = <1800000 1800000>; + qcom,vdd-io-current-level = <200 325000>; + qcom,vdd-io-always-on; + + qcom,cpu-dma-latency-us = <701>; + qcom,msm-bus,name = "sdhc1"; + qcom,msm-bus,num-cases = <9>; + qcom,msm-bus,num-paths = <1>; + qcom,msm-bus,vectors-KBps = <78 512 0 0>, /* No vote */ + <78 512 1046 3200>, /* 400 KB/s*/ + <78 512 52286 160000>, /* 20 MB/s */ + <78 512 65360 200000>, /* 25 MB/s */ + <78 512 130718 400000>, /* 50 MB/s */ + <78 512 261438 800000>, /* 100 MB/s */ + <78 512 261438 800000>, /* 200 MB/s */ + <78 512 261438 800000>, /* 400 MB/s */ + <78 512 1338562 4096000>; /* Max. bandwidth */ + qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 \ + 50000000 100000000 200000000 \ + 400000000 4294967295>; + + clocks = <&gcc GCC_SDCC1_AHB_CLK>, + <&gcc GCC_SDCC1_APPS_CLK>; + clock-names = "iface_clk", "core_clk"; + qcom,large-address-bus; + qcom,disable-aggressive-pm; + status = "disabled"; + }; + + nss-common { + compatible = "qcom,nss-common"; + reg = <0x01868010 0x01>; + reg-names = "nss-misc-reset"; + }; + + nss0: nss@40000000 { + compatible = "qcom,nss"; + interrupts = <0 402 0x1>, <0 401 0x1>, <0 400 0x1>, + <0 399 0x1>, <0 398 0x1>, <0 397 0x1>, + <0 396 0x1>, <0 395 0x1>; + reg = <0x07a00000 0x100>, <0x0b111000 0x1000>; + reg-names = "nphys", "qgic-phys"; + clocks = <&gcc GCC_UBI0_CFG_CLK>, + <&gcc GCC_UBI0_DBG_CLK>, + <&gcc GCC_UBI0_CORE_CLK>, + <&gcc GCC_UBI0_UTCM_CLK>, + <&gcc GCC_UBI0_AXI_CLK>, + <&gcc GCC_SNOC_UBI0_AXI_CLK>, + <&gcc GCC_UBI0_NC_AXI_CLK>; + clock-names = "nss-cfg-clk", "nss-dbg-clk", + "nss-core-clk", "nss-utcm-clk", + "nss-axi-clk", + "nss-snoc-axi-clk", + "nss-nc-axi-clk"; + qcom,id = <0>; + qcom,num-queue = <4>; + qcom,num-irq = <8>; + qcom,num-pri = <4>; + qcom,load-addr = <0x40000000>; + qcom,low-frequency = <850000000>; + qcom,mid-frequency = <850000000>; + qcom,max-frequency = <1000000000>; + qcom,ipv4-enabled; + qcom,ipv4-reasm-enabled; + qcom,ipv6-enabled; + qcom,ipv6-reasm-enabled; + qcom,wlanredirect-enabled; + qcom,tun6rd-enabled; + qcom,l2tpv2-enabled; + qcom,gre-enabled; + qcom,gre-redir-enabled; + qcom,gre-redir-mark-enabled; + qcom,map-t-enabled; + qcom,portid-enabled; + qcom,pppoe-enabled; + qcom,pptp-enabled; + qcom,tunipip6-enabled; + qcom,shaping-enabled; + qcom,wlan-dataplane-offload-enabled; + qcom,pvxlan-enabled; + qcom,clmap-enabled; + qcom,vxlan-enabled; + qcom,match-enabled; + qcom,mirror-enabled; + qcom,crypto-enabled; + qcom,ipsec-enabled; + qcom,rmnet_rx-enabled; + qcom,udp-st-enabled; + }; + + nss-dp-common { + compatible = "qcom,nss-dp-common"; + qcom,tcsr-base = <0x01937000>; + }; + + nss_crypto: qcom,nss_crypto { + compatible = "qcom,nss-crypto"; + #address-cells = <1>; + #size-cells = <1>; + qcom,max-contexts = <64>; + qcom,max-context-size = <144>; + ranges; + ce5_node { + compatible = "qcom,ce5"; + reg-names = "crypto_pbase", "bam_base"; + reg = <0x0073a000 0x6000>, + <0x00704000 0x20000>; + qcom,dma-mask = <0x0c>; + qcom,transform-enabled; + qcom,aes128-cbc; + qcom,aes256-cbc; + qcom,aes128-ctr; + qcom,aes256-ctr; + qcom,aes128-ecb; + qcom,aes256-ecb; + qcom,3des-cbc; + qcom,sha160-hash; + qcom,sha256-hash; + qcom,sha160-hmac; + qcom,sha256-hmac; + qcom,aes128-cbc-sha160-hmac; + qcom,aes256-cbc-sha160-hmac; + qcom,aes128-ctr-sha160-hmac; + qcom,aes256-ctr-sha160-hmac; + qcom,3des-cbc-sha160-hmac; + qcom,3des-cbc-sha256-hmac; + qcom,aes128-cbc-sha256-hmac; + qcom,aes256-cbc-sha256-hmac; + qcom,aes128-ctr-sha256-hmac; + qcom,aes256-ctr-sha256-hmac; + engine0 { + qcom,ee = <2 3>; + }; + }; + }; + + acc0:clock-controller@b188000 { + compatible = "qcom,arm-cortex-acc"; + reg = <0x0b188000 0x1000>; + }; + + acc1:clock-controller@b198000 { + compatible = "qcom,arm-cortex-acc"; + reg = <0x0b198000 0x1000>; + }; + + qcom_rng: qrng@e1000 { + compatible = "qcom,prng-ipq807x"; + reg = <0xe3000 0x1000>; + clocks = <&gcc GCC_PRNG_AHB_CLK>; + clock-names = "core"; + status = "ok"; + }; + + qca,scm_restart_reason { + compatible = "qca,scm_restart_reason"; + dload_status = <0>; + dload_warm_reset = <0>; + }; + + watchdog: watchdog@b017000 { + compatible = "qcom,kpss-wdt-ipq5018"; + reg = <0xb017000 0x1000>; + reg-names = "kpss_wdt"; + interrupt-names = "bark_irq"; + interrupts = ; + clocks = <&sleep_clk>; + timeout-sec = <10>; + wdt-max-timeout = <32>; + }; + + apcs: syscon@b111000 { + compatible = "syscon"; + reg = <0x0B111000 0x1000>; + }; + + wcss: smp2p-wcss { + compatible = "qcom,smp2p"; + qcom,smem = <435>, <428>; + + interrupt-parent = <&intc>; + interrupts = <0 177 1>; + + qcom,ipc = <&apcs 8 9>; + + qcom,local-pid = <0>; + qcom,remote-pid = <1>; + + wcss_smp2p_out: master-kernel { + qcom,entry-name = "master-kernel"; + qcom,smp2p-feature-ssr-ack; + #qcom,smem-state-cells = <1>; + }; + + wcss_smp2p_in: slave-kernel { + qcom,entry-name = "slave-kernel"; + interrupt-controller; + #interrupt-cells = <2>; + }; + }; + + q6v5_wcss: q6v5_wcss@CD00000 { + compatible = "qca,q6v5-wcss-rproc-ipq50xx"; + firmware = "IPQ5018/q6_fw.mdt"; + reg = <0xCD00000 0x10000>, + <0x194f000 0x10>, + <0x1952000 0x10>, + <0x4ab000 0x20>, + <0x1818000 0x10>, + <0x1859000 0x10>, + <0x1945000 0x10>, + <0x193D204 0x4>; + reg-names = "wcss-base", + "tcsr-q6-base", + "tcsr-base", + "mpm-base", + "gcc-wcss-bcr-base", + "gcc-wcss-misc-base", + "tcsr-global", + "tcsr-q6-boot-trig"; + qca,auto-restart; + qca,extended-intc; + qca,dump-q6-reg; + qca,emulation; + interrupts-extended = <&intc 0 291 1>, + <&wcss_smp2p_in 0 0>, + <&wcss_smp2p_in 1 0>, + <&wcss_smp2p_in 3 0>; + interrupt-names = "wdog", + "qcom,gpio-err-fatal", + "qcom,gpio-err-ready", + "qcom,gpio-stop-ack"; + qcom,smem-states = <&wcss_smp2p_out 0>, + <&wcss_smp2p_out 1>; + qcom,smem-state-names = "shutdown", + "stop"; + }; + + q6v5_m3: q6v5_m3 { + compatible = "qca,q6v5-m3-rproc"; + firmware = "IPQ5018/m3_fw.mdt"; + qca,auto-restart; + qcom,restart-group = <&q6v5_m3 &q6v5_wcss>; + }; + + tcsr_mutex_block: syscon@1905000 { + compatible = "syscon"; + reg = <0x1905000 0x8000>; + }; + + tcsr_mutex: hwlock@1905000 { + compatible = "qcom,tcsr-mutex"; + syscon = <&tcsr_mutex_block 0 0x80>; + #hwlock-cells = <1>; + }; + + smem: qcom,smem@4AB00000 { + compatible = "qcom,smem"; + memory-region = <&smem_region>; + hwlocks = <&tcsr_mutex 0>; + }; + + apcs_glb: mailbox@b111000 { + compatible = "qcom,msm8996-apcs-hmss-global"; + qcom,ipc = <&apcs 8 8>; + + #mbox-cells = <1>; + }; + + tcsr_q6_block: syscon@1945000 { + compatible = "syscon"; + reg = <0x1945000 0xE000>; + }; + + qcom_q6v5_wcss: qcom_q6v5_wcss@CD00000 { + compatible = "qcom,ipq5018-wcss-pil"; + firmware = "IPQ5018/q6_fw.mdt"; + m3_firmware = "IPQ5018/m3_fw.mdt"; + reg = <0xCD00000 0x4040>, + <0x4ab000 0x20>, + <0x4a1000 0x10>, + <0x1938000 0x8>, + <0x193D204 0x4>; + reg-names = "qdsp6", + "rmb", + "mpm", + "tcsr-msip", + "tcsr-q6-boot-trig"; + clocks = <&gcc GCC_Q6_AXIS_CLK>, + <&gcc GCC_WCSS_AHB_S_CLK>, + <&gcc GCC_WCSS_ECAHB_CLK>, + <&gcc GCC_WCSS_ACMT_CLK>, + <&gcc GCC_WCSS_AXI_M_CLK>, + <&gcc GCC_Q6_AXIM_CLK>, + <&gcc GCC_Q6_AXIM2_CLK>, + <&gcc GCC_Q6_AHB_CLK>, + <&gcc GCC_Q6_AHB_S_CLK>, + <&gcc GCC_WCSS_AXI_S_CLK>; + clock-names = "gcc_q6_axis_clk", + "gcc_wcss_ahb_s_clk", + "gcc_wcss_ecahb_clk", + "gcc_wcss_acmt_clk", + "gcc_wcss_axi_m_clk", + "gcc_q6_axim_clk", + "gcc_q6_axim2_clk", + "gcc_q6_ahb_clk", + "gcc_q6_ahb_s_clk", + "gcc_wcss_axi_s_clk"; + qca,auto-restart; + qca,extended-intc; + qca,wcss-aon-reset-seq; + interrupts-extended = <&intc 0 291 1>, + <&wcss_smp2p_in 0 0>, + <&wcss_smp2p_in 1 0>, + <&wcss_smp2p_in 2 0>, + <&wcss_smp2p_in 3 0>; + interrupt-names = "wdog", + "fatal", + "ready", + "handover", + "stop-ack"; + + resets = <&gcc GCC_WCSSAON_RESET>, + <&gcc GCC_WCSS_BCR>, + <&gcc GCC_WCSS_Q6_BCR>, + <&gcc GCC_CE_BCR>; + + reset-names = "wcss_aon_reset", + "wcss_reset", + "wcss_q6_reset", + "ce_reset"; + + qcom,halt-regs = <&tcsr_q6_block 0xA000 0xD000 0x0>; + + qcom,smem-states = <&wcss_smp2p_out 0>, + <&wcss_smp2p_out 1>; + qcom,smem-state-names = "shutdown", + "stop"; + + qcom,q6v6; + + glink-edge { + interrupts = ; + qcom,remote-pid = <1>; + mboxes = <&apcs_glb 8>; + + rpm_requests { + qcom,glink-channels = "IPCRTR"; + }; + }; + }; + + wifi0: wifi@c000000 { + compatible = "qcom,cnss-qca5018", "qcom,ipq5018-wifi"; + reg = <0xc000000 0x1000000>; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; + #else + qcom,tgt-mem-mode = <1>; + #endif + qcom,rproc = <&qcom_q6v5_wcss>; + interrupts = <0 288 1>, /* o_wcss_apps_intr[0] = */ + <0 289 1>, + <0 290 1>, + <0 292 1>, + <0 293 1>, + <0 294 1>, + <0 295 1>, + <0 296 1>, + <0 297 1>, + <0 298 1>, + <0 299 1>, + <0 300 1>, + <0 301 1>, + <0 302 1>, + <0 303 1>, + <0 304 1>, + <0 305 1>, + <0 306 1>, + <0 307 1>, + <0 308 1>, + <0 309 1>, + <0 310 1>, + <0 311 1>, + <0 312 1>, + <0 313 1>, /* o_wcss_apps_intr[25] */ + + <0 314 1>, + <0 315 1>, + <0 316 1>, + <0 317 1>, + <0 318 1>, + <0 319 1>, + <0 320 1>, + <0 321 1>, + <0 322 1>, + <0 323 1>, + <0 324 1>, + <0 325 1>, + + <0 326 1>, + + <0 327 1>, + <0 328 1>, + <0 329 1>, + <0 330 1>, + <0 331 1>, + <0 332 1>, + + <0 333 1>, + <0 334 1>, + <0 335 1>, + <0 336 1>, + <0 337 1>, + <0 338 1>, + <0 339 1>; /* o_wcss_apps_intr[51] */ + + interrupt-names = "misc-pulse1", + "misc-latch", + "sw-exception", + "ce0", + "ce1", + "ce2", + "ce3", + "ce4", + "ce5", + "ce6", + "ce7", + "ce8", + "ce9", + "ce10", + "ce11", + "host2wbm-desc-feed", + "host2reo-re-injection", + "host2reo-command", + "host2rxdma-monitor-ring3", + "host2rxdma-monitor-ring2", + "host2rxdma-monitor-ring1", + "reo2ost-exception", + "wbm2host-rx-release", + "reo2host-status", + "reo2host-destination-ring4", + "reo2host-destination-ring3", + "reo2host-destination-ring2", + "reo2host-destination-ring1", + "rxdma2host-monitor-destination-mac3", + "rxdma2host-monitor-destination-mac2", + "rxdma2host-monitor-destination-mac1", + "ppdu-end-interrupts-mac3", + "ppdu-end-interrupts-mac2", + "ppdu-end-interrupts-mac1", + "rxdma2host-monitor-status-ring-mac3", + "rxdma2host-monitor-status-ring-mac2", + "rxdma2host-monitor-status-ring-mac1", + "host2rxdma-host-buf-ring-mac3", + "host2rxdma-host-buf-ring-mac2", + "host2rxdma-host-buf-ring-mac1", + "rxdma2host-destination-ring-mac3", + "rxdma2host-destination-ring-mac2", + "rxdma2host-destination-ring-mac1", + "host2tcl-input-ring4", + "host2tcl-input-ring3", + "host2tcl-input-ring2", + "host2tcl-input-ring1", + "wbm2host-tx-completions-ring3", + "wbm2host-tx-completions-ring2", + "wbm2host-tx-completions-ring1", + "tcl2host-status-ring"; + status = "disabled"; + qcom,pta-num = <0>; + qcom,coex-mode = <0x3>; + qcom,bt-active-time = <0>; + qcom,bt-priority-time = <0>; + qcom,coex-algo = <0x2>; + qcom,pta-priority = <0>; + }; + + wifi1: wifi1@c000000 { + compatible = "qcom,cnss-qcn6122", "qcom,qcn6122-wifi"; + qcom,rproc = <&qcom_q6v5_wcss>; + status = "disabled"; + }; + + wifi2: wifi2@c000000 { + compatible = "qcom,cnss-qcn6122", "qcom,qcn6122-wifi"; + qcom,rproc = <&qcom_q6v5_wcss>; + status = "disabled"; + }; + + i2c_0: 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 9>, <&blsp_dma 8>; + dma-names = "rx", "tx"; + status = "disabled"; + }; + + tlmm: pinctrl@1000000 { + compatible = "qcom,ipq5018-pinctrl"; + reg = <0x1000000 0x300000>; + interrupts = <0x0 0xd0 0x0>; + gpio-controller; + #gpio-cells = <0x2>; + interrupt-controller; + #interrupt-cells = <0x2>; + }; + + dbm_1p5: dbm@0x8AF8000 { + compatible = "qcom,usb-dbm-1p5"; + reg = <0x8AF8000 0x300>; + qcom,reset-ep-after-lpm-resume; + }; + + hs_m31phy_0: hs_m31phy@5b000 { + compatible = "qca,m31-usb-hsphy"; + reg = <0x05b000 0x120>, + <0x08af8800 0x400>; + reg-names = "m31usb_phy_base", + "qscratch_base"; + phy_type= "utmi"; + + resets = <&gcc GCC_QUSB2_0_PHY_BCR>; + reset-names = "usb2_phy_reset"; + + status = "disabled"; + }; + + ssuniphy_0: ssuniphy@5d000 { + compatible = "qca,ipq5018-uni-ssphy"; + reg = <0x5d000 0x800>; + clocks = <&gcc GCC_USB0_PIPE_CLK>, + <&gcc GCC_USB0_PHY_CFG_AHB_CLK>; + + clock-names = "pipe_clk", "phy_cfg_ahb_clk"; + + resets = <&gcc GCC_USB0_PHY_BCR>; + reset-names = "por_rst"; + #phy-cells = <0>; + status = "disabled"; + }; + + usb3: usb3@8A00000 { + compatible = "qcom,ipq5018-dwc3"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + reg = <0x8AF8800 0x100>, + <0x8A00000 0xe000>; + reg-names = "qscratch_base", "dwc3_base"; + clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, + <&gcc GCC_USB0_MASTER_CLK>, + <&gcc GCC_USB0_SLEEP_CLK>, + <&gcc GCC_USB0_MOCK_UTMI_CLK>, + <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, + <&gcc GCC_USB0_AUX_CLK>, + <&gcc GCC_USB0_LFPS_CLK>, + <&gcc GCC_USB0_PIPE_CLK>; + clock-names = "sys_noc_axi", + "master", + "sleep", + "mock_utmi", + "cfg_ahb_clk", + "aux_clk", + "lfps_clk", + "pipe_clk"; + assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, + <&gcc GCC_USB0_MASTER_CLK>, + <&gcc GCC_USB0_MOCK_UTMI_CLK>; + assigned-clock-rates = <133330000>, + <133330000>, + <60000000>; + resets = <&gcc GCC_USB0_BCR>; + reset-names = "usb30_mstr_rst"; + qca,host = <1>; + qcom,usb-dbm = <&dbm_1p5>; + status = "disabled"; + + dwc_0: dwc3@8A00000 { + compatible = "snps,dwc3"; + reg = <0x8A00000 0xe000>; + interrupts = ; + usb-phy = <&hs_m31phy_0>; + #phy-cells = <0>; + phys = <&ssuniphy_0>; + phy-names = "usb3-phy"; + snps,dis_ep_cache_eviction; + tx-fifo-resize; + snps,usb3-u1u2-disable; + snps,nominal-elastic-buffer; + snps,is-utmi-l1-suspend; + snps,hird-threshold = /bits/ 8 <0x0>; + snps,dis_u2_susphy_quirk; + snps,dis_u3_susphy_quirk; + snps,quirk-ref-clock-adjustment = <0x49459>; + snps,quirk-ref-clock-period = <0x10>; + snps,quirk-30m-sb-sel = <0x0>; + dr_mode = "host"; + }; + }; + + qcom,usbbam@8B04000 { + compatible = "qcom,usb-bam-msm"; + reg = <0x8B04000 0x17000>; + interrupt-parent = <&intc>; + interrupts = <0 135 0>; + + qcom,bam-type = <0>; + qcom,usb-bam-fifo-baseaddr = <0x4A600000>; + qcom,usb-bam-num-pipes = <4>; + qcom,ignore-core-reset-ack; + qcom,disable-clk-gating; + qcom,usb-bam-override-threshold = <0x4001>; + qcom,usb-bam-max-mbps-highspeed = <400>; + qcom,usb-bam-max-mbps-superspeed = <3600>; + qcom,reset-bam-on-connect; + + qcom,pipe0 { + label = "ssusb-qdss-in-0"; + qcom,usb-bam-mem-type = <2>; + qcom,dir = <1>; + qcom,pipe-num = <0>; + qcom,peer-bam = <0>; + qcom,peer-bam-physical-address = <0x6064000>; + qcom,src-bam-pipe-index = <0>; + qcom,dst-bam-pipe-index = <0>; + qcom,data-fifo-offset = <0x0>; + qcom,data-fifo-size = <0xe00>; + qcom,descriptor-fifo-offset = <0xe00>; + qcom,descriptor-fifo-size = <0x200>; + }; + }; + + qcom,diag@0 { + compatible = "qcom,diag"; + status = "ok"; + }; + + pcie_x1phy: phy@7e000{ + compatible = "qca,uni-pcie-phy-gen2"; + reg = <0x7e000 0x800>; + phy-type = "gen2"; + #phy-cells = <0>; + clocks = <&gcc GCC_PCIE1_PIPE_CLK>; + clock-names = "pipe_clk"; + + resets = <&gcc GCC_PCIE1_PHY_BCR>, + <&gcc GCC_PCIE1PHY_PHY_BCR>; + reset-names = "phy", + "phy_phy"; + mode_fixed = <2>; + status = "disabled"; + }; + + pcie_x1: pci@80000000 { + compatible = "qcom,pcie-ipq5018"; + reg = <0x80000000 0xf1d + 0x80000F20 0xa8 + 0x80001000 0x1000 + 0x78000 0x3000 + 0x80100000 0x1000>; + reg-names = "dbi", "elbi", "dm_iatu", "parf", "config"; + device_type = "pci"; + linux,pci-domain = <0>; + bus-range = <0x00 0xff>; + num-lanes = <1>; + #address-cells = <3>; + #size-cells = <2>; + + phys = <&pcie_x1phy>; + phy-names ="pciephy"; + force_gen2 = <1>; + + ranges = <0x81000000 0 0x80200000 0x80200000 + 0 0x00100000 /* downstream I/O */ + 0x82000000 0 0x80300000 0x80300000 + 0 0x10000000>; /* non-prefetchable memory */ + + interrupts = , + <0 416 IRQ_TYPE_NONE>, <0 417 IRQ_TYPE_NONE>, + <0 418 IRQ_TYPE_NONE>, <0 419 IRQ_TYPE_NONE>, + <0 420 IRQ_TYPE_NONE>, <0 421 IRQ_TYPE_NONE>, + <0 422 IRQ_TYPE_NONE>, <0 423 IRQ_TYPE_NONE>, + <0 424 IRQ_TYPE_NONE>, <0 425 IRQ_TYPE_NONE>, + <0 426 IRQ_TYPE_NONE>, <0 427 IRQ_TYPE_NONE>, + <0 428 IRQ_TYPE_NONE>, <0 429 IRQ_TYPE_NONE>, + <0 430 IRQ_TYPE_NONE>, <0 431 IRQ_TYPE_NONE>, + <0 432 IRQ_TYPE_NONE>, <0 433 IRQ_TYPE_NONE>, + <0 434 IRQ_TYPE_NONE>, <0 435 IRQ_TYPE_NONE>, + <0 436 IRQ_TYPE_NONE>, <0 437 IRQ_TYPE_NONE>, + <0 438 IRQ_TYPE_NONE>, <0 439 IRQ_TYPE_NONE>, + <0 440 IRQ_TYPE_NONE>, <0 441 IRQ_TYPE_NONE>, + <0 442 IRQ_TYPE_NONE>, <0 443 IRQ_TYPE_NONE>, + <0 444 IRQ_TYPE_NONE>, <0 445 IRQ_TYPE_NONE>, + <0 446 IRQ_TYPE_NONE>, <0 447 IRQ_TYPE_NONE>; + interrupt-names = "msi", "msi_0", "msi_1", + "msi_2", "msi_3", "msi_4", + "msi_5", "msi_6", "msi_7", + "msi_8", "msi_9", "msi_10", + "msi_11", "msi_12", "msi_13", + "msi_14", "msi_15", "msi_16", + "msi_17", "msi_18", "msi_19", + "msi_20", "msi_21", "msi_22", + "msi_23", "msi_24", "msi_25", + "msi_26", "msi_27", "msi_28", + "msi_29", "msi_30", "msi_31"; + #interrupt-cells = <1>; + interrupt-map-mask = <0 0 0 0x7>; + interrupt-map = <0 0 0 1 &intc 0 142 + IRQ_TYPE_LEVEL_HIGH>, /* int_a */ + <0 0 0 2 &intc 0 143 + IRQ_TYPE_LEVEL_HIGH>, /* int_b */ + <0 0 0 3 &intc 0 144 + IRQ_TYPE_LEVEL_HIGH>, /* int_c */ + <0 0 0 4 &intc 0 145 + IRQ_TYPE_LEVEL_HIGH>; /* int_d */ + + clocks = <&gcc GCC_SYS_NOC_PCIE1_AXI_CLK>, + <&gcc GCC_PCIE1_AXI_M_CLK>, + <&gcc GCC_PCIE1_AXI_S_CLK>, + <&gcc GCC_PCIE1_AHB_CLK>, + <&gcc GCC_PCIE1_AUX_CLK>, + <&gcc GCC_PCIE1_AXI_S_BRIDGE_CLK>; + + clock-names = "sys_noc", + "axi_m", + "axi_s", + "ahb", + "aux", + "axi_bridge"; + + resets = <&gcc GCC_PCIE1_PIPE_ARES>, + <&gcc GCC_PCIE1_SLEEP_ARES>, + <&gcc GCC_PCIE1_CORE_STICKY_ARES>, + <&gcc GCC_PCIE1_AXI_MASTER_ARES>, + <&gcc GCC_PCIE1_AXI_SLAVE_ARES>, + <&gcc GCC_PCIE1_AHB_ARES>, + <&gcc GCC_PCIE1_AXI_MASTER_STICKY_ARES>, + <&gcc GCC_PCIE1_AXI_SLAVE_STICKY_ARES>; + + reset-names = "pipe", + "sleep", + "sticky", + "axi_m", + "axi_s", + "ahb", + "axi_m_sticky", + "axi_s_sticky"; + + qcom,msi-gicm-addr = <0x0B00A040>; + qcom,msi-gicm-base = <0x1c0>; + + status = "disabled"; + + pcie_x1_rp: pcie_x1_rp { + reg = <0 0 0 0 0>; + }; + }; + + pcie_x2phy: phy@86000{ + compatible = "qca,uni-pcie-phy-gen2"; + reg = <0x86000 0x800 0x86800 0x800>; + phy-type = "gen2"; + #phy-cells = <0>; + clocks = <&gcc GCC_PCIE0_PIPE_CLK>; + clock-names = "pipe_clk"; + + resets = <&gcc GCC_PCIE0_PHY_BCR>, + <&gcc GCC_PCIE0PHY_PHY_BCR>; + reset-names = "phy", + "phy_phy"; + mode_fixed = <2>; + x2 = <1>; + status = "disabled"; + }; + + pcie_x2: pci@a0000000 { + compatible = "qcom,pcie-ipq5018"; + reg = <0xa0000000 0xf1d + 0xa0000F20 0xa8 + 0xa0001000 0x1000 + 0x80000 0x3000 + 0xa0100000 0x1000>; + reg-names = "dbi", "elbi", "dm_iatu", "parf", "config"; + device_type = "pci"; + linux,pci-domain = <1>; + bus-range = <0x00 0xff>; + num-lanes = <2>; + #address-cells = <3>; + #size-cells = <2>; + + phys = <&pcie_x2phy>; + phy-names ="pciephy"; + force_gen2 = <1>; + + ranges = <0x81000000 0 0xa0200000 0xa0200000 + 0 0x00100000 /* downstream I/O */ + 0x82000000 0 0xa0300000 0xa0300000 + 0 0x10000000>; /* non-prefetchable memory */ + + interrupts = , + <0 448 IRQ_TYPE_NONE>, <0 449 IRQ_TYPE_NONE>, + <0 450 IRQ_TYPE_NONE>, <0 451 IRQ_TYPE_NONE>, + <0 452 IRQ_TYPE_NONE>, <0 453 IRQ_TYPE_NONE>, + <0 454 IRQ_TYPE_NONE>, <0 455 IRQ_TYPE_NONE>, + <0 456 IRQ_TYPE_NONE>, <0 457 IRQ_TYPE_NONE>, + <0 458 IRQ_TYPE_NONE>, <0 459 IRQ_TYPE_NONE>, + <0 460 IRQ_TYPE_NONE>, <0 461 IRQ_TYPE_NONE>, + <0 462 IRQ_TYPE_NONE>, <0 463 IRQ_TYPE_NONE>, + <0 464 IRQ_TYPE_NONE>, <0 465 IRQ_TYPE_NONE>, + <0 466 IRQ_TYPE_NONE>, <0 467 IRQ_TYPE_NONE>, + <0 468 IRQ_TYPE_NONE>, <0 469 IRQ_TYPE_NONE>, + <0 470 IRQ_TYPE_NONE>, <0 471 IRQ_TYPE_NONE>, + <0 472 IRQ_TYPE_NONE>, <0 473 IRQ_TYPE_NONE>, + <0 474 IRQ_TYPE_NONE>, <0 475 IRQ_TYPE_NONE>, + <0 476 IRQ_TYPE_NONE>, <0 477 IRQ_TYPE_NONE>, + <0 478 IRQ_TYPE_NONE>, <0 479 IRQ_TYPE_NONE>; + interrupt-names = "msi", "msi_0", "msi_1", + "msi_2", "msi_3", "msi_4", + "msi_5", "msi_6", "msi_7", + "msi_8", "msi_9", "msi_10", + "msi_11", "msi_12", "msi_13", + "msi_14", "msi_15", "msi_16", + "msi_17", "msi_18", "msi_19", + "msi_20", "msi_21", "msi_22", + "msi_23", "msi_24", "msi_25", + "msi_26", "msi_27", "msi_28", + "msi_29", "msi_30", "msi_31"; + #interrupt-cells = <1>; + interrupt-map-mask = <0 0 0 0x7>; + interrupt-map = <0 0 0 1 &intc 0 75 + IRQ_TYPE_LEVEL_HIGH>, /* int_a */ + <0 0 0 2 &intc 0 78 + IRQ_TYPE_LEVEL_HIGH>, /* int_b */ + <0 0 0 3 &intc 0 79 + IRQ_TYPE_LEVEL_HIGH>, /* int_c */ + <0 0 0 4 &intc 0 83 + IRQ_TYPE_LEVEL_HIGH>; /* int_d */ + + clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, + <&gcc GCC_PCIE0_AXI_M_CLK>, + <&gcc GCC_PCIE0_AXI_S_CLK>, + <&gcc GCC_PCIE0_AHB_CLK>, + <&gcc GCC_PCIE0_AUX_CLK>, + <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>; + + clock-names = "sys_noc", + "axi_m", + "axi_s", + "ahb", + "aux", + "axi_bridge"; + + resets = <&gcc GCC_PCIE0_PIPE_ARES>, + <&gcc GCC_PCIE0_SLEEP_ARES>, + <&gcc GCC_PCIE0_CORE_STICKY_ARES>, + <&gcc GCC_PCIE0_AXI_MASTER_ARES>, + <&gcc GCC_PCIE0_AXI_SLAVE_ARES>, + <&gcc GCC_PCIE0_AHB_ARES>, + <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>, + <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>; + + reset-names = "pipe", + "sleep", + "sticky", + "axi_m", + "axi_s", + "ahb", + "axi_m_sticky", + "axi_s_sticky"; + + qcom,msi-gicm-addr = <0x0B00B040>; + qcom,msi-gicm-base = <0x1e0>; + + status = "disabled"; + + pcie_x2_rp: pcie_x2_rp { + reg = <0 0 0 0 0>; + }; + }; + + qgic_msi_0: qti,qgic2m-msi_0 { + compatible = "qti,qgic2m-msi"; + + interrupts = <0 416 IRQ_TYPE_NONE>, <0 417 IRQ_TYPE_NONE>, + <0 418 IRQ_TYPE_NONE>, <0 419 IRQ_TYPE_NONE>, + <0 420 IRQ_TYPE_NONE>, <0 421 IRQ_TYPE_NONE>, + <0 422 IRQ_TYPE_NONE>, <0 423 IRQ_TYPE_NONE>, + <0 424 IRQ_TYPE_NONE>, <0 425 IRQ_TYPE_NONE>, + <0 426 IRQ_TYPE_NONE>, <0 427 IRQ_TYPE_NONE>, + <0 428 IRQ_TYPE_NONE>, <0 429 IRQ_TYPE_NONE>, + <0 430 IRQ_TYPE_NONE>, <0 431 IRQ_TYPE_NONE>, + <0 432 IRQ_TYPE_NONE>, <0 433 IRQ_TYPE_NONE>, + <0 434 IRQ_TYPE_NONE>, <0 435 IRQ_TYPE_NONE>, + <0 436 IRQ_TYPE_NONE>, <0 437 IRQ_TYPE_NONE>, + <0 438 IRQ_TYPE_NONE>, <0 439 IRQ_TYPE_NONE>, + <0 440 IRQ_TYPE_NONE>, <0 441 IRQ_TYPE_NONE>, + <0 442 IRQ_TYPE_NONE>, <0 443 IRQ_TYPE_NONE>, + <0 444 IRQ_TYPE_NONE>, <0 445 IRQ_TYPE_NONE>, + <0 446 IRQ_TYPE_NONE>, <0 447 IRQ_TYPE_NONE>; + interrupt-names = "msi_0", "msi_1", + "msi_2", "msi_3", "msi_4", + "msi_5", "msi_6", "msi_7", + "msi_8", "msi_9", "msi_10", + "msi_11", "msi_12", "msi_13", + "msi_14", "msi_15", "msi_16", + "msi_17", "msi_18", "msi_19", + "msi_20", "msi_21", "msi_22", + "msi_23", "msi_24", "msi_25", + "msi_26", "msi_27", "msi_28", + "msi_29", "msi_30", "msi_31"; + + qti,msi-gicm-addr = <0x0B00A040>; + qti,msi-gicm-base = <0x1c0>; + + status = "disabled"; + }; + + qgic_msi_1: qti,qgic2m-msi_1 { + compatible = "qti,qgic2m-msi"; + + interrupts = <0 448 IRQ_TYPE_NONE>, <0 449 IRQ_TYPE_NONE>, + <0 450 IRQ_TYPE_NONE>, <0 451 IRQ_TYPE_NONE>, + <0 452 IRQ_TYPE_NONE>, <0 453 IRQ_TYPE_NONE>, + <0 454 IRQ_TYPE_NONE>, <0 455 IRQ_TYPE_NONE>, + <0 456 IRQ_TYPE_NONE>, <0 457 IRQ_TYPE_NONE>, + <0 458 IRQ_TYPE_NONE>, <0 459 IRQ_TYPE_NONE>, + <0 460 IRQ_TYPE_NONE>, <0 461 IRQ_TYPE_NONE>, + <0 462 IRQ_TYPE_NONE>, <0 463 IRQ_TYPE_NONE>, + <0 464 IRQ_TYPE_NONE>, <0 465 IRQ_TYPE_NONE>, + <0 466 IRQ_TYPE_NONE>, <0 467 IRQ_TYPE_NONE>, + <0 468 IRQ_TYPE_NONE>, <0 469 IRQ_TYPE_NONE>, + <0 470 IRQ_TYPE_NONE>, <0 471 IRQ_TYPE_NONE>, + <0 472 IRQ_TYPE_NONE>, <0 473 IRQ_TYPE_NONE>, + <0 474 IRQ_TYPE_NONE>, <0 475 IRQ_TYPE_NONE>, + <0 476 IRQ_TYPE_NONE>, <0 477 IRQ_TYPE_NONE>, + <0 478 IRQ_TYPE_NONE>, <0 479 IRQ_TYPE_NONE>; + interrupt-names = "msi_0", "msi_1", + "msi_2", "msi_3", "msi_4", + "msi_5", "msi_6", "msi_7", + "msi_8", "msi_9", "msi_10", + "msi_11", "msi_12", "msi_13", + "msi_14", "msi_15", "msi_16", + "msi_17", "msi_18", "msi_19", + "msi_20", "msi_21", "msi_22", + "msi_23", "msi_24", "msi_25", + "msi_26", "msi_27", "msi_28", + "msi_29", "msi_30", "msi_31"; + + qti,msi-gicm-addr = <0x0B00B040>; + qti,msi-gicm-base = <0x1e0>; + + status = "disabled"; + }; + + qcom,test@0 { + compatible = "qcom,testmhi"; + status = "ok"; + }; + + tzlog: qca,tzlog { + compatible = "qca,tzlog_ipq50xx"; + interrupts = ; + qca,tzbsp-diag-buf-size = <0x2000>; + }; + + eud: qcom,msm-eud{ + compatible = "qcom,msm-eud"; + reg = <0x58000 0x1000>, + <0x59000 0x2000>, + <0x5a000 0x1000>; + reg-names = "eud_base", + "eud_mode_mgr", + "eud_mode_mgr2"; + interrupts = ; + interrupt-names = "eud_irq"; + status = "disabled"; + }; + + bt: bt@7000000 { + compatible = "qcom,bt"; + firmware = "IPQ5018/bt_fw_patch.mdt"; + + reg = <0x01943008 0x8>; + reg-names = "bt_warm_rst"; + memory-region = <&bt_region>; + + qcom,ipc = <&apcs 8 23>; + interrupts = ; + + resets = <&gcc GCC_BTSS_BCR>; + reset-names = "btss_reset"; + + clocks = <&gcc GCC_BTSS_LPO_CLK>; + clock-names = "lpo_clk"; + }; + lpass: lpass@0xA000000{ + compatible = "qca,lpass-ipq5018"; + reg = <0xA000000 0x3BFFFF>; + clocks = <&gcc GCC_SNOC_LPASS_AXIM_CLK>, + <&gcc GCC_SNOC_LPASS_SWAY_CLK>, + <&gcc GCC_LPASS_CORE_AXIM_CLK>, + <&gcc GCC_LPASS_SWAY_CLK>; + clock-names = "snoc_axim", "snoc_sway", "axim", "sway"; + resets = <&gcc GCC_LPASS_BCR>; + reset-names = "lpass"; + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + compatible = "qca,ipq5018-lpass-pcm"; + reg = <0xA3C0000 0x23014>; + interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "out0"; + capture_memory = "lpm"; + playback_memory = "lpm"; + voice_loopback = <0>; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + compatible = "qca,ipq5018-pcm-lb"; + status = "disabled"; + }; + }; + + cpus { + #address-cells = <0x1>; + #size-cells = <0x0>; + + CPU0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x0>; + enable-method = "psci"; + qcom,acc = <&acc0>; + next-level-cache = <&L2_0>; + clocks = <&apss_clk APCS_ALIAS0_CORE_CLK>; + clock-names = "cpu"; + operating-points = < + /* kHz uV (fixed) */ + 800000 1100000 + 1008000 1100000 + >; + clock-latency = <200000>; + }; + + CPU1: cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a53"; + reg = <0x1>; + enable-method = "psci"; + qcom,acc = <&acc1>; + next-level-cache = <&L2_0>; + clocks = <&apss_clk APCS_ALIAS0_CORE_CLK>; + clock-names = "cpu"; + operating-points = < + /* kHz uV (fixed) */ + 800000 1100000 + 1008000 1100000 + >; + clock-latency = <200000>; + }; + + L2_0: l2-cache { + compatible = "cache"; + cache-level = <0x2>; + }; + }; + + clocks { + sleep_clk: sleep_clk { + compatible = "fixed-clock"; + clock-frequency = <32000>; + #clock-cells = <0>; + }; + + xo: xo { + compatible = "fixed-clock"; + clock-frequency = <24000000>; + #clock-cells = <0>; + }; + }; + + pmuv8: pmu { + compatible = "arm,cortex-a53-pmu"; + interrupts = ; + }; + + firmware { + scm { + compatible = "qcom,scm-ipq5018"; + }; + qfprom_sec { + compatible = "qcom,qfprom-sec"; + img-addr = <0x4A800000>; + img-size = <0x00400000>; + }; + }; + +}; + +#include "qcom-ipq5018-coresight.dtsi" +#include "qcom-ipq5018-thermal.dtsi" diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts new file mode 100755 index 000000000..6165d26d8 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts @@ -0,0 +1,1063 @@ +/dts-v1/; +/* Copyright (c) 2018-2020, The Linux Foundation. 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. + */ + +#include "qcom-ipq5018-hfcl-ion4xi_w.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "HFCL ION4x_w"; + compatible = "hfcl,ion4x_w", "qcom,ipq5018-mp03.3", "qcom,ipq5018"; + interrupt-parent = <&intc>; + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp1"; +// ethernet1 = "/soc/dp2"; + + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; + #else + bootargs-append = " swiotlb=1 coherent_pool=2M"; + #endif + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 8MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x40800000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * + | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 16MB | + * | code/ | | | + * | data | | | + * +--------+--------------+-------------------------+ + * | | | | + * |IPQ5018 | 0x4C000000 | 13MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4CD00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4CE00000 | 1MB | + * +--------+--------------+-------------------------+ + * |QCN6122 | 0x4CF00000 | 15MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4DE00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4DF00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4E000000 | 17MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4F100000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x3000000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01000000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4c000000 { + no-map; + reg = <0x0 0x4c000000 0x0 0xD00000>; + }; + + m3_dump: m3_dump@4CD00000 { + no-map; + reg = <0x0 0x4CD00000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4CE00000 { + no-map; + reg = <0x0 0x4CE00000 0x0 0x100000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4CF00000 { + no-map; + reg = <0x0 0x4CF00000 0x0 0xF00000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4DE00000 { + no-map; + reg = <0x0 0x4DE00000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4DF00000 { + no-map; + reg = <0x0 0x4DF00000 0x0 0x100000>; + }; + + q6_qcn9000_region: qcn9000_pcie0@4E000000 { + no-map; + reg = <0x0 0x4E000000 0x0 0x01100000>; + }; + + mhi_region1: dma_pool1@4F100000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4F100000 0x0 0x01000000>; + }; + #elif __IPQ_MEM_PROFILE_512_MB__ + /* 512 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 16MB | + * | code/ | | | + * | data | | | + * +--------+--------------+-------------------------+ + * | | | | + * |IPQ5018 | 0x4C000000 | 14MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4CE00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4CF00000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4D000000 | 2MB | + * +--------+--------------+-------------------------+ + * |QCN6122 | 0x4D200000 | 16MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4E200000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4E300000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4E400000 | 5MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4E900000 | 30MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x50700000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x3900000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01000000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C000000 { + no-map; + reg = <0x0 0x4C000000 0x0 0xE00000>; + }; + + m3_dump: m3_dump@4CE00000 { + no-map; + reg = <0x0 0x4CE00000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4CF00000 { + no-map; + reg = <0x0 0x4CF00000 0x0 0x100000>; + }; + + q6_caldb_region: q6_caldb_region@4D000000 { + no-map; + reg = <0x0 0x4D000000 0x0 0x200000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x1000000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { + no-map; + reg = <0x0 0x4E300000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 { + no-map; + reg = <0x0 0x4E400000 0x0 0x500000>; + }; + + q6_qcn9000_region: qcn9000_pcie0@4E900000 { + no-map; + reg = <0x0 0x4E900000 0x0 0x01E00000>; + }; + + mhi_region1: dma_pool1@50700000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x50700000 0x0 0x01000000>; + }; + #else + /* 1G Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 16MB | + * | code/ | | | + * | data | | | + * +--------+--------------+-------------------------+ + * | | | | + * |IPQ5018 | 0x4C000000 | 14MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4CE00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4CF00000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4D000000 | 2MB | + * +--------+--------------+-------------------------+ + * |QCN6122 | 0x4D200000 | 16MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4E200000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4E300000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4E400000 | 5MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4E900000 | 45MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x51600000 | 24MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x3900000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01000000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C000000 { + no-map; + reg = <0x0 0x4C000000 0x0 0xE00000>; + }; + + m3_dump: m3_dump@4CE00000 { + no-map; + reg = <0x0 0x4CE00000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4CF00000 { + no-map; + reg = <0x0 0x4CF00000 0x0 0x100000>; + }; + + q6_caldb_region: q6_caldb_region@4D000000 { + no-map; + reg = <0x0 0x4D000000 0x0 0x200000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x1000000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { + no-map; + reg = <0x0 0x4E300000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 { + no-map; + reg = <0x0 0x4E400000 0x0 0x500000>; + }; + + q6_qcn9000_region: qcn9000_pcie0@4E900000 { + no-map; + reg = <0x0 0x4E900000 0x0 0x02D00000>; + }; + + mhi_region1: dma_pool1@51600000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x51600000 0x0 0x01800000>; + }; + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + + ethernet-phy@0 { + reg = <28>; + }; + }; + + ess-instance { + num_devices = <0x1>; + ess-switch@0x39c00000 { + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + mdiobus = <&mdio0>; + }; + port@1 { + port_id = <2>; + phy_address = <0x1c>; + mdiobus = <&mdio1>; + port_mac_sel = "QGMAC_PORT"; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + }; + + wifi0: wifi@c000000 { + status = "ok"; + }; + +/* dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; +*/ + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <28>; + mdio-bus = <&mdio1>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + qcom,test@0 { + status = "ok"; + }; + + nss-macsec1 { + compatible = "qcom,nss-macsec"; + phy_addr = <0x1c>; + mdiobus = <&mdio1>; + }; + + lpass: lpass@0xA000000{ + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + pinctrl-0 = <&audio_pins>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + status = "disabled"; + }; + }; + + thermal-zones { + status = "ok"; + }; +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_0 { + pins = "gpio7"; + function = "qspi0"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_1 { + pins = "gpio6"; + function = "qspi1"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_2 { + pins = "gpio5"; + function = "qspi2"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_3 { + pins = "gpio4"; + function = "qspi3"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + led_pins: led_pinmux { + mux_1 { + pins = "gpio38"; + function = "gpio"; + bias-pull-down; + }; + }; + + button_pins: button_pins { + reset_button { + pins = "gpio14"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; + +}; + +&soc { + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + + led_power: led@38 { + label = "blue:status"; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + }; + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 14 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; +}; + +&usb3 { + status = "ok"; + device-power-gpio = <&tlmm 24 1>; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + status = "disabled"; + perst-gpio = <&tlmm 18 1>; +}; + +&pcie_x2 { + status = "ok"; + perst-gpio = <&tlmm 15 1>; +}; + +&dwc_0 { + /delete-property/ #phy-cells; + /delete-property/ phys; + /delete-property/ phy-names; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&pcie_x1phy { + status = "disabled"; +}; + +&pcie_x2phy { + status = "ok"; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "ok"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + qrtr_instance_id = <0x21>; + #address-cells = <0x2>; + #size-cells = <0x2>; + memory-region = <&mhi_region1>; +#if !defined(__CNSS2__) + base-addr = <0x4E900000>; + m3-dump-addr = <0x4FD00000>; + etr-addr = <0x4FE00000>; + qcom,caldb-addr = <0x4FF00000>; + qcom,tgt-mem-mode = <0x1>; + mhi,max-channels = <30>; + mhi,timeout = <10000>; + qcom,board_id = <0xa4>; +#endif + }; +}; + +&wifi3 { + status = "ok"; +}; + +&qfprom { + status = "ok"; +}; + +&tsens { + status = "ok"; +}; + +&qcom_q6v5_wcss { + qcom,multipd_arch; + memory-region = <&q6_mem_regions>; + qcom,share_bootargs; + qcom,bootargs_smem = <507>; + boot-args = <0x2 0x4 0x2 0x12 0x0 0x0>; + + /* IPQ5018 */ + q6v5_wcss_userpd1 { + m3_firmware = "IPQ5018/m3_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"; + qca,asid = <1>; + qca,auto-restart; + qca,int_radio; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>; + #else + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>, <&q6_caldb_region>; + #endif + }; + + /* QCN6122 5G */ + q6v5_wcss_userpd2 { + m3_firmware = "qcn6122/m3_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"; + qca,asid = <2>; + qca,auto-restart; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>; + #else + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; + #endif + }; +}; + +&i2c_0 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&qgic_msi_0 { + status = "ok"; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,multipd_arch; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x23>; + qcom,bdf-addr = <0x0 0x4C000000 0x4C000000 0x0 0x0>; +#ifdef __CNSS2__ + qcom,caldb-addr = <0x0 0x4D000000 0 0 0>; +#else + qcom,caldb-addr = <0x4D000000>; + m3-dump-addr = <0x4CE00000>; +#endif + qcom,caldb-size = <0x200000>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + status = "ok"; +}; + +&wifi1 { + /* QCN6122 5G */ + qcom,multipd_arch; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x60>; + qcom,bdf-addr = <0x0 0x4D200000 0x4CF00000 0x0 0x0>; +#ifdef __CNSS2__ + qcom,caldb-addr = <0x0 0x4E400000 0 0 0>; +#else + qcom,caldb-addr = <0x4E400000>; + m3-dump-addr = <0x4E200000>; +#endif + qcom,caldb-size = <0x500000>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; + status = "ok"; +}; + +&wifi3 { + /* QCN9000 6G */ + compatible = "qcom,cnss-qcn9000"; + board_id = <0xa4>; + status = "ok"; + qrtr_node_id = <0x21>; +#ifdef __IPQ_MEM_PROFILE_256_MB__ || __IPQ_FLASH_16M_PROFILE__ + /* QCN9000 tgt-mem-mode=2 layout - 17MB + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x4E000000 | 15MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x4EF00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x4F000000 | 1MB | + * +==================================+ + */ + base-addr = <0x4E000000>; + m3-dump-addr = <0x4EF00000>; + etr-addr = <0x4F000000>; + caldb-addr = <0>; + caldb-size = <0>; + hremote-size = <0xF00000>; + tgt-mem-mode = <0x2>; +#elif __IPQ_MEM_PROFILE_512_MB__ + /* QCN9000 tgt-mem-mode=1 layout - 30MB + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x4E900000 | 20MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x4FD00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x4FE00000 | 1MB | + * +---------+--------------+---------+ + * | Caldb | 0x4FF00000 | 8MB | + * +==================================+ + */ + base-addr = <0x4E900000>; + m3-dump-addr = <0x4FD00000>; + etr-addr = <0x4FE00000>; + caldb-addr = <0x4FF00000>; + caldb-size = <0x800000>; + hremote-size = <0x1400000>; + tgt-mem-mode = <0x1>; +#else + /* QCN9000 tgt-mem-mode=0 layout - 45MB + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x4E900000 | 35MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x50C00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x50D00000 | 1MB | + * +---------+--------------+---------+ + * | Caldb | 0x50E00000 | 8MB | + * +==================================+ + */ + base-addr = <0x4E900000>; + m3-dump-addr = <0x50C00000>; + etr-addr = <0x50D00000>; + caldb-addr = <0x50E00000>; + hremote-size = <0x2300000>; + caldb-size = <0x800000>; + tgt-mem-mode = <0x0>; +#endif +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_HMR.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_HMR.dts new file mode 100755 index 000000000..b6d09cf04 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_HMR.dts @@ -0,0 +1,1059 @@ +/dts-v1/; +/* Copyright (c) 2018-2020, The Linux Foundation. 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. + */ + +#include "qcom-hfcl-ion4xi_HMR.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "HFCL ION4xi_HMR"; + compatible = "hfcl,ion4xi_HMR", "qcom,ipq5018-mp03.3", "qcom,ipq5018"; + interrupt-parent = <&intc>; + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; + #else + bootargs-append = " swiotlb=1 coherent_pool=2M"; + #endif + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 8MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x40800000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * + | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 16MB | + * | code/ | | | + * | data | | | + * +--------+--------------+-------------------------+ + * | | | | + * |IPQ5018 | 0x4C000000 | 13MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4CD00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4CE00000 | 1MB | + * +--------+--------------+-------------------------+ + * |QCN6122 | 0x4CF00000 | 15MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4DE00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4DF00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4E000000 | 17MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4F100000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x3000000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01000000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4c000000 { + no-map; + reg = <0x0 0x4c000000 0x0 0xD00000>; + }; + + m3_dump: m3_dump@4CD00000 { + no-map; + reg = <0x0 0x4CD00000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4CE00000 { + no-map; + reg = <0x0 0x4CE00000 0x0 0x100000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4CF00000 { + no-map; + reg = <0x0 0x4CF00000 0x0 0xF00000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4DE00000 { + no-map; + reg = <0x0 0x4DE00000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4DF00000 { + no-map; + reg = <0x0 0x4DF00000 0x0 0x100000>; + }; + + q6_qcn9000_region: qcn9000_pcie0@4E000000 { + no-map; + reg = <0x0 0x4E000000 0x0 0x01100000>; + }; + + mhi_region1: dma_pool1@4F100000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4F100000 0x0 0x01000000>; + }; + #elif __IPQ_MEM_PROFILE_512_MB__ + /* 512 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 16MB | + * | code/ | | | + * | data | | | + * +--------+--------------+-------------------------+ + * | | | | + * |IPQ5018 | 0x4C000000 | 14MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4CE00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4CF00000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4D000000 | 2MB | + * +--------+--------------+-------------------------+ + * |QCN6122 | 0x4D200000 | 16MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4E200000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4E300000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4E400000 | 5MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4E900000 | 30MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x50700000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x3900000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01000000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C000000 { + no-map; + reg = <0x0 0x4C000000 0x0 0xE00000>; + }; + + m3_dump: m3_dump@4CE00000 { + no-map; + reg = <0x0 0x4CE00000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4CF00000 { + no-map; + reg = <0x0 0x4CF00000 0x0 0x100000>; + }; + + q6_caldb_region: q6_caldb_region@4D000000 { + no-map; + reg = <0x0 0x4D000000 0x0 0x200000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x1000000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { + no-map; + reg = <0x0 0x4E300000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 { + no-map; + reg = <0x0 0x4E400000 0x0 0x500000>; + }; + + q6_qcn9000_region: qcn9000_pcie0@4E900000 { + no-map; + reg = <0x0 0x4E900000 0x0 0x01E00000>; + }; + + mhi_region1: dma_pool1@50700000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x50700000 0x0 0x01000000>; + }; + #else + /* 1G Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 16MB | + * | code/ | | | + * | data | | | + * +--------+--------------+-------------------------+ + * | | | | + * |IPQ5018 | 0x4C000000 | 14MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4CE00000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4CF00000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4D000000 | 2MB | + * +--------+--------------+-------------------------+ + * |QCN6122 | 0x4D200000 | 16MB | + * | data | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4E200000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4E300000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4E400000 | 5MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4E900000 | 45MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x51600000 | 24MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x3900000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01000000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C000000 { + no-map; + reg = <0x0 0x4C000000 0x0 0xE00000>; + }; + + m3_dump: m3_dump@4CE00000 { + no-map; + reg = <0x0 0x4CE00000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4CF00000 { + no-map; + reg = <0x0 0x4CF00000 0x0 0x100000>; + }; + + q6_caldb_region: q6_caldb_region@4D000000 { + no-map; + reg = <0x0 0x4D000000 0x0 0x200000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x1000000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { + no-map; + reg = <0x0 0x4E300000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 { + no-map; + reg = <0x0 0x4E400000 0x0 0x500000>; + }; + + q6_qcn9000_region: qcn9000_pcie0@4E900000 { + no-map; + reg = <0x0 0x4E900000 0x0 0x02D00000>; + }; + + mhi_region1: dma_pool1@51600000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x51600000 0x0 0x01800000>; + }; + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + + ethernet-phy@0 { + reg = <28>; + }; + }; + + ess-instance { + num_devices = <0x1>; + ess-switch@0x39c00000 { + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + mdiobus = <&mdio0>; + }; + port@1 { + port_id = <2>; + phy_address = <0x1c>; + mdiobus = <&mdio1>; + port_mac_sel = "QGMAC_PORT"; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + }; + + wifi0: wifi@c000000 { + status = "ok"; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <28>; + mdio-bus = <&mdio1>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + qcom,test@0 { + status = "ok"; + }; + + nss-macsec1 { + compatible = "qcom,nss-macsec"; + phy_addr = <0x1c>; + mdiobus = <&mdio1>; + }; + + lpass: lpass@0xA000000{ + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + pinctrl-0 = <&audio_pins>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + status = "disabled"; + }; + }; + + thermal-zones { + status = "ok"; + }; +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_0 { + pins = "gpio7"; + function = "qspi0"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_1 { + pins = "gpio6"; + function = "qspi1"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_2 { + pins = "gpio5"; + function = "qspi2"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_3 { + pins = "gpio4"; + function = "qspi3"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + button_pins: button_pins { + reset_button { + pins = "gpio27"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; + +}; + +&soc { + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; +}; + +//&usb3 { +// status = "ok"; +// device-power-gpio = <&tlmm 24 1>; +//}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + status = "disabled"; + perst-gpio = <&tlmm 18 1>; +}; + +&pcie_x2 { + status = "ok"; + perst-gpio = <&tlmm 15 1>; +}; + +&dwc_0 { + /delete-property/ #phy-cells; + /delete-property/ phys; + /delete-property/ phy-names; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&pcie_x1phy { + status = "disabled"; +}; + +&pcie_x2phy { + status = "ok"; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "ok"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + qrtr_instance_id = <0x21>; + #address-cells = <0x2>; + #size-cells = <0x2>; + memory-region = <&mhi_region1>; +#if !defined(__CNSS2__) + base-addr = <0x4E900000>; + m3-dump-addr = <0x4FD00000>; + etr-addr = <0x4FE00000>; + qcom,caldb-addr = <0x4FF00000>; + qcom,tgt-mem-mode = <0x1>; + mhi,max-channels = <30>; + mhi,timeout = <10000>; + qcom,board_id = <0xa4>; +#endif + }; +}; + +&wifi3 { + status = "ok"; +}; + +&qfprom { + status = "ok"; +}; + +&tsens { + status = "ok"; +}; + +&qcom_q6v5_wcss { + qcom,multipd_arch; + memory-region = <&q6_mem_regions>; + qcom,share_bootargs; + qcom,bootargs_smem = <507>; + boot-args = <0x2 0x4 0x2 0x12 0x0 0x0>; + + /* IPQ5018 */ + q6v5_wcss_userpd1 { + m3_firmware = "IPQ5018/m3_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"; + qca,asid = <1>; + qca,auto-restart; + qca,int_radio; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>; + #else + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>, <&q6_caldb_region>; + #endif + }; + + /* QCN6122 5G */ + q6v5_wcss_userpd2 { + m3_firmware = "qcn6122/m3_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"; + qca,asid = <2>; + qca,auto-restart; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>; + #else + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; + #endif + }; +}; + +&i2c_0 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&qgic_msi_0 { + status = "ok"; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,multipd_arch; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x24>; + qcom,bdf-addr = <0x0 0x4C000000 0x4C000000 0x0 0x0>; +#ifdef __CNSS2__ + qcom,caldb-addr = <0x0 0x4D000000 0 0 0>; +#else + qcom,caldb-addr = <0x4D000000>; + m3-dump-addr = <0x4CE00000>; +#endif + qcom,caldb-size = <0x200000>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; + status = "ok"; +}; + +&wifi1 { + /* QCN6122 5G */ + qcom,multipd_arch; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x60>; + qcom,bdf-addr = <0x0 0x4D200000 0x4CF00000 0x0 0x0>; +#ifdef __CNSS2__ + qcom,caldb-addr = <0x0 0x4E400000 0 0 0>; +#else + qcom,caldb-addr = <0x4E400000>; + m3-dump-addr = <0x4E200000>; +#endif + qcom,caldb-size = <0x500000>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; + status = "ok"; +}; + +&wifi3 { + /* QCN9000 6G */ + compatible = "qcom,cnss-qcn9000"; + board_id = <0xa4>; + status = "ok"; + qrtr_node_id = <0x21>; +#ifdef __IPQ_MEM_PROFILE_256_MB__ || __IPQ_FLASH_16M_PROFILE__ + /* QCN9000 tgt-mem-mode=2 layout - 17MB + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x4E000000 | 15MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x4EF00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x4F000000 | 1MB | + * +==================================+ + */ + base-addr = <0x4E000000>; + m3-dump-addr = <0x4EF00000>; + etr-addr = <0x4F000000>; + caldb-addr = <0>; + caldb-size = <0>; + hremote-size = <0xF00000>; + tgt-mem-mode = <0x2>; +#elif __IPQ_MEM_PROFILE_512_MB__ + /* QCN9000 tgt-mem-mode=1 layout - 30MB + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x4E900000 | 20MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x4FD00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x4FE00000 | 1MB | + * +---------+--------------+---------+ + * | Caldb | 0x4FF00000 | 8MB | + * +==================================+ + */ + base-addr = <0x4E900000>; + m3-dump-addr = <0x4FD00000>; + etr-addr = <0x4FE00000>; + caldb-addr = <0x4FF00000>; + caldb-size = <0x800000>; + hremote-size = <0x1400000>; + tgt-mem-mode = <0x1>; +#else + /* QCN9000 tgt-mem-mode=0 layout - 45MB + * +=========+==============+=========+ + * | Region | Start Offset | Size | + * +---------+--------------+---------+ + * | HREMOTE | 0x4E900000 | 35MB | + * +---------+--------------+---------+ + * | M3 Dump | 0x50C00000 | 1MB | + * +---------+--------------+---------+ + * | ETR | 0x50D00000 | 1MB | + * +---------+--------------+---------+ + * | Caldb | 0x50E00000 | 8MB | + * +==================================+ + */ + base-addr = <0x4E900000>; + m3-dump-addr = <0x50C00000>; + etr-addr = <0x50D00000>; + caldb-addr = <0x50E00000>; + hremote-size = <0x2300000>; + caldb-size = <0x800000>; + tgt-mem-mode = <0x0>; +#endif +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_w.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_w.dts index 1f5222a50..9e90782c1 100755 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_w.dts +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4xi_w.dts @@ -788,7 +788,7 @@ reset { label = "reset"; - linux,code = ; + linux,code = ; gpios = <&tlmm 14 GPIO_ACTIVE_LOW>; linux,input-type = <1>; debounce-interval = <60>; diff --git a/feeds/ipq807x/ipq807x/image/ipq50xx.mk b/feeds/ipq807x/ipq807x/image/ipq50xx.mk index 67d22c570..c96d5d3e4 100644 --- a/feeds/ipq807x/ipq807x/image/ipq50xx.mk +++ b/feeds/ipq807x/ipq807x/image/ipq50xx.mk @@ -120,6 +120,23 @@ define Device/hfcl_ion4xi_w endef TARGET_DEVICES += hfcl_ion4xi_w +define Device/hfcl_ion4x_w + DEVICE_TITLE := HFCL ION4x_w + DEVICE_DTS := qcom-ipq5018-hfcl-ion4x_w + SUPPORTED_DEVICES := hfcl,ion4x_w + DEVICE_PACKAGES := ath11k-wifi-hfcl-ion4x_w ath11k-firmware-ipq50xx-map-spruce + DEVICE_DTS_CONFIG := config@mp03.3 +endef +TARGET_DEVICES += hfcl_ion4x_w + +define Device/hfcl_ion4xi_HMR + DEVICE_TITLE := HFCL ION4xi_HMR + DEVICE_DTS := qcom-ipq5018-hfcl-ion4xi_HMR + SUPPORTED_DEVICES := hfcl,ion4xi_HMR + DEVICE_PACKAGES := ath11k-wifi-hfcl-ion4xi_HMR ath11k-firmware-ipq50xx-map-spruce + DEVICE_DTS_CONFIG := config@mp03.3 +endef +TARGET_DEVICES += hfcl_ion4xi_HMR define Device/yuncore_fap655 DEVICE_TITLE := Yuncore FAP650 diff --git a/feeds/tip/certificates/files/etc/init.d/certificates b/feeds/tip/certificates/files/etc/init.d/certificates index 606764c46..5c0a8690c 100755 --- a/feeds/tip/certificates/files/etc/init.d/certificates +++ b/feeds/tip/certificates/files/etc/init.d/certificates @@ -63,6 +63,8 @@ boot() { ;; hfcl,ion4xi|\ hfcl,ion4xi_w|\ + hfcl,ion4x_w|\ + hfcl,ion4xi_HMR|\ hfcl,ion4x|\ hfcl,ion4x_2|\ hfcl,ion4xi_wp|\ diff --git a/feeds/wifi-ax/ath11k-wifi/Makefile b/feeds/wifi-ax/ath11k-wifi/Makefile index 2781f5f6c..d01622fe6 100644 --- a/feeds/wifi-ax/ath11k-wifi/Makefile +++ b/feeds/wifi-ax/ath11k-wifi/Makefile @@ -136,6 +136,16 @@ $(call Package/ath11k-wifi-default) TITLE:=hfcl-ion4xi_w bdf endef +define Package/ath11k-wifi-hfcl-ion4x_w +$(call Package/ath11k-wifi-default) + TITLE:=hfcl-ion4x_w bdf +endef + +define Package/ath11k-wifi-hfcl-ion4xi_HMR +$(call Package/ath11k-wifi-default) + TITLE:=hfcl-ion4xi_HMR bdf +endef + define Package/ath11k-wifi-hfcl-ion4xi_wp $(call Package/ath11k-wifi-default) TITLE:=hfcl-ion4xi_wp bdf @@ -286,6 +296,21 @@ define Package/ath11k-wifi-hfcl-ion4xi_w/install $(INSTALL_DATA) ./board-hfcl-ion4xi_w.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin endef +define Package/ath11k-wifi-hfcl-ion4x_w/install + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122/hw1.0/ + $(INSTALL_DATA) ./board-hfcl-ion4xi_w.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin + $(INSTALL_DATA) ./board-hfcl-ion4xi_w.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin +endef + +define Package/ath11k-wifi-hfcl-ion4xi_HMR/install + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122/hw1.0/ + $(INSTALL_DATA) ./board-hfcl-ion4xi_HMR.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin + $(INSTALL_DATA) ./board-hfcl-ion4xi_HMR.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin +endef + + $(eval $(call generate-ath11k-wifi-package,cig-wf188,Cigtech WF188)) $(eval $(call generate-ath11k-wifi-package,cig-wf188n,Cigtech WF188n)) $(eval $(call generate-ath11k-wifi-package,cig-wf186w,Cigtech WF186w)) @@ -328,3 +353,6 @@ $(eval $(call BuildPackage,ath11k-wifi-xunison-d50)) $(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi)) $(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi_wp)) $(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi_w)) +$(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4x_w)) +$(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi_HMR)) + diff --git a/feeds/wifi-ax/ath11k-wifi/board-hfcl-ion4xi_HMR.bin.IPQ5018 b/feeds/wifi-ax/ath11k-wifi/board-hfcl-ion4xi_HMR.bin.IPQ5018 new file mode 100644 index 0000000000000000000000000000000000000000..5edaa0f43616f77974a6c9663f2b947daf9ca9cd GIT binary patch literal 131072 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