18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2020, The Linux Foundation. All rights reserved. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <linux/device.h> 88c2ecf20Sopenharmony_ci#include <linux/interconnect.h> 98c2ecf20Sopenharmony_ci#include <linux/interconnect-provider.h> 108c2ecf20Sopenharmony_ci#include <linux/module.h> 118c2ecf20Sopenharmony_ci#include <linux/of_platform.h> 128c2ecf20Sopenharmony_ci#include <dt-bindings/interconnect/qcom,sc7180.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include "bcm-voter.h" 158c2ecf20Sopenharmony_ci#include "icc-rpmh.h" 168c2ecf20Sopenharmony_ci#include "sc7180.h" 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_a1noc_cfg, SC7180_MASTER_A1NOC_CFG, 1, 4, SC7180_SLAVE_SERVICE_A1NOC); 198c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_qspi, SC7180_MASTER_QSPI, 1, 4, SC7180_SLAVE_A1NOC_SNOC); 208c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_qup_0, SC7180_MASTER_QUP_0, 1, 4, SC7180_SLAVE_A1NOC_SNOC); 218c2ecf20Sopenharmony_ciDEFINE_QNODE(xm_sdc2, SC7180_MASTER_SDCC_2, 1, 8, SC7180_SLAVE_A1NOC_SNOC); 228c2ecf20Sopenharmony_ciDEFINE_QNODE(xm_emmc, SC7180_MASTER_EMMC, 1, 8, SC7180_SLAVE_A1NOC_SNOC); 238c2ecf20Sopenharmony_ciDEFINE_QNODE(xm_ufs_mem, SC7180_MASTER_UFS_MEM, 1, 8, SC7180_SLAVE_A1NOC_SNOC); 248c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_a2noc_cfg, SC7180_MASTER_A2NOC_CFG, 1, 4, SC7180_SLAVE_SERVICE_A2NOC); 258c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_qdss_bam, SC7180_MASTER_QDSS_BAM, 1, 4, SC7180_SLAVE_A2NOC_SNOC); 268c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_qup_1, SC7180_MASTER_QUP_1, 1, 4, SC7180_SLAVE_A2NOC_SNOC); 278c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_crypto, SC7180_MASTER_CRYPTO, 1, 8, SC7180_SLAVE_A2NOC_SNOC); 288c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_ipa, SC7180_MASTER_IPA, 1, 8, SC7180_SLAVE_A2NOC_SNOC); 298c2ecf20Sopenharmony_ciDEFINE_QNODE(xm_qdss_etr, SC7180_MASTER_QDSS_ETR, 1, 8, SC7180_SLAVE_A2NOC_SNOC); 308c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_usb3, SC7180_MASTER_USB3, 1, 8, SC7180_SLAVE_A2NOC_SNOC); 318c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_camnoc_hf0_uncomp, SC7180_MASTER_CAMNOC_HF0_UNCOMP, 1, 32, SC7180_SLAVE_CAMNOC_UNCOMP); 328c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_camnoc_hf1_uncomp, SC7180_MASTER_CAMNOC_HF1_UNCOMP, 1, 32, SC7180_SLAVE_CAMNOC_UNCOMP); 338c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_camnoc_sf_uncomp, SC7180_MASTER_CAMNOC_SF_UNCOMP, 1, 32, SC7180_SLAVE_CAMNOC_UNCOMP); 348c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_npu, SC7180_MASTER_NPU, 2, 32, SC7180_SLAVE_CDSP_GEM_NOC); 358c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_npu_dsp, SC7180_MASTER_NPU_PROC, 1, 8, SC7180_SLAVE_CDSP_GEM_NOC); 368c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_snoc, SC7180_MASTER_SNOC_CNOC, 1, 8, SC7180_SLAVE_A1NOC_CFG, SC7180_SLAVE_A2NOC_CFG, SC7180_SLAVE_AHB2PHY_SOUTH, SC7180_SLAVE_AHB2PHY_CENTER, SC7180_SLAVE_AOP, SC7180_SLAVE_AOSS, SC7180_SLAVE_BOOT_ROM, SC7180_SLAVE_CAMERA_CFG, SC7180_SLAVE_CAMERA_NRT_THROTTLE_CFG, SC7180_SLAVE_CAMERA_RT_THROTTLE_CFG, SC7180_SLAVE_CLK_CTL, SC7180_SLAVE_RBCPR_CX_CFG, SC7180_SLAVE_RBCPR_MX_CFG, SC7180_SLAVE_CRYPTO_0_CFG, SC7180_SLAVE_DCC_CFG, SC7180_SLAVE_CNOC_DDRSS, SC7180_SLAVE_DISPLAY_CFG, SC7180_SLAVE_DISPLAY_RT_THROTTLE_CFG, SC7180_SLAVE_DISPLAY_THROTTLE_CFG, SC7180_SLAVE_EMMC_CFG, SC7180_SLAVE_GLM, 378c2ecf20Sopenharmony_ci SC7180_SLAVE_GFX3D_CFG, SC7180_SLAVE_IMEM_CFG, SC7180_SLAVE_IPA_CFG, SC7180_SLAVE_CNOC_MNOC_CFG, SC7180_SLAVE_CNOC_MSS, SC7180_SLAVE_NPU_CFG, SC7180_SLAVE_NPU_DMA_BWMON_CFG, SC7180_SLAVE_NPU_PROC_BWMON_CFG, SC7180_SLAVE_PDM, SC7180_SLAVE_PIMEM_CFG, SC7180_SLAVE_PRNG, SC7180_SLAVE_QDSS_CFG, SC7180_SLAVE_QM_CFG, SC7180_SLAVE_QM_MPU_CFG, SC7180_SLAVE_QSPI_0, SC7180_SLAVE_QUP_0, SC7180_SLAVE_QUP_1, SC7180_SLAVE_SDCC_2, SC7180_SLAVE_SECURITY, SC7180_SLAVE_SNOC_CFG, SC7180_SLAVE_TCSR, SC7180_SLAVE_TLMM_WEST, SC7180_SLAVE_TLMM_NORTH, SC7180_SLAVE_TLMM_SOUTH, SC7180_SLAVE_UFS_MEM_CFG, SC7180_SLAVE_USB3, SC7180_SLAVE_VENUS_CFG, SC7180_SLAVE_VENUS_THROTTLE_CFG, SC7180_SLAVE_VSENSE_CTRL_CFG, SC7180_SLAVE_SERVICE_CNOC); 388c2ecf20Sopenharmony_ciDEFINE_QNODE(xm_qdss_dap, SC7180_MASTER_QDSS_DAP, 1, 8, SC7180_SLAVE_A1NOC_CFG, SC7180_SLAVE_A2NOC_CFG, SC7180_SLAVE_AHB2PHY_SOUTH, SC7180_SLAVE_AHB2PHY_CENTER, SC7180_SLAVE_AOP, SC7180_SLAVE_AOSS, SC7180_SLAVE_BOOT_ROM, SC7180_SLAVE_CAMERA_CFG, SC7180_SLAVE_CAMERA_NRT_THROTTLE_CFG, SC7180_SLAVE_CAMERA_RT_THROTTLE_CFG, SC7180_SLAVE_CLK_CTL, SC7180_SLAVE_RBCPR_CX_CFG, SC7180_SLAVE_RBCPR_MX_CFG, SC7180_SLAVE_CRYPTO_0_CFG, SC7180_SLAVE_DCC_CFG, SC7180_SLAVE_CNOC_DDRSS, SC7180_SLAVE_DISPLAY_CFG, SC7180_SLAVE_DISPLAY_RT_THROTTLE_CFG, SC7180_SLAVE_DISPLAY_THROTTLE_CFG, SC7180_SLAVE_EMMC_CFG, SC7180_SLAVE_GLM, SC7180_SLAVE_GFX3D_CFG, SC7180_SLAVE_IMEM_CFG, SC7180_SLAVE_IPA_CFG, SC7180_SLAVE_CNOC_MNOC_CFG, SC7180_SLAVE_CNOC_MSS, SC7180_SLAVE_NPU_CFG, SC7180_SLAVE_NPU_DMA_BWMON_CFG, 398c2ecf20Sopenharmony_ciSC7180_SLAVE_NPU_PROC_BWMON_CFG, SC7180_SLAVE_PDM, SC7180_SLAVE_PIMEM_CFG, SC7180_SLAVE_PRNG, SC7180_SLAVE_QDSS_CFG, SC7180_SLAVE_QM_CFG, SC7180_SLAVE_QM_MPU_CFG, SC7180_SLAVE_QSPI_0, SC7180_SLAVE_QUP_0, SC7180_SLAVE_QUP_1, SC7180_SLAVE_SDCC_2, SC7180_SLAVE_SECURITY, SC7180_SLAVE_SNOC_CFG, SC7180_SLAVE_TCSR, SC7180_SLAVE_TLMM_WEST, SC7180_SLAVE_TLMM_NORTH, SC7180_SLAVE_TLMM_SOUTH, SC7180_SLAVE_UFS_MEM_CFG, SC7180_SLAVE_USB3, SC7180_SLAVE_VENUS_CFG, SC7180_SLAVE_VENUS_THROTTLE_CFG, SC7180_SLAVE_VSENSE_CTRL_CFG, SC7180_SLAVE_SERVICE_CNOC); 408c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_cnoc_dc_noc, SC7180_MASTER_CNOC_DC_NOC, 1, 4, SC7180_SLAVE_GEM_NOC_CFG, SC7180_SLAVE_LLCC_CFG); 418c2ecf20Sopenharmony_ciDEFINE_QNODE(acm_apps0, SC7180_MASTER_APPSS_PROC, 1, 16, SC7180_SLAVE_GEM_NOC_SNOC, SC7180_SLAVE_LLCC); 428c2ecf20Sopenharmony_ciDEFINE_QNODE(acm_sys_tcu, SC7180_MASTER_SYS_TCU, 1, 8, SC7180_SLAVE_GEM_NOC_SNOC, SC7180_SLAVE_LLCC); 438c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_gemnoc_cfg, SC7180_MASTER_GEM_NOC_CFG, 1, 4, SC7180_SLAVE_MSS_PROC_MS_MPU_CFG, SC7180_SLAVE_SERVICE_GEM_NOC); 448c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_cmpnoc, SC7180_MASTER_COMPUTE_NOC, 1, 32, SC7180_SLAVE_GEM_NOC_SNOC, SC7180_SLAVE_LLCC); 458c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_mnoc_hf, SC7180_MASTER_MNOC_HF_MEM_NOC, 1, 32, SC7180_SLAVE_LLCC); 468c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_mnoc_sf, SC7180_MASTER_MNOC_SF_MEM_NOC, 1, 32, SC7180_SLAVE_GEM_NOC_SNOC, SC7180_SLAVE_LLCC); 478c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_snoc_gc, SC7180_MASTER_SNOC_GC_MEM_NOC, 1, 8, SC7180_SLAVE_LLCC); 488c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_snoc_sf, SC7180_MASTER_SNOC_SF_MEM_NOC, 1, 16, SC7180_SLAVE_LLCC); 498c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_gpu, SC7180_MASTER_GFX3D, 2, 32, SC7180_SLAVE_GEM_NOC_SNOC, SC7180_SLAVE_LLCC); 508c2ecf20Sopenharmony_ciDEFINE_QNODE(llcc_mc, SC7180_MASTER_LLCC, 2, 4, SC7180_SLAVE_EBI1); 518c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_mnoc_cfg, SC7180_MASTER_CNOC_MNOC_CFG, 1, 4, SC7180_SLAVE_SERVICE_MNOC); 528c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_camnoc_hf0, SC7180_MASTER_CAMNOC_HF0, 2, 32, SC7180_SLAVE_MNOC_HF_MEM_NOC); 538c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_camnoc_hf1, SC7180_MASTER_CAMNOC_HF1, 2, 32, SC7180_SLAVE_MNOC_HF_MEM_NOC); 548c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_camnoc_sf, SC7180_MASTER_CAMNOC_SF, 1, 32, SC7180_SLAVE_MNOC_SF_MEM_NOC); 558c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_mdp0, SC7180_MASTER_MDP0, 1, 32, SC7180_SLAVE_MNOC_HF_MEM_NOC); 568c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_rot, SC7180_MASTER_ROTATOR, 1, 16, SC7180_SLAVE_MNOC_SF_MEM_NOC); 578c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_venus0, SC7180_MASTER_VIDEO_P0, 1, 32, SC7180_SLAVE_MNOC_SF_MEM_NOC); 588c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_venus_arm9, SC7180_MASTER_VIDEO_PROC, 1, 8, SC7180_SLAVE_MNOC_SF_MEM_NOC); 598c2ecf20Sopenharmony_ciDEFINE_QNODE(amm_npu_sys, SC7180_MASTER_NPU_SYS, 2, 32, SC7180_SLAVE_NPU_COMPUTE_NOC); 608c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_npu_cfg, SC7180_MASTER_NPU_NOC_CFG, 1, 4, SC7180_SLAVE_NPU_CAL_DP0, SC7180_SLAVE_NPU_CP, SC7180_SLAVE_NPU_INT_DMA_BWMON_CFG, SC7180_SLAVE_NPU_DPM, SC7180_SLAVE_ISENSE_CFG, SC7180_SLAVE_NPU_LLM_CFG, SC7180_SLAVE_NPU_TCM, SC7180_SLAVE_SERVICE_NPU_NOC); 618c2ecf20Sopenharmony_ciDEFINE_QNODE(qup_core_master_1, SC7180_MASTER_QUP_CORE_0, 1, 4, SC7180_SLAVE_QUP_CORE_0); 628c2ecf20Sopenharmony_ciDEFINE_QNODE(qup_core_master_2, SC7180_MASTER_QUP_CORE_1, 1, 4, SC7180_SLAVE_QUP_CORE_1); 638c2ecf20Sopenharmony_ciDEFINE_QNODE(qhm_snoc_cfg, SC7180_MASTER_SNOC_CFG, 1, 4, SC7180_SLAVE_SERVICE_SNOC); 648c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_aggre1_noc, SC7180_MASTER_A1NOC_SNOC, 1, 16, SC7180_SLAVE_APPSS, SC7180_SLAVE_SNOC_CNOC, SC7180_SLAVE_SNOC_GEM_NOC_SF, SC7180_SLAVE_IMEM, SC7180_SLAVE_PIMEM, SC7180_SLAVE_QDSS_STM); 658c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_aggre2_noc, SC7180_MASTER_A2NOC_SNOC, 1, 16, SC7180_SLAVE_APPSS, SC7180_SLAVE_SNOC_CNOC, SC7180_SLAVE_SNOC_GEM_NOC_SF, SC7180_SLAVE_IMEM, SC7180_SLAVE_PIMEM, SC7180_SLAVE_QDSS_STM, SC7180_SLAVE_TCU); 668c2ecf20Sopenharmony_ciDEFINE_QNODE(qnm_gemnoc, SC7180_MASTER_GEM_NOC_SNOC, 1, 8, SC7180_SLAVE_APPSS, SC7180_SLAVE_SNOC_CNOC, SC7180_SLAVE_IMEM, SC7180_SLAVE_PIMEM, SC7180_SLAVE_QDSS_STM, SC7180_SLAVE_TCU); 678c2ecf20Sopenharmony_ciDEFINE_QNODE(qxm_pimem, SC7180_MASTER_PIMEM, 1, 8, SC7180_SLAVE_SNOC_GEM_NOC_GC, SC7180_SLAVE_IMEM); 688c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_a1noc_snoc, SC7180_SLAVE_A1NOC_SNOC, 1, 16, SC7180_MASTER_A1NOC_SNOC); 698c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_aggre1_noc, SC7180_SLAVE_SERVICE_A1NOC, 1, 4); 708c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_a2noc_snoc, SC7180_SLAVE_A2NOC_SNOC, 1, 16, SC7180_MASTER_A2NOC_SNOC); 718c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_aggre2_noc, SC7180_SLAVE_SERVICE_A2NOC, 1, 4); 728c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_camnoc_uncomp, SC7180_SLAVE_CAMNOC_UNCOMP, 1, 32); 738c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_cdsp_gemnoc, SC7180_SLAVE_CDSP_GEM_NOC, 1, 32, SC7180_MASTER_COMPUTE_NOC); 748c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_a1_noc_cfg, SC7180_SLAVE_A1NOC_CFG, 1, 4, SC7180_MASTER_A1NOC_CFG); 758c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_a2_noc_cfg, SC7180_SLAVE_A2NOC_CFG, 1, 4, SC7180_MASTER_A2NOC_CFG); 768c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_ahb2phy0, SC7180_SLAVE_AHB2PHY_SOUTH, 1, 4); 778c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_ahb2phy2, SC7180_SLAVE_AHB2PHY_CENTER, 1, 4); 788c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_aop, SC7180_SLAVE_AOP, 1, 4); 798c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_aoss, SC7180_SLAVE_AOSS, 1, 4); 808c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_boot_rom, SC7180_SLAVE_BOOT_ROM, 1, 4); 818c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_camera_cfg, SC7180_SLAVE_CAMERA_CFG, 1, 4); 828c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_camera_nrt_throttle_cfg, SC7180_SLAVE_CAMERA_NRT_THROTTLE_CFG, 1, 4); 838c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_camera_rt_throttle_cfg, SC7180_SLAVE_CAMERA_RT_THROTTLE_CFG, 1, 4); 848c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_clk_ctl, SC7180_SLAVE_CLK_CTL, 1, 4); 858c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_cpr_cx, SC7180_SLAVE_RBCPR_CX_CFG, 1, 4); 868c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_cpr_mx, SC7180_SLAVE_RBCPR_MX_CFG, 1, 4); 878c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_crypto0_cfg, SC7180_SLAVE_CRYPTO_0_CFG, 1, 4); 888c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_dcc_cfg, SC7180_SLAVE_DCC_CFG, 1, 4); 898c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_ddrss_cfg, SC7180_SLAVE_CNOC_DDRSS, 1, 4, SC7180_MASTER_CNOC_DC_NOC); 908c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_display_cfg, SC7180_SLAVE_DISPLAY_CFG, 1, 4); 918c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_display_rt_throttle_cfg, SC7180_SLAVE_DISPLAY_RT_THROTTLE_CFG, 1, 4); 928c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_display_throttle_cfg, SC7180_SLAVE_DISPLAY_THROTTLE_CFG, 1, 4); 938c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_emmc_cfg, SC7180_SLAVE_EMMC_CFG, 1, 4); 948c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_glm, SC7180_SLAVE_GLM, 1, 4); 958c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_gpuss_cfg, SC7180_SLAVE_GFX3D_CFG, 1, 8); 968c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_imem_cfg, SC7180_SLAVE_IMEM_CFG, 1, 4); 978c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_ipa, SC7180_SLAVE_IPA_CFG, 1, 4); 988c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_mnoc_cfg, SC7180_SLAVE_CNOC_MNOC_CFG, 1, 4, SC7180_MASTER_CNOC_MNOC_CFG); 998c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_mss_cfg, SC7180_SLAVE_CNOC_MSS, 1, 4); 1008c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_npu_cfg, SC7180_SLAVE_NPU_CFG, 1, 4, SC7180_MASTER_NPU_NOC_CFG); 1018c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_npu_dma_throttle_cfg, SC7180_SLAVE_NPU_DMA_BWMON_CFG, 1, 4); 1028c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_npu_dsp_throttle_cfg, SC7180_SLAVE_NPU_PROC_BWMON_CFG, 1, 4); 1038c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_pdm, SC7180_SLAVE_PDM, 1, 4); 1048c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_pimem_cfg, SC7180_SLAVE_PIMEM_CFG, 1, 4); 1058c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_prng, SC7180_SLAVE_PRNG, 1, 4); 1068c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_qdss_cfg, SC7180_SLAVE_QDSS_CFG, 1, 4); 1078c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_qm_cfg, SC7180_SLAVE_QM_CFG, 1, 4); 1088c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_qm_mpu_cfg, SC7180_SLAVE_QM_MPU_CFG, 1, 4); 1098c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_qspi, SC7180_SLAVE_QSPI_0, 1, 4); 1108c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_qup0, SC7180_SLAVE_QUP_0, 1, 4); 1118c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_qup1, SC7180_SLAVE_QUP_1, 1, 4); 1128c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_sdc2, SC7180_SLAVE_SDCC_2, 1, 4); 1138c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_security, SC7180_SLAVE_SECURITY, 1, 4); 1148c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_snoc_cfg, SC7180_SLAVE_SNOC_CFG, 1, 4, SC7180_MASTER_SNOC_CFG); 1158c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_tcsr, SC7180_SLAVE_TCSR, 1, 4); 1168c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_tlmm_1, SC7180_SLAVE_TLMM_WEST, 1, 4); 1178c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_tlmm_2, SC7180_SLAVE_TLMM_NORTH, 1, 4); 1188c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_tlmm_3, SC7180_SLAVE_TLMM_SOUTH, 1, 4); 1198c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_ufs_mem_cfg, SC7180_SLAVE_UFS_MEM_CFG, 1, 4); 1208c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_usb3, SC7180_SLAVE_USB3, 1, 4); 1218c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_venus_cfg, SC7180_SLAVE_VENUS_CFG, 1, 4); 1228c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_venus_throttle_cfg, SC7180_SLAVE_VENUS_THROTTLE_CFG, 1, 4); 1238c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_vsense_ctrl_cfg, SC7180_SLAVE_VSENSE_CTRL_CFG, 1, 4); 1248c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_cnoc, SC7180_SLAVE_SERVICE_CNOC, 1, 4); 1258c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_gemnoc, SC7180_SLAVE_GEM_NOC_CFG, 1, 4, SC7180_MASTER_GEM_NOC_CFG); 1268c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_llcc, SC7180_SLAVE_LLCC_CFG, 1, 4); 1278c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_mdsp_ms_mpu_cfg, SC7180_SLAVE_MSS_PROC_MS_MPU_CFG, 1, 4); 1288c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_gem_noc_snoc, SC7180_SLAVE_GEM_NOC_SNOC, 1, 8, SC7180_MASTER_GEM_NOC_SNOC); 1298c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_llcc, SC7180_SLAVE_LLCC, 1, 16, SC7180_MASTER_LLCC); 1308c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_gemnoc, SC7180_SLAVE_SERVICE_GEM_NOC, 1, 4); 1318c2ecf20Sopenharmony_ciDEFINE_QNODE(ebi, SC7180_SLAVE_EBI1, 2, 4); 1328c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_mem_noc_hf, SC7180_SLAVE_MNOC_HF_MEM_NOC, 1, 32, SC7180_MASTER_MNOC_HF_MEM_NOC); 1338c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_mem_noc_sf, SC7180_SLAVE_MNOC_SF_MEM_NOC, 1, 32, SC7180_MASTER_MNOC_SF_MEM_NOC); 1348c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_mnoc, SC7180_SLAVE_SERVICE_MNOC, 1, 4); 1358c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_cal_dp0, SC7180_SLAVE_NPU_CAL_DP0, 1, 4); 1368c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_cp, SC7180_SLAVE_NPU_CP, 1, 4); 1378c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_dma_bwmon, SC7180_SLAVE_NPU_INT_DMA_BWMON_CFG, 1, 4); 1388c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_dpm, SC7180_SLAVE_NPU_DPM, 1, 4); 1398c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_isense, SC7180_SLAVE_ISENSE_CFG, 1, 4); 1408c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_llm, SC7180_SLAVE_NPU_LLM_CFG, 1, 4); 1418c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_tcm, SC7180_SLAVE_NPU_TCM, 1, 4); 1428c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_npu_sys, SC7180_SLAVE_NPU_COMPUTE_NOC, 2, 32); 1438c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_noc, SC7180_SLAVE_SERVICE_NPU_NOC, 1, 4); 1448c2ecf20Sopenharmony_ciDEFINE_QNODE(qup_core_slave_1, SC7180_SLAVE_QUP_CORE_0, 1, 4); 1458c2ecf20Sopenharmony_ciDEFINE_QNODE(qup_core_slave_2, SC7180_SLAVE_QUP_CORE_1, 1, 4); 1468c2ecf20Sopenharmony_ciDEFINE_QNODE(qhs_apss, SC7180_SLAVE_APPSS, 1, 8); 1478c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_cnoc, SC7180_SLAVE_SNOC_CNOC, 1, 8, SC7180_MASTER_SNOC_CNOC); 1488c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_gemnoc_gc, SC7180_SLAVE_SNOC_GEM_NOC_GC, 1, 8, SC7180_MASTER_SNOC_GC_MEM_NOC); 1498c2ecf20Sopenharmony_ciDEFINE_QNODE(qns_gemnoc_sf, SC7180_SLAVE_SNOC_GEM_NOC_SF, 1, 16, SC7180_MASTER_SNOC_SF_MEM_NOC); 1508c2ecf20Sopenharmony_ciDEFINE_QNODE(qxs_imem, SC7180_SLAVE_IMEM, 1, 8); 1518c2ecf20Sopenharmony_ciDEFINE_QNODE(qxs_pimem, SC7180_SLAVE_PIMEM, 1, 8); 1528c2ecf20Sopenharmony_ciDEFINE_QNODE(srvc_snoc, SC7180_SLAVE_SERVICE_SNOC, 1, 4); 1538c2ecf20Sopenharmony_ciDEFINE_QNODE(xs_qdss_stm, SC7180_SLAVE_QDSS_STM, 1, 4); 1548c2ecf20Sopenharmony_ciDEFINE_QNODE(xs_sys_tcu_cfg, SC7180_SLAVE_TCU, 1, 8); 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_acv = { 1578c2ecf20Sopenharmony_ci .name = "ACV", 1588c2ecf20Sopenharmony_ci .enable_mask = BIT(3), 1598c2ecf20Sopenharmony_ci .keepalive = false, 1608c2ecf20Sopenharmony_ci .num_nodes = 1, 1618c2ecf20Sopenharmony_ci .nodes = { &ebi }, 1628c2ecf20Sopenharmony_ci}; 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_mc0 = { 1658c2ecf20Sopenharmony_ci .name = "MC0", 1668c2ecf20Sopenharmony_ci .keepalive = true, 1678c2ecf20Sopenharmony_ci .num_nodes = 1, 1688c2ecf20Sopenharmony_ci .nodes = { &ebi }, 1698c2ecf20Sopenharmony_ci}; 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh0 = { 1728c2ecf20Sopenharmony_ci .name = "SH0", 1738c2ecf20Sopenharmony_ci .keepalive = true, 1748c2ecf20Sopenharmony_ci .num_nodes = 1, 1758c2ecf20Sopenharmony_ci .nodes = { &qns_llcc }, 1768c2ecf20Sopenharmony_ci}; 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_mm0 = { 1798c2ecf20Sopenharmony_ci .name = "MM0", 1808c2ecf20Sopenharmony_ci .keepalive = false, 1818c2ecf20Sopenharmony_ci .num_nodes = 1, 1828c2ecf20Sopenharmony_ci .nodes = { &qns_mem_noc_hf }, 1838c2ecf20Sopenharmony_ci}; 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_ce0 = { 1868c2ecf20Sopenharmony_ci .name = "CE0", 1878c2ecf20Sopenharmony_ci .keepalive = false, 1888c2ecf20Sopenharmony_ci .num_nodes = 1, 1898c2ecf20Sopenharmony_ci .nodes = { &qxm_crypto }, 1908c2ecf20Sopenharmony_ci}; 1918c2ecf20Sopenharmony_ci 1928c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_cn0 = { 1938c2ecf20Sopenharmony_ci .name = "CN0", 1948c2ecf20Sopenharmony_ci .keepalive = true, 1958c2ecf20Sopenharmony_ci .num_nodes = 48, 1968c2ecf20Sopenharmony_ci .nodes = { &qnm_snoc, 1978c2ecf20Sopenharmony_ci &xm_qdss_dap, 1988c2ecf20Sopenharmony_ci &qhs_a1_noc_cfg, 1998c2ecf20Sopenharmony_ci &qhs_a2_noc_cfg, 2008c2ecf20Sopenharmony_ci &qhs_ahb2phy0, 2018c2ecf20Sopenharmony_ci &qhs_aop, 2028c2ecf20Sopenharmony_ci &qhs_aoss, 2038c2ecf20Sopenharmony_ci &qhs_boot_rom, 2048c2ecf20Sopenharmony_ci &qhs_camera_cfg, 2058c2ecf20Sopenharmony_ci &qhs_camera_nrt_throttle_cfg, 2068c2ecf20Sopenharmony_ci &qhs_camera_rt_throttle_cfg, 2078c2ecf20Sopenharmony_ci &qhs_clk_ctl, 2088c2ecf20Sopenharmony_ci &qhs_cpr_cx, 2098c2ecf20Sopenharmony_ci &qhs_cpr_mx, 2108c2ecf20Sopenharmony_ci &qhs_crypto0_cfg, 2118c2ecf20Sopenharmony_ci &qhs_dcc_cfg, 2128c2ecf20Sopenharmony_ci &qhs_ddrss_cfg, 2138c2ecf20Sopenharmony_ci &qhs_display_cfg, 2148c2ecf20Sopenharmony_ci &qhs_display_rt_throttle_cfg, 2158c2ecf20Sopenharmony_ci &qhs_display_throttle_cfg, 2168c2ecf20Sopenharmony_ci &qhs_glm, 2178c2ecf20Sopenharmony_ci &qhs_gpuss_cfg, 2188c2ecf20Sopenharmony_ci &qhs_imem_cfg, 2198c2ecf20Sopenharmony_ci &qhs_ipa, 2208c2ecf20Sopenharmony_ci &qhs_mnoc_cfg, 2218c2ecf20Sopenharmony_ci &qhs_mss_cfg, 2228c2ecf20Sopenharmony_ci &qhs_npu_cfg, 2238c2ecf20Sopenharmony_ci &qhs_npu_dma_throttle_cfg, 2248c2ecf20Sopenharmony_ci &qhs_npu_dsp_throttle_cfg, 2258c2ecf20Sopenharmony_ci &qhs_pimem_cfg, 2268c2ecf20Sopenharmony_ci &qhs_prng, 2278c2ecf20Sopenharmony_ci &qhs_qdss_cfg, 2288c2ecf20Sopenharmony_ci &qhs_qm_cfg, 2298c2ecf20Sopenharmony_ci &qhs_qm_mpu_cfg, 2308c2ecf20Sopenharmony_ci &qhs_qup0, 2318c2ecf20Sopenharmony_ci &qhs_qup1, 2328c2ecf20Sopenharmony_ci &qhs_security, 2338c2ecf20Sopenharmony_ci &qhs_snoc_cfg, 2348c2ecf20Sopenharmony_ci &qhs_tcsr, 2358c2ecf20Sopenharmony_ci &qhs_tlmm_1, 2368c2ecf20Sopenharmony_ci &qhs_tlmm_2, 2378c2ecf20Sopenharmony_ci &qhs_tlmm_3, 2388c2ecf20Sopenharmony_ci &qhs_ufs_mem_cfg, 2398c2ecf20Sopenharmony_ci &qhs_usb3, 2408c2ecf20Sopenharmony_ci &qhs_venus_cfg, 2418c2ecf20Sopenharmony_ci &qhs_venus_throttle_cfg, 2428c2ecf20Sopenharmony_ci &qhs_vsense_ctrl_cfg, 2438c2ecf20Sopenharmony_ci &srvc_cnoc 2448c2ecf20Sopenharmony_ci }, 2458c2ecf20Sopenharmony_ci}; 2468c2ecf20Sopenharmony_ci 2478c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_mm1 = { 2488c2ecf20Sopenharmony_ci .name = "MM1", 2498c2ecf20Sopenharmony_ci .keepalive = false, 2508c2ecf20Sopenharmony_ci .num_nodes = 8, 2518c2ecf20Sopenharmony_ci .nodes = { &qxm_camnoc_hf0_uncomp, 2528c2ecf20Sopenharmony_ci &qxm_camnoc_hf1_uncomp, 2538c2ecf20Sopenharmony_ci &qxm_camnoc_sf_uncomp, 2548c2ecf20Sopenharmony_ci &qhm_mnoc_cfg, 2558c2ecf20Sopenharmony_ci &qxm_mdp0, 2568c2ecf20Sopenharmony_ci &qxm_rot, 2578c2ecf20Sopenharmony_ci &qxm_venus0, 2588c2ecf20Sopenharmony_ci &qxm_venus_arm9 2598c2ecf20Sopenharmony_ci }, 2608c2ecf20Sopenharmony_ci}; 2618c2ecf20Sopenharmony_ci 2628c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh2 = { 2638c2ecf20Sopenharmony_ci .name = "SH2", 2648c2ecf20Sopenharmony_ci .keepalive = false, 2658c2ecf20Sopenharmony_ci .num_nodes = 1, 2668c2ecf20Sopenharmony_ci .nodes = { &acm_sys_tcu }, 2678c2ecf20Sopenharmony_ci}; 2688c2ecf20Sopenharmony_ci 2698c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_mm2 = { 2708c2ecf20Sopenharmony_ci .name = "MM2", 2718c2ecf20Sopenharmony_ci .keepalive = false, 2728c2ecf20Sopenharmony_ci .num_nodes = 1, 2738c2ecf20Sopenharmony_ci .nodes = { &qns_mem_noc_sf }, 2748c2ecf20Sopenharmony_ci}; 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_qup0 = { 2778c2ecf20Sopenharmony_ci .name = "QUP0", 2788c2ecf20Sopenharmony_ci .keepalive = false, 2798c2ecf20Sopenharmony_ci .num_nodes = 2, 2808c2ecf20Sopenharmony_ci .nodes = { &qup_core_master_1, &qup_core_master_2 }, 2818c2ecf20Sopenharmony_ci}; 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh3 = { 2848c2ecf20Sopenharmony_ci .name = "SH3", 2858c2ecf20Sopenharmony_ci .keepalive = false, 2868c2ecf20Sopenharmony_ci .num_nodes = 1, 2878c2ecf20Sopenharmony_ci .nodes = { &qnm_cmpnoc }, 2888c2ecf20Sopenharmony_ci}; 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sh4 = { 2918c2ecf20Sopenharmony_ci .name = "SH4", 2928c2ecf20Sopenharmony_ci .keepalive = false, 2938c2ecf20Sopenharmony_ci .num_nodes = 1, 2948c2ecf20Sopenharmony_ci .nodes = { &acm_apps0 }, 2958c2ecf20Sopenharmony_ci}; 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn0 = { 2988c2ecf20Sopenharmony_ci .name = "SN0", 2998c2ecf20Sopenharmony_ci .keepalive = true, 3008c2ecf20Sopenharmony_ci .num_nodes = 1, 3018c2ecf20Sopenharmony_ci .nodes = { &qns_gemnoc_sf }, 3028c2ecf20Sopenharmony_ci}; 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_co0 = { 3058c2ecf20Sopenharmony_ci .name = "CO0", 3068c2ecf20Sopenharmony_ci .keepalive = false, 3078c2ecf20Sopenharmony_ci .num_nodes = 1, 3088c2ecf20Sopenharmony_ci .nodes = { &qns_cdsp_gemnoc }, 3098c2ecf20Sopenharmony_ci}; 3108c2ecf20Sopenharmony_ci 3118c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn1 = { 3128c2ecf20Sopenharmony_ci .name = "SN1", 3138c2ecf20Sopenharmony_ci .keepalive = false, 3148c2ecf20Sopenharmony_ci .num_nodes = 1, 3158c2ecf20Sopenharmony_ci .nodes = { &qxs_imem }, 3168c2ecf20Sopenharmony_ci}; 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_cn1 = { 3198c2ecf20Sopenharmony_ci .name = "CN1", 3208c2ecf20Sopenharmony_ci .keepalive = false, 3218c2ecf20Sopenharmony_ci .num_nodes = 8, 3228c2ecf20Sopenharmony_ci .nodes = { &qhm_qspi, 3238c2ecf20Sopenharmony_ci &xm_sdc2, 3248c2ecf20Sopenharmony_ci &xm_emmc, 3258c2ecf20Sopenharmony_ci &qhs_ahb2phy2, 3268c2ecf20Sopenharmony_ci &qhs_emmc_cfg, 3278c2ecf20Sopenharmony_ci &qhs_pdm, 3288c2ecf20Sopenharmony_ci &qhs_qspi, 3298c2ecf20Sopenharmony_ci &qhs_sdc2 3308c2ecf20Sopenharmony_ci }, 3318c2ecf20Sopenharmony_ci}; 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn2 = { 3348c2ecf20Sopenharmony_ci .name = "SN2", 3358c2ecf20Sopenharmony_ci .keepalive = false, 3368c2ecf20Sopenharmony_ci .num_nodes = 2, 3378c2ecf20Sopenharmony_ci .nodes = { &qxm_pimem, &qns_gemnoc_gc }, 3388c2ecf20Sopenharmony_ci}; 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_co2 = { 3418c2ecf20Sopenharmony_ci .name = "CO2", 3428c2ecf20Sopenharmony_ci .keepalive = false, 3438c2ecf20Sopenharmony_ci .num_nodes = 1, 3448c2ecf20Sopenharmony_ci .nodes = { &qnm_npu }, 3458c2ecf20Sopenharmony_ci}; 3468c2ecf20Sopenharmony_ci 3478c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn3 = { 3488c2ecf20Sopenharmony_ci .name = "SN3", 3498c2ecf20Sopenharmony_ci .keepalive = false, 3508c2ecf20Sopenharmony_ci .num_nodes = 1, 3518c2ecf20Sopenharmony_ci .nodes = { &qxs_pimem }, 3528c2ecf20Sopenharmony_ci}; 3538c2ecf20Sopenharmony_ci 3548c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_co3 = { 3558c2ecf20Sopenharmony_ci .name = "CO3", 3568c2ecf20Sopenharmony_ci .keepalive = false, 3578c2ecf20Sopenharmony_ci .num_nodes = 1, 3588c2ecf20Sopenharmony_ci .nodes = { &qxm_npu_dsp }, 3598c2ecf20Sopenharmony_ci}; 3608c2ecf20Sopenharmony_ci 3618c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn4 = { 3628c2ecf20Sopenharmony_ci .name = "SN4", 3638c2ecf20Sopenharmony_ci .keepalive = false, 3648c2ecf20Sopenharmony_ci .num_nodes = 1, 3658c2ecf20Sopenharmony_ci .nodes = { &xs_qdss_stm }, 3668c2ecf20Sopenharmony_ci}; 3678c2ecf20Sopenharmony_ci 3688c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn7 = { 3698c2ecf20Sopenharmony_ci .name = "SN7", 3708c2ecf20Sopenharmony_ci .keepalive = false, 3718c2ecf20Sopenharmony_ci .num_nodes = 1, 3728c2ecf20Sopenharmony_ci .nodes = { &qnm_aggre1_noc }, 3738c2ecf20Sopenharmony_ci}; 3748c2ecf20Sopenharmony_ci 3758c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn9 = { 3768c2ecf20Sopenharmony_ci .name = "SN9", 3778c2ecf20Sopenharmony_ci .keepalive = false, 3788c2ecf20Sopenharmony_ci .num_nodes = 1, 3798c2ecf20Sopenharmony_ci .nodes = { &qnm_aggre2_noc }, 3808c2ecf20Sopenharmony_ci}; 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm bcm_sn12 = { 3838c2ecf20Sopenharmony_ci .name = "SN12", 3848c2ecf20Sopenharmony_ci .keepalive = false, 3858c2ecf20Sopenharmony_ci .num_nodes = 1, 3868c2ecf20Sopenharmony_ci .nodes = { &qnm_gemnoc }, 3878c2ecf20Sopenharmony_ci}; 3888c2ecf20Sopenharmony_ci 3898c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *aggre1_noc_bcms[] = { 3908c2ecf20Sopenharmony_ci &bcm_cn1, 3918c2ecf20Sopenharmony_ci}; 3928c2ecf20Sopenharmony_ci 3938c2ecf20Sopenharmony_cistatic struct qcom_icc_node *aggre1_noc_nodes[] = { 3948c2ecf20Sopenharmony_ci [MASTER_A1NOC_CFG] = &qhm_a1noc_cfg, 3958c2ecf20Sopenharmony_ci [MASTER_QSPI] = &qhm_qspi, 3968c2ecf20Sopenharmony_ci [MASTER_QUP_0] = &qhm_qup_0, 3978c2ecf20Sopenharmony_ci [MASTER_SDCC_2] = &xm_sdc2, 3988c2ecf20Sopenharmony_ci [MASTER_EMMC] = &xm_emmc, 3998c2ecf20Sopenharmony_ci [MASTER_UFS_MEM] = &xm_ufs_mem, 4008c2ecf20Sopenharmony_ci [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 4018c2ecf20Sopenharmony_ci [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc, 4028c2ecf20Sopenharmony_ci}; 4038c2ecf20Sopenharmony_ci 4048c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_aggre1_noc = { 4058c2ecf20Sopenharmony_ci .nodes = aggre1_noc_nodes, 4068c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 4078c2ecf20Sopenharmony_ci .bcms = aggre1_noc_bcms, 4088c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 4098c2ecf20Sopenharmony_ci}; 4108c2ecf20Sopenharmony_ci 4118c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *aggre2_noc_bcms[] = { 4128c2ecf20Sopenharmony_ci &bcm_ce0, 4138c2ecf20Sopenharmony_ci}; 4148c2ecf20Sopenharmony_ci 4158c2ecf20Sopenharmony_cistatic struct qcom_icc_node *aggre2_noc_nodes[] = { 4168c2ecf20Sopenharmony_ci [MASTER_A2NOC_CFG] = &qhm_a2noc_cfg, 4178c2ecf20Sopenharmony_ci [MASTER_QDSS_BAM] = &qhm_qdss_bam, 4188c2ecf20Sopenharmony_ci [MASTER_QUP_1] = &qhm_qup_1, 4198c2ecf20Sopenharmony_ci [MASTER_USB3] = &qhm_usb3, 4208c2ecf20Sopenharmony_ci [MASTER_CRYPTO] = &qxm_crypto, 4218c2ecf20Sopenharmony_ci [MASTER_IPA] = &qxm_ipa, 4228c2ecf20Sopenharmony_ci [MASTER_QDSS_ETR] = &xm_qdss_etr, 4238c2ecf20Sopenharmony_ci [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc, 4248c2ecf20Sopenharmony_ci [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc, 4258c2ecf20Sopenharmony_ci}; 4268c2ecf20Sopenharmony_ci 4278c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_aggre2_noc = { 4288c2ecf20Sopenharmony_ci .nodes = aggre2_noc_nodes, 4298c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 4308c2ecf20Sopenharmony_ci .bcms = aggre2_noc_bcms, 4318c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 4328c2ecf20Sopenharmony_ci}; 4338c2ecf20Sopenharmony_ci 4348c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *camnoc_virt_bcms[] = { 4358c2ecf20Sopenharmony_ci &bcm_mm1, 4368c2ecf20Sopenharmony_ci}; 4378c2ecf20Sopenharmony_ci 4388c2ecf20Sopenharmony_cistatic struct qcom_icc_node *camnoc_virt_nodes[] = { 4398c2ecf20Sopenharmony_ci [MASTER_CAMNOC_HF0_UNCOMP] = &qxm_camnoc_hf0_uncomp, 4408c2ecf20Sopenharmony_ci [MASTER_CAMNOC_HF1_UNCOMP] = &qxm_camnoc_hf1_uncomp, 4418c2ecf20Sopenharmony_ci [MASTER_CAMNOC_SF_UNCOMP] = &qxm_camnoc_sf_uncomp, 4428c2ecf20Sopenharmony_ci [SLAVE_CAMNOC_UNCOMP] = &qns_camnoc_uncomp, 4438c2ecf20Sopenharmony_ci}; 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_camnoc_virt = { 4468c2ecf20Sopenharmony_ci .nodes = camnoc_virt_nodes, 4478c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(camnoc_virt_nodes), 4488c2ecf20Sopenharmony_ci .bcms = camnoc_virt_bcms, 4498c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(camnoc_virt_bcms), 4508c2ecf20Sopenharmony_ci}; 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *compute_noc_bcms[] = { 4538c2ecf20Sopenharmony_ci &bcm_co0, 4548c2ecf20Sopenharmony_ci &bcm_co2, 4558c2ecf20Sopenharmony_ci &bcm_co3, 4568c2ecf20Sopenharmony_ci}; 4578c2ecf20Sopenharmony_ci 4588c2ecf20Sopenharmony_cistatic struct qcom_icc_node *compute_noc_nodes[] = { 4598c2ecf20Sopenharmony_ci [MASTER_NPU] = &qnm_npu, 4608c2ecf20Sopenharmony_ci [MASTER_NPU_PROC] = &qxm_npu_dsp, 4618c2ecf20Sopenharmony_ci [SLAVE_CDSP_GEM_NOC] = &qns_cdsp_gemnoc, 4628c2ecf20Sopenharmony_ci}; 4638c2ecf20Sopenharmony_ci 4648c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_compute_noc = { 4658c2ecf20Sopenharmony_ci .nodes = compute_noc_nodes, 4668c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(compute_noc_nodes), 4678c2ecf20Sopenharmony_ci .bcms = compute_noc_bcms, 4688c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(compute_noc_bcms), 4698c2ecf20Sopenharmony_ci}; 4708c2ecf20Sopenharmony_ci 4718c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *config_noc_bcms[] = { 4728c2ecf20Sopenharmony_ci &bcm_cn0, 4738c2ecf20Sopenharmony_ci &bcm_cn1, 4748c2ecf20Sopenharmony_ci}; 4758c2ecf20Sopenharmony_ci 4768c2ecf20Sopenharmony_cistatic struct qcom_icc_node *config_noc_nodes[] = { 4778c2ecf20Sopenharmony_ci [MASTER_SNOC_CNOC] = &qnm_snoc, 4788c2ecf20Sopenharmony_ci [MASTER_QDSS_DAP] = &xm_qdss_dap, 4798c2ecf20Sopenharmony_ci [SLAVE_A1NOC_CFG] = &qhs_a1_noc_cfg, 4808c2ecf20Sopenharmony_ci [SLAVE_A2NOC_CFG] = &qhs_a2_noc_cfg, 4818c2ecf20Sopenharmony_ci [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0, 4828c2ecf20Sopenharmony_ci [SLAVE_AHB2PHY_CENTER] = &qhs_ahb2phy2, 4838c2ecf20Sopenharmony_ci [SLAVE_AOP] = &qhs_aop, 4848c2ecf20Sopenharmony_ci [SLAVE_AOSS] = &qhs_aoss, 4858c2ecf20Sopenharmony_ci [SLAVE_BOOT_ROM] = &qhs_boot_rom, 4868c2ecf20Sopenharmony_ci [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 4878c2ecf20Sopenharmony_ci [SLAVE_CAMERA_NRT_THROTTLE_CFG] = &qhs_camera_nrt_throttle_cfg, 4888c2ecf20Sopenharmony_ci [SLAVE_CAMERA_RT_THROTTLE_CFG] = &qhs_camera_rt_throttle_cfg, 4898c2ecf20Sopenharmony_ci [SLAVE_CLK_CTL] = &qhs_clk_ctl, 4908c2ecf20Sopenharmony_ci [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 4918c2ecf20Sopenharmony_ci [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx, 4928c2ecf20Sopenharmony_ci [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 4938c2ecf20Sopenharmony_ci [SLAVE_DCC_CFG] = &qhs_dcc_cfg, 4948c2ecf20Sopenharmony_ci [SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg, 4958c2ecf20Sopenharmony_ci [SLAVE_DISPLAY_CFG] = &qhs_display_cfg, 4968c2ecf20Sopenharmony_ci [SLAVE_DISPLAY_RT_THROTTLE_CFG] = &qhs_display_rt_throttle_cfg, 4978c2ecf20Sopenharmony_ci [SLAVE_DISPLAY_THROTTLE_CFG] = &qhs_display_throttle_cfg, 4988c2ecf20Sopenharmony_ci [SLAVE_EMMC_CFG] = &qhs_emmc_cfg, 4998c2ecf20Sopenharmony_ci [SLAVE_GLM] = &qhs_glm, 5008c2ecf20Sopenharmony_ci [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg, 5018c2ecf20Sopenharmony_ci [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 5028c2ecf20Sopenharmony_ci [SLAVE_IPA_CFG] = &qhs_ipa, 5038c2ecf20Sopenharmony_ci [SLAVE_CNOC_MNOC_CFG] = &qhs_mnoc_cfg, 5048c2ecf20Sopenharmony_ci [SLAVE_CNOC_MSS] = &qhs_mss_cfg, 5058c2ecf20Sopenharmony_ci [SLAVE_NPU_CFG] = &qhs_npu_cfg, 5068c2ecf20Sopenharmony_ci [SLAVE_NPU_DMA_BWMON_CFG] = &qhs_npu_dma_throttle_cfg, 5078c2ecf20Sopenharmony_ci [SLAVE_NPU_PROC_BWMON_CFG] = &qhs_npu_dsp_throttle_cfg, 5088c2ecf20Sopenharmony_ci [SLAVE_PDM] = &qhs_pdm, 5098c2ecf20Sopenharmony_ci [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 5108c2ecf20Sopenharmony_ci [SLAVE_PRNG] = &qhs_prng, 5118c2ecf20Sopenharmony_ci [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 5128c2ecf20Sopenharmony_ci [SLAVE_QM_CFG] = &qhs_qm_cfg, 5138c2ecf20Sopenharmony_ci [SLAVE_QM_MPU_CFG] = &qhs_qm_mpu_cfg, 5148c2ecf20Sopenharmony_ci [SLAVE_QSPI_0] = &qhs_qspi, 5158c2ecf20Sopenharmony_ci [SLAVE_QUP_0] = &qhs_qup0, 5168c2ecf20Sopenharmony_ci [SLAVE_QUP_1] = &qhs_qup1, 5178c2ecf20Sopenharmony_ci [SLAVE_SDCC_2] = &qhs_sdc2, 5188c2ecf20Sopenharmony_ci [SLAVE_SECURITY] = &qhs_security, 5198c2ecf20Sopenharmony_ci [SLAVE_SNOC_CFG] = &qhs_snoc_cfg, 5208c2ecf20Sopenharmony_ci [SLAVE_TCSR] = &qhs_tcsr, 5218c2ecf20Sopenharmony_ci [SLAVE_TLMM_WEST] = &qhs_tlmm_1, 5228c2ecf20Sopenharmony_ci [SLAVE_TLMM_NORTH] = &qhs_tlmm_2, 5238c2ecf20Sopenharmony_ci [SLAVE_TLMM_SOUTH] = &qhs_tlmm_3, 5248c2ecf20Sopenharmony_ci [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 5258c2ecf20Sopenharmony_ci [SLAVE_USB3] = &qhs_usb3, 5268c2ecf20Sopenharmony_ci [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 5278c2ecf20Sopenharmony_ci [SLAVE_VENUS_THROTTLE_CFG] = &qhs_venus_throttle_cfg, 5288c2ecf20Sopenharmony_ci [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 5298c2ecf20Sopenharmony_ci [SLAVE_SERVICE_CNOC] = &srvc_cnoc, 5308c2ecf20Sopenharmony_ci}; 5318c2ecf20Sopenharmony_ci 5328c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_config_noc = { 5338c2ecf20Sopenharmony_ci .nodes = config_noc_nodes, 5348c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(config_noc_nodes), 5358c2ecf20Sopenharmony_ci .bcms = config_noc_bcms, 5368c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(config_noc_bcms), 5378c2ecf20Sopenharmony_ci}; 5388c2ecf20Sopenharmony_ci 5398c2ecf20Sopenharmony_cistatic struct qcom_icc_node *dc_noc_nodes[] = { 5408c2ecf20Sopenharmony_ci [MASTER_CNOC_DC_NOC] = &qhm_cnoc_dc_noc, 5418c2ecf20Sopenharmony_ci [SLAVE_GEM_NOC_CFG] = &qhs_gemnoc, 5428c2ecf20Sopenharmony_ci [SLAVE_LLCC_CFG] = &qhs_llcc, 5438c2ecf20Sopenharmony_ci}; 5448c2ecf20Sopenharmony_ci 5458c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_dc_noc = { 5468c2ecf20Sopenharmony_ci .nodes = dc_noc_nodes, 5478c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(dc_noc_nodes), 5488c2ecf20Sopenharmony_ci}; 5498c2ecf20Sopenharmony_ci 5508c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *gem_noc_bcms[] = { 5518c2ecf20Sopenharmony_ci &bcm_sh0, 5528c2ecf20Sopenharmony_ci &bcm_sh2, 5538c2ecf20Sopenharmony_ci &bcm_sh3, 5548c2ecf20Sopenharmony_ci &bcm_sh4, 5558c2ecf20Sopenharmony_ci}; 5568c2ecf20Sopenharmony_ci 5578c2ecf20Sopenharmony_cistatic struct qcom_icc_node *gem_noc_nodes[] = { 5588c2ecf20Sopenharmony_ci [MASTER_APPSS_PROC] = &acm_apps0, 5598c2ecf20Sopenharmony_ci [MASTER_SYS_TCU] = &acm_sys_tcu, 5608c2ecf20Sopenharmony_ci [MASTER_GEM_NOC_CFG] = &qhm_gemnoc_cfg, 5618c2ecf20Sopenharmony_ci [MASTER_COMPUTE_NOC] = &qnm_cmpnoc, 5628c2ecf20Sopenharmony_ci [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 5638c2ecf20Sopenharmony_ci [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 5648c2ecf20Sopenharmony_ci [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 5658c2ecf20Sopenharmony_ci [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 5668c2ecf20Sopenharmony_ci [MASTER_GFX3D] = &qxm_gpu, 5678c2ecf20Sopenharmony_ci [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg, 5688c2ecf20Sopenharmony_ci [SLAVE_GEM_NOC_SNOC] = &qns_gem_noc_snoc, 5698c2ecf20Sopenharmony_ci [SLAVE_LLCC] = &qns_llcc, 5708c2ecf20Sopenharmony_ci [SLAVE_SERVICE_GEM_NOC] = &srvc_gemnoc, 5718c2ecf20Sopenharmony_ci}; 5728c2ecf20Sopenharmony_ci 5738c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_gem_noc = { 5748c2ecf20Sopenharmony_ci .nodes = gem_noc_nodes, 5758c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(gem_noc_nodes), 5768c2ecf20Sopenharmony_ci .bcms = gem_noc_bcms, 5778c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(gem_noc_bcms), 5788c2ecf20Sopenharmony_ci}; 5798c2ecf20Sopenharmony_ci 5808c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *mc_virt_bcms[] = { 5818c2ecf20Sopenharmony_ci &bcm_acv, 5828c2ecf20Sopenharmony_ci &bcm_mc0, 5838c2ecf20Sopenharmony_ci}; 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_cistatic struct qcom_icc_node *mc_virt_nodes[] = { 5868c2ecf20Sopenharmony_ci [MASTER_LLCC] = &llcc_mc, 5878c2ecf20Sopenharmony_ci [SLAVE_EBI1] = &ebi, 5888c2ecf20Sopenharmony_ci}; 5898c2ecf20Sopenharmony_ci 5908c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_mc_virt = { 5918c2ecf20Sopenharmony_ci .nodes = mc_virt_nodes, 5928c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(mc_virt_nodes), 5938c2ecf20Sopenharmony_ci .bcms = mc_virt_bcms, 5948c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(mc_virt_bcms), 5958c2ecf20Sopenharmony_ci}; 5968c2ecf20Sopenharmony_ci 5978c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *mmss_noc_bcms[] = { 5988c2ecf20Sopenharmony_ci &bcm_mm0, 5998c2ecf20Sopenharmony_ci &bcm_mm1, 6008c2ecf20Sopenharmony_ci &bcm_mm2, 6018c2ecf20Sopenharmony_ci}; 6028c2ecf20Sopenharmony_ci 6038c2ecf20Sopenharmony_cistatic struct qcom_icc_node *mmss_noc_nodes[] = { 6048c2ecf20Sopenharmony_ci [MASTER_CNOC_MNOC_CFG] = &qhm_mnoc_cfg, 6058c2ecf20Sopenharmony_ci [MASTER_CAMNOC_HF0] = &qxm_camnoc_hf0, 6068c2ecf20Sopenharmony_ci [MASTER_CAMNOC_HF1] = &qxm_camnoc_hf1, 6078c2ecf20Sopenharmony_ci [MASTER_CAMNOC_SF] = &qxm_camnoc_sf, 6088c2ecf20Sopenharmony_ci [MASTER_MDP0] = &qxm_mdp0, 6098c2ecf20Sopenharmony_ci [MASTER_ROTATOR] = &qxm_rot, 6108c2ecf20Sopenharmony_ci [MASTER_VIDEO_P0] = &qxm_venus0, 6118c2ecf20Sopenharmony_ci [MASTER_VIDEO_PROC] = &qxm_venus_arm9, 6128c2ecf20Sopenharmony_ci [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 6138c2ecf20Sopenharmony_ci [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf, 6148c2ecf20Sopenharmony_ci [SLAVE_SERVICE_MNOC] = &srvc_mnoc, 6158c2ecf20Sopenharmony_ci}; 6168c2ecf20Sopenharmony_ci 6178c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_mmss_noc = { 6188c2ecf20Sopenharmony_ci .nodes = mmss_noc_nodes, 6198c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 6208c2ecf20Sopenharmony_ci .bcms = mmss_noc_bcms, 6218c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 6228c2ecf20Sopenharmony_ci}; 6238c2ecf20Sopenharmony_ci 6248c2ecf20Sopenharmony_cistatic struct qcom_icc_node *npu_noc_nodes[] = { 6258c2ecf20Sopenharmony_ci [MASTER_NPU_SYS] = &amm_npu_sys, 6268c2ecf20Sopenharmony_ci [MASTER_NPU_NOC_CFG] = &qhm_npu_cfg, 6278c2ecf20Sopenharmony_ci [SLAVE_NPU_CAL_DP0] = &qhs_cal_dp0, 6288c2ecf20Sopenharmony_ci [SLAVE_NPU_CP] = &qhs_cp, 6298c2ecf20Sopenharmony_ci [SLAVE_NPU_INT_DMA_BWMON_CFG] = &qhs_dma_bwmon, 6308c2ecf20Sopenharmony_ci [SLAVE_NPU_DPM] = &qhs_dpm, 6318c2ecf20Sopenharmony_ci [SLAVE_ISENSE_CFG] = &qhs_isense, 6328c2ecf20Sopenharmony_ci [SLAVE_NPU_LLM_CFG] = &qhs_llm, 6338c2ecf20Sopenharmony_ci [SLAVE_NPU_TCM] = &qhs_tcm, 6348c2ecf20Sopenharmony_ci [SLAVE_NPU_COMPUTE_NOC] = &qns_npu_sys, 6358c2ecf20Sopenharmony_ci [SLAVE_SERVICE_NPU_NOC] = &srvc_noc, 6368c2ecf20Sopenharmony_ci}; 6378c2ecf20Sopenharmony_ci 6388c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_npu_noc = { 6398c2ecf20Sopenharmony_ci .nodes = npu_noc_nodes, 6408c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(npu_noc_nodes), 6418c2ecf20Sopenharmony_ci}; 6428c2ecf20Sopenharmony_ci 6438c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *qup_virt_bcms[] = { 6448c2ecf20Sopenharmony_ci &bcm_qup0, 6458c2ecf20Sopenharmony_ci}; 6468c2ecf20Sopenharmony_ci 6478c2ecf20Sopenharmony_cistatic struct qcom_icc_node *qup_virt_nodes[] = { 6488c2ecf20Sopenharmony_ci [MASTER_QUP_CORE_0] = &qup_core_master_1, 6498c2ecf20Sopenharmony_ci [MASTER_QUP_CORE_1] = &qup_core_master_2, 6508c2ecf20Sopenharmony_ci [SLAVE_QUP_CORE_0] = &qup_core_slave_1, 6518c2ecf20Sopenharmony_ci [SLAVE_QUP_CORE_1] = &qup_core_slave_2, 6528c2ecf20Sopenharmony_ci}; 6538c2ecf20Sopenharmony_ci 6548c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_qup_virt = { 6558c2ecf20Sopenharmony_ci .nodes = qup_virt_nodes, 6568c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(qup_virt_nodes), 6578c2ecf20Sopenharmony_ci .bcms = qup_virt_bcms, 6588c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(qup_virt_bcms), 6598c2ecf20Sopenharmony_ci}; 6608c2ecf20Sopenharmony_ci 6618c2ecf20Sopenharmony_cistatic struct qcom_icc_bcm *system_noc_bcms[] = { 6628c2ecf20Sopenharmony_ci &bcm_sn0, 6638c2ecf20Sopenharmony_ci &bcm_sn1, 6648c2ecf20Sopenharmony_ci &bcm_sn2, 6658c2ecf20Sopenharmony_ci &bcm_sn3, 6668c2ecf20Sopenharmony_ci &bcm_sn4, 6678c2ecf20Sopenharmony_ci &bcm_sn7, 6688c2ecf20Sopenharmony_ci &bcm_sn9, 6698c2ecf20Sopenharmony_ci &bcm_sn12, 6708c2ecf20Sopenharmony_ci}; 6718c2ecf20Sopenharmony_ci 6728c2ecf20Sopenharmony_cistatic struct qcom_icc_node *system_noc_nodes[] = { 6738c2ecf20Sopenharmony_ci [MASTER_SNOC_CFG] = &qhm_snoc_cfg, 6748c2ecf20Sopenharmony_ci [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc, 6758c2ecf20Sopenharmony_ci [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc, 6768c2ecf20Sopenharmony_ci [MASTER_GEM_NOC_SNOC] = &qnm_gemnoc, 6778c2ecf20Sopenharmony_ci [MASTER_PIMEM] = &qxm_pimem, 6788c2ecf20Sopenharmony_ci [SLAVE_APPSS] = &qhs_apss, 6798c2ecf20Sopenharmony_ci [SLAVE_SNOC_CNOC] = &qns_cnoc, 6808c2ecf20Sopenharmony_ci [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 6818c2ecf20Sopenharmony_ci [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 6828c2ecf20Sopenharmony_ci [SLAVE_IMEM] = &qxs_imem, 6838c2ecf20Sopenharmony_ci [SLAVE_PIMEM] = &qxs_pimem, 6848c2ecf20Sopenharmony_ci [SLAVE_SERVICE_SNOC] = &srvc_snoc, 6858c2ecf20Sopenharmony_ci [SLAVE_QDSS_STM] = &xs_qdss_stm, 6868c2ecf20Sopenharmony_ci [SLAVE_TCU] = &xs_sys_tcu_cfg, 6878c2ecf20Sopenharmony_ci}; 6888c2ecf20Sopenharmony_ci 6898c2ecf20Sopenharmony_cistatic struct qcom_icc_desc sc7180_system_noc = { 6908c2ecf20Sopenharmony_ci .nodes = system_noc_nodes, 6918c2ecf20Sopenharmony_ci .num_nodes = ARRAY_SIZE(system_noc_nodes), 6928c2ecf20Sopenharmony_ci .bcms = system_noc_bcms, 6938c2ecf20Sopenharmony_ci .num_bcms = ARRAY_SIZE(system_noc_bcms), 6948c2ecf20Sopenharmony_ci}; 6958c2ecf20Sopenharmony_ci 6968c2ecf20Sopenharmony_cistatic int qnoc_probe(struct platform_device *pdev) 6978c2ecf20Sopenharmony_ci{ 6988c2ecf20Sopenharmony_ci const struct qcom_icc_desc *desc; 6998c2ecf20Sopenharmony_ci struct icc_onecell_data *data; 7008c2ecf20Sopenharmony_ci struct icc_provider *provider; 7018c2ecf20Sopenharmony_ci struct qcom_icc_node **qnodes; 7028c2ecf20Sopenharmony_ci struct qcom_icc_provider *qp; 7038c2ecf20Sopenharmony_ci struct icc_node *node; 7048c2ecf20Sopenharmony_ci size_t num_nodes, i; 7058c2ecf20Sopenharmony_ci int ret; 7068c2ecf20Sopenharmony_ci 7078c2ecf20Sopenharmony_ci desc = device_get_match_data(&pdev->dev); 7088c2ecf20Sopenharmony_ci if (!desc) 7098c2ecf20Sopenharmony_ci return -EINVAL; 7108c2ecf20Sopenharmony_ci 7118c2ecf20Sopenharmony_ci qnodes = desc->nodes; 7128c2ecf20Sopenharmony_ci num_nodes = desc->num_nodes; 7138c2ecf20Sopenharmony_ci 7148c2ecf20Sopenharmony_ci qp = devm_kzalloc(&pdev->dev, sizeof(*qp), GFP_KERNEL); 7158c2ecf20Sopenharmony_ci if (!qp) 7168c2ecf20Sopenharmony_ci return -ENOMEM; 7178c2ecf20Sopenharmony_ci 7188c2ecf20Sopenharmony_ci data = devm_kcalloc(&pdev->dev, num_nodes, sizeof(*node), GFP_KERNEL); 7198c2ecf20Sopenharmony_ci if (!data) 7208c2ecf20Sopenharmony_ci return -ENOMEM; 7218c2ecf20Sopenharmony_ci 7228c2ecf20Sopenharmony_ci provider = &qp->provider; 7238c2ecf20Sopenharmony_ci provider->dev = &pdev->dev; 7248c2ecf20Sopenharmony_ci provider->set = qcom_icc_set; 7258c2ecf20Sopenharmony_ci provider->pre_aggregate = qcom_icc_pre_aggregate; 7268c2ecf20Sopenharmony_ci provider->aggregate = qcom_icc_aggregate; 7278c2ecf20Sopenharmony_ci provider->xlate_extended = qcom_icc_xlate_extended; 7288c2ecf20Sopenharmony_ci INIT_LIST_HEAD(&provider->nodes); 7298c2ecf20Sopenharmony_ci provider->data = data; 7308c2ecf20Sopenharmony_ci 7318c2ecf20Sopenharmony_ci qp->dev = &pdev->dev; 7328c2ecf20Sopenharmony_ci qp->bcms = desc->bcms; 7338c2ecf20Sopenharmony_ci qp->num_bcms = desc->num_bcms; 7348c2ecf20Sopenharmony_ci 7358c2ecf20Sopenharmony_ci qp->voter = of_bcm_voter_get(qp->dev, NULL); 7368c2ecf20Sopenharmony_ci if (IS_ERR(qp->voter)) 7378c2ecf20Sopenharmony_ci return PTR_ERR(qp->voter); 7388c2ecf20Sopenharmony_ci 7398c2ecf20Sopenharmony_ci ret = icc_provider_add(provider); 7408c2ecf20Sopenharmony_ci if (ret) { 7418c2ecf20Sopenharmony_ci dev_err(&pdev->dev, "error adding interconnect provider\n"); 7428c2ecf20Sopenharmony_ci return ret; 7438c2ecf20Sopenharmony_ci } 7448c2ecf20Sopenharmony_ci 7458c2ecf20Sopenharmony_ci for (i = 0; i < qp->num_bcms; i++) 7468c2ecf20Sopenharmony_ci qcom_icc_bcm_init(qp->bcms[i], &pdev->dev); 7478c2ecf20Sopenharmony_ci 7488c2ecf20Sopenharmony_ci for (i = 0; i < num_nodes; i++) { 7498c2ecf20Sopenharmony_ci size_t j; 7508c2ecf20Sopenharmony_ci 7518c2ecf20Sopenharmony_ci if (!qnodes[i]) 7528c2ecf20Sopenharmony_ci continue; 7538c2ecf20Sopenharmony_ci 7548c2ecf20Sopenharmony_ci node = icc_node_create(qnodes[i]->id); 7558c2ecf20Sopenharmony_ci if (IS_ERR(node)) { 7568c2ecf20Sopenharmony_ci ret = PTR_ERR(node); 7578c2ecf20Sopenharmony_ci goto err; 7588c2ecf20Sopenharmony_ci } 7598c2ecf20Sopenharmony_ci 7608c2ecf20Sopenharmony_ci node->name = qnodes[i]->name; 7618c2ecf20Sopenharmony_ci node->data = qnodes[i]; 7628c2ecf20Sopenharmony_ci icc_node_add(node, provider); 7638c2ecf20Sopenharmony_ci 7648c2ecf20Sopenharmony_ci for (j = 0; j < qnodes[i]->num_links; j++) 7658c2ecf20Sopenharmony_ci icc_link_create(node, qnodes[i]->links[j]); 7668c2ecf20Sopenharmony_ci 7678c2ecf20Sopenharmony_ci data->nodes[i] = node; 7688c2ecf20Sopenharmony_ci } 7698c2ecf20Sopenharmony_ci data->num_nodes = num_nodes; 7708c2ecf20Sopenharmony_ci 7718c2ecf20Sopenharmony_ci platform_set_drvdata(pdev, qp); 7728c2ecf20Sopenharmony_ci 7738c2ecf20Sopenharmony_ci return 0; 7748c2ecf20Sopenharmony_cierr: 7758c2ecf20Sopenharmony_ci icc_nodes_remove(provider); 7768c2ecf20Sopenharmony_ci icc_provider_del(provider); 7778c2ecf20Sopenharmony_ci return ret; 7788c2ecf20Sopenharmony_ci} 7798c2ecf20Sopenharmony_ci 7808c2ecf20Sopenharmony_cistatic int qnoc_remove(struct platform_device *pdev) 7818c2ecf20Sopenharmony_ci{ 7828c2ecf20Sopenharmony_ci struct qcom_icc_provider *qp = platform_get_drvdata(pdev); 7838c2ecf20Sopenharmony_ci 7848c2ecf20Sopenharmony_ci icc_nodes_remove(&qp->provider); 7858c2ecf20Sopenharmony_ci return icc_provider_del(&qp->provider); 7868c2ecf20Sopenharmony_ci} 7878c2ecf20Sopenharmony_ci 7888c2ecf20Sopenharmony_cistatic const struct of_device_id qnoc_of_match[] = { 7898c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-aggre1-noc", 7908c2ecf20Sopenharmony_ci .data = &sc7180_aggre1_noc}, 7918c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-aggre2-noc", 7928c2ecf20Sopenharmony_ci .data = &sc7180_aggre2_noc}, 7938c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-camnoc-virt", 7948c2ecf20Sopenharmony_ci .data = &sc7180_camnoc_virt}, 7958c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-compute-noc", 7968c2ecf20Sopenharmony_ci .data = &sc7180_compute_noc}, 7978c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-config-noc", 7988c2ecf20Sopenharmony_ci .data = &sc7180_config_noc}, 7998c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-dc-noc", 8008c2ecf20Sopenharmony_ci .data = &sc7180_dc_noc}, 8018c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-gem-noc", 8028c2ecf20Sopenharmony_ci .data = &sc7180_gem_noc}, 8038c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-mc-virt", 8048c2ecf20Sopenharmony_ci .data = &sc7180_mc_virt}, 8058c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-mmss-noc", 8068c2ecf20Sopenharmony_ci .data = &sc7180_mmss_noc}, 8078c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-npu-noc", 8088c2ecf20Sopenharmony_ci .data = &sc7180_npu_noc}, 8098c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-qup-virt", 8108c2ecf20Sopenharmony_ci .data = &sc7180_qup_virt}, 8118c2ecf20Sopenharmony_ci { .compatible = "qcom,sc7180-system-noc", 8128c2ecf20Sopenharmony_ci .data = &sc7180_system_noc}, 8138c2ecf20Sopenharmony_ci { } 8148c2ecf20Sopenharmony_ci}; 8158c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(of, qnoc_of_match); 8168c2ecf20Sopenharmony_ci 8178c2ecf20Sopenharmony_cistatic struct platform_driver qnoc_driver = { 8188c2ecf20Sopenharmony_ci .probe = qnoc_probe, 8198c2ecf20Sopenharmony_ci .remove = qnoc_remove, 8208c2ecf20Sopenharmony_ci .driver = { 8218c2ecf20Sopenharmony_ci .name = "qnoc-sc7180", 8228c2ecf20Sopenharmony_ci .of_match_table = qnoc_of_match, 8238c2ecf20Sopenharmony_ci .sync_state = icc_sync_state, 8248c2ecf20Sopenharmony_ci }, 8258c2ecf20Sopenharmony_ci}; 8268c2ecf20Sopenharmony_cimodule_platform_driver(qnoc_driver); 8278c2ecf20Sopenharmony_ci 8288c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Qualcomm SC7180 NoC driver"); 8298c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2"); 830