0001
0002
0003
0004
0005
0006
0007 #include <linux/device.h>
0008 #include <linux/interconnect.h>
0009 #include <linux/interconnect-provider.h>
0010 #include <linux/module.h>
0011 #include <linux/of_platform.h>
0012 #include <dt-bindings/interconnect/qcom,sc7280.h>
0013
0014 #include "bcm-voter.h"
0015 #include "icc-rpmh.h"
0016 #include "sc7280.h"
0017
0018 static struct qcom_icc_node qhm_qspi = {
0019 .name = "qhm_qspi",
0020 .id = SC7280_MASTER_QSPI_0,
0021 .channels = 1,
0022 .buswidth = 4,
0023 .num_links = 1,
0024 .links = { SC7280_SLAVE_A1NOC_SNOC },
0025 };
0026
0027 static struct qcom_icc_node qhm_qup0 = {
0028 .name = "qhm_qup0",
0029 .id = SC7280_MASTER_QUP_0,
0030 .channels = 1,
0031 .buswidth = 4,
0032 .num_links = 1,
0033 .links = { SC7280_SLAVE_A1NOC_SNOC },
0034 };
0035
0036 static struct qcom_icc_node qhm_qup1 = {
0037 .name = "qhm_qup1",
0038 .id = SC7280_MASTER_QUP_1,
0039 .channels = 1,
0040 .buswidth = 4,
0041 .num_links = 1,
0042 .links = { SC7280_SLAVE_A1NOC_SNOC },
0043 };
0044
0045 static struct qcom_icc_node qnm_a1noc_cfg = {
0046 .name = "qnm_a1noc_cfg",
0047 .id = SC7280_MASTER_A1NOC_CFG,
0048 .channels = 1,
0049 .buswidth = 4,
0050 .num_links = 1,
0051 .links = { SC7280_SLAVE_SERVICE_A1NOC },
0052 };
0053
0054 static struct qcom_icc_node xm_sdc1 = {
0055 .name = "xm_sdc1",
0056 .id = SC7280_MASTER_SDCC_1,
0057 .channels = 1,
0058 .buswidth = 8,
0059 .num_links = 1,
0060 .links = { SC7280_SLAVE_A1NOC_SNOC },
0061 };
0062
0063 static struct qcom_icc_node xm_sdc2 = {
0064 .name = "xm_sdc2",
0065 .id = SC7280_MASTER_SDCC_2,
0066 .channels = 1,
0067 .buswidth = 8,
0068 .num_links = 1,
0069 .links = { SC7280_SLAVE_A1NOC_SNOC },
0070 };
0071
0072 static struct qcom_icc_node xm_sdc4 = {
0073 .name = "xm_sdc4",
0074 .id = SC7280_MASTER_SDCC_4,
0075 .channels = 1,
0076 .buswidth = 8,
0077 .num_links = 1,
0078 .links = { SC7280_SLAVE_A1NOC_SNOC },
0079 };
0080
0081 static struct qcom_icc_node xm_ufs_mem = {
0082 .name = "xm_ufs_mem",
0083 .id = SC7280_MASTER_UFS_MEM,
0084 .channels = 1,
0085 .buswidth = 8,
0086 .num_links = 1,
0087 .links = { SC7280_SLAVE_A1NOC_SNOC },
0088 };
0089
0090 static struct qcom_icc_node xm_usb2 = {
0091 .name = "xm_usb2",
0092 .id = SC7280_MASTER_USB2,
0093 .channels = 1,
0094 .buswidth = 8,
0095 .num_links = 1,
0096 .links = { SC7280_SLAVE_A1NOC_SNOC },
0097 };
0098
0099 static struct qcom_icc_node xm_usb3_0 = {
0100 .name = "xm_usb3_0",
0101 .id = SC7280_MASTER_USB3_0,
0102 .channels = 1,
0103 .buswidth = 8,
0104 .num_links = 1,
0105 .links = { SC7280_SLAVE_A1NOC_SNOC },
0106 };
0107
0108 static struct qcom_icc_node qhm_qdss_bam = {
0109 .name = "qhm_qdss_bam",
0110 .id = SC7280_MASTER_QDSS_BAM,
0111 .channels = 1,
0112 .buswidth = 4,
0113 .num_links = 1,
0114 .links = { SC7280_SLAVE_A2NOC_SNOC },
0115 };
0116
0117 static struct qcom_icc_node qnm_a2noc_cfg = {
0118 .name = "qnm_a2noc_cfg",
0119 .id = SC7280_MASTER_A2NOC_CFG,
0120 .channels = 1,
0121 .buswidth = 4,
0122 .num_links = 1,
0123 .links = { SC7280_SLAVE_SERVICE_A2NOC },
0124 };
0125
0126 static struct qcom_icc_node qnm_cnoc_datapath = {
0127 .name = "qnm_cnoc_datapath",
0128 .id = SC7280_MASTER_CNOC_A2NOC,
0129 .channels = 1,
0130 .buswidth = 8,
0131 .num_links = 1,
0132 .links = { SC7280_SLAVE_A2NOC_SNOC },
0133 };
0134
0135 static struct qcom_icc_node qxm_crypto = {
0136 .name = "qxm_crypto",
0137 .id = SC7280_MASTER_CRYPTO,
0138 .channels = 1,
0139 .buswidth = 8,
0140 .num_links = 1,
0141 .links = { SC7280_SLAVE_A2NOC_SNOC },
0142 };
0143
0144 static struct qcom_icc_node qxm_ipa = {
0145 .name = "qxm_ipa",
0146 .id = SC7280_MASTER_IPA,
0147 .channels = 1,
0148 .buswidth = 8,
0149 .num_links = 1,
0150 .links = { SC7280_SLAVE_A2NOC_SNOC },
0151 };
0152
0153 static struct qcom_icc_node xm_pcie3_0 = {
0154 .name = "xm_pcie3_0",
0155 .id = SC7280_MASTER_PCIE_0,
0156 .channels = 1,
0157 .buswidth = 8,
0158 .num_links = 1,
0159 .links = { SC7280_SLAVE_ANOC_PCIE_GEM_NOC },
0160 };
0161
0162 static struct qcom_icc_node xm_pcie3_1 = {
0163 .name = "xm_pcie3_1",
0164 .id = SC7280_MASTER_PCIE_1,
0165 .channels = 1,
0166 .buswidth = 8,
0167 .links = { SC7280_SLAVE_ANOC_PCIE_GEM_NOC },
0168 };
0169
0170 static struct qcom_icc_node xm_qdss_etr = {
0171 .name = "xm_qdss_etr",
0172 .id = SC7280_MASTER_QDSS_ETR,
0173 .channels = 1,
0174 .buswidth = 8,
0175 .num_links = 1,
0176 .links = { SC7280_SLAVE_A2NOC_SNOC },
0177 };
0178
0179 static struct qcom_icc_node qup0_core_master = {
0180 .name = "qup0_core_master",
0181 .id = SC7280_MASTER_QUP_CORE_0,
0182 .channels = 1,
0183 .buswidth = 4,
0184 .num_links = 1,
0185 .links = { SC7280_SLAVE_QUP_CORE_0 },
0186 };
0187
0188 static struct qcom_icc_node qup1_core_master = {
0189 .name = "qup1_core_master",
0190 .id = SC7280_MASTER_QUP_CORE_1,
0191 .channels = 1,
0192 .buswidth = 4,
0193 .num_links = 1,
0194 .links = { SC7280_SLAVE_QUP_CORE_1 },
0195 };
0196
0197 static struct qcom_icc_node qnm_cnoc3_cnoc2 = {
0198 .name = "qnm_cnoc3_cnoc2",
0199 .id = SC7280_MASTER_CNOC3_CNOC2,
0200 .channels = 1,
0201 .buswidth = 8,
0202 .num_links = 44,
0203 .links = { SC7280_SLAVE_AHB2PHY_SOUTH, SC7280_SLAVE_AHB2PHY_NORTH,
0204 SC7280_SLAVE_CAMERA_CFG, SC7280_SLAVE_CLK_CTL,
0205 SC7280_SLAVE_CDSP_CFG, SC7280_SLAVE_RBCPR_CX_CFG,
0206 SC7280_SLAVE_RBCPR_MX_CFG, SC7280_SLAVE_CRYPTO_0_CFG,
0207 SC7280_SLAVE_CX_RDPM, SC7280_SLAVE_DCC_CFG,
0208 SC7280_SLAVE_DISPLAY_CFG, SC7280_SLAVE_GFX3D_CFG,
0209 SC7280_SLAVE_HWKM, SC7280_SLAVE_IMEM_CFG,
0210 SC7280_SLAVE_IPA_CFG, SC7280_SLAVE_IPC_ROUTER_CFG,
0211 SC7280_SLAVE_LPASS, SC7280_SLAVE_CNOC_MSS,
0212 SC7280_SLAVE_MX_RDPM, SC7280_SLAVE_PCIE_0_CFG,
0213 SC7280_SLAVE_PCIE_1_CFG, SC7280_SLAVE_PDM,
0214 SC7280_SLAVE_PIMEM_CFG, SC7280_SLAVE_PKA_WRAPPER_CFG,
0215 SC7280_SLAVE_PMU_WRAPPER_CFG, SC7280_SLAVE_QDSS_CFG,
0216 SC7280_SLAVE_QSPI_0, SC7280_SLAVE_QUP_0,
0217 SC7280_SLAVE_QUP_1, SC7280_SLAVE_SDCC_1,
0218 SC7280_SLAVE_SDCC_2, SC7280_SLAVE_SDCC_4,
0219 SC7280_SLAVE_SECURITY, SC7280_SLAVE_TCSR,
0220 SC7280_SLAVE_TLMM, SC7280_SLAVE_UFS_MEM_CFG,
0221 SC7280_SLAVE_USB2, SC7280_SLAVE_USB3_0,
0222 SC7280_SLAVE_VENUS_CFG, SC7280_SLAVE_VSENSE_CTRL_CFG,
0223 SC7280_SLAVE_A1NOC_CFG, SC7280_SLAVE_A2NOC_CFG,
0224 SC7280_SLAVE_CNOC_MNOC_CFG, SC7280_SLAVE_SNOC_CFG },
0225 };
0226
0227 static struct qcom_icc_node xm_qdss_dap = {
0228 .name = "xm_qdss_dap",
0229 .id = SC7280_MASTER_QDSS_DAP,
0230 .channels = 1,
0231 .buswidth = 8,
0232 .num_links = 45,
0233 .links = { SC7280_SLAVE_AHB2PHY_SOUTH, SC7280_SLAVE_AHB2PHY_NORTH,
0234 SC7280_SLAVE_CAMERA_CFG, SC7280_SLAVE_CLK_CTL,
0235 SC7280_SLAVE_CDSP_CFG, SC7280_SLAVE_RBCPR_CX_CFG,
0236 SC7280_SLAVE_RBCPR_MX_CFG, SC7280_SLAVE_CRYPTO_0_CFG,
0237 SC7280_SLAVE_CX_RDPM, SC7280_SLAVE_DCC_CFG,
0238 SC7280_SLAVE_DISPLAY_CFG, SC7280_SLAVE_GFX3D_CFG,
0239 SC7280_SLAVE_HWKM, SC7280_SLAVE_IMEM_CFG,
0240 SC7280_SLAVE_IPA_CFG, SC7280_SLAVE_IPC_ROUTER_CFG,
0241 SC7280_SLAVE_LPASS, SC7280_SLAVE_CNOC_MSS,
0242 SC7280_SLAVE_MX_RDPM, SC7280_SLAVE_PCIE_0_CFG,
0243 SC7280_SLAVE_PCIE_1_CFG, SC7280_SLAVE_PDM,
0244 SC7280_SLAVE_PIMEM_CFG, SC7280_SLAVE_PKA_WRAPPER_CFG,
0245 SC7280_SLAVE_PMU_WRAPPER_CFG, SC7280_SLAVE_QDSS_CFG,
0246 SC7280_SLAVE_QSPI_0, SC7280_SLAVE_QUP_0,
0247 SC7280_SLAVE_QUP_1, SC7280_SLAVE_SDCC_1,
0248 SC7280_SLAVE_SDCC_2, SC7280_SLAVE_SDCC_4,
0249 SC7280_SLAVE_SECURITY, SC7280_SLAVE_TCSR,
0250 SC7280_SLAVE_TLMM, SC7280_SLAVE_UFS_MEM_CFG,
0251 SC7280_SLAVE_USB2, SC7280_SLAVE_USB3_0,
0252 SC7280_SLAVE_VENUS_CFG, SC7280_SLAVE_VSENSE_CTRL_CFG,
0253 SC7280_SLAVE_A1NOC_CFG, SC7280_SLAVE_A2NOC_CFG,
0254 SC7280_SLAVE_CNOC2_CNOC3, SC7280_SLAVE_CNOC_MNOC_CFG,
0255 SC7280_SLAVE_SNOC_CFG },
0256 };
0257
0258 static struct qcom_icc_node qnm_cnoc2_cnoc3 = {
0259 .name = "qnm_cnoc2_cnoc3",
0260 .id = SC7280_MASTER_CNOC2_CNOC3,
0261 .channels = 1,
0262 .buswidth = 8,
0263 .num_links = 9,
0264 .links = { SC7280_SLAVE_AOSS, SC7280_SLAVE_APPSS,
0265 SC7280_SLAVE_CNOC_A2NOC, SC7280_SLAVE_DDRSS_CFG,
0266 SC7280_SLAVE_BOOT_IMEM, SC7280_SLAVE_IMEM,
0267 SC7280_SLAVE_PIMEM, SC7280_SLAVE_QDSS_STM,
0268 SC7280_SLAVE_TCU },
0269 };
0270
0271 static struct qcom_icc_node qnm_gemnoc_cnoc = {
0272 .name = "qnm_gemnoc_cnoc",
0273 .id = SC7280_MASTER_GEM_NOC_CNOC,
0274 .channels = 1,
0275 .buswidth = 16,
0276 .num_links = 9,
0277 .links = { SC7280_SLAVE_AOSS, SC7280_SLAVE_APPSS,
0278 SC7280_SLAVE_CNOC3_CNOC2, SC7280_SLAVE_DDRSS_CFG,
0279 SC7280_SLAVE_BOOT_IMEM, SC7280_SLAVE_IMEM,
0280 SC7280_SLAVE_PIMEM, SC7280_SLAVE_QDSS_STM,
0281 SC7280_SLAVE_TCU },
0282 };
0283
0284 static struct qcom_icc_node qnm_gemnoc_pcie = {
0285 .name = "qnm_gemnoc_pcie",
0286 .id = SC7280_MASTER_GEM_NOC_PCIE_SNOC,
0287 .channels = 1,
0288 .buswidth = 8,
0289 .num_links = 2,
0290 .links = { SC7280_SLAVE_PCIE_0, SC7280_SLAVE_PCIE_1 },
0291 };
0292
0293 static struct qcom_icc_node qnm_cnoc_dc_noc = {
0294 .name = "qnm_cnoc_dc_noc",
0295 .id = SC7280_MASTER_CNOC_DC_NOC,
0296 .channels = 1,
0297 .buswidth = 4,
0298 .num_links = 2,
0299 .links = { SC7280_SLAVE_LLCC_CFG, SC7280_SLAVE_GEM_NOC_CFG },
0300 };
0301
0302 static struct qcom_icc_node alm_gpu_tcu = {
0303 .name = "alm_gpu_tcu",
0304 .id = SC7280_MASTER_GPU_TCU,
0305 .channels = 1,
0306 .buswidth = 8,
0307 .num_links = 2,
0308 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
0309 };
0310
0311 static struct qcom_icc_node alm_sys_tcu = {
0312 .name = "alm_sys_tcu",
0313 .id = SC7280_MASTER_SYS_TCU,
0314 .channels = 1,
0315 .buswidth = 8,
0316 .num_links = 2,
0317 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
0318 };
0319
0320 static struct qcom_icc_node chm_apps = {
0321 .name = "chm_apps",
0322 .id = SC7280_MASTER_APPSS_PROC,
0323 .channels = 1,
0324 .buswidth = 32,
0325 .num_links = 3,
0326 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC,
0327 SC7280_SLAVE_MEM_NOC_PCIE_SNOC },
0328 };
0329
0330 static struct qcom_icc_node qnm_cmpnoc = {
0331 .name = "qnm_cmpnoc",
0332 .id = SC7280_MASTER_COMPUTE_NOC,
0333 .channels = 2,
0334 .buswidth = 32,
0335 .num_links = 2,
0336 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
0337 };
0338
0339 static struct qcom_icc_node qnm_gemnoc_cfg = {
0340 .name = "qnm_gemnoc_cfg",
0341 .id = SC7280_MASTER_GEM_NOC_CFG,
0342 .channels = 1,
0343 .buswidth = 4,
0344 .num_links = 5,
0345 .links = { SC7280_SLAVE_MSS_PROC_MS_MPU_CFG, SC7280_SLAVE_MCDMA_MS_MPU_CFG,
0346 SC7280_SLAVE_SERVICE_GEM_NOC_1, SC7280_SLAVE_SERVICE_GEM_NOC_2,
0347 SC7280_SLAVE_SERVICE_GEM_NOC },
0348 };
0349
0350 static struct qcom_icc_node qnm_gpu = {
0351 .name = "qnm_gpu",
0352 .id = SC7280_MASTER_GFX3D,
0353 .channels = 2,
0354 .buswidth = 32,
0355 .num_links = 2,
0356 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
0357 };
0358
0359 static struct qcom_icc_node qnm_mnoc_hf = {
0360 .name = "qnm_mnoc_hf",
0361 .id = SC7280_MASTER_MNOC_HF_MEM_NOC,
0362 .channels = 2,
0363 .buswidth = 32,
0364 .num_links = 1,
0365 .links = { SC7280_SLAVE_LLCC },
0366 };
0367
0368 static struct qcom_icc_node qnm_mnoc_sf = {
0369 .name = "qnm_mnoc_sf",
0370 .id = SC7280_MASTER_MNOC_SF_MEM_NOC,
0371 .channels = 1,
0372 .buswidth = 32,
0373 .num_links = 2,
0374 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
0375 };
0376
0377 static struct qcom_icc_node qnm_pcie = {
0378 .name = "qnm_pcie",
0379 .id = SC7280_MASTER_ANOC_PCIE_GEM_NOC,
0380 .channels = 1,
0381 .buswidth = 16,
0382 .num_links = 2,
0383 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
0384 };
0385
0386 static struct qcom_icc_node qnm_snoc_gc = {
0387 .name = "qnm_snoc_gc",
0388 .id = SC7280_MASTER_SNOC_GC_MEM_NOC,
0389 .channels = 1,
0390 .buswidth = 8,
0391 .num_links = 1,
0392 .links = { SC7280_SLAVE_LLCC },
0393 };
0394
0395 static struct qcom_icc_node qnm_snoc_sf = {
0396 .name = "qnm_snoc_sf",
0397 .id = SC7280_MASTER_SNOC_SF_MEM_NOC,
0398 .channels = 1,
0399 .buswidth = 16,
0400 .num_links = 3,
0401 .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC,
0402 SC7280_SLAVE_MEM_NOC_PCIE_SNOC },
0403 };
0404
0405 static struct qcom_icc_node qhm_config_noc = {
0406 .name = "qhm_config_noc",
0407 .id = SC7280_MASTER_CNOC_LPASS_AG_NOC,
0408 .channels = 1,
0409 .buswidth = 4,
0410 .num_links = 6,
0411 .links = { SC7280_SLAVE_LPASS_CORE_CFG, SC7280_SLAVE_LPASS_LPI_CFG,
0412 SC7280_SLAVE_LPASS_MPU_CFG, SC7280_SLAVE_LPASS_TOP_CFG,
0413 SC7280_SLAVE_SERVICES_LPASS_AML_NOC, SC7280_SLAVE_SERVICE_LPASS_AG_NOC },
0414 };
0415
0416 static struct qcom_icc_node llcc_mc = {
0417 .name = "llcc_mc",
0418 .id = SC7280_MASTER_LLCC,
0419 .channels = 2,
0420 .buswidth = 4,
0421 .num_links = 1,
0422 .links = { SC7280_SLAVE_EBI1 },
0423 };
0424
0425 static struct qcom_icc_node qnm_mnoc_cfg = {
0426 .name = "qnm_mnoc_cfg",
0427 .id = SC7280_MASTER_CNOC_MNOC_CFG,
0428 .channels = 1,
0429 .buswidth = 4,
0430 .num_links = 1,
0431 .links = { SC7280_SLAVE_SERVICE_MNOC },
0432 };
0433
0434 static struct qcom_icc_node qnm_video0 = {
0435 .name = "qnm_video0",
0436 .id = SC7280_MASTER_VIDEO_P0,
0437 .channels = 1,
0438 .buswidth = 32,
0439 .num_links = 1,
0440 .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
0441 };
0442
0443 static struct qcom_icc_node qnm_video_cpu = {
0444 .name = "qnm_video_cpu",
0445 .id = SC7280_MASTER_VIDEO_PROC,
0446 .channels = 1,
0447 .buswidth = 8,
0448 .num_links = 1,
0449 .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
0450 };
0451
0452 static struct qcom_icc_node qxm_camnoc_hf = {
0453 .name = "qxm_camnoc_hf",
0454 .id = SC7280_MASTER_CAMNOC_HF,
0455 .channels = 2,
0456 .buswidth = 32,
0457 .num_links = 1,
0458 .links = { SC7280_SLAVE_MNOC_HF_MEM_NOC },
0459 };
0460
0461 static struct qcom_icc_node qxm_camnoc_icp = {
0462 .name = "qxm_camnoc_icp",
0463 .id = SC7280_MASTER_CAMNOC_ICP,
0464 .channels = 1,
0465 .buswidth = 8,
0466 .num_links = 1,
0467 .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
0468 };
0469
0470 static struct qcom_icc_node qxm_camnoc_sf = {
0471 .name = "qxm_camnoc_sf",
0472 .id = SC7280_MASTER_CAMNOC_SF,
0473 .channels = 1,
0474 .buswidth = 32,
0475 .num_links = 1,
0476 .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
0477 };
0478
0479 static struct qcom_icc_node qxm_mdp0 = {
0480 .name = "qxm_mdp0",
0481 .id = SC7280_MASTER_MDP0,
0482 .channels = 1,
0483 .buswidth = 32,
0484 .num_links = 1,
0485 .links = { SC7280_SLAVE_MNOC_HF_MEM_NOC },
0486 };
0487
0488 static struct qcom_icc_node qhm_nsp_noc_config = {
0489 .name = "qhm_nsp_noc_config",
0490 .id = SC7280_MASTER_CDSP_NOC_CFG,
0491 .channels = 1,
0492 .buswidth = 4,
0493 .num_links = 1,
0494 .links = { SC7280_SLAVE_SERVICE_NSP_NOC },
0495 };
0496
0497 static struct qcom_icc_node qxm_nsp = {
0498 .name = "qxm_nsp",
0499 .id = SC7280_MASTER_CDSP_PROC,
0500 .channels = 2,
0501 .buswidth = 32,
0502 .num_links = 1,
0503 .links = { SC7280_SLAVE_CDSP_MEM_NOC },
0504 };
0505
0506 static struct qcom_icc_node qnm_aggre1_noc = {
0507 .name = "qnm_aggre1_noc",
0508 .id = SC7280_MASTER_A1NOC_SNOC,
0509 .channels = 1,
0510 .buswidth = 16,
0511 .num_links = 1,
0512 .links = { SC7280_SLAVE_SNOC_GEM_NOC_SF },
0513 };
0514
0515 static struct qcom_icc_node qnm_aggre2_noc = {
0516 .name = "qnm_aggre2_noc",
0517 .id = SC7280_MASTER_A2NOC_SNOC,
0518 .channels = 1,
0519 .buswidth = 16,
0520 .num_links = 1,
0521 .links = { SC7280_SLAVE_SNOC_GEM_NOC_SF },
0522 };
0523
0524 static struct qcom_icc_node qnm_snoc_cfg = {
0525 .name = "qnm_snoc_cfg",
0526 .id = SC7280_MASTER_SNOC_CFG,
0527 .channels = 1,
0528 .buswidth = 4,
0529 .num_links = 1,
0530 .links = { SC7280_SLAVE_SERVICE_SNOC },
0531 };
0532
0533 static struct qcom_icc_node qxm_pimem = {
0534 .name = "qxm_pimem",
0535 .id = SC7280_MASTER_PIMEM,
0536 .channels = 1,
0537 .buswidth = 8,
0538 .num_links = 1,
0539 .links = { SC7280_SLAVE_SNOC_GEM_NOC_GC },
0540 };
0541
0542 static struct qcom_icc_node xm_gic = {
0543 .name = "xm_gic",
0544 .id = SC7280_MASTER_GIC,
0545 .channels = 1,
0546 .buswidth = 8,
0547 .num_links = 1,
0548 .links = { SC7280_SLAVE_SNOC_GEM_NOC_GC },
0549 };
0550
0551 static struct qcom_icc_node qns_a1noc_snoc = {
0552 .name = "qns_a1noc_snoc",
0553 .id = SC7280_SLAVE_A1NOC_SNOC,
0554 .channels = 1,
0555 .buswidth = 16,
0556 .num_links = 1,
0557 .links = { SC7280_MASTER_A1NOC_SNOC },
0558 };
0559
0560 static struct qcom_icc_node srvc_aggre1_noc = {
0561 .name = "srvc_aggre1_noc",
0562 .id = SC7280_SLAVE_SERVICE_A1NOC,
0563 .channels = 1,
0564 .buswidth = 4,
0565 .num_links = 0,
0566 };
0567
0568 static struct qcom_icc_node qns_a2noc_snoc = {
0569 .name = "qns_a2noc_snoc",
0570 .id = SC7280_SLAVE_A2NOC_SNOC,
0571 .channels = 1,
0572 .buswidth = 16,
0573 .num_links = 1,
0574 .links = { SC7280_MASTER_A2NOC_SNOC },
0575 };
0576
0577 static struct qcom_icc_node qns_pcie_mem_noc = {
0578 .name = "qns_pcie_mem_noc",
0579 .id = SC7280_SLAVE_ANOC_PCIE_GEM_NOC,
0580 .channels = 1,
0581 .buswidth = 16,
0582 .num_links = 1,
0583 .links = { SC7280_MASTER_ANOC_PCIE_GEM_NOC },
0584 };
0585
0586 static struct qcom_icc_node srvc_aggre2_noc = {
0587 .name = "srvc_aggre2_noc",
0588 .id = SC7280_SLAVE_SERVICE_A2NOC,
0589 .channels = 1,
0590 .buswidth = 4,
0591 .num_links = 0,
0592 };
0593
0594 static struct qcom_icc_node qup0_core_slave = {
0595 .name = "qup0_core_slave",
0596 .id = SC7280_SLAVE_QUP_CORE_0,
0597 .channels = 1,
0598 .buswidth = 4,
0599 .num_links = 0,
0600 };
0601
0602 static struct qcom_icc_node qup1_core_slave = {
0603 .name = "qup1_core_slave",
0604 .id = SC7280_SLAVE_QUP_CORE_1,
0605 .channels = 1,
0606 .buswidth = 4,
0607 .num_links = 0,
0608 };
0609
0610 static struct qcom_icc_node qhs_ahb2phy0 = {
0611 .name = "qhs_ahb2phy0",
0612 .id = SC7280_SLAVE_AHB2PHY_SOUTH,
0613 .channels = 1,
0614 .buswidth = 4,
0615 .num_links = 0,
0616 };
0617
0618 static struct qcom_icc_node qhs_ahb2phy1 = {
0619 .name = "qhs_ahb2phy1",
0620 .id = SC7280_SLAVE_AHB2PHY_NORTH,
0621 .channels = 1,
0622 .buswidth = 4,
0623 .num_links = 0,
0624 };
0625
0626 static struct qcom_icc_node qhs_camera_cfg = {
0627 .name = "qhs_camera_cfg",
0628 .id = SC7280_SLAVE_CAMERA_CFG,
0629 .channels = 1,
0630 .buswidth = 4,
0631 .num_links = 0,
0632 };
0633
0634 static struct qcom_icc_node qhs_clk_ctl = {
0635 .name = "qhs_clk_ctl",
0636 .id = SC7280_SLAVE_CLK_CTL,
0637 .channels = 1,
0638 .buswidth = 4,
0639 .num_links = 0,
0640 };
0641
0642 static struct qcom_icc_node qhs_compute_cfg = {
0643 .name = "qhs_compute_cfg",
0644 .id = SC7280_SLAVE_CDSP_CFG,
0645 .channels = 1,
0646 .buswidth = 4,
0647 .num_links = 1,
0648 .links = { SC7280_MASTER_CDSP_NOC_CFG },
0649 };
0650
0651 static struct qcom_icc_node qhs_cpr_cx = {
0652 .name = "qhs_cpr_cx",
0653 .id = SC7280_SLAVE_RBCPR_CX_CFG,
0654 .channels = 1,
0655 .buswidth = 4,
0656 .num_links = 0,
0657 };
0658
0659 static struct qcom_icc_node qhs_cpr_mx = {
0660 .name = "qhs_cpr_mx",
0661 .id = SC7280_SLAVE_RBCPR_MX_CFG,
0662 .channels = 1,
0663 .buswidth = 4,
0664 .num_links = 0,
0665 };
0666
0667 static struct qcom_icc_node qhs_crypto0_cfg = {
0668 .name = "qhs_crypto0_cfg",
0669 .id = SC7280_SLAVE_CRYPTO_0_CFG,
0670 .channels = 1,
0671 .buswidth = 4,
0672 .num_links = 0,
0673 };
0674
0675 static struct qcom_icc_node qhs_cx_rdpm = {
0676 .name = "qhs_cx_rdpm",
0677 .id = SC7280_SLAVE_CX_RDPM,
0678 .channels = 1,
0679 .buswidth = 4,
0680 .num_links = 0,
0681 };
0682
0683 static struct qcom_icc_node qhs_dcc_cfg = {
0684 .name = "qhs_dcc_cfg",
0685 .id = SC7280_SLAVE_DCC_CFG,
0686 .channels = 1,
0687 .buswidth = 4,
0688 .num_links = 0,
0689 };
0690
0691 static struct qcom_icc_node qhs_display_cfg = {
0692 .name = "qhs_display_cfg",
0693 .id = SC7280_SLAVE_DISPLAY_CFG,
0694 .channels = 1,
0695 .buswidth = 4,
0696 .num_links = 0,
0697 };
0698
0699 static struct qcom_icc_node qhs_gpuss_cfg = {
0700 .name = "qhs_gpuss_cfg",
0701 .id = SC7280_SLAVE_GFX3D_CFG,
0702 .channels = 1,
0703 .buswidth = 8,
0704 .num_links = 0,
0705 };
0706
0707 static struct qcom_icc_node qhs_hwkm = {
0708 .name = "qhs_hwkm",
0709 .id = SC7280_SLAVE_HWKM,
0710 .channels = 1,
0711 .buswidth = 4,
0712 .num_links = 0,
0713 };
0714
0715 static struct qcom_icc_node qhs_imem_cfg = {
0716 .name = "qhs_imem_cfg",
0717 .id = SC7280_SLAVE_IMEM_CFG,
0718 .channels = 1,
0719 .buswidth = 4,
0720 .num_links = 0,
0721 };
0722
0723 static struct qcom_icc_node qhs_ipa = {
0724 .name = "qhs_ipa",
0725 .id = SC7280_SLAVE_IPA_CFG,
0726 .channels = 1,
0727 .buswidth = 4,
0728 .num_links = 0,
0729 };
0730
0731 static struct qcom_icc_node qhs_ipc_router = {
0732 .name = "qhs_ipc_router",
0733 .id = SC7280_SLAVE_IPC_ROUTER_CFG,
0734 .channels = 1,
0735 .buswidth = 4,
0736 .num_links = 0,
0737 };
0738
0739 static struct qcom_icc_node qhs_lpass_cfg = {
0740 .name = "qhs_lpass_cfg",
0741 .id = SC7280_SLAVE_LPASS,
0742 .channels = 1,
0743 .buswidth = 4,
0744 .num_links = 1,
0745 .links = { SC7280_MASTER_CNOC_LPASS_AG_NOC },
0746 };
0747
0748 static struct qcom_icc_node qhs_mss_cfg = {
0749 .name = "qhs_mss_cfg",
0750 .id = SC7280_SLAVE_CNOC_MSS,
0751 .channels = 1,
0752 .buswidth = 4,
0753 .num_links = 0,
0754 };
0755
0756 static struct qcom_icc_node qhs_mx_rdpm = {
0757 .name = "qhs_mx_rdpm",
0758 .id = SC7280_SLAVE_MX_RDPM,
0759 .channels = 1,
0760 .buswidth = 4,
0761 .num_links = 0,
0762 };
0763
0764 static struct qcom_icc_node qhs_pcie0_cfg = {
0765 .name = "qhs_pcie0_cfg",
0766 .id = SC7280_SLAVE_PCIE_0_CFG,
0767 .channels = 1,
0768 .buswidth = 4,
0769 .num_links = 0,
0770 };
0771
0772 static struct qcom_icc_node qhs_pcie1_cfg = {
0773 .name = "qhs_pcie1_cfg",
0774 .id = SC7280_SLAVE_PCIE_1_CFG,
0775 .channels = 1,
0776 .buswidth = 4,
0777 .num_links = 0,
0778 };
0779
0780 static struct qcom_icc_node qhs_pdm = {
0781 .name = "qhs_pdm",
0782 .id = SC7280_SLAVE_PDM,
0783 .channels = 1,
0784 .buswidth = 4,
0785 .num_links = 0,
0786 };
0787
0788 static struct qcom_icc_node qhs_pimem_cfg = {
0789 .name = "qhs_pimem_cfg",
0790 .id = SC7280_SLAVE_PIMEM_CFG,
0791 .channels = 1,
0792 .buswidth = 4,
0793 .num_links = 0,
0794 };
0795
0796 static struct qcom_icc_node qhs_pka_wrapper_cfg = {
0797 .name = "qhs_pka_wrapper_cfg",
0798 .id = SC7280_SLAVE_PKA_WRAPPER_CFG,
0799 .channels = 1,
0800 .buswidth = 4,
0801 .num_links = 0,
0802 };
0803
0804 static struct qcom_icc_node qhs_pmu_wrapper_cfg = {
0805 .name = "qhs_pmu_wrapper_cfg",
0806 .id = SC7280_SLAVE_PMU_WRAPPER_CFG,
0807 .channels = 1,
0808 .buswidth = 4,
0809 .num_links = 0,
0810 };
0811
0812 static struct qcom_icc_node qhs_qdss_cfg = {
0813 .name = "qhs_qdss_cfg",
0814 .id = SC7280_SLAVE_QDSS_CFG,
0815 .channels = 1,
0816 .buswidth = 4,
0817 .num_links = 0,
0818 };
0819
0820 static struct qcom_icc_node qhs_qspi = {
0821 .name = "qhs_qspi",
0822 .id = SC7280_SLAVE_QSPI_0,
0823 .channels = 1,
0824 .buswidth = 4,
0825 .num_links = 0,
0826 };
0827
0828 static struct qcom_icc_node qhs_qup0 = {
0829 .name = "qhs_qup0",
0830 .id = SC7280_SLAVE_QUP_0,
0831 .channels = 1,
0832 .buswidth = 4,
0833 .num_links = 0,
0834 };
0835
0836 static struct qcom_icc_node qhs_qup1 = {
0837 .name = "qhs_qup1",
0838 .id = SC7280_SLAVE_QUP_1,
0839 .channels = 1,
0840 .buswidth = 4,
0841 .num_links = 0,
0842 };
0843
0844 static struct qcom_icc_node qhs_sdc1 = {
0845 .name = "qhs_sdc1",
0846 .id = SC7280_SLAVE_SDCC_1,
0847 .channels = 1,
0848 .buswidth = 4,
0849 .num_links = 0,
0850 };
0851
0852 static struct qcom_icc_node qhs_sdc2 = {
0853 .name = "qhs_sdc2",
0854 .id = SC7280_SLAVE_SDCC_2,
0855 .channels = 1,
0856 .buswidth = 4,
0857 .num_links = 0,
0858 };
0859
0860 static struct qcom_icc_node qhs_sdc4 = {
0861 .name = "qhs_sdc4",
0862 .id = SC7280_SLAVE_SDCC_4,
0863 .channels = 1,
0864 .buswidth = 4,
0865 .num_links = 0,
0866 };
0867
0868 static struct qcom_icc_node qhs_security = {
0869 .name = "qhs_security",
0870 .id = SC7280_SLAVE_SECURITY,
0871 .channels = 1,
0872 .buswidth = 4,
0873 .num_links = 0,
0874 };
0875
0876 static struct qcom_icc_node qhs_tcsr = {
0877 .name = "qhs_tcsr",
0878 .id = SC7280_SLAVE_TCSR,
0879 .channels = 1,
0880 .buswidth = 4,
0881 .num_links = 0,
0882 };
0883
0884 static struct qcom_icc_node qhs_tlmm = {
0885 .name = "qhs_tlmm",
0886 .id = SC7280_SLAVE_TLMM,
0887 .channels = 1,
0888 .buswidth = 4,
0889 .num_links = 0,
0890 };
0891
0892 static struct qcom_icc_node qhs_ufs_mem_cfg = {
0893 .name = "qhs_ufs_mem_cfg",
0894 .id = SC7280_SLAVE_UFS_MEM_CFG,
0895 .channels = 1,
0896 .buswidth = 4,
0897 .num_links = 0,
0898 };
0899
0900 static struct qcom_icc_node qhs_usb2 = {
0901 .name = "qhs_usb2",
0902 .id = SC7280_SLAVE_USB2,
0903 .channels = 1,
0904 .buswidth = 4,
0905 .num_links = 0,
0906 };
0907
0908 static struct qcom_icc_node qhs_usb3_0 = {
0909 .name = "qhs_usb3_0",
0910 .id = SC7280_SLAVE_USB3_0,
0911 .channels = 1,
0912 .buswidth = 4,
0913 .num_links = 0,
0914 };
0915
0916 static struct qcom_icc_node qhs_venus_cfg = {
0917 .name = "qhs_venus_cfg",
0918 .id = SC7280_SLAVE_VENUS_CFG,
0919 .channels = 1,
0920 .buswidth = 4,
0921 .num_links = 0,
0922 };
0923
0924 static struct qcom_icc_node qhs_vsense_ctrl_cfg = {
0925 .name = "qhs_vsense_ctrl_cfg",
0926 .id = SC7280_SLAVE_VSENSE_CTRL_CFG,
0927 .channels = 1,
0928 .buswidth = 4,
0929 .num_links = 0,
0930 };
0931
0932 static struct qcom_icc_node qns_a1_noc_cfg = {
0933 .name = "qns_a1_noc_cfg",
0934 .id = SC7280_SLAVE_A1NOC_CFG,
0935 .channels = 1,
0936 .buswidth = 4,
0937 .num_links = 1,
0938 .links = { SC7280_MASTER_A1NOC_CFG },
0939 };
0940
0941 static struct qcom_icc_node qns_a2_noc_cfg = {
0942 .name = "qns_a2_noc_cfg",
0943 .id = SC7280_SLAVE_A2NOC_CFG,
0944 .channels = 1,
0945 .buswidth = 4,
0946 .num_links = 1,
0947 .links = { SC7280_MASTER_A2NOC_CFG },
0948 };
0949
0950 static struct qcom_icc_node qns_cnoc2_cnoc3 = {
0951 .name = "qns_cnoc2_cnoc3",
0952 .id = SC7280_SLAVE_CNOC2_CNOC3,
0953 .channels = 1,
0954 .buswidth = 8,
0955 .num_links = 1,
0956 .links = { SC7280_MASTER_CNOC2_CNOC3 },
0957 };
0958
0959 static struct qcom_icc_node qns_mnoc_cfg = {
0960 .name = "qns_mnoc_cfg",
0961 .id = SC7280_SLAVE_CNOC_MNOC_CFG,
0962 .channels = 1,
0963 .buswidth = 4,
0964 .num_links = 1,
0965 .links = { SC7280_MASTER_CNOC_MNOC_CFG },
0966 };
0967
0968 static struct qcom_icc_node qns_snoc_cfg = {
0969 .name = "qns_snoc_cfg",
0970 .id = SC7280_SLAVE_SNOC_CFG,
0971 .channels = 1,
0972 .buswidth = 4,
0973 .num_links = 1,
0974 .links = { SC7280_MASTER_SNOC_CFG },
0975 };
0976
0977 static struct qcom_icc_node qhs_aoss = {
0978 .name = "qhs_aoss",
0979 .id = SC7280_SLAVE_AOSS,
0980 .channels = 1,
0981 .buswidth = 4,
0982 .num_links = 0,
0983 };
0984
0985 static struct qcom_icc_node qhs_apss = {
0986 .name = "qhs_apss",
0987 .id = SC7280_SLAVE_APPSS,
0988 .channels = 1,
0989 .buswidth = 8,
0990 .num_links = 0,
0991 };
0992
0993 static struct qcom_icc_node qns_cnoc3_cnoc2 = {
0994 .name = "qns_cnoc3_cnoc2",
0995 .id = SC7280_SLAVE_CNOC3_CNOC2,
0996 .channels = 1,
0997 .buswidth = 8,
0998 .num_links = 1,
0999 .links = { SC7280_MASTER_CNOC3_CNOC2 },
1000 };
1001
1002 static struct qcom_icc_node qns_cnoc_a2noc = {
1003 .name = "qns_cnoc_a2noc",
1004 .id = SC7280_SLAVE_CNOC_A2NOC,
1005 .channels = 1,
1006 .buswidth = 8,
1007 .num_links = 1,
1008 .links = { SC7280_MASTER_CNOC_A2NOC },
1009 };
1010
1011 static struct qcom_icc_node qns_ddrss_cfg = {
1012 .name = "qns_ddrss_cfg",
1013 .id = SC7280_SLAVE_DDRSS_CFG,
1014 .channels = 1,
1015 .buswidth = 4,
1016 .num_links = 1,
1017 .links = { SC7280_MASTER_CNOC_DC_NOC },
1018 };
1019
1020 static struct qcom_icc_node qxs_boot_imem = {
1021 .name = "qxs_boot_imem",
1022 .id = SC7280_SLAVE_BOOT_IMEM,
1023 .channels = 1,
1024 .buswidth = 8,
1025 .num_links = 0,
1026 };
1027
1028 static struct qcom_icc_node qxs_imem = {
1029 .name = "qxs_imem",
1030 .id = SC7280_SLAVE_IMEM,
1031 .channels = 1,
1032 .buswidth = 8,
1033 .num_links = 0,
1034 };
1035
1036 static struct qcom_icc_node qxs_pimem = {
1037 .name = "qxs_pimem",
1038 .id = SC7280_SLAVE_PIMEM,
1039 .channels = 1,
1040 .buswidth = 8,
1041 .num_links = 0,
1042 };
1043
1044 static struct qcom_icc_node xs_pcie_0 = {
1045 .name = "xs_pcie_0",
1046 .id = SC7280_SLAVE_PCIE_0,
1047 .channels = 1,
1048 .buswidth = 8,
1049 .num_links = 0,
1050 };
1051
1052 static struct qcom_icc_node xs_pcie_1 = {
1053 .name = "xs_pcie_1",
1054 .id = SC7280_SLAVE_PCIE_1,
1055 .channels = 1,
1056 .buswidth = 8,
1057 .num_links = 0,
1058 };
1059
1060 static struct qcom_icc_node xs_qdss_stm = {
1061 .name = "xs_qdss_stm",
1062 .id = SC7280_SLAVE_QDSS_STM,
1063 .channels = 1,
1064 .buswidth = 4,
1065 .num_links = 0,
1066 };
1067
1068 static struct qcom_icc_node xs_sys_tcu_cfg = {
1069 .name = "xs_sys_tcu_cfg",
1070 .id = SC7280_SLAVE_TCU,
1071 .channels = 1,
1072 .buswidth = 8,
1073 .num_links = 0,
1074 };
1075
1076 static struct qcom_icc_node qhs_llcc = {
1077 .name = "qhs_llcc",
1078 .id = SC7280_SLAVE_LLCC_CFG,
1079 .channels = 1,
1080 .buswidth = 4,
1081 .num_links = 0,
1082 };
1083
1084 static struct qcom_icc_node qns_gemnoc = {
1085 .name = "qns_gemnoc",
1086 .id = SC7280_SLAVE_GEM_NOC_CFG,
1087 .channels = 1,
1088 .buswidth = 4,
1089 .num_links = 1,
1090 .links = { SC7280_MASTER_GEM_NOC_CFG },
1091 };
1092
1093 static struct qcom_icc_node qhs_mdsp_ms_mpu_cfg = {
1094 .name = "qhs_mdsp_ms_mpu_cfg",
1095 .id = SC7280_SLAVE_MSS_PROC_MS_MPU_CFG,
1096 .channels = 1,
1097 .buswidth = 4,
1098 .num_links = 0,
1099 };
1100
1101 static struct qcom_icc_node qhs_modem_ms_mpu_cfg = {
1102 .name = "qhs_modem_ms_mpu_cfg",
1103 .id = SC7280_SLAVE_MCDMA_MS_MPU_CFG,
1104 .channels = 1,
1105 .buswidth = 4,
1106 .num_links = 0,
1107 };
1108
1109 static struct qcom_icc_node qns_gem_noc_cnoc = {
1110 .name = "qns_gem_noc_cnoc",
1111 .id = SC7280_SLAVE_GEM_NOC_CNOC,
1112 .channels = 1,
1113 .buswidth = 16,
1114 .num_links = 1,
1115 .links = { SC7280_MASTER_GEM_NOC_CNOC },
1116 };
1117
1118 static struct qcom_icc_node qns_llcc = {
1119 .name = "qns_llcc",
1120 .id = SC7280_SLAVE_LLCC,
1121 .channels = 2,
1122 .buswidth = 16,
1123 .num_links = 1,
1124 .links = { SC7280_MASTER_LLCC },
1125 };
1126
1127 static struct qcom_icc_node qns_pcie = {
1128 .name = "qns_pcie",
1129 .id = SC7280_SLAVE_MEM_NOC_PCIE_SNOC,
1130 .channels = 1,
1131 .buswidth = 8,
1132 .num_links = 1,
1133 .links = { SC7280_MASTER_GEM_NOC_PCIE_SNOC },
1134 };
1135
1136 static struct qcom_icc_node srvc_even_gemnoc = {
1137 .name = "srvc_even_gemnoc",
1138 .id = SC7280_SLAVE_SERVICE_GEM_NOC_1,
1139 .channels = 1,
1140 .buswidth = 4,
1141 .num_links = 0,
1142 };
1143
1144 static struct qcom_icc_node srvc_odd_gemnoc = {
1145 .name = "srvc_odd_gemnoc",
1146 .id = SC7280_SLAVE_SERVICE_GEM_NOC_2,
1147 .channels = 1,
1148 .buswidth = 4,
1149 .num_links = 0,
1150 };
1151
1152 static struct qcom_icc_node srvc_sys_gemnoc = {
1153 .name = "srvc_sys_gemnoc",
1154 .id = SC7280_SLAVE_SERVICE_GEM_NOC,
1155 .channels = 1,
1156 .buswidth = 4,
1157 .num_links = 0,
1158 };
1159
1160 static struct qcom_icc_node qhs_lpass_core = {
1161 .name = "qhs_lpass_core",
1162 .id = SC7280_SLAVE_LPASS_CORE_CFG,
1163 .channels = 1,
1164 .buswidth = 4,
1165 .num_links = 0,
1166 };
1167
1168 static struct qcom_icc_node qhs_lpass_lpi = {
1169 .name = "qhs_lpass_lpi",
1170 .id = SC7280_SLAVE_LPASS_LPI_CFG,
1171 .channels = 1,
1172 .buswidth = 4,
1173 .num_links = 0,
1174 };
1175
1176 static struct qcom_icc_node qhs_lpass_mpu = {
1177 .name = "qhs_lpass_mpu",
1178 .id = SC7280_SLAVE_LPASS_MPU_CFG,
1179 .channels = 1,
1180 .buswidth = 4,
1181 .num_links = 0,
1182 };
1183
1184 static struct qcom_icc_node qhs_lpass_top = {
1185 .name = "qhs_lpass_top",
1186 .id = SC7280_SLAVE_LPASS_TOP_CFG,
1187 .channels = 1,
1188 .buswidth = 4,
1189 .num_links = 0,
1190 };
1191
1192 static struct qcom_icc_node srvc_niu_aml_noc = {
1193 .name = "srvc_niu_aml_noc",
1194 .id = SC7280_SLAVE_SERVICES_LPASS_AML_NOC,
1195 .channels = 1,
1196 .buswidth = 4,
1197 .num_links = 0,
1198 };
1199
1200 static struct qcom_icc_node srvc_niu_lpass_agnoc = {
1201 .name = "srvc_niu_lpass_agnoc",
1202 .id = SC7280_SLAVE_SERVICE_LPASS_AG_NOC,
1203 .channels = 1,
1204 .buswidth = 4,
1205 .num_links = 0,
1206 };
1207
1208 static struct qcom_icc_node ebi = {
1209 .name = "ebi",
1210 .id = SC7280_SLAVE_EBI1,
1211 .channels = 2,
1212 .buswidth = 4,
1213 .num_links = 0,
1214 };
1215
1216 static struct qcom_icc_node qns_mem_noc_hf = {
1217 .name = "qns_mem_noc_hf",
1218 .id = SC7280_SLAVE_MNOC_HF_MEM_NOC,
1219 .channels = 2,
1220 .buswidth = 32,
1221 .num_links = 1,
1222 .links = { SC7280_MASTER_MNOC_HF_MEM_NOC },
1223 };
1224
1225 static struct qcom_icc_node qns_mem_noc_sf = {
1226 .name = "qns_mem_noc_sf",
1227 .id = SC7280_SLAVE_MNOC_SF_MEM_NOC,
1228 .channels = 1,
1229 .buswidth = 32,
1230 .num_links = 1,
1231 .links = { SC7280_MASTER_MNOC_SF_MEM_NOC },
1232 };
1233
1234 static struct qcom_icc_node srvc_mnoc = {
1235 .name = "srvc_mnoc",
1236 .id = SC7280_SLAVE_SERVICE_MNOC,
1237 .channels = 1,
1238 .buswidth = 4,
1239 .num_links = 0,
1240 };
1241
1242 static struct qcom_icc_node qns_nsp_gemnoc = {
1243 .name = "qns_nsp_gemnoc",
1244 .id = SC7280_SLAVE_CDSP_MEM_NOC,
1245 .channels = 2,
1246 .buswidth = 32,
1247 .num_links = 1,
1248 .links = { SC7280_MASTER_COMPUTE_NOC },
1249 };
1250
1251 static struct qcom_icc_node service_nsp_noc = {
1252 .name = "service_nsp_noc",
1253 .id = SC7280_SLAVE_SERVICE_NSP_NOC,
1254 .channels = 1,
1255 .buswidth = 4,
1256 .num_links = 0,
1257 };
1258
1259 static struct qcom_icc_node qns_gemnoc_gc = {
1260 .name = "qns_gemnoc_gc",
1261 .id = SC7280_SLAVE_SNOC_GEM_NOC_GC,
1262 .channels = 1,
1263 .buswidth = 8,
1264 .num_links = 1,
1265 .links = { SC7280_MASTER_SNOC_GC_MEM_NOC },
1266 };
1267
1268 static struct qcom_icc_node qns_gemnoc_sf = {
1269 .name = "qns_gemnoc_sf",
1270 .id = SC7280_SLAVE_SNOC_GEM_NOC_SF,
1271 .channels = 1,
1272 .buswidth = 16,
1273 .num_links = 1,
1274 .links = { SC7280_MASTER_SNOC_SF_MEM_NOC },
1275 };
1276
1277 static struct qcom_icc_node srvc_snoc = {
1278 .name = "srvc_snoc",
1279 .id = SC7280_SLAVE_SERVICE_SNOC,
1280 .channels = 1,
1281 .buswidth = 4,
1282 .num_links = 0,
1283 };
1284
1285 static struct qcom_icc_bcm bcm_acv = {
1286 .name = "ACV",
1287 .num_nodes = 1,
1288 .nodes = { &ebi },
1289 };
1290
1291 static struct qcom_icc_bcm bcm_ce0 = {
1292 .name = "CE0",
1293 .num_nodes = 1,
1294 .nodes = { &qxm_crypto },
1295 };
1296
1297 static struct qcom_icc_bcm bcm_cn0 = {
1298 .name = "CN0",
1299 .keepalive = true,
1300 .num_nodes = 2,
1301 .nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie },
1302 };
1303
1304 static struct qcom_icc_bcm bcm_cn1 = {
1305 .name = "CN1",
1306 .num_nodes = 47,
1307 .nodes = { &qnm_cnoc3_cnoc2, &xm_qdss_dap,
1308 &qhs_ahb2phy0, &qhs_ahb2phy1,
1309 &qhs_camera_cfg, &qhs_clk_ctl,
1310 &qhs_compute_cfg, &qhs_cpr_cx,
1311 &qhs_cpr_mx, &qhs_crypto0_cfg,
1312 &qhs_cx_rdpm, &qhs_dcc_cfg,
1313 &qhs_display_cfg, &qhs_gpuss_cfg,
1314 &qhs_hwkm, &qhs_imem_cfg,
1315 &qhs_ipa, &qhs_ipc_router,
1316 &qhs_mss_cfg, &qhs_mx_rdpm,
1317 &qhs_pcie0_cfg, &qhs_pcie1_cfg,
1318 &qhs_pimem_cfg, &qhs_pka_wrapper_cfg,
1319 &qhs_pmu_wrapper_cfg, &qhs_qdss_cfg,
1320 &qhs_qup0, &qhs_qup1,
1321 &qhs_security, &qhs_tcsr,
1322 &qhs_tlmm, &qhs_ufs_mem_cfg, &qhs_usb2,
1323 &qhs_usb3_0, &qhs_venus_cfg,
1324 &qhs_vsense_ctrl_cfg, &qns_a1_noc_cfg,
1325 &qns_a2_noc_cfg, &qns_cnoc2_cnoc3,
1326 &qns_mnoc_cfg, &qns_snoc_cfg,
1327 &qnm_cnoc2_cnoc3, &qhs_aoss,
1328 &qhs_apss, &qns_cnoc3_cnoc2,
1329 &qns_cnoc_a2noc, &qns_ddrss_cfg },
1330 };
1331
1332 static struct qcom_icc_bcm bcm_cn2 = {
1333 .name = "CN2",
1334 .num_nodes = 6,
1335 .nodes = { &qhs_lpass_cfg, &qhs_pdm,
1336 &qhs_qspi, &qhs_sdc1,
1337 &qhs_sdc2, &qhs_sdc4 },
1338 };
1339
1340 static struct qcom_icc_bcm bcm_co0 = {
1341 .name = "CO0",
1342 .num_nodes = 1,
1343 .nodes = { &qns_nsp_gemnoc },
1344 };
1345
1346 static struct qcom_icc_bcm bcm_co3 = {
1347 .name = "CO3",
1348 .num_nodes = 1,
1349 .nodes = { &qxm_nsp },
1350 };
1351
1352 static struct qcom_icc_bcm bcm_mc0 = {
1353 .name = "MC0",
1354 .keepalive = true,
1355 .num_nodes = 1,
1356 .nodes = { &ebi },
1357 };
1358
1359 static struct qcom_icc_bcm bcm_mm0 = {
1360 .name = "MM0",
1361 .keepalive = true,
1362 .num_nodes = 1,
1363 .nodes = { &qns_mem_noc_hf },
1364 };
1365
1366 static struct qcom_icc_bcm bcm_mm1 = {
1367 .name = "MM1",
1368 .num_nodes = 2,
1369 .nodes = { &qxm_camnoc_hf, &qxm_mdp0 },
1370 };
1371
1372 static struct qcom_icc_bcm bcm_mm4 = {
1373 .name = "MM4",
1374 .num_nodes = 1,
1375 .nodes = { &qns_mem_noc_sf },
1376 };
1377
1378 static struct qcom_icc_bcm bcm_mm5 = {
1379 .name = "MM5",
1380 .num_nodes = 3,
1381 .nodes = { &qnm_video0, &qxm_camnoc_icp,
1382 &qxm_camnoc_sf },
1383 };
1384
1385 static struct qcom_icc_bcm bcm_qup0 = {
1386 .name = "QUP0",
1387 .vote_scale = 1,
1388 .num_nodes = 1,
1389 .nodes = { &qup0_core_slave },
1390 };
1391
1392 static struct qcom_icc_bcm bcm_qup1 = {
1393 .name = "QUP1",
1394 .vote_scale = 1,
1395 .num_nodes = 1,
1396 .nodes = { &qup1_core_slave },
1397 };
1398
1399 static struct qcom_icc_bcm bcm_sh0 = {
1400 .name = "SH0",
1401 .keepalive = true,
1402 .num_nodes = 1,
1403 .nodes = { &qns_llcc },
1404 };
1405
1406 static struct qcom_icc_bcm bcm_sh2 = {
1407 .name = "SH2",
1408 .num_nodes = 2,
1409 .nodes = { &alm_gpu_tcu, &alm_sys_tcu },
1410 };
1411
1412 static struct qcom_icc_bcm bcm_sh3 = {
1413 .name = "SH3",
1414 .num_nodes = 1,
1415 .nodes = { &qnm_cmpnoc },
1416 };
1417
1418 static struct qcom_icc_bcm bcm_sh4 = {
1419 .name = "SH4",
1420 .num_nodes = 1,
1421 .nodes = { &chm_apps },
1422 };
1423
1424 static struct qcom_icc_bcm bcm_sn0 = {
1425 .name = "SN0",
1426 .keepalive = true,
1427 .num_nodes = 1,
1428 .nodes = { &qns_gemnoc_sf },
1429 };
1430
1431 static struct qcom_icc_bcm bcm_sn2 = {
1432 .name = "SN2",
1433 .num_nodes = 1,
1434 .nodes = { &qns_gemnoc_gc },
1435 };
1436
1437 static struct qcom_icc_bcm bcm_sn3 = {
1438 .name = "SN3",
1439 .num_nodes = 1,
1440 .nodes = { &qxs_pimem },
1441 };
1442
1443 static struct qcom_icc_bcm bcm_sn4 = {
1444 .name = "SN4",
1445 .num_nodes = 1,
1446 .nodes = { &xs_qdss_stm },
1447 };
1448
1449 static struct qcom_icc_bcm bcm_sn5 = {
1450 .name = "SN5",
1451 .num_nodes = 1,
1452 .nodes = { &xm_pcie3_0 },
1453 };
1454
1455 static struct qcom_icc_bcm bcm_sn6 = {
1456 .name = "SN6",
1457 .num_nodes = 1,
1458 .nodes = { &xm_pcie3_1 },
1459 };
1460
1461 static struct qcom_icc_bcm bcm_sn7 = {
1462 .name = "SN7",
1463 .num_nodes = 1,
1464 .nodes = { &qnm_aggre1_noc },
1465 };
1466
1467 static struct qcom_icc_bcm bcm_sn8 = {
1468 .name = "SN8",
1469 .num_nodes = 1,
1470 .nodes = { &qnm_aggre2_noc },
1471 };
1472
1473 static struct qcom_icc_bcm bcm_sn14 = {
1474 .name = "SN14",
1475 .num_nodes = 1,
1476 .nodes = { &qns_pcie_mem_noc },
1477 };
1478
1479 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
1480 &bcm_sn5,
1481 &bcm_sn6,
1482 &bcm_sn14,
1483 };
1484
1485 static struct qcom_icc_node * const aggre1_noc_nodes[] = {
1486 [MASTER_QSPI_0] = &qhm_qspi,
1487 [MASTER_QUP_0] = &qhm_qup0,
1488 [MASTER_QUP_1] = &qhm_qup1,
1489 [MASTER_A1NOC_CFG] = &qnm_a1noc_cfg,
1490 [MASTER_PCIE_0] = &xm_pcie3_0,
1491 [MASTER_PCIE_1] = &xm_pcie3_1,
1492 [MASTER_SDCC_1] = &xm_sdc1,
1493 [MASTER_SDCC_2] = &xm_sdc2,
1494 [MASTER_SDCC_4] = &xm_sdc4,
1495 [MASTER_UFS_MEM] = &xm_ufs_mem,
1496 [MASTER_USB2] = &xm_usb2,
1497 [MASTER_USB3_0] = &xm_usb3_0,
1498 [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
1499 [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc,
1500 [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc,
1501 };
1502
1503 static const struct qcom_icc_desc sc7280_aggre1_noc = {
1504 .nodes = aggre1_noc_nodes,
1505 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
1506 .bcms = aggre1_noc_bcms,
1507 .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
1508 };
1509
1510 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
1511 &bcm_ce0,
1512 };
1513
1514 static struct qcom_icc_node * const aggre2_noc_nodes[] = {
1515 [MASTER_QDSS_BAM] = &qhm_qdss_bam,
1516 [MASTER_A2NOC_CFG] = &qnm_a2noc_cfg,
1517 [MASTER_CNOC_A2NOC] = &qnm_cnoc_datapath,
1518 [MASTER_CRYPTO] = &qxm_crypto,
1519 [MASTER_IPA] = &qxm_ipa,
1520 [MASTER_QDSS_ETR] = &xm_qdss_etr,
1521 [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
1522 [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc,
1523 };
1524
1525 static const struct qcom_icc_desc sc7280_aggre2_noc = {
1526 .nodes = aggre2_noc_nodes,
1527 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
1528 .bcms = aggre2_noc_bcms,
1529 .num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
1530 };
1531
1532 static struct qcom_icc_bcm * const clk_virt_bcms[] = {
1533 &bcm_qup0,
1534 &bcm_qup1,
1535 };
1536
1537 static struct qcom_icc_node * const clk_virt_nodes[] = {
1538 [MASTER_QUP_CORE_0] = &qup0_core_master,
1539 [MASTER_QUP_CORE_1] = &qup1_core_master,
1540 [SLAVE_QUP_CORE_0] = &qup0_core_slave,
1541 [SLAVE_QUP_CORE_1] = &qup1_core_slave,
1542 };
1543
1544 static const struct qcom_icc_desc sc7280_clk_virt = {
1545 .nodes = clk_virt_nodes,
1546 .num_nodes = ARRAY_SIZE(clk_virt_nodes),
1547 .bcms = clk_virt_bcms,
1548 .num_bcms = ARRAY_SIZE(clk_virt_bcms),
1549 };
1550
1551 static struct qcom_icc_bcm * const cnoc2_bcms[] = {
1552 &bcm_cn1,
1553 &bcm_cn2,
1554 };
1555
1556 static struct qcom_icc_node * const cnoc2_nodes[] = {
1557 [MASTER_CNOC3_CNOC2] = &qnm_cnoc3_cnoc2,
1558 [MASTER_QDSS_DAP] = &xm_qdss_dap,
1559 [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0,
1560 [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1,
1561 [SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
1562 [SLAVE_CLK_CTL] = &qhs_clk_ctl,
1563 [SLAVE_CDSP_CFG] = &qhs_compute_cfg,
1564 [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
1565 [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx,
1566 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
1567 [SLAVE_CX_RDPM] = &qhs_cx_rdpm,
1568 [SLAVE_DCC_CFG] = &qhs_dcc_cfg,
1569 [SLAVE_DISPLAY_CFG] = &qhs_display_cfg,
1570 [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
1571 [SLAVE_HWKM] = &qhs_hwkm,
1572 [SLAVE_IMEM_CFG] = &qhs_imem_cfg,
1573 [SLAVE_IPA_CFG] = &qhs_ipa,
1574 [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
1575 [SLAVE_LPASS] = &qhs_lpass_cfg,
1576 [SLAVE_CNOC_MSS] = &qhs_mss_cfg,
1577 [SLAVE_MX_RDPM] = &qhs_mx_rdpm,
1578 [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
1579 [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
1580 [SLAVE_PDM] = &qhs_pdm,
1581 [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
1582 [SLAVE_PKA_WRAPPER_CFG] = &qhs_pka_wrapper_cfg,
1583 [SLAVE_PMU_WRAPPER_CFG] = &qhs_pmu_wrapper_cfg,
1584 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
1585 [SLAVE_QSPI_0] = &qhs_qspi,
1586 [SLAVE_QUP_0] = &qhs_qup0,
1587 [SLAVE_QUP_1] = &qhs_qup1,
1588 [SLAVE_SDCC_1] = &qhs_sdc1,
1589 [SLAVE_SDCC_2] = &qhs_sdc2,
1590 [SLAVE_SDCC_4] = &qhs_sdc4,
1591 [SLAVE_SECURITY] = &qhs_security,
1592 [SLAVE_TCSR] = &qhs_tcsr,
1593 [SLAVE_TLMM] = &qhs_tlmm,
1594 [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
1595 [SLAVE_USB2] = &qhs_usb2,
1596 [SLAVE_USB3_0] = &qhs_usb3_0,
1597 [SLAVE_VENUS_CFG] = &qhs_venus_cfg,
1598 [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg,
1599 [SLAVE_A1NOC_CFG] = &qns_a1_noc_cfg,
1600 [SLAVE_A2NOC_CFG] = &qns_a2_noc_cfg,
1601 [SLAVE_CNOC2_CNOC3] = &qns_cnoc2_cnoc3,
1602 [SLAVE_CNOC_MNOC_CFG] = &qns_mnoc_cfg,
1603 [SLAVE_SNOC_CFG] = &qns_snoc_cfg,
1604 };
1605
1606 static const struct qcom_icc_desc sc7280_cnoc2 = {
1607 .nodes = cnoc2_nodes,
1608 .num_nodes = ARRAY_SIZE(cnoc2_nodes),
1609 .bcms = cnoc2_bcms,
1610 .num_bcms = ARRAY_SIZE(cnoc2_bcms),
1611 };
1612
1613 static struct qcom_icc_bcm * const cnoc3_bcms[] = {
1614 &bcm_cn0,
1615 &bcm_cn1,
1616 &bcm_sn3,
1617 &bcm_sn4,
1618 };
1619
1620 static struct qcom_icc_node * const cnoc3_nodes[] = {
1621 [MASTER_CNOC2_CNOC3] = &qnm_cnoc2_cnoc3,
1622 [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc,
1623 [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie,
1624 [SLAVE_AOSS] = &qhs_aoss,
1625 [SLAVE_APPSS] = &qhs_apss,
1626 [SLAVE_CNOC3_CNOC2] = &qns_cnoc3_cnoc2,
1627 [SLAVE_CNOC_A2NOC] = &qns_cnoc_a2noc,
1628 [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg,
1629 [SLAVE_BOOT_IMEM] = &qxs_boot_imem,
1630 [SLAVE_IMEM] = &qxs_imem,
1631 [SLAVE_PIMEM] = &qxs_pimem,
1632 [SLAVE_PCIE_0] = &xs_pcie_0,
1633 [SLAVE_PCIE_1] = &xs_pcie_1,
1634 [SLAVE_QDSS_STM] = &xs_qdss_stm,
1635 [SLAVE_TCU] = &xs_sys_tcu_cfg,
1636 };
1637
1638 static const struct qcom_icc_desc sc7280_cnoc3 = {
1639 .nodes = cnoc3_nodes,
1640 .num_nodes = ARRAY_SIZE(cnoc3_nodes),
1641 .bcms = cnoc3_bcms,
1642 .num_bcms = ARRAY_SIZE(cnoc3_bcms),
1643 };
1644
1645 static struct qcom_icc_bcm * const dc_noc_bcms[] = {
1646 };
1647
1648 static struct qcom_icc_node * const dc_noc_nodes[] = {
1649 [MASTER_CNOC_DC_NOC] = &qnm_cnoc_dc_noc,
1650 [SLAVE_LLCC_CFG] = &qhs_llcc,
1651 [SLAVE_GEM_NOC_CFG] = &qns_gemnoc,
1652 };
1653
1654 static const struct qcom_icc_desc sc7280_dc_noc = {
1655 .nodes = dc_noc_nodes,
1656 .num_nodes = ARRAY_SIZE(dc_noc_nodes),
1657 .bcms = dc_noc_bcms,
1658 .num_bcms = ARRAY_SIZE(dc_noc_bcms),
1659 };
1660
1661 static struct qcom_icc_bcm * const gem_noc_bcms[] = {
1662 &bcm_sh0,
1663 &bcm_sh2,
1664 &bcm_sh3,
1665 &bcm_sh4,
1666 };
1667
1668 static struct qcom_icc_node * const gem_noc_nodes[] = {
1669 [MASTER_GPU_TCU] = &alm_gpu_tcu,
1670 [MASTER_SYS_TCU] = &alm_sys_tcu,
1671 [MASTER_APPSS_PROC] = &chm_apps,
1672 [MASTER_COMPUTE_NOC] = &qnm_cmpnoc,
1673 [MASTER_GEM_NOC_CFG] = &qnm_gemnoc_cfg,
1674 [MASTER_GFX3D] = &qnm_gpu,
1675 [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
1676 [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
1677 [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie,
1678 [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
1679 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
1680 [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg,
1681 [SLAVE_MCDMA_MS_MPU_CFG] = &qhs_modem_ms_mpu_cfg,
1682 [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc,
1683 [SLAVE_LLCC] = &qns_llcc,
1684 [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie,
1685 [SLAVE_SERVICE_GEM_NOC_1] = &srvc_even_gemnoc,
1686 [SLAVE_SERVICE_GEM_NOC_2] = &srvc_odd_gemnoc,
1687 [SLAVE_SERVICE_GEM_NOC] = &srvc_sys_gemnoc,
1688 };
1689
1690 static const struct qcom_icc_desc sc7280_gem_noc = {
1691 .nodes = gem_noc_nodes,
1692 .num_nodes = ARRAY_SIZE(gem_noc_nodes),
1693 .bcms = gem_noc_bcms,
1694 .num_bcms = ARRAY_SIZE(gem_noc_bcms),
1695 };
1696
1697 static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = {
1698 };
1699
1700 static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
1701 [MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc,
1702 [SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core,
1703 [SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi,
1704 [SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu,
1705 [SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top,
1706 [SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc,
1707 [SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
1708 };
1709
1710 static const struct qcom_icc_desc sc7280_lpass_ag_noc = {
1711 .nodes = lpass_ag_noc_nodes,
1712 .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
1713 .bcms = lpass_ag_noc_bcms,
1714 .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms),
1715 };
1716
1717 static struct qcom_icc_bcm * const mc_virt_bcms[] = {
1718 &bcm_acv,
1719 &bcm_mc0,
1720 };
1721
1722 static struct qcom_icc_node * const mc_virt_nodes[] = {
1723 [MASTER_LLCC] = &llcc_mc,
1724 [SLAVE_EBI1] = &ebi,
1725 };
1726
1727 static const struct qcom_icc_desc sc7280_mc_virt = {
1728 .nodes = mc_virt_nodes,
1729 .num_nodes = ARRAY_SIZE(mc_virt_nodes),
1730 .bcms = mc_virt_bcms,
1731 .num_bcms = ARRAY_SIZE(mc_virt_bcms),
1732 };
1733
1734 static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
1735 &bcm_mm0,
1736 &bcm_mm1,
1737 &bcm_mm4,
1738 &bcm_mm5,
1739 };
1740
1741 static struct qcom_icc_node * const mmss_noc_nodes[] = {
1742 [MASTER_CNOC_MNOC_CFG] = &qnm_mnoc_cfg,
1743 [MASTER_VIDEO_P0] = &qnm_video0,
1744 [MASTER_VIDEO_PROC] = &qnm_video_cpu,
1745 [MASTER_CAMNOC_HF] = &qxm_camnoc_hf,
1746 [MASTER_CAMNOC_ICP] = &qxm_camnoc_icp,
1747 [MASTER_CAMNOC_SF] = &qxm_camnoc_sf,
1748 [MASTER_MDP0] = &qxm_mdp0,
1749 [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
1750 [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
1751 [SLAVE_SERVICE_MNOC] = &srvc_mnoc,
1752 };
1753
1754 static const struct qcom_icc_desc sc7280_mmss_noc = {
1755 .nodes = mmss_noc_nodes,
1756 .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
1757 .bcms = mmss_noc_bcms,
1758 .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
1759 };
1760
1761 static struct qcom_icc_bcm * const nsp_noc_bcms[] = {
1762 &bcm_co0,
1763 &bcm_co3,
1764 };
1765
1766 static struct qcom_icc_node * const nsp_noc_nodes[] = {
1767 [MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config,
1768 [MASTER_CDSP_PROC] = &qxm_nsp,
1769 [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
1770 [SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
1771 };
1772
1773 static const struct qcom_icc_desc sc7280_nsp_noc = {
1774 .nodes = nsp_noc_nodes,
1775 .num_nodes = ARRAY_SIZE(nsp_noc_nodes),
1776 .bcms = nsp_noc_bcms,
1777 .num_bcms = ARRAY_SIZE(nsp_noc_bcms),
1778 };
1779
1780 static struct qcom_icc_bcm * const system_noc_bcms[] = {
1781 &bcm_sn0,
1782 &bcm_sn2,
1783 &bcm_sn7,
1784 &bcm_sn8,
1785 };
1786
1787 static struct qcom_icc_node * const system_noc_nodes[] = {
1788 [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
1789 [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
1790 [MASTER_SNOC_CFG] = &qnm_snoc_cfg,
1791 [MASTER_PIMEM] = &qxm_pimem,
1792 [MASTER_GIC] = &xm_gic,
1793 [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc,
1794 [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
1795 [SLAVE_SERVICE_SNOC] = &srvc_snoc,
1796 };
1797
1798 static const struct qcom_icc_desc sc7280_system_noc = {
1799 .nodes = system_noc_nodes,
1800 .num_nodes = ARRAY_SIZE(system_noc_nodes),
1801 .bcms = system_noc_bcms,
1802 .num_bcms = ARRAY_SIZE(system_noc_bcms),
1803 };
1804
1805 static const struct of_device_id qnoc_of_match[] = {
1806 { .compatible = "qcom,sc7280-aggre1-noc",
1807 .data = &sc7280_aggre1_noc},
1808 { .compatible = "qcom,sc7280-aggre2-noc",
1809 .data = &sc7280_aggre2_noc},
1810 { .compatible = "qcom,sc7280-clk-virt",
1811 .data = &sc7280_clk_virt},
1812 { .compatible = "qcom,sc7280-cnoc2",
1813 .data = &sc7280_cnoc2},
1814 { .compatible = "qcom,sc7280-cnoc3",
1815 .data = &sc7280_cnoc3},
1816 { .compatible = "qcom,sc7280-dc-noc",
1817 .data = &sc7280_dc_noc},
1818 { .compatible = "qcom,sc7280-gem-noc",
1819 .data = &sc7280_gem_noc},
1820 { .compatible = "qcom,sc7280-lpass-ag-noc",
1821 .data = &sc7280_lpass_ag_noc},
1822 { .compatible = "qcom,sc7280-mc-virt",
1823 .data = &sc7280_mc_virt},
1824 { .compatible = "qcom,sc7280-mmss-noc",
1825 .data = &sc7280_mmss_noc},
1826 { .compatible = "qcom,sc7280-nsp-noc",
1827 .data = &sc7280_nsp_noc},
1828 { .compatible = "qcom,sc7280-system-noc",
1829 .data = &sc7280_system_noc},
1830 { }
1831 };
1832 MODULE_DEVICE_TABLE(of, qnoc_of_match);
1833
1834 static struct platform_driver qnoc_driver = {
1835 .probe = qcom_icc_rpmh_probe,
1836 .remove = qcom_icc_rpmh_remove,
1837 .driver = {
1838 .name = "qnoc-sc7280",
1839 .of_match_table = qnoc_of_match,
1840 .sync_state = icc_sync_state,
1841 },
1842 };
1843 module_platform_driver(qnoc_driver);
1844
1845 MODULE_DESCRIPTION("SC7280 NoC driver");
1846 MODULE_LICENSE("GPL v2");