0001
0002
0003
0004
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");