Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Copyright (c) 2020, The Linux Foundation. All rights reserved.
0004  * Copyright (c) 2021, Linaro Ltd.
0005  */
0006 
0007 #include <linux/device.h>
0008 #include <linux/interconnect-provider.h>
0009 #include <linux/module.h>
0010 #include <linux/of_device.h>
0011 
0012 #include <dt-bindings/interconnect/qcom,sc8180x.h>
0013 
0014 #include "bcm-voter.h"
0015 #include "icc-rpmh.h"
0016 #include "sc8180x.h"
0017 
0018 static struct qcom_icc_node mas_qhm_a1noc_cfg = {
0019     .name = "mas_qhm_a1noc_cfg",
0020     .id = SC8180X_MASTER_A1NOC_CFG,
0021     .channels = 1,
0022     .buswidth = 4,
0023     .num_links = 1,
0024     .links = { SC8180X_SLAVE_SERVICE_A1NOC }
0025 };
0026 
0027 static struct qcom_icc_node mas_xm_ufs_card = {
0028     .name = "mas_xm_ufs_card",
0029     .id = SC8180X_MASTER_UFS_CARD,
0030     .channels = 1,
0031     .buswidth = 8,
0032     .num_links = 1,
0033     .links = { SC8180X_A1NOC_SNOC_SLV }
0034 };
0035 
0036 static struct qcom_icc_node mas_xm_ufs_g4 = {
0037     .name = "mas_xm_ufs_g4",
0038     .id = SC8180X_MASTER_UFS_GEN4,
0039     .channels = 1,
0040     .buswidth = 8,
0041     .num_links = 1,
0042     .links = { SC8180X_A1NOC_SNOC_SLV }
0043 };
0044 
0045 static struct qcom_icc_node mas_xm_ufs_mem = {
0046     .name = "mas_xm_ufs_mem",
0047     .id = SC8180X_MASTER_UFS_MEM,
0048     .channels = 1,
0049     .buswidth = 8,
0050     .num_links = 1,
0051     .links = { SC8180X_A1NOC_SNOC_SLV }
0052 };
0053 
0054 static struct qcom_icc_node mas_xm_usb3_0 = {
0055     .name = "mas_xm_usb3_0",
0056     .id = SC8180X_MASTER_USB3,
0057     .channels = 1,
0058     .buswidth = 8,
0059     .num_links = 1,
0060     .links = { SC8180X_A1NOC_SNOC_SLV }
0061 };
0062 
0063 static struct qcom_icc_node mas_xm_usb3_1 = {
0064     .name = "mas_xm_usb3_1",
0065     .id = SC8180X_MASTER_USB3_1,
0066     .channels = 1,
0067     .buswidth = 8,
0068     .num_links = 1,
0069     .links = { SC8180X_A1NOC_SNOC_SLV }
0070 };
0071 
0072 static struct qcom_icc_node mas_xm_usb3_2 = {
0073     .name = "mas_xm_usb3_2",
0074     .id = SC8180X_MASTER_USB3_2,
0075     .channels = 1,
0076     .buswidth = 16,
0077     .num_links = 1,
0078     .links = { SC8180X_A1NOC_SNOC_SLV }
0079 };
0080 
0081 static struct qcom_icc_node mas_qhm_a2noc_cfg = {
0082     .name = "mas_qhm_a2noc_cfg",
0083     .id = SC8180X_MASTER_A2NOC_CFG,
0084     .channels = 1,
0085     .buswidth = 4,
0086     .num_links = 1,
0087     .links = { SC8180X_SLAVE_SERVICE_A2NOC }
0088 };
0089 
0090 static struct qcom_icc_node mas_qhm_qdss_bam = {
0091     .name = "mas_qhm_qdss_bam",
0092     .id = SC8180X_MASTER_QDSS_BAM,
0093     .channels = 1,
0094     .buswidth = 4,
0095     .num_links = 1,
0096     .links = { SC8180X_A2NOC_SNOC_SLV }
0097 };
0098 
0099 static struct qcom_icc_node mas_qhm_qspi = {
0100     .name = "mas_qhm_qspi",
0101     .id = SC8180X_MASTER_QSPI_0,
0102     .channels = 1,
0103     .buswidth = 4,
0104     .num_links = 1,
0105     .links = { SC8180X_A2NOC_SNOC_SLV }
0106 };
0107 
0108 static struct qcom_icc_node mas_qhm_qspi1 = {
0109     .name = "mas_qhm_qspi1",
0110     .id = SC8180X_MASTER_QSPI_1,
0111     .channels = 1,
0112     .buswidth = 4,
0113     .num_links = 1,
0114     .links = { SC8180X_A2NOC_SNOC_SLV }
0115 };
0116 
0117 static struct qcom_icc_node mas_qhm_qup0 = {
0118     .name = "mas_qhm_qup0",
0119     .id = SC8180X_MASTER_QUP_0,
0120     .channels = 1,
0121     .buswidth = 4,
0122     .num_links = 1,
0123     .links = { SC8180X_A2NOC_SNOC_SLV }
0124 };
0125 
0126 static struct qcom_icc_node mas_qhm_qup1 = {
0127     .name = "mas_qhm_qup1",
0128     .id = SC8180X_MASTER_QUP_1,
0129     .channels = 1,
0130     .buswidth = 4,
0131     .num_links = 1,
0132     .links = { SC8180X_A2NOC_SNOC_SLV }
0133 };
0134 
0135 static struct qcom_icc_node mas_qhm_qup2 = {
0136     .name = "mas_qhm_qup2",
0137     .id = SC8180X_MASTER_QUP_2,
0138     .channels = 1,
0139     .buswidth = 4,
0140     .num_links = 1,
0141     .links = { SC8180X_A2NOC_SNOC_SLV }
0142 };
0143 
0144 static struct qcom_icc_node mas_qhm_sensorss_ahb = {
0145     .name = "mas_qhm_sensorss_ahb",
0146     .id = SC8180X_MASTER_SENSORS_AHB,
0147     .channels = 1,
0148     .buswidth = 4,
0149     .num_links = 1,
0150     .links = { SC8180X_A2NOC_SNOC_SLV }
0151 };
0152 
0153 static struct qcom_icc_node mas_qxm_crypto = {
0154     .name = "mas_qxm_crypto",
0155     .id = SC8180X_MASTER_CRYPTO_CORE_0,
0156     .channels = 1,
0157     .buswidth = 8,
0158     .num_links = 1,
0159     .links = { SC8180X_A2NOC_SNOC_SLV }
0160 };
0161 
0162 static struct qcom_icc_node mas_qxm_ipa = {
0163     .name = "mas_qxm_ipa",
0164     .id = SC8180X_MASTER_IPA,
0165     .channels = 1,
0166     .buswidth = 8,
0167     .num_links = 1,
0168     .links = { SC8180X_A2NOC_SNOC_SLV }
0169 };
0170 
0171 static struct qcom_icc_node mas_xm_emac = {
0172     .name = "mas_xm_emac",
0173     .id = SC8180X_MASTER_EMAC,
0174     .channels = 1,
0175     .buswidth = 8,
0176     .num_links = 1,
0177     .links = { SC8180X_A2NOC_SNOC_SLV }
0178 };
0179 
0180 static struct qcom_icc_node mas_xm_pcie3_0 = {
0181     .name = "mas_xm_pcie3_0",
0182     .id = SC8180X_MASTER_PCIE,
0183     .channels = 1,
0184     .buswidth = 8,
0185     .num_links = 1,
0186     .links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
0187 };
0188 
0189 static struct qcom_icc_node mas_xm_pcie3_1 = {
0190     .name = "mas_xm_pcie3_1",
0191     .id = SC8180X_MASTER_PCIE_1,
0192     .channels = 1,
0193     .buswidth = 16,
0194     .num_links = 1,
0195     .links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
0196 };
0197 
0198 static struct qcom_icc_node mas_xm_pcie3_2 = {
0199     .name = "mas_xm_pcie3_2",
0200     .id = SC8180X_MASTER_PCIE_2,
0201     .channels = 1,
0202     .buswidth = 8,
0203     .num_links = 1,
0204     .links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
0205 };
0206 
0207 static struct qcom_icc_node mas_xm_pcie3_3 = {
0208     .name = "mas_xm_pcie3_3",
0209     .id = SC8180X_MASTER_PCIE_3,
0210     .channels = 1,
0211     .buswidth = 16,
0212     .num_links = 1,
0213     .links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
0214 };
0215 
0216 static struct qcom_icc_node mas_xm_qdss_etr = {
0217     .name = "mas_xm_qdss_etr",
0218     .id = SC8180X_MASTER_QDSS_ETR,
0219     .channels = 1,
0220     .buswidth = 8,
0221     .num_links = 1,
0222     .links = { SC8180X_A2NOC_SNOC_SLV }
0223 };
0224 
0225 static struct qcom_icc_node mas_xm_sdc2 = {
0226     .name = "mas_xm_sdc2",
0227     .id = SC8180X_MASTER_SDCC_2,
0228     .channels = 1,
0229     .buswidth = 8,
0230     .num_links = 1,
0231     .links = { SC8180X_A2NOC_SNOC_SLV }
0232 };
0233 
0234 static struct qcom_icc_node mas_xm_sdc4 = {
0235     .name = "mas_xm_sdc4",
0236     .id = SC8180X_MASTER_SDCC_4,
0237     .channels = 1,
0238     .buswidth = 8,
0239     .num_links = 1,
0240     .links = { SC8180X_A2NOC_SNOC_SLV }
0241 };
0242 
0243 static struct qcom_icc_node mas_qxm_camnoc_hf0_uncomp = {
0244     .name = "mas_qxm_camnoc_hf0_uncomp",
0245     .id = SC8180X_MASTER_CAMNOC_HF0_UNCOMP,
0246     .channels = 1,
0247     .buswidth = 32,
0248     .num_links = 1,
0249     .links = { SC8180X_SLAVE_CAMNOC_UNCOMP }
0250 };
0251 
0252 static struct qcom_icc_node mas_qxm_camnoc_hf1_uncomp = {
0253     .name = "mas_qxm_camnoc_hf1_uncomp",
0254     .id = SC8180X_MASTER_CAMNOC_HF1_UNCOMP,
0255     .channels = 1,
0256     .buswidth = 32,
0257     .num_links = 1,
0258     .links = { SC8180X_SLAVE_CAMNOC_UNCOMP }
0259 };
0260 
0261 static struct qcom_icc_node mas_qxm_camnoc_sf_uncomp = {
0262     .name = "mas_qxm_camnoc_sf_uncomp",
0263     .id = SC8180X_MASTER_CAMNOC_SF_UNCOMP,
0264     .channels = 1,
0265     .buswidth = 32,
0266     .num_links = 1,
0267     .links = { SC8180X_SLAVE_CAMNOC_UNCOMP }
0268 };
0269 
0270 static struct qcom_icc_node mas_qnm_npu = {
0271     .name = "mas_qnm_npu",
0272     .id = SC8180X_MASTER_NPU,
0273     .channels = 1,
0274     .buswidth = 32,
0275     .num_links = 1,
0276     .links = { SC8180X_SLAVE_CDSP_MEM_NOC }
0277 };
0278 
0279 static struct qcom_icc_node mas_qnm_snoc = {
0280     .name = "mas_qnm_snoc",
0281     .id = SC8180X_SNOC_CNOC_MAS,
0282     .channels = 1,
0283     .buswidth = 8,
0284     .num_links = 56,
0285     .links = { SC8180X_SLAVE_TLMM_SOUTH,
0286            SC8180X_SLAVE_CDSP_CFG,
0287            SC8180X_SLAVE_SPSS_CFG,
0288            SC8180X_SLAVE_CAMERA_CFG,
0289            SC8180X_SLAVE_SDCC_4,
0290            SC8180X_SLAVE_AHB2PHY_CENTER,
0291            SC8180X_SLAVE_SDCC_2,
0292            SC8180X_SLAVE_PCIE_2_CFG,
0293            SC8180X_SLAVE_CNOC_MNOC_CFG,
0294            SC8180X_SLAVE_EMAC_CFG,
0295            SC8180X_SLAVE_QSPI_0,
0296            SC8180X_SLAVE_QSPI_1,
0297            SC8180X_SLAVE_TLMM_EAST,
0298            SC8180X_SLAVE_SNOC_CFG,
0299            SC8180X_SLAVE_AHB2PHY_EAST,
0300            SC8180X_SLAVE_GLM,
0301            SC8180X_SLAVE_PDM,
0302            SC8180X_SLAVE_PCIE_1_CFG,
0303            SC8180X_SLAVE_A2NOC_CFG,
0304            SC8180X_SLAVE_QDSS_CFG,
0305            SC8180X_SLAVE_DISPLAY_CFG,
0306            SC8180X_SLAVE_TCSR,
0307            SC8180X_SLAVE_UFS_MEM_0_CFG,
0308            SC8180X_SLAVE_CNOC_DDRSS,
0309            SC8180X_SLAVE_PCIE_0_CFG,
0310            SC8180X_SLAVE_QUP_1,
0311            SC8180X_SLAVE_QUP_2,
0312            SC8180X_SLAVE_NPU_CFG,
0313            SC8180X_SLAVE_CRYPTO_0_CFG,
0314            SC8180X_SLAVE_GRAPHICS_3D_CFG,
0315            SC8180X_SLAVE_VENUS_CFG,
0316            SC8180X_SLAVE_TSIF,
0317            SC8180X_SLAVE_IPA_CFG,
0318            SC8180X_SLAVE_CLK_CTL,
0319            SC8180X_SLAVE_SECURITY,
0320            SC8180X_SLAVE_AOP,
0321            SC8180X_SLAVE_AHB2PHY_WEST,
0322            SC8180X_SLAVE_AHB2PHY_SOUTH,
0323            SC8180X_SLAVE_SERVICE_CNOC,
0324            SC8180X_SLAVE_UFS_CARD_CFG,
0325            SC8180X_SLAVE_USB3_1,
0326            SC8180X_SLAVE_USB3_2,
0327            SC8180X_SLAVE_PCIE_3_CFG,
0328            SC8180X_SLAVE_RBCPR_CX_CFG,
0329            SC8180X_SLAVE_TLMM_WEST,
0330            SC8180X_SLAVE_A1NOC_CFG,
0331            SC8180X_SLAVE_AOSS,
0332            SC8180X_SLAVE_PRNG,
0333            SC8180X_SLAVE_VSENSE_CTRL_CFG,
0334            SC8180X_SLAVE_QUP_0,
0335            SC8180X_SLAVE_USB3,
0336            SC8180X_SLAVE_RBCPR_MMCX_CFG,
0337            SC8180X_SLAVE_PIMEM_CFG,
0338            SC8180X_SLAVE_UFS_MEM_1_CFG,
0339            SC8180X_SLAVE_RBCPR_MX_CFG,
0340            SC8180X_SLAVE_IMEM_CFG }
0341 };
0342 
0343 static struct qcom_icc_node mas_qhm_cnoc_dc_noc = {
0344     .name = "mas_qhm_cnoc_dc_noc",
0345     .id = SC8180X_MASTER_CNOC_DC_NOC,
0346     .channels = 1,
0347     .buswidth = 4,
0348     .num_links = 2,
0349     .links = { SC8180X_SLAVE_LLCC_CFG,
0350            SC8180X_SLAVE_GEM_NOC_CFG }
0351 };
0352 
0353 static struct qcom_icc_node mas_acm_apps = {
0354     .name = "mas_acm_apps",
0355     .id = SC8180X_MASTER_AMPSS_M0,
0356     .channels = 4,
0357     .buswidth = 64,
0358     .num_links = 3,
0359     .links = { SC8180X_SLAVE_ECC,
0360            SC8180X_SLAVE_LLCC,
0361            SC8180X_SLAVE_GEM_NOC_SNOC }
0362 };
0363 
0364 static struct qcom_icc_node mas_acm_gpu_tcu = {
0365     .name = "mas_acm_gpu_tcu",
0366     .id = SC8180X_MASTER_GPU_TCU,
0367     .channels = 1,
0368     .buswidth = 8,
0369     .num_links = 2,
0370     .links = { SC8180X_SLAVE_LLCC,
0371            SC8180X_SLAVE_GEM_NOC_SNOC }
0372 };
0373 
0374 static struct qcom_icc_node mas_acm_sys_tcu = {
0375     .name = "mas_acm_sys_tcu",
0376     .id = SC8180X_MASTER_SYS_TCU,
0377     .channels = 1,
0378     .buswidth = 8,
0379     .num_links = 2,
0380     .links = { SC8180X_SLAVE_LLCC,
0381            SC8180X_SLAVE_GEM_NOC_SNOC }
0382 };
0383 
0384 static struct qcom_icc_node mas_qhm_gemnoc_cfg = {
0385     .name = "mas_qhm_gemnoc_cfg",
0386     .id = SC8180X_MASTER_GEM_NOC_CFG,
0387     .channels = 1,
0388     .buswidth = 4,
0389     .num_links = 3,
0390     .links = { SC8180X_SLAVE_SERVICE_GEM_NOC_1,
0391            SC8180X_SLAVE_SERVICE_GEM_NOC,
0392            SC8180X_SLAVE_MSS_PROC_MS_MPU_CFG }
0393 };
0394 
0395 static struct qcom_icc_node mas_qnm_cmpnoc = {
0396     .name = "mas_qnm_cmpnoc",
0397     .id = SC8180X_MASTER_COMPUTE_NOC,
0398     .channels = 2,
0399     .buswidth = 32,
0400     .num_links = 3,
0401     .links = { SC8180X_SLAVE_ECC,
0402            SC8180X_SLAVE_LLCC,
0403            SC8180X_SLAVE_GEM_NOC_SNOC }
0404 };
0405 
0406 static struct qcom_icc_node mas_qnm_gpu = {
0407     .name = "mas_qnm_gpu",
0408     .id = SC8180X_MASTER_GRAPHICS_3D,
0409     .channels = 4,
0410     .buswidth = 32,
0411     .num_links = 2,
0412     .links = { SC8180X_SLAVE_LLCC,
0413            SC8180X_SLAVE_GEM_NOC_SNOC }
0414 };
0415 
0416 static struct qcom_icc_node mas_qnm_mnoc_hf = {
0417     .name = "mas_qnm_mnoc_hf",
0418     .id = SC8180X_MASTER_MNOC_HF_MEM_NOC,
0419     .channels = 2,
0420     .buswidth = 32,
0421     .num_links = 1,
0422     .links = { SC8180X_SLAVE_LLCC }
0423 };
0424 
0425 static struct qcom_icc_node mas_qnm_mnoc_sf = {
0426     .name = "mas_qnm_mnoc_sf",
0427     .id = SC8180X_MASTER_MNOC_SF_MEM_NOC,
0428     .channels = 1,
0429     .buswidth = 32,
0430     .num_links = 2,
0431     .links = { SC8180X_SLAVE_LLCC,
0432            SC8180X_SLAVE_GEM_NOC_SNOC }
0433 };
0434 
0435 static struct qcom_icc_node mas_qnm_pcie = {
0436     .name = "mas_qnm_pcie",
0437     .id = SC8180X_MASTER_GEM_NOC_PCIE_SNOC,
0438     .channels = 1,
0439     .buswidth = 32,
0440     .num_links = 2,
0441     .links = { SC8180X_SLAVE_LLCC,
0442            SC8180X_SLAVE_GEM_NOC_SNOC }
0443 };
0444 
0445 static struct qcom_icc_node mas_qnm_snoc_gc = {
0446     .name = "mas_qnm_snoc_gc",
0447     .id = SC8180X_MASTER_SNOC_GC_MEM_NOC,
0448     .channels = 1,
0449     .buswidth = 8,
0450     .num_links = 1,
0451     .links = { SC8180X_SLAVE_LLCC }
0452 };
0453 
0454 static struct qcom_icc_node mas_qnm_snoc_sf = {
0455     .name = "mas_qnm_snoc_sf",
0456     .id = SC8180X_MASTER_SNOC_SF_MEM_NOC,
0457     .channels = 1,
0458     .buswidth = 32,
0459     .num_links = 1,
0460     .links = { SC8180X_SLAVE_LLCC }
0461 };
0462 
0463 static struct qcom_icc_node mas_qxm_ecc = {
0464     .name = "mas_qxm_ecc",
0465     .id = SC8180X_MASTER_ECC,
0466     .channels = 2,
0467     .buswidth = 32,
0468     .num_links = 1,
0469     .links = { SC8180X_SLAVE_LLCC }
0470 };
0471 
0472 static struct qcom_icc_node mas_ipa_core_master = {
0473     .name = "mas_ipa_core_master",
0474     .id = SC8180X_MASTER_IPA_CORE,
0475     .channels = 1,
0476     .buswidth = 8,
0477     .num_links = 1,
0478     .links = { SC8180X_SLAVE_IPA_CORE }
0479 };
0480 
0481 static struct qcom_icc_node mas_llcc_mc = {
0482     .name = "mas_llcc_mc",
0483     .id = SC8180X_MASTER_LLCC,
0484     .channels = 8,
0485     .buswidth = 4,
0486     .num_links = 1,
0487     .links = { SC8180X_SLAVE_EBI_CH0 }
0488 };
0489 
0490 static struct qcom_icc_node mas_qhm_mnoc_cfg = {
0491     .name = "mas_qhm_mnoc_cfg",
0492     .id = SC8180X_MASTER_CNOC_MNOC_CFG,
0493     .channels = 1,
0494     .buswidth = 4,
0495     .num_links = 1,
0496     .links = { SC8180X_SLAVE_SERVICE_MNOC }
0497 };
0498 
0499 static struct qcom_icc_node mas_qxm_camnoc_hf0 = {
0500     .name = "mas_qxm_camnoc_hf0",
0501     .id = SC8180X_MASTER_CAMNOC_HF0,
0502     .channels = 1,
0503     .buswidth = 32,
0504     .num_links = 1,
0505     .links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
0506 };
0507 
0508 static struct qcom_icc_node mas_qxm_camnoc_hf1 = {
0509     .name = "mas_qxm_camnoc_hf1",
0510     .id = SC8180X_MASTER_CAMNOC_HF1,
0511     .channels = 1,
0512     .buswidth = 32,
0513     .num_links = 1,
0514     .links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
0515 };
0516 
0517 static struct qcom_icc_node mas_qxm_camnoc_sf = {
0518     .name = "mas_qxm_camnoc_sf",
0519     .id = SC8180X_MASTER_CAMNOC_SF,
0520     .channels = 1,
0521     .buswidth = 32,
0522     .num_links = 1,
0523     .links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
0524 };
0525 
0526 static struct qcom_icc_node mas_qxm_mdp0 = {
0527     .name = "mas_qxm_mdp0",
0528     .id = SC8180X_MASTER_MDP_PORT0,
0529     .channels = 1,
0530     .buswidth = 32,
0531     .num_links = 1,
0532     .links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
0533 };
0534 
0535 static struct qcom_icc_node mas_qxm_mdp1 = {
0536     .name = "mas_qxm_mdp1",
0537     .id = SC8180X_MASTER_MDP_PORT1,
0538     .channels = 1,
0539     .buswidth = 32,
0540     .num_links = 1,
0541     .links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
0542 };
0543 
0544 static struct qcom_icc_node mas_qxm_rot = {
0545     .name = "mas_qxm_rot",
0546     .id = SC8180X_MASTER_ROTATOR,
0547     .channels = 1,
0548     .buswidth = 32,
0549     .num_links = 1,
0550     .links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
0551 };
0552 
0553 static struct qcom_icc_node mas_qxm_venus0 = {
0554     .name = "mas_qxm_venus0",
0555     .id = SC8180X_MASTER_VIDEO_P0,
0556     .channels = 1,
0557     .buswidth = 32,
0558     .num_links = 1,
0559     .links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
0560 };
0561 
0562 static struct qcom_icc_node mas_qxm_venus1 = {
0563     .name = "mas_qxm_venus1",
0564     .id = SC8180X_MASTER_VIDEO_P1,
0565     .channels = 1,
0566     .buswidth = 32,
0567     .num_links = 1,
0568     .links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
0569 };
0570 
0571 static struct qcom_icc_node mas_qxm_venus_arm9 = {
0572     .name = "mas_qxm_venus_arm9",
0573     .id = SC8180X_MASTER_VIDEO_PROC,
0574     .channels = 1,
0575     .buswidth = 8,
0576     .num_links = 1,
0577     .links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
0578 };
0579 
0580 static struct qcom_icc_node mas_qhm_snoc_cfg = {
0581     .name = "mas_qhm_snoc_cfg",
0582     .id = SC8180X_MASTER_SNOC_CFG,
0583     .channels = 1,
0584     .buswidth = 4,
0585     .num_links = 1,
0586     .links = { SC8180X_SLAVE_SERVICE_SNOC }
0587 };
0588 
0589 static struct qcom_icc_node mas_qnm_aggre1_noc = {
0590     .name = "mas_qnm_aggre1_noc",
0591     .id = SC8180X_A1NOC_SNOC_MAS,
0592     .channels = 1,
0593     .buswidth = 32,
0594     .num_links = 6,
0595     .links = { SC8180X_SLAVE_SNOC_GEM_NOC_SF,
0596            SC8180X_SLAVE_PIMEM,
0597            SC8180X_SLAVE_OCIMEM,
0598            SC8180X_SLAVE_APPSS,
0599            SC8180X_SNOC_CNOC_SLV,
0600            SC8180X_SLAVE_QDSS_STM }
0601 };
0602 
0603 static struct qcom_icc_node mas_qnm_aggre2_noc = {
0604     .name = "mas_qnm_aggre2_noc",
0605     .id = SC8180X_A2NOC_SNOC_MAS,
0606     .channels = 1,
0607     .buswidth = 16,
0608     .num_links = 11,
0609     .links = { SC8180X_SLAVE_SNOC_GEM_NOC_SF,
0610            SC8180X_SLAVE_PIMEM,
0611            SC8180X_SLAVE_PCIE_3,
0612            SC8180X_SLAVE_OCIMEM,
0613            SC8180X_SLAVE_APPSS,
0614            SC8180X_SLAVE_PCIE_2,
0615            SC8180X_SNOC_CNOC_SLV,
0616            SC8180X_SLAVE_PCIE_0,
0617            SC8180X_SLAVE_PCIE_1,
0618            SC8180X_SLAVE_TCU,
0619            SC8180X_SLAVE_QDSS_STM }
0620 };
0621 
0622 static struct qcom_icc_node mas_qnm_gemnoc = {
0623     .name = "mas_qnm_gemnoc",
0624     .id = SC8180X_MASTER_GEM_NOC_SNOC,
0625     .channels = 1,
0626     .buswidth = 8,
0627     .num_links = 6,
0628     .links = { SC8180X_SLAVE_PIMEM,
0629            SC8180X_SLAVE_OCIMEM,
0630            SC8180X_SLAVE_APPSS,
0631            SC8180X_SNOC_CNOC_SLV,
0632            SC8180X_SLAVE_TCU,
0633            SC8180X_SLAVE_QDSS_STM }
0634 };
0635 
0636 static struct qcom_icc_node mas_qxm_pimem = {
0637     .name = "mas_qxm_pimem",
0638     .id = SC8180X_MASTER_PIMEM,
0639     .channels = 1,
0640     .buswidth = 8,
0641     .num_links = 2,
0642     .links = { SC8180X_SLAVE_SNOC_GEM_NOC_GC,
0643            SC8180X_SLAVE_OCIMEM }
0644 };
0645 
0646 static struct qcom_icc_node mas_xm_gic = {
0647     .name = "mas_xm_gic",
0648     .id = SC8180X_MASTER_GIC,
0649     .channels = 1,
0650     .buswidth = 8,
0651     .num_links = 2,
0652     .links = { SC8180X_SLAVE_SNOC_GEM_NOC_GC,
0653            SC8180X_SLAVE_OCIMEM }
0654 };
0655 
0656 static struct qcom_icc_node mas_qup_core_0 = {
0657     .name = "mas_qup_core_0",
0658     .id = SC8180X_MASTER_QUP_CORE_0,
0659     .channels = 1,
0660     .buswidth = 4,
0661     .num_links = 1,
0662     .links = { SC8180X_SLAVE_QUP_CORE_0 }
0663 };
0664 
0665 static struct qcom_icc_node mas_qup_core_1 = {
0666     .name = "mas_qup_core_1",
0667     .id = SC8180X_MASTER_QUP_CORE_1,
0668     .channels = 1,
0669     .buswidth = 4,
0670     .num_links = 1,
0671     .links = { SC8180X_SLAVE_QUP_CORE_1 }
0672 };
0673 
0674 static struct qcom_icc_node mas_qup_core_2 = {
0675     .name = "mas_qup_core_2",
0676     .id = SC8180X_MASTER_QUP_CORE_2,
0677     .channels = 1,
0678     .buswidth = 4,
0679     .num_links = 1,
0680     .links = { SC8180X_SLAVE_QUP_CORE_2 }
0681 };
0682 
0683 static struct qcom_icc_node slv_qns_a1noc_snoc = {
0684     .name = "slv_qns_a1noc_snoc",
0685     .id = SC8180X_A1NOC_SNOC_SLV,
0686     .channels = 1,
0687     .buswidth = 32,
0688     .num_links = 1,
0689     .links = { SC8180X_A1NOC_SNOC_MAS }
0690 };
0691 
0692 static struct qcom_icc_node slv_srvc_aggre1_noc = {
0693     .name = "slv_srvc_aggre1_noc",
0694     .id = SC8180X_SLAVE_SERVICE_A1NOC,
0695     .channels = 1,
0696     .buswidth = 4
0697 };
0698 
0699 static struct qcom_icc_node slv_qns_a2noc_snoc = {
0700     .name = "slv_qns_a2noc_snoc",
0701     .id = SC8180X_A2NOC_SNOC_SLV,
0702     .channels = 1,
0703     .buswidth = 16,
0704     .num_links = 1,
0705     .links = { SC8180X_A2NOC_SNOC_MAS }
0706 };
0707 
0708 static struct qcom_icc_node slv_qns_pcie_mem_noc = {
0709     .name = "slv_qns_pcie_mem_noc",
0710     .id = SC8180X_SLAVE_ANOC_PCIE_GEM_NOC,
0711     .channels = 1,
0712     .buswidth = 32,
0713     .num_links = 1,
0714     .links = { SC8180X_MASTER_GEM_NOC_PCIE_SNOC }
0715 };
0716 
0717 static struct qcom_icc_node slv_srvc_aggre2_noc = {
0718     .name = "slv_srvc_aggre2_noc",
0719     .id = SC8180X_SLAVE_SERVICE_A2NOC,
0720     .channels = 1,
0721     .buswidth = 4
0722 };
0723 
0724 static struct qcom_icc_node slv_qns_camnoc_uncomp = {
0725     .name = "slv_qns_camnoc_uncomp",
0726     .id = SC8180X_SLAVE_CAMNOC_UNCOMP,
0727     .channels = 1,
0728     .buswidth = 32
0729 };
0730 
0731 static struct qcom_icc_node slv_qns_cdsp_mem_noc = {
0732     .name = "slv_qns_cdsp_mem_noc",
0733     .id = SC8180X_SLAVE_CDSP_MEM_NOC,
0734     .channels = 2,
0735     .buswidth = 32,
0736     .num_links = 1,
0737     .links = { SC8180X_MASTER_COMPUTE_NOC }
0738 };
0739 
0740 static struct qcom_icc_node slv_qhs_a1_noc_cfg = {
0741     .name = "slv_qhs_a1_noc_cfg",
0742     .id = SC8180X_SLAVE_A1NOC_CFG,
0743     .channels = 1,
0744     .buswidth = 4,
0745     .num_links = 1,
0746     .links = { SC8180X_MASTER_A1NOC_CFG }
0747 };
0748 
0749 static struct qcom_icc_node slv_qhs_a2_noc_cfg = {
0750     .name = "slv_qhs_a2_noc_cfg",
0751     .id = SC8180X_SLAVE_A2NOC_CFG,
0752     .channels = 1,
0753     .buswidth = 4,
0754     .num_links = 1,
0755     .links = { SC8180X_MASTER_A2NOC_CFG }
0756 };
0757 
0758 static struct qcom_icc_node slv_qhs_ahb2phy_refgen_center = {
0759     .name = "slv_qhs_ahb2phy_refgen_center",
0760     .id = SC8180X_SLAVE_AHB2PHY_CENTER,
0761     .channels = 1,
0762     .buswidth = 4
0763 };
0764 
0765 static struct qcom_icc_node slv_qhs_ahb2phy_refgen_east = {
0766     .name = "slv_qhs_ahb2phy_refgen_east",
0767     .id = SC8180X_SLAVE_AHB2PHY_EAST,
0768     .channels = 1,
0769     .buswidth = 4
0770 };
0771 
0772 static struct qcom_icc_node slv_qhs_ahb2phy_refgen_west = {
0773     .name = "slv_qhs_ahb2phy_refgen_west",
0774     .id = SC8180X_SLAVE_AHB2PHY_WEST,
0775     .channels = 1,
0776     .buswidth = 4
0777 };
0778 
0779 static struct qcom_icc_node slv_qhs_ahb2phy_south = {
0780     .name = "slv_qhs_ahb2phy_south",
0781     .id = SC8180X_SLAVE_AHB2PHY_SOUTH,
0782     .channels = 1,
0783     .buswidth = 4
0784 };
0785 
0786 static struct qcom_icc_node slv_qhs_aop = {
0787     .name = "slv_qhs_aop",
0788     .id = SC8180X_SLAVE_AOP,
0789     .channels = 1,
0790     .buswidth = 4
0791 };
0792 
0793 static struct qcom_icc_node slv_qhs_aoss = {
0794     .name = "slv_qhs_aoss",
0795     .id = SC8180X_SLAVE_AOSS,
0796     .channels = 1,
0797     .buswidth = 4
0798 };
0799 
0800 static struct qcom_icc_node slv_qhs_camera_cfg = {
0801     .name = "slv_qhs_camera_cfg",
0802     .id = SC8180X_SLAVE_CAMERA_CFG,
0803     .channels = 1,
0804     .buswidth = 4
0805 };
0806 
0807 static struct qcom_icc_node slv_qhs_clk_ctl = {
0808     .name = "slv_qhs_clk_ctl",
0809     .id = SC8180X_SLAVE_CLK_CTL,
0810     .channels = 1,
0811     .buswidth = 4
0812 };
0813 
0814 static struct qcom_icc_node slv_qhs_compute_dsp = {
0815     .name = "slv_qhs_compute_dsp",
0816     .id = SC8180X_SLAVE_CDSP_CFG,
0817     .channels = 1,
0818     .buswidth = 4
0819 };
0820 
0821 static struct qcom_icc_node slv_qhs_cpr_cx = {
0822     .name = "slv_qhs_cpr_cx",
0823     .id = SC8180X_SLAVE_RBCPR_CX_CFG,
0824     .channels = 1,
0825     .buswidth = 4
0826 };
0827 
0828 static struct qcom_icc_node slv_qhs_cpr_mmcx = {
0829     .name = "slv_qhs_cpr_mmcx",
0830     .id = SC8180X_SLAVE_RBCPR_MMCX_CFG,
0831     .channels = 1,
0832     .buswidth = 4
0833 };
0834 
0835 static struct qcom_icc_node slv_qhs_cpr_mx = {
0836     .name = "slv_qhs_cpr_mx",
0837     .id = SC8180X_SLAVE_RBCPR_MX_CFG,
0838     .channels = 1,
0839     .buswidth = 4
0840 };
0841 
0842 static struct qcom_icc_node slv_qhs_crypto0_cfg = {
0843     .name = "slv_qhs_crypto0_cfg",
0844     .id = SC8180X_SLAVE_CRYPTO_0_CFG,
0845     .channels = 1,
0846     .buswidth = 4
0847 };
0848 
0849 static struct qcom_icc_node slv_qhs_ddrss_cfg = {
0850     .name = "slv_qhs_ddrss_cfg",
0851     .id = SC8180X_SLAVE_CNOC_DDRSS,
0852     .channels = 1,
0853     .buswidth = 4,
0854     .num_links = 1,
0855     .links = { SC8180X_MASTER_CNOC_DC_NOC }
0856 };
0857 
0858 static struct qcom_icc_node slv_qhs_display_cfg = {
0859     .name = "slv_qhs_display_cfg",
0860     .id = SC8180X_SLAVE_DISPLAY_CFG,
0861     .channels = 1,
0862     .buswidth = 4
0863 };
0864 
0865 static struct qcom_icc_node slv_qhs_emac_cfg = {
0866     .name = "slv_qhs_emac_cfg",
0867     .id = SC8180X_SLAVE_EMAC_CFG,
0868     .channels = 1,
0869     .buswidth = 4
0870 };
0871 
0872 static struct qcom_icc_node slv_qhs_glm = {
0873     .name = "slv_qhs_glm",
0874     .id = SC8180X_SLAVE_GLM,
0875     .channels = 1,
0876     .buswidth = 4
0877 };
0878 
0879 static struct qcom_icc_node slv_qhs_gpuss_cfg = {
0880     .name = "slv_qhs_gpuss_cfg",
0881     .id = SC8180X_SLAVE_GRAPHICS_3D_CFG,
0882     .channels = 1,
0883     .buswidth = 8
0884 };
0885 
0886 static struct qcom_icc_node slv_qhs_imem_cfg = {
0887     .name = "slv_qhs_imem_cfg",
0888     .id = SC8180X_SLAVE_IMEM_CFG,
0889     .channels = 1,
0890     .buswidth = 4
0891 };
0892 
0893 static struct qcom_icc_node slv_qhs_ipa = {
0894     .name = "slv_qhs_ipa",
0895     .id = SC8180X_SLAVE_IPA_CFG,
0896     .channels = 1,
0897     .buswidth = 4
0898 };
0899 
0900 static struct qcom_icc_node slv_qhs_mnoc_cfg = {
0901     .name = "slv_qhs_mnoc_cfg",
0902     .id = SC8180X_SLAVE_CNOC_MNOC_CFG,
0903     .channels = 1,
0904     .buswidth = 4,
0905     .num_links = 1,
0906     .links = { SC8180X_MASTER_CNOC_MNOC_CFG }
0907 };
0908 
0909 static struct qcom_icc_node slv_qhs_npu_cfg = {
0910     .name = "slv_qhs_npu_cfg",
0911     .id = SC8180X_SLAVE_NPU_CFG,
0912     .channels = 1,
0913     .buswidth = 4
0914 };
0915 
0916 static struct qcom_icc_node slv_qhs_pcie0_cfg = {
0917     .name = "slv_qhs_pcie0_cfg",
0918     .id = SC8180X_SLAVE_PCIE_0_CFG,
0919     .channels = 1,
0920     .buswidth = 4
0921 };
0922 
0923 static struct qcom_icc_node slv_qhs_pcie1_cfg = {
0924     .name = "slv_qhs_pcie1_cfg",
0925     .id = SC8180X_SLAVE_PCIE_1_CFG,
0926     .channels = 1,
0927     .buswidth = 4
0928 };
0929 
0930 static struct qcom_icc_node slv_qhs_pcie2_cfg = {
0931     .name = "slv_qhs_pcie2_cfg",
0932     .id = SC8180X_SLAVE_PCIE_2_CFG,
0933     .channels = 1,
0934     .buswidth = 4
0935 };
0936 
0937 static struct qcom_icc_node slv_qhs_pcie3_cfg = {
0938     .name = "slv_qhs_pcie3_cfg",
0939     .id = SC8180X_SLAVE_PCIE_3_CFG,
0940     .channels = 1,
0941     .buswidth = 4
0942 };
0943 
0944 static struct qcom_icc_node slv_qhs_pdm = {
0945     .name = "slv_qhs_pdm",
0946     .id = SC8180X_SLAVE_PDM,
0947     .channels = 1,
0948     .buswidth = 4
0949 };
0950 
0951 static struct qcom_icc_node slv_qhs_pimem_cfg = {
0952     .name = "slv_qhs_pimem_cfg",
0953     .id = SC8180X_SLAVE_PIMEM_CFG,
0954     .channels = 1,
0955     .buswidth = 4
0956 };
0957 
0958 static struct qcom_icc_node slv_qhs_prng = {
0959     .name = "slv_qhs_prng",
0960     .id = SC8180X_SLAVE_PRNG,
0961     .channels = 1,
0962     .buswidth = 4
0963 };
0964 
0965 static struct qcom_icc_node slv_qhs_qdss_cfg = {
0966     .name = "slv_qhs_qdss_cfg",
0967     .id = SC8180X_SLAVE_QDSS_CFG,
0968     .channels = 1,
0969     .buswidth = 4
0970 };
0971 
0972 static struct qcom_icc_node slv_qhs_qspi_0 = {
0973     .name = "slv_qhs_qspi_0",
0974     .id = SC8180X_SLAVE_QSPI_0,
0975     .channels = 1,
0976     .buswidth = 4
0977 };
0978 
0979 static struct qcom_icc_node slv_qhs_qspi_1 = {
0980     .name = "slv_qhs_qspi_1",
0981     .id = SC8180X_SLAVE_QSPI_1,
0982     .channels = 1,
0983     .buswidth = 4
0984 };
0985 
0986 static struct qcom_icc_node slv_qhs_qupv3_east0 = {
0987     .name = "slv_qhs_qupv3_east0",
0988     .id = SC8180X_SLAVE_QUP_1,
0989     .channels = 1,
0990     .buswidth = 4
0991 };
0992 
0993 static struct qcom_icc_node slv_qhs_qupv3_east1 = {
0994     .name = "slv_qhs_qupv3_east1",
0995     .id = SC8180X_SLAVE_QUP_2,
0996     .channels = 1,
0997     .buswidth = 4
0998 };
0999 
1000 static struct qcom_icc_node slv_qhs_qupv3_west = {
1001     .name = "slv_qhs_qupv3_west",
1002     .id = SC8180X_SLAVE_QUP_0,
1003     .channels = 1,
1004     .buswidth = 4
1005 };
1006 
1007 static struct qcom_icc_node slv_qhs_sdc2 = {
1008     .name = "slv_qhs_sdc2",
1009     .id = SC8180X_SLAVE_SDCC_2,
1010     .channels = 1,
1011     .buswidth = 4
1012 };
1013 
1014 static struct qcom_icc_node slv_qhs_sdc4 = {
1015     .name = "slv_qhs_sdc4",
1016     .id = SC8180X_SLAVE_SDCC_4,
1017     .channels = 1,
1018     .buswidth = 4
1019 };
1020 
1021 static struct qcom_icc_node slv_qhs_security = {
1022     .name = "slv_qhs_security",
1023     .id = SC8180X_SLAVE_SECURITY,
1024     .channels = 1,
1025     .buswidth = 4
1026 };
1027 
1028 static struct qcom_icc_node slv_qhs_snoc_cfg = {
1029     .name = "slv_qhs_snoc_cfg",
1030     .id = SC8180X_SLAVE_SNOC_CFG,
1031     .channels = 1,
1032     .buswidth = 4,
1033     .num_links = 1,
1034     .links = { SC8180X_MASTER_SNOC_CFG }
1035 };
1036 
1037 static struct qcom_icc_node slv_qhs_spss_cfg = {
1038     .name = "slv_qhs_spss_cfg",
1039     .id = SC8180X_SLAVE_SPSS_CFG,
1040     .channels = 1,
1041     .buswidth = 4
1042 };
1043 
1044 static struct qcom_icc_node slv_qhs_tcsr = {
1045     .name = "slv_qhs_tcsr",
1046     .id = SC8180X_SLAVE_TCSR,
1047     .channels = 1,
1048     .buswidth = 4
1049 };
1050 
1051 static struct qcom_icc_node slv_qhs_tlmm_east = {
1052     .name = "slv_qhs_tlmm_east",
1053     .id = SC8180X_SLAVE_TLMM_EAST,
1054     .channels = 1,
1055     .buswidth = 4
1056 };
1057 
1058 static struct qcom_icc_node slv_qhs_tlmm_south = {
1059     .name = "slv_qhs_tlmm_south",
1060     .id = SC8180X_SLAVE_TLMM_SOUTH,
1061     .channels = 1,
1062     .buswidth = 4
1063 };
1064 
1065 static struct qcom_icc_node slv_qhs_tlmm_west = {
1066     .name = "slv_qhs_tlmm_west",
1067     .id = SC8180X_SLAVE_TLMM_WEST,
1068     .channels = 1,
1069     .buswidth = 4
1070 };
1071 
1072 static struct qcom_icc_node slv_qhs_tsif = {
1073     .name = "slv_qhs_tsif",
1074     .id = SC8180X_SLAVE_TSIF,
1075     .channels = 1,
1076     .buswidth = 4
1077 };
1078 
1079 static struct qcom_icc_node slv_qhs_ufs_card_cfg = {
1080     .name = "slv_qhs_ufs_card_cfg",
1081     .id = SC8180X_SLAVE_UFS_CARD_CFG,
1082     .channels = 1,
1083     .buswidth = 4
1084 };
1085 
1086 static struct qcom_icc_node slv_qhs_ufs_mem0_cfg = {
1087     .name = "slv_qhs_ufs_mem0_cfg",
1088     .id = SC8180X_SLAVE_UFS_MEM_0_CFG,
1089     .channels = 1,
1090     .buswidth = 4
1091 };
1092 
1093 static struct qcom_icc_node slv_qhs_ufs_mem1_cfg = {
1094     .name = "slv_qhs_ufs_mem1_cfg",
1095     .id = SC8180X_SLAVE_UFS_MEM_1_CFG,
1096     .channels = 1,
1097     .buswidth = 4
1098 };
1099 
1100 static struct qcom_icc_node slv_qhs_usb3_0 = {
1101     .name = "slv_qhs_usb3_0",
1102     .id = SC8180X_SLAVE_USB3,
1103     .channels = 1,
1104     .buswidth = 4
1105 };
1106 
1107 static struct qcom_icc_node slv_qhs_usb3_1 = {
1108     .name = "slv_qhs_usb3_1",
1109     .id = SC8180X_SLAVE_USB3_1,
1110     .channels = 1,
1111     .buswidth = 4
1112 };
1113 
1114 static struct qcom_icc_node slv_qhs_usb3_2 = {
1115     .name = "slv_qhs_usb3_2",
1116     .id = SC8180X_SLAVE_USB3_2,
1117     .channels = 1,
1118     .buswidth = 4
1119 };
1120 
1121 static struct qcom_icc_node slv_qhs_venus_cfg = {
1122     .name = "slv_qhs_venus_cfg",
1123     .id = SC8180X_SLAVE_VENUS_CFG,
1124     .channels = 1,
1125     .buswidth = 4
1126 };
1127 
1128 static struct qcom_icc_node slv_qhs_vsense_ctrl_cfg = {
1129     .name = "slv_qhs_vsense_ctrl_cfg",
1130     .id = SC8180X_SLAVE_VSENSE_CTRL_CFG,
1131     .channels = 1,
1132     .buswidth = 4
1133 };
1134 
1135 static struct qcom_icc_node slv_srvc_cnoc = {
1136     .name = "slv_srvc_cnoc",
1137     .id = SC8180X_SLAVE_SERVICE_CNOC,
1138     .channels = 1,
1139     .buswidth = 4
1140 };
1141 
1142 static struct qcom_icc_node slv_qhs_gemnoc = {
1143     .name = "slv_qhs_gemnoc",
1144     .id = SC8180X_SLAVE_GEM_NOC_CFG,
1145     .channels = 1,
1146     .buswidth = 4,
1147     .num_links = 1,
1148     .links = { SC8180X_MASTER_GEM_NOC_CFG }
1149 };
1150 
1151 static struct qcom_icc_node slv_qhs_llcc = {
1152     .name = "slv_qhs_llcc",
1153     .id = SC8180X_SLAVE_LLCC_CFG,
1154     .channels = 1,
1155     .buswidth = 4
1156 };
1157 
1158 static struct qcom_icc_node slv_qhs_mdsp_ms_mpu_cfg = {
1159     .name = "slv_qhs_mdsp_ms_mpu_cfg",
1160     .id = SC8180X_SLAVE_MSS_PROC_MS_MPU_CFG,
1161     .channels = 1,
1162     .buswidth = 4
1163 };
1164 
1165 static struct qcom_icc_node slv_qns_ecc = {
1166     .name = "slv_qns_ecc",
1167     .id = SC8180X_SLAVE_ECC,
1168     .channels = 1,
1169     .buswidth = 32
1170 };
1171 
1172 static struct qcom_icc_node slv_qns_gem_noc_snoc = {
1173     .name = "slv_qns_gem_noc_snoc",
1174     .id = SC8180X_SLAVE_GEM_NOC_SNOC,
1175     .channels = 1,
1176     .buswidth = 8,
1177     .num_links = 1,
1178     .links = { SC8180X_MASTER_GEM_NOC_SNOC }
1179 };
1180 
1181 static struct qcom_icc_node slv_qns_llcc = {
1182     .name = "slv_qns_llcc",
1183     .id = SC8180X_SLAVE_LLCC,
1184     .channels = 8,
1185     .buswidth = 16,
1186     .num_links = 1,
1187     .links = { SC8180X_MASTER_LLCC }
1188 };
1189 
1190 static struct qcom_icc_node slv_srvc_gemnoc = {
1191     .name = "slv_srvc_gemnoc",
1192     .id = SC8180X_SLAVE_SERVICE_GEM_NOC,
1193     .channels = 1,
1194     .buswidth = 4
1195 };
1196 
1197 static struct qcom_icc_node slv_srvc_gemnoc1 = {
1198     .name = "slv_srvc_gemnoc1",
1199     .id = SC8180X_SLAVE_SERVICE_GEM_NOC_1,
1200     .channels = 1,
1201     .buswidth = 4
1202 };
1203 
1204 static struct qcom_icc_node slv_ipa_core_slave = {
1205     .name = "slv_ipa_core_slave",
1206     .id = SC8180X_SLAVE_IPA_CORE,
1207     .channels = 1,
1208     .buswidth = 8
1209 };
1210 
1211 static struct qcom_icc_node slv_ebi = {
1212     .name = "slv_ebi",
1213     .id = SC8180X_SLAVE_EBI_CH0,
1214     .channels = 8,
1215     .buswidth = 4
1216 };
1217 
1218 static struct qcom_icc_node slv_qns2_mem_noc = {
1219     .name = "slv_qns2_mem_noc",
1220     .id = SC8180X_SLAVE_MNOC_SF_MEM_NOC,
1221     .channels = 1,
1222     .buswidth = 32,
1223     .num_links = 1,
1224     .links = { SC8180X_MASTER_MNOC_SF_MEM_NOC }
1225 };
1226 
1227 static struct qcom_icc_node slv_qns_mem_noc_hf = {
1228     .name = "slv_qns_mem_noc_hf",
1229     .id = SC8180X_SLAVE_MNOC_HF_MEM_NOC,
1230     .channels = 2,
1231     .buswidth = 32,
1232     .num_links = 1,
1233     .links = { SC8180X_MASTER_MNOC_HF_MEM_NOC }
1234 };
1235 
1236 static struct qcom_icc_node slv_srvc_mnoc = {
1237     .name = "slv_srvc_mnoc",
1238     .id = SC8180X_SLAVE_SERVICE_MNOC,
1239     .channels = 1,
1240     .buswidth = 4
1241 };
1242 
1243 static struct qcom_icc_node slv_qhs_apss = {
1244     .name = "slv_qhs_apss",
1245     .id = SC8180X_SLAVE_APPSS,
1246     .channels = 1,
1247     .buswidth = 8
1248 };
1249 
1250 static struct qcom_icc_node slv_qns_cnoc = {
1251     .name = "slv_qns_cnoc",
1252     .id = SC8180X_SNOC_CNOC_SLV,
1253     .channels = 1,
1254     .buswidth = 8,
1255     .num_links = 1,
1256     .links = { SC8180X_SNOC_CNOC_MAS }
1257 };
1258 
1259 static struct qcom_icc_node slv_qns_gemnoc_gc = {
1260     .name = "slv_qns_gemnoc_gc",
1261     .id = SC8180X_SLAVE_SNOC_GEM_NOC_GC,
1262     .channels = 1,
1263     .buswidth = 8,
1264     .num_links = 1,
1265     .links = { SC8180X_MASTER_SNOC_GC_MEM_NOC }
1266 };
1267 
1268 static struct qcom_icc_node slv_qns_gemnoc_sf = {
1269     .name = "slv_qns_gemnoc_sf",
1270     .id = SC8180X_SLAVE_SNOC_GEM_NOC_SF,
1271     .channels = 1,
1272     .buswidth = 32,
1273     .num_links = 1,
1274     .links = { SC8180X_MASTER_SNOC_SF_MEM_NOC }
1275 };
1276 
1277 static struct qcom_icc_node slv_qxs_imem = {
1278     .name = "slv_qxs_imem",
1279     .id = SC8180X_SLAVE_OCIMEM,
1280     .channels = 1,
1281     .buswidth = 8
1282 };
1283 
1284 static struct qcom_icc_node slv_qxs_pimem = {
1285     .name = "slv_qxs_pimem",
1286     .id = SC8180X_SLAVE_PIMEM,
1287     .channels = 1,
1288     .buswidth = 8
1289 };
1290 
1291 static struct qcom_icc_node slv_srvc_snoc = {
1292     .name = "slv_srvc_snoc",
1293     .id = SC8180X_SLAVE_SERVICE_SNOC,
1294     .channels = 1,
1295     .buswidth = 4
1296 };
1297 
1298 static struct qcom_icc_node slv_xs_pcie_0 = {
1299     .name = "slv_xs_pcie_0",
1300     .id = SC8180X_SLAVE_PCIE_0,
1301     .channels = 1,
1302     .buswidth = 8
1303 };
1304 
1305 static struct qcom_icc_node slv_xs_pcie_1 = {
1306     .name = "slv_xs_pcie_1",
1307     .id = SC8180X_SLAVE_PCIE_1,
1308     .channels = 1,
1309     .buswidth = 8
1310 };
1311 
1312 static struct qcom_icc_node slv_xs_pcie_2 = {
1313     .name = "slv_xs_pcie_2",
1314     .id = SC8180X_SLAVE_PCIE_2,
1315     .channels = 1,
1316     .buswidth = 8
1317 };
1318 
1319 static struct qcom_icc_node slv_xs_pcie_3 = {
1320     .name = "slv_xs_pcie_3",
1321     .id = SC8180X_SLAVE_PCIE_3,
1322     .channels = 1,
1323     .buswidth = 8
1324 };
1325 
1326 static struct qcom_icc_node slv_xs_qdss_stm = {
1327     .name = "slv_xs_qdss_stm",
1328     .id = SC8180X_SLAVE_QDSS_STM,
1329     .channels = 1,
1330     .buswidth = 4
1331 };
1332 
1333 static struct qcom_icc_node slv_xs_sys_tcu_cfg = {
1334     .name = "slv_xs_sys_tcu_cfg",
1335     .id = SC8180X_SLAVE_TCU,
1336     .channels = 1,
1337     .buswidth = 8
1338 };
1339 
1340 static struct qcom_icc_node slv_qup_core_0 = {
1341     .name = "slv_qup_core_0",
1342     .id = SC8180X_SLAVE_QUP_CORE_0,
1343     .channels = 1,
1344     .buswidth = 4
1345 };
1346 
1347 static struct qcom_icc_node slv_qup_core_1 = {
1348     .name = "slv_qup_core_1",
1349     .id = SC8180X_SLAVE_QUP_CORE_1,
1350     .channels = 1,
1351     .buswidth = 4
1352 };
1353 
1354 static struct qcom_icc_node slv_qup_core_2 = {
1355     .name = "slv_qup_core_2",
1356     .id = SC8180X_SLAVE_QUP_CORE_2,
1357     .channels = 1,
1358     .buswidth = 4
1359 };
1360 
1361 static struct qcom_icc_bcm bcm_acv = {
1362     .name = "ACV",
1363     .num_nodes = 1,
1364     .nodes = { &slv_ebi }
1365 };
1366 
1367 static struct qcom_icc_bcm bcm_mc0 = {
1368     .name = "MC0",
1369     .keepalive = true,
1370     .num_nodes = 1,
1371     .nodes = { &slv_ebi }
1372 };
1373 
1374 static struct qcom_icc_bcm bcm_sh0 = {
1375     .name = "SH0",
1376     .keepalive = true,
1377     .num_nodes = 1,
1378     .nodes = { &slv_qns_llcc }
1379 };
1380 
1381 static struct qcom_icc_bcm bcm_mm0 = {
1382     .name = "MM0",
1383     .num_nodes = 1,
1384     .nodes = { &slv_qns_mem_noc_hf }
1385 };
1386 
1387 static struct qcom_icc_bcm bcm_co0 = {
1388     .name = "CO0",
1389     .num_nodes = 1,
1390     .nodes = { &slv_qns_cdsp_mem_noc }
1391 };
1392 
1393 static struct qcom_icc_bcm bcm_ce0 = {
1394     .name = "CE0",
1395     .num_nodes = 1,
1396     .nodes = { &mas_qxm_crypto }
1397 };
1398 
1399 static struct qcom_icc_bcm bcm_cn0 = {
1400     .name = "CN0",
1401     .keepalive = true,
1402     .num_nodes = 57,
1403     .nodes = { &mas_qnm_snoc,
1404            &slv_qhs_a1_noc_cfg,
1405            &slv_qhs_a2_noc_cfg,
1406            &slv_qhs_ahb2phy_refgen_center,
1407            &slv_qhs_ahb2phy_refgen_east,
1408            &slv_qhs_ahb2phy_refgen_west,
1409            &slv_qhs_ahb2phy_south,
1410            &slv_qhs_aop,
1411            &slv_qhs_aoss,
1412            &slv_qhs_camera_cfg,
1413            &slv_qhs_clk_ctl,
1414            &slv_qhs_compute_dsp,
1415            &slv_qhs_cpr_cx,
1416            &slv_qhs_cpr_mmcx,
1417            &slv_qhs_cpr_mx,
1418            &slv_qhs_crypto0_cfg,
1419            &slv_qhs_ddrss_cfg,
1420            &slv_qhs_display_cfg,
1421            &slv_qhs_emac_cfg,
1422            &slv_qhs_glm,
1423            &slv_qhs_gpuss_cfg,
1424            &slv_qhs_imem_cfg,
1425            &slv_qhs_ipa,
1426            &slv_qhs_mnoc_cfg,
1427            &slv_qhs_npu_cfg,
1428            &slv_qhs_pcie0_cfg,
1429            &slv_qhs_pcie1_cfg,
1430            &slv_qhs_pcie2_cfg,
1431            &slv_qhs_pcie3_cfg,
1432            &slv_qhs_pdm,
1433            &slv_qhs_pimem_cfg,
1434            &slv_qhs_prng,
1435            &slv_qhs_qdss_cfg,
1436            &slv_qhs_qspi_0,
1437            &slv_qhs_qspi_1,
1438            &slv_qhs_qupv3_east0,
1439            &slv_qhs_qupv3_east1,
1440            &slv_qhs_qupv3_west,
1441            &slv_qhs_sdc2,
1442            &slv_qhs_sdc4,
1443            &slv_qhs_security,
1444            &slv_qhs_snoc_cfg,
1445            &slv_qhs_spss_cfg,
1446            &slv_qhs_tcsr,
1447            &slv_qhs_tlmm_east,
1448            &slv_qhs_tlmm_south,
1449            &slv_qhs_tlmm_west,
1450            &slv_qhs_tsif,
1451            &slv_qhs_ufs_card_cfg,
1452            &slv_qhs_ufs_mem0_cfg,
1453            &slv_qhs_ufs_mem1_cfg,
1454            &slv_qhs_usb3_0,
1455            &slv_qhs_usb3_1,
1456            &slv_qhs_usb3_2,
1457            &slv_qhs_venus_cfg,
1458            &slv_qhs_vsense_ctrl_cfg,
1459            &slv_srvc_cnoc }
1460 };
1461 
1462 static struct qcom_icc_bcm bcm_mm1 = {
1463     .name = "MM1",
1464     .num_nodes = 7,
1465     .nodes = { &mas_qxm_camnoc_hf0_uncomp,
1466            &mas_qxm_camnoc_hf1_uncomp,
1467            &mas_qxm_camnoc_sf_uncomp,
1468            &mas_qxm_camnoc_hf0,
1469            &mas_qxm_camnoc_hf1,
1470            &mas_qxm_mdp0,
1471            &mas_qxm_mdp1 }
1472 };
1473 
1474 static struct qcom_icc_bcm bcm_qup0 = {
1475     .name = "QUP0",
1476     .num_nodes = 3,
1477     .nodes = { &mas_qup_core_0,
1478            &mas_qup_core_1,
1479            &mas_qup_core_2 }
1480 };
1481 
1482 static struct qcom_icc_bcm bcm_sh2 = {
1483     .name = "SH2",
1484     .num_nodes = 1,
1485     .nodes = { &slv_qns_gem_noc_snoc }
1486 };
1487 
1488 static struct qcom_icc_bcm bcm_mm2 = {
1489     .name = "MM2",
1490     .num_nodes = 6,
1491     .nodes = { &mas_qxm_camnoc_sf,
1492            &mas_qxm_rot,
1493            &mas_qxm_venus0,
1494            &mas_qxm_venus1,
1495            &mas_qxm_venus_arm9,
1496            &slv_qns2_mem_noc }
1497 };
1498 
1499 static struct qcom_icc_bcm bcm_sh3 = {
1500     .name = "SH3",
1501     .keepalive = true,
1502     .num_nodes = 1,
1503     .nodes = { &mas_acm_apps }
1504 };
1505 
1506 static struct qcom_icc_bcm bcm_sn0 = {
1507     .name = "SN0",
1508     .nodes = { &slv_qns_gemnoc_sf }
1509 };
1510 
1511 static struct qcom_icc_bcm bcm_sn1 = {
1512     .name = "SN1",
1513     .nodes = { &slv_qxs_imem }
1514 };
1515 
1516 static struct qcom_icc_bcm bcm_sn2 = {
1517     .name = "SN2",
1518     .keepalive = true,
1519     .nodes = { &slv_qns_gemnoc_gc }
1520 };
1521 
1522 static struct qcom_icc_bcm bcm_co2 = {
1523     .name = "CO2",
1524     .nodes = { &mas_qnm_npu }
1525 };
1526 
1527 static struct qcom_icc_bcm bcm_ip0 = {
1528     .name = "IP0",
1529     .nodes = { &slv_ipa_core_slave }
1530 };
1531 
1532 static struct qcom_icc_bcm bcm_sn3 = {
1533     .name = "SN3",
1534     .keepalive = true,
1535     .nodes = { &slv_srvc_aggre1_noc,
1536           &slv_qns_cnoc }
1537 };
1538 
1539 static struct qcom_icc_bcm bcm_sn4 = {
1540     .name = "SN4",
1541     .nodes = { &slv_qxs_pimem }
1542 };
1543 
1544 static struct qcom_icc_bcm bcm_sn8 = {
1545     .name = "SN8",
1546     .num_nodes = 4,
1547     .nodes = { &slv_xs_pcie_0,
1548            &slv_xs_pcie_1,
1549            &slv_xs_pcie_2,
1550            &slv_xs_pcie_3 }
1551 };
1552 
1553 static struct qcom_icc_bcm bcm_sn9 = {
1554     .name = "SN9",
1555     .num_nodes = 1,
1556     .nodes = { &mas_qnm_aggre1_noc }
1557 };
1558 
1559 static struct qcom_icc_bcm bcm_sn11 = {
1560     .name = "SN11",
1561     .num_nodes = 1,
1562     .nodes = { &mas_qnm_aggre2_noc }
1563 };
1564 
1565 static struct qcom_icc_bcm bcm_sn14 = {
1566     .name = "SN14",
1567     .num_nodes = 1,
1568     .nodes = { &slv_qns_pcie_mem_noc }
1569 };
1570 
1571 static struct qcom_icc_bcm bcm_sn15 = {
1572     .name = "SN15",
1573     .keepalive = true,
1574     .num_nodes = 1,
1575     .nodes = { &mas_qnm_gemnoc }
1576 };
1577 
1578 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
1579     &bcm_sn3,
1580     &bcm_ce0,
1581 };
1582 
1583 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
1584     &bcm_sn14,
1585     &bcm_ce0,
1586 };
1587 
1588 static struct qcom_icc_bcm * const camnoc_virt_bcms[] = {
1589     &bcm_mm1,
1590 };
1591 
1592 static struct qcom_icc_bcm * const compute_noc_bcms[] = {
1593     &bcm_co0,
1594     &bcm_co2,
1595 };
1596 
1597 static struct qcom_icc_bcm * const config_noc_bcms[] = {
1598     &bcm_cn0,
1599 };
1600 
1601 static struct qcom_icc_bcm * const gem_noc_bcms[] = {
1602     &bcm_sh0,
1603     &bcm_sh2,
1604     &bcm_sh3,
1605 };
1606 
1607 static struct qcom_icc_bcm * const ipa_virt_bcms[] = {
1608     &bcm_ip0,
1609 };
1610 
1611 static struct qcom_icc_bcm * const mc_virt_bcms[] = {
1612     &bcm_mc0,
1613     &bcm_acv,
1614 };
1615 
1616 static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
1617     &bcm_mm0,
1618     &bcm_mm1,
1619     &bcm_mm2,
1620 };
1621 
1622 static struct qcom_icc_bcm * const system_noc_bcms[] = {
1623     &bcm_sn0,
1624     &bcm_sn1,
1625     &bcm_sn2,
1626     &bcm_sn3,
1627     &bcm_sn4,
1628     &bcm_sn8,
1629     &bcm_sn9,
1630     &bcm_sn11,
1631     &bcm_sn15,
1632 };
1633 
1634 static struct qcom_icc_node * const aggre1_noc_nodes[] = {
1635     [MASTER_A1NOC_CFG] = &mas_qhm_a1noc_cfg,
1636     [MASTER_UFS_CARD] = &mas_xm_ufs_card,
1637     [MASTER_UFS_GEN4] = &mas_xm_ufs_g4,
1638     [MASTER_UFS_MEM] = &mas_xm_ufs_mem,
1639     [MASTER_USB3] = &mas_xm_usb3_0,
1640     [MASTER_USB3_1] = &mas_xm_usb3_1,
1641     [MASTER_USB3_2] = &mas_xm_usb3_2,
1642     [A1NOC_SNOC_SLV] = &slv_qns_a1noc_snoc,
1643     [SLAVE_SERVICE_A1NOC] = &slv_srvc_aggre1_noc,
1644 };
1645 
1646 static struct qcom_icc_node * const aggre2_noc_nodes[] = {
1647     [MASTER_A2NOC_CFG] = &mas_qhm_a2noc_cfg,
1648     [MASTER_QDSS_BAM] = &mas_qhm_qdss_bam,
1649     [MASTER_QSPI_0] = &mas_qhm_qspi,
1650     [MASTER_QSPI_1] = &mas_qhm_qspi1,
1651     [MASTER_QUP_0] = &mas_qhm_qup0,
1652     [MASTER_QUP_1] = &mas_qhm_qup1,
1653     [MASTER_QUP_2] = &mas_qhm_qup2,
1654     [MASTER_SENSORS_AHB] = &mas_qhm_sensorss_ahb,
1655     [MASTER_CRYPTO_CORE_0] = &mas_qxm_crypto,
1656     [MASTER_IPA] = &mas_qxm_ipa,
1657     [MASTER_EMAC] = &mas_xm_emac,
1658     [MASTER_PCIE] = &mas_xm_pcie3_0,
1659     [MASTER_PCIE_1] = &mas_xm_pcie3_1,
1660     [MASTER_PCIE_2] = &mas_xm_pcie3_2,
1661     [MASTER_PCIE_3] = &mas_xm_pcie3_3,
1662     [MASTER_QDSS_ETR] = &mas_xm_qdss_etr,
1663     [MASTER_SDCC_2] = &mas_xm_sdc2,
1664     [MASTER_SDCC_4] = &mas_xm_sdc4,
1665     [A2NOC_SNOC_SLV] = &slv_qns_a2noc_snoc,
1666     [SLAVE_ANOC_PCIE_GEM_NOC] = &slv_qns_pcie_mem_noc,
1667     [SLAVE_SERVICE_A2NOC] = &slv_srvc_aggre2_noc,
1668 };
1669 
1670 static struct qcom_icc_node * const camnoc_virt_nodes[] = {
1671     [MASTER_CAMNOC_HF0_UNCOMP] = &mas_qxm_camnoc_hf0_uncomp,
1672     [MASTER_CAMNOC_HF1_UNCOMP] = &mas_qxm_camnoc_hf1_uncomp,
1673     [MASTER_CAMNOC_SF_UNCOMP] = &mas_qxm_camnoc_sf_uncomp,
1674     [SLAVE_CAMNOC_UNCOMP] = &slv_qns_camnoc_uncomp,
1675 };
1676 
1677 static struct qcom_icc_node * const compute_noc_nodes[] = {
1678     [MASTER_NPU] = &mas_qnm_npu,
1679     [SLAVE_CDSP_MEM_NOC] = &slv_qns_cdsp_mem_noc,
1680 };
1681 
1682 static struct qcom_icc_node * const config_noc_nodes[] = {
1683     [SNOC_CNOC_MAS] = &mas_qnm_snoc,
1684     [SLAVE_A1NOC_CFG] = &slv_qhs_a1_noc_cfg,
1685     [SLAVE_A2NOC_CFG] = &slv_qhs_a2_noc_cfg,
1686     [SLAVE_AHB2PHY_CENTER] = &slv_qhs_ahb2phy_refgen_center,
1687     [SLAVE_AHB2PHY_EAST] = &slv_qhs_ahb2phy_refgen_east,
1688     [SLAVE_AHB2PHY_WEST] = &slv_qhs_ahb2phy_refgen_west,
1689     [SLAVE_AHB2PHY_SOUTH] = &slv_qhs_ahb2phy_south,
1690     [SLAVE_AOP] = &slv_qhs_aop,
1691     [SLAVE_AOSS] = &slv_qhs_aoss,
1692     [SLAVE_CAMERA_CFG] = &slv_qhs_camera_cfg,
1693     [SLAVE_CLK_CTL] = &slv_qhs_clk_ctl,
1694     [SLAVE_CDSP_CFG] = &slv_qhs_compute_dsp,
1695     [SLAVE_RBCPR_CX_CFG] = &slv_qhs_cpr_cx,
1696     [SLAVE_RBCPR_MMCX_CFG] = &slv_qhs_cpr_mmcx,
1697     [SLAVE_RBCPR_MX_CFG] = &slv_qhs_cpr_mx,
1698     [SLAVE_CRYPTO_0_CFG] = &slv_qhs_crypto0_cfg,
1699     [SLAVE_CNOC_DDRSS] = &slv_qhs_ddrss_cfg,
1700     [SLAVE_DISPLAY_CFG] = &slv_qhs_display_cfg,
1701     [SLAVE_EMAC_CFG] = &slv_qhs_emac_cfg,
1702     [SLAVE_GLM] = &slv_qhs_glm,
1703     [SLAVE_GRAPHICS_3D_CFG] = &slv_qhs_gpuss_cfg,
1704     [SLAVE_IMEM_CFG] = &slv_qhs_imem_cfg,
1705     [SLAVE_IPA_CFG] = &slv_qhs_ipa,
1706     [SLAVE_CNOC_MNOC_CFG] = &slv_qhs_mnoc_cfg,
1707     [SLAVE_NPU_CFG] = &slv_qhs_npu_cfg,
1708     [SLAVE_PCIE_0_CFG] = &slv_qhs_pcie0_cfg,
1709     [SLAVE_PCIE_1_CFG] = &slv_qhs_pcie1_cfg,
1710     [SLAVE_PCIE_2_CFG] = &slv_qhs_pcie2_cfg,
1711     [SLAVE_PCIE_3_CFG] = &slv_qhs_pcie3_cfg,
1712     [SLAVE_PDM] = &slv_qhs_pdm,
1713     [SLAVE_PIMEM_CFG] = &slv_qhs_pimem_cfg,
1714     [SLAVE_PRNG] = &slv_qhs_prng,
1715     [SLAVE_QDSS_CFG] = &slv_qhs_qdss_cfg,
1716     [SLAVE_QSPI_0] = &slv_qhs_qspi_0,
1717     [SLAVE_QSPI_1] = &slv_qhs_qspi_1,
1718     [SLAVE_QUP_1] = &slv_qhs_qupv3_east0,
1719     [SLAVE_QUP_2] = &slv_qhs_qupv3_east1,
1720     [SLAVE_QUP_0] = &slv_qhs_qupv3_west,
1721     [SLAVE_SDCC_2] = &slv_qhs_sdc2,
1722     [SLAVE_SDCC_4] = &slv_qhs_sdc4,
1723     [SLAVE_SECURITY] = &slv_qhs_security,
1724     [SLAVE_SNOC_CFG] = &slv_qhs_snoc_cfg,
1725     [SLAVE_SPSS_CFG] = &slv_qhs_spss_cfg,
1726     [SLAVE_TCSR] = &slv_qhs_tcsr,
1727     [SLAVE_TLMM_EAST] = &slv_qhs_tlmm_east,
1728     [SLAVE_TLMM_SOUTH] = &slv_qhs_tlmm_south,
1729     [SLAVE_TLMM_WEST] = &slv_qhs_tlmm_west,
1730     [SLAVE_TSIF] = &slv_qhs_tsif,
1731     [SLAVE_UFS_CARD_CFG] = &slv_qhs_ufs_card_cfg,
1732     [SLAVE_UFS_MEM_0_CFG] = &slv_qhs_ufs_mem0_cfg,
1733     [SLAVE_UFS_MEM_1_CFG] = &slv_qhs_ufs_mem1_cfg,
1734     [SLAVE_USB3] = &slv_qhs_usb3_0,
1735     [SLAVE_USB3_1] = &slv_qhs_usb3_1,
1736     [SLAVE_USB3_2] = &slv_qhs_usb3_2,
1737     [SLAVE_VENUS_CFG] = &slv_qhs_venus_cfg,
1738     [SLAVE_VSENSE_CTRL_CFG] = &slv_qhs_vsense_ctrl_cfg,
1739     [SLAVE_SERVICE_CNOC] = &slv_srvc_cnoc,
1740 };
1741 
1742 static struct qcom_icc_node * const dc_noc_nodes[] = {
1743     [MASTER_CNOC_DC_NOC] = &mas_qhm_cnoc_dc_noc,
1744     [SLAVE_GEM_NOC_CFG] = &slv_qhs_gemnoc,
1745     [SLAVE_LLCC_CFG] = &slv_qhs_llcc,
1746 };
1747 
1748 static struct qcom_icc_node * const gem_noc_nodes[] = {
1749     [MASTER_AMPSS_M0] = &mas_acm_apps,
1750     [MASTER_GPU_TCU] = &mas_acm_gpu_tcu,
1751     [MASTER_SYS_TCU] = &mas_acm_sys_tcu,
1752     [MASTER_GEM_NOC_CFG] = &mas_qhm_gemnoc_cfg,
1753     [MASTER_COMPUTE_NOC] = &mas_qnm_cmpnoc,
1754     [MASTER_GRAPHICS_3D] = &mas_qnm_gpu,
1755     [MASTER_MNOC_HF_MEM_NOC] = &mas_qnm_mnoc_hf,
1756     [MASTER_MNOC_SF_MEM_NOC] = &mas_qnm_mnoc_sf,
1757     [MASTER_GEM_NOC_PCIE_SNOC] = &mas_qnm_pcie,
1758     [MASTER_SNOC_GC_MEM_NOC] = &mas_qnm_snoc_gc,
1759     [MASTER_SNOC_SF_MEM_NOC] = &mas_qnm_snoc_sf,
1760     [MASTER_ECC] = &mas_qxm_ecc,
1761     [SLAVE_MSS_PROC_MS_MPU_CFG] = &slv_qhs_mdsp_ms_mpu_cfg,
1762     [SLAVE_ECC] = &slv_qns_ecc,
1763     [SLAVE_GEM_NOC_SNOC] = &slv_qns_gem_noc_snoc,
1764     [SLAVE_LLCC] = &slv_qns_llcc,
1765     [SLAVE_SERVICE_GEM_NOC] = &slv_srvc_gemnoc,
1766     [SLAVE_SERVICE_GEM_NOC_1] = &slv_srvc_gemnoc1,
1767 };
1768 
1769 static struct qcom_icc_node * const ipa_virt_nodes[] = {
1770     [MASTER_IPA_CORE] = &mas_ipa_core_master,
1771     [SLAVE_IPA_CORE] = &slv_ipa_core_slave,
1772 };
1773 
1774 static struct qcom_icc_node * const mc_virt_nodes[] = {
1775     [MASTER_LLCC] = &mas_llcc_mc,
1776     [SLAVE_EBI_CH0] = &slv_ebi,
1777 };
1778 
1779 static struct qcom_icc_node * const mmss_noc_nodes[] = {
1780     [MASTER_CNOC_MNOC_CFG] = &mas_qhm_mnoc_cfg,
1781     [MASTER_CAMNOC_HF0] = &mas_qxm_camnoc_hf0,
1782     [MASTER_CAMNOC_HF1] = &mas_qxm_camnoc_hf1,
1783     [MASTER_CAMNOC_SF] = &mas_qxm_camnoc_sf,
1784     [MASTER_MDP_PORT0] = &mas_qxm_mdp0,
1785     [MASTER_MDP_PORT1] = &mas_qxm_mdp1,
1786     [MASTER_ROTATOR] = &mas_qxm_rot,
1787     [MASTER_VIDEO_P0] = &mas_qxm_venus0,
1788     [MASTER_VIDEO_P1] = &mas_qxm_venus1,
1789     [MASTER_VIDEO_PROC] = &mas_qxm_venus_arm9,
1790     [SLAVE_MNOC_SF_MEM_NOC] = &slv_qns2_mem_noc,
1791     [SLAVE_MNOC_HF_MEM_NOC] = &slv_qns_mem_noc_hf,
1792     [SLAVE_SERVICE_MNOC] = &slv_srvc_mnoc,
1793 };
1794 
1795 static struct qcom_icc_node * const system_noc_nodes[] = {
1796     [MASTER_SNOC_CFG] = &mas_qhm_snoc_cfg,
1797     [A1NOC_SNOC_MAS] = &mas_qnm_aggre1_noc,
1798     [A2NOC_SNOC_MAS] = &mas_qnm_aggre2_noc,
1799     [MASTER_GEM_NOC_SNOC] = &mas_qnm_gemnoc,
1800     [MASTER_PIMEM] = &mas_qxm_pimem,
1801     [MASTER_GIC] = &mas_xm_gic,
1802     [SLAVE_APPSS] = &slv_qhs_apss,
1803     [SNOC_CNOC_SLV] = &slv_qns_cnoc,
1804     [SLAVE_SNOC_GEM_NOC_GC] = &slv_qns_gemnoc_gc,
1805     [SLAVE_SNOC_GEM_NOC_SF] = &slv_qns_gemnoc_sf,
1806     [SLAVE_OCIMEM] = &slv_qxs_imem,
1807     [SLAVE_PIMEM] = &slv_qxs_pimem,
1808     [SLAVE_SERVICE_SNOC] = &slv_srvc_snoc,
1809     [SLAVE_QDSS_STM] = &slv_xs_qdss_stm,
1810     [SLAVE_TCU] = &slv_xs_sys_tcu_cfg,
1811 };
1812 
1813 static const struct qcom_icc_desc sc8180x_aggre1_noc = {
1814     .nodes = aggre1_noc_nodes,
1815     .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
1816     .bcms = aggre1_noc_bcms,
1817     .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
1818 };
1819 
1820 static const struct qcom_icc_desc sc8180x_aggre2_noc = {
1821     .nodes = aggre2_noc_nodes,
1822     .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
1823     .bcms = aggre2_noc_bcms,
1824     .num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
1825 };
1826 
1827 static const struct qcom_icc_desc sc8180x_camnoc_virt = {
1828     .nodes = camnoc_virt_nodes,
1829     .num_nodes = ARRAY_SIZE(camnoc_virt_nodes),
1830     .bcms = camnoc_virt_bcms,
1831     .num_bcms = ARRAY_SIZE(camnoc_virt_bcms),
1832 };
1833 
1834 static const struct qcom_icc_desc sc8180x_compute_noc = {
1835     .nodes = compute_noc_nodes,
1836     .num_nodes = ARRAY_SIZE(compute_noc_nodes),
1837     .bcms = compute_noc_bcms,
1838     .num_bcms = ARRAY_SIZE(compute_noc_bcms),
1839 };
1840 
1841 static const struct qcom_icc_desc sc8180x_config_noc = {
1842     .nodes = config_noc_nodes,
1843     .num_nodes = ARRAY_SIZE(config_noc_nodes),
1844     .bcms = config_noc_bcms,
1845     .num_bcms = ARRAY_SIZE(config_noc_bcms),
1846 };
1847 
1848 static const struct qcom_icc_desc sc8180x_dc_noc = {
1849     .nodes = dc_noc_nodes,
1850     .num_nodes = ARRAY_SIZE(dc_noc_nodes),
1851 };
1852 
1853 static const struct qcom_icc_desc sc8180x_gem_noc  = {
1854     .nodes = gem_noc_nodes,
1855     .num_nodes = ARRAY_SIZE(gem_noc_nodes),
1856     .bcms = gem_noc_bcms,
1857     .num_bcms = ARRAY_SIZE(gem_noc_bcms),
1858 };
1859 
1860 static const struct qcom_icc_desc sc8180x_ipa_virt  = {
1861     .nodes = ipa_virt_nodes,
1862     .num_nodes = ARRAY_SIZE(ipa_virt_nodes),
1863     .bcms = ipa_virt_bcms,
1864     .num_bcms = ARRAY_SIZE(ipa_virt_bcms),
1865 };
1866 
1867 static const struct qcom_icc_desc sc8180x_mc_virt  = {
1868     .nodes = mc_virt_nodes,
1869     .num_nodes = ARRAY_SIZE(mc_virt_nodes),
1870     .bcms = mc_virt_bcms,
1871     .num_bcms = ARRAY_SIZE(mc_virt_bcms),
1872 };
1873 
1874 static const struct qcom_icc_desc sc8180x_mmss_noc  = {
1875     .nodes = mmss_noc_nodes,
1876     .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
1877     .bcms = mmss_noc_bcms,
1878     .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
1879 };
1880 
1881 static const struct qcom_icc_desc sc8180x_system_noc  = {
1882     .nodes = system_noc_nodes,
1883     .num_nodes = ARRAY_SIZE(system_noc_nodes),
1884     .bcms = system_noc_bcms,
1885     .num_bcms = ARRAY_SIZE(system_noc_bcms),
1886 };
1887 
1888 static struct qcom_icc_bcm * const qup_virt_bcms[] = {
1889     &bcm_qup0,
1890 };
1891 
1892 static struct qcom_icc_node *qup_virt_nodes[] = {
1893     [MASTER_QUP_CORE_0] = &mas_qup_core_0,
1894     [MASTER_QUP_CORE_1] = &mas_qup_core_1,
1895     [MASTER_QUP_CORE_2] = &mas_qup_core_2,
1896     [SLAVE_QUP_CORE_0] = &slv_qup_core_0,
1897     [SLAVE_QUP_CORE_1] = &slv_qup_core_1,
1898     [SLAVE_QUP_CORE_2] = &slv_qup_core_2,
1899 };
1900 
1901 static const struct qcom_icc_desc sc8180x_qup_virt = {
1902     .nodes = qup_virt_nodes,
1903     .num_nodes = ARRAY_SIZE(qup_virt_nodes),
1904     .bcms = qup_virt_bcms,
1905     .num_bcms = ARRAY_SIZE(qup_virt_bcms),
1906 };
1907 
1908 static const struct of_device_id qnoc_of_match[] = {
1909     { .compatible = "qcom,sc8180x-aggre1-noc", .data = &sc8180x_aggre1_noc },
1910     { .compatible = "qcom,sc8180x-aggre2-noc", .data = &sc8180x_aggre2_noc },
1911     { .compatible = "qcom,sc8180x-camnoc-virt", .data = &sc8180x_camnoc_virt },
1912     { .compatible = "qcom,sc8180x-compute-noc", .data = &sc8180x_compute_noc, },
1913     { .compatible = "qcom,sc8180x-config-noc", .data = &sc8180x_config_noc },
1914     { .compatible = "qcom,sc8180x-dc-noc", .data = &sc8180x_dc_noc },
1915     { .compatible = "qcom,sc8180x-gem-noc", .data = &sc8180x_gem_noc },
1916     { .compatible = "qcom,sc8180x-ipa-virt", .data = &sc8180x_ipa_virt },
1917     { .compatible = "qcom,sc8180x-mc-virt", .data = &sc8180x_mc_virt },
1918     { .compatible = "qcom,sc8180x-mmss-noc", .data = &sc8180x_mmss_noc },
1919     { .compatible = "qcom,sc8180x-qup-virt", .data = &sc8180x_qup_virt },
1920     { .compatible = "qcom,sc8180x-system-noc", .data = &sc8180x_system_noc },
1921     { }
1922 };
1923 MODULE_DEVICE_TABLE(of, qnoc_of_match);
1924 
1925 static struct platform_driver qnoc_driver = {
1926     .probe = qcom_icc_rpmh_probe,
1927     .remove = qcom_icc_rpmh_remove,
1928     .driver = {
1929         .name = "qnoc-sc8180x",
1930         .of_match_table = qnoc_of_match,
1931         .sync_state = icc_sync_state,
1932     },
1933 };
1934 module_platform_driver(qnoc_driver);
1935 
1936 MODULE_DESCRIPTION("Qualcomm sc8180x NoC driver");
1937 MODULE_LICENSE("GPL v2");