1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (c) 2020, The Linux Foundation. All rights reserved. 4 * 5 */ 6 7 #include <linux/device.h> 8 #include <linux/interconnect.h> 9 #include <linux/interconnect-provider.h> 10 #include <linux/mod_devicetable.h> 11 #include <linux/module.h> 12 #include <linux/platform_device.h> 13 #include <dt-bindings/interconnect/qcom,sm8150.h> 14 15 #include "bcm-voter.h" 16 #include "icc-rpmh.h" 17 #include "sm8150.h" 18 19 static struct qcom_icc_node qhm_a1noc_cfg = { 20 .name = "qhm_a1noc_cfg", 21 .id = SM8150_MASTER_A1NOC_CFG, 22 .channels = 1, 23 .buswidth = 4, 24 .num_links = 1, 25 .links = { SM8150_SLAVE_SERVICE_A1NOC }, 26 }; 27 28 static struct qcom_icc_node qhm_qup0 = { 29 .name = "qhm_qup0", 30 .id = SM8150_MASTER_QUP_0, 31 .channels = 1, 32 .buswidth = 4, 33 .num_links = 1, 34 .links = { SM8150_A1NOC_SNOC_SLV }, 35 }; 36 37 static struct qcom_icc_node xm_emac = { 38 .name = "xm_emac", 39 .id = SM8150_MASTER_EMAC, 40 .channels = 1, 41 .buswidth = 8, 42 .num_links = 1, 43 .links = { SM8150_A1NOC_SNOC_SLV }, 44 }; 45 46 static struct qcom_icc_node xm_ufs_mem = { 47 .name = "xm_ufs_mem", 48 .id = SM8150_MASTER_UFS_MEM, 49 .channels = 1, 50 .buswidth = 8, 51 .num_links = 1, 52 .links = { SM8150_A1NOC_SNOC_SLV }, 53 }; 54 55 static struct qcom_icc_node xm_usb3_0 = { 56 .name = "xm_usb3_0", 57 .id = SM8150_MASTER_USB3, 58 .channels = 1, 59 .buswidth = 8, 60 .num_links = 1, 61 .links = { SM8150_A1NOC_SNOC_SLV }, 62 }; 63 64 static struct qcom_icc_node xm_usb3_1 = { 65 .name = "xm_usb3_1", 66 .id = SM8150_MASTER_USB3_1, 67 .channels = 1, 68 .buswidth = 8, 69 .num_links = 1, 70 .links = { SM8150_A1NOC_SNOC_SLV }, 71 }; 72 73 static struct qcom_icc_node qhm_a2noc_cfg = { 74 .name = "qhm_a2noc_cfg", 75 .id = SM8150_MASTER_A2NOC_CFG, 76 .channels = 1, 77 .buswidth = 4, 78 .num_links = 1, 79 .links = { SM8150_SLAVE_SERVICE_A2NOC }, 80 }; 81 82 static struct qcom_icc_node qhm_qdss_bam = { 83 .name = "qhm_qdss_bam", 84 .id = SM8150_MASTER_QDSS_BAM, 85 .channels = 1, 86 .buswidth = 4, 87 .num_links = 1, 88 .links = { SM8150_A2NOC_SNOC_SLV }, 89 }; 90 91 static struct qcom_icc_node qhm_qspi = { 92 .name = "qhm_qspi", 93 .id = SM8150_MASTER_QSPI, 94 .channels = 1, 95 .buswidth = 4, 96 .num_links = 1, 97 .links = { SM8150_A2NOC_SNOC_SLV }, 98 }; 99 100 static struct qcom_icc_node qhm_qup1 = { 101 .name = "qhm_qup1", 102 .id = SM8150_MASTER_QUP_1, 103 .channels = 1, 104 .buswidth = 4, 105 .num_links = 1, 106 .links = { SM8150_A2NOC_SNOC_SLV }, 107 }; 108 109 static struct qcom_icc_node qhm_qup2 = { 110 .name = "qhm_qup2", 111 .id = SM8150_MASTER_QUP_2, 112 .channels = 1, 113 .buswidth = 4, 114 .num_links = 1, 115 .links = { SM8150_A2NOC_SNOC_SLV }, 116 }; 117 118 static struct qcom_icc_node qhm_sensorss_ahb = { 119 .name = "qhm_sensorss_ahb", 120 .id = SM8150_MASTER_SENSORS_AHB, 121 .channels = 1, 122 .buswidth = 4, 123 .num_links = 1, 124 .links = { SM8150_A2NOC_SNOC_SLV }, 125 }; 126 127 static struct qcom_icc_node qhm_tsif = { 128 .name = "qhm_tsif", 129 .id = SM8150_MASTER_TSIF, 130 .channels = 1, 131 .buswidth = 4, 132 .num_links = 1, 133 .links = { SM8150_A2NOC_SNOC_SLV }, 134 }; 135 136 static struct qcom_icc_node qnm_cnoc = { 137 .name = "qnm_cnoc", 138 .id = SM8150_MASTER_CNOC_A2NOC, 139 .channels = 1, 140 .buswidth = 8, 141 .num_links = 1, 142 .links = { SM8150_A2NOC_SNOC_SLV }, 143 }; 144 145 static struct qcom_icc_node qxm_crypto = { 146 .name = "qxm_crypto", 147 .id = SM8150_MASTER_CRYPTO_CORE_0, 148 .channels = 1, 149 .buswidth = 8, 150 .num_links = 1, 151 .links = { SM8150_A2NOC_SNOC_SLV }, 152 }; 153 154 static struct qcom_icc_node qxm_ipa = { 155 .name = "qxm_ipa", 156 .id = SM8150_MASTER_IPA, 157 .channels = 1, 158 .buswidth = 8, 159 .num_links = 1, 160 .links = { SM8150_A2NOC_SNOC_SLV }, 161 }; 162 163 static struct qcom_icc_node xm_pcie3_0 = { 164 .name = "xm_pcie3_0", 165 .id = SM8150_MASTER_PCIE, 166 .channels = 1, 167 .buswidth = 8, 168 .num_links = 1, 169 .links = { SM8150_SLAVE_ANOC_PCIE_GEM_NOC }, 170 }; 171 172 static struct qcom_icc_node xm_pcie3_1 = { 173 .name = "xm_pcie3_1", 174 .id = SM8150_MASTER_PCIE_1, 175 .channels = 1, 176 .buswidth = 8, 177 .num_links = 1, 178 .links = { SM8150_SLAVE_ANOC_PCIE_GEM_NOC }, 179 }; 180 181 static struct qcom_icc_node xm_qdss_etr = { 182 .name = "xm_qdss_etr", 183 .id = SM8150_MASTER_QDSS_ETR, 184 .channels = 1, 185 .buswidth = 8, 186 .num_links = 1, 187 .links = { SM8150_A2NOC_SNOC_SLV }, 188 }; 189 190 static struct qcom_icc_node xm_sdc2 = { 191 .name = "xm_sdc2", 192 .id = SM8150_MASTER_SDCC_2, 193 .channels = 1, 194 .buswidth = 8, 195 .num_links = 1, 196 .links = { SM8150_A2NOC_SNOC_SLV }, 197 }; 198 199 static struct qcom_icc_node xm_sdc4 = { 200 .name = "xm_sdc4", 201 .id = SM8150_MASTER_SDCC_4, 202 .channels = 1, 203 .buswidth = 8, 204 .num_links = 1, 205 .links = { SM8150_A2NOC_SNOC_SLV }, 206 }; 207 208 static struct qcom_icc_node qxm_camnoc_hf0_uncomp = { 209 .name = "qxm_camnoc_hf0_uncomp", 210 .id = SM8150_MASTER_CAMNOC_HF0_UNCOMP, 211 .channels = 1, 212 .buswidth = 32, 213 .num_links = 1, 214 .links = { SM8150_SLAVE_CAMNOC_UNCOMP }, 215 }; 216 217 static struct qcom_icc_node qxm_camnoc_hf1_uncomp = { 218 .name = "qxm_camnoc_hf1_uncomp", 219 .id = SM8150_MASTER_CAMNOC_HF1_UNCOMP, 220 .channels = 1, 221 .buswidth = 32, 222 .num_links = 1, 223 .links = { SM8150_SLAVE_CAMNOC_UNCOMP }, 224 }; 225 226 static struct qcom_icc_node qxm_camnoc_sf_uncomp = { 227 .name = "qxm_camnoc_sf_uncomp", 228 .id = SM8150_MASTER_CAMNOC_SF_UNCOMP, 229 .channels = 1, 230 .buswidth = 32, 231 .num_links = 1, 232 .links = { SM8150_SLAVE_CAMNOC_UNCOMP }, 233 }; 234 235 static struct qcom_icc_node qnm_npu = { 236 .name = "qnm_npu", 237 .id = SM8150_MASTER_NPU, 238 .channels = 1, 239 .buswidth = 32, 240 .num_links = 1, 241 .links = { SM8150_SLAVE_CDSP_MEM_NOC }, 242 }; 243 244 static struct qcom_icc_node qhm_spdm = { 245 .name = "qhm_spdm", 246 .id = SM8150_MASTER_SPDM, 247 .channels = 1, 248 .buswidth = 4, 249 .num_links = 1, 250 .links = { SM8150_SLAVE_CNOC_A2NOC }, 251 }; 252 253 static struct qcom_icc_node qnm_snoc = { 254 .name = "qnm_snoc", 255 .id = SM8150_SNOC_CNOC_MAS, 256 .channels = 1, 257 .buswidth = 8, 258 .num_links = 50, 259 .links = { SM8150_SLAVE_TLMM_SOUTH, 260 SM8150_SLAVE_CDSP_CFG, 261 SM8150_SLAVE_SPSS_CFG, 262 SM8150_SLAVE_CAMERA_CFG, 263 SM8150_SLAVE_SDCC_4, 264 SM8150_SLAVE_SDCC_2, 265 SM8150_SLAVE_CNOC_MNOC_CFG, 266 SM8150_SLAVE_EMAC_CFG, 267 SM8150_SLAVE_UFS_MEM_CFG, 268 SM8150_SLAVE_TLMM_EAST, 269 SM8150_SLAVE_SSC_CFG, 270 SM8150_SLAVE_SNOC_CFG, 271 SM8150_SLAVE_NORTH_PHY_CFG, 272 SM8150_SLAVE_QUP_0, 273 SM8150_SLAVE_GLM, 274 SM8150_SLAVE_PCIE_1_CFG, 275 SM8150_SLAVE_A2NOC_CFG, 276 SM8150_SLAVE_QDSS_CFG, 277 SM8150_SLAVE_DISPLAY_CFG, 278 SM8150_SLAVE_TCSR, 279 SM8150_SLAVE_CNOC_DDRSS, 280 SM8150_SLAVE_RBCPR_MMCX_CFG, 281 SM8150_SLAVE_NPU_CFG, 282 SM8150_SLAVE_PCIE_0_CFG, 283 SM8150_SLAVE_GRAPHICS_3D_CFG, 284 SM8150_SLAVE_VENUS_CFG, 285 SM8150_SLAVE_TSIF, 286 SM8150_SLAVE_IPA_CFG, 287 SM8150_SLAVE_CLK_CTL, 288 SM8150_SLAVE_AOP, 289 SM8150_SLAVE_QUP_1, 290 SM8150_SLAVE_AHB2PHY_SOUTH, 291 SM8150_SLAVE_USB3_1, 292 SM8150_SLAVE_SERVICE_CNOC, 293 SM8150_SLAVE_UFS_CARD_CFG, 294 SM8150_SLAVE_QUP_2, 295 SM8150_SLAVE_RBCPR_CX_CFG, 296 SM8150_SLAVE_TLMM_WEST, 297 SM8150_SLAVE_A1NOC_CFG, 298 SM8150_SLAVE_AOSS, 299 SM8150_SLAVE_PRNG, 300 SM8150_SLAVE_VSENSE_CTRL_CFG, 301 SM8150_SLAVE_QSPI, 302 SM8150_SLAVE_USB3, 303 SM8150_SLAVE_SPDM_WRAPPER, 304 SM8150_SLAVE_CRYPTO_0_CFG, 305 SM8150_SLAVE_PIMEM_CFG, 306 SM8150_SLAVE_TLMM_NORTH, 307 SM8150_SLAVE_RBCPR_MX_CFG, 308 SM8150_SLAVE_IMEM_CFG 309 }, 310 }; 311 312 static struct qcom_icc_node xm_qdss_dap = { 313 .name = "xm_qdss_dap", 314 .id = SM8150_MASTER_QDSS_DAP, 315 .channels = 1, 316 .buswidth = 8, 317 .num_links = 51, 318 .links = { SM8150_SLAVE_TLMM_SOUTH, 319 SM8150_SLAVE_CDSP_CFG, 320 SM8150_SLAVE_SPSS_CFG, 321 SM8150_SLAVE_CAMERA_CFG, 322 SM8150_SLAVE_SDCC_4, 323 SM8150_SLAVE_SDCC_2, 324 SM8150_SLAVE_CNOC_MNOC_CFG, 325 SM8150_SLAVE_EMAC_CFG, 326 SM8150_SLAVE_UFS_MEM_CFG, 327 SM8150_SLAVE_TLMM_EAST, 328 SM8150_SLAVE_SSC_CFG, 329 SM8150_SLAVE_SNOC_CFG, 330 SM8150_SLAVE_NORTH_PHY_CFG, 331 SM8150_SLAVE_QUP_0, 332 SM8150_SLAVE_GLM, 333 SM8150_SLAVE_PCIE_1_CFG, 334 SM8150_SLAVE_A2NOC_CFG, 335 SM8150_SLAVE_QDSS_CFG, 336 SM8150_SLAVE_DISPLAY_CFG, 337 SM8150_SLAVE_TCSR, 338 SM8150_SLAVE_CNOC_DDRSS, 339 SM8150_SLAVE_CNOC_A2NOC, 340 SM8150_SLAVE_RBCPR_MMCX_CFG, 341 SM8150_SLAVE_NPU_CFG, 342 SM8150_SLAVE_PCIE_0_CFG, 343 SM8150_SLAVE_GRAPHICS_3D_CFG, 344 SM8150_SLAVE_VENUS_CFG, 345 SM8150_SLAVE_TSIF, 346 SM8150_SLAVE_IPA_CFG, 347 SM8150_SLAVE_CLK_CTL, 348 SM8150_SLAVE_AOP, 349 SM8150_SLAVE_QUP_1, 350 SM8150_SLAVE_AHB2PHY_SOUTH, 351 SM8150_SLAVE_USB3_1, 352 SM8150_SLAVE_SERVICE_CNOC, 353 SM8150_SLAVE_UFS_CARD_CFG, 354 SM8150_SLAVE_QUP_2, 355 SM8150_SLAVE_RBCPR_CX_CFG, 356 SM8150_SLAVE_TLMM_WEST, 357 SM8150_SLAVE_A1NOC_CFG, 358 SM8150_SLAVE_AOSS, 359 SM8150_SLAVE_PRNG, 360 SM8150_SLAVE_VSENSE_CTRL_CFG, 361 SM8150_SLAVE_QSPI, 362 SM8150_SLAVE_USB3, 363 SM8150_SLAVE_SPDM_WRAPPER, 364 SM8150_SLAVE_CRYPTO_0_CFG, 365 SM8150_SLAVE_PIMEM_CFG, 366 SM8150_SLAVE_TLMM_NORTH, 367 SM8150_SLAVE_RBCPR_MX_CFG, 368 SM8150_SLAVE_IMEM_CFG 369 }, 370 }; 371 372 static struct qcom_icc_node qhm_cnoc_dc_noc = { 373 .name = "qhm_cnoc_dc_noc", 374 .id = SM8150_MASTER_CNOC_DC_NOC, 375 .channels = 1, 376 .buswidth = 4, 377 .num_links = 2, 378 .links = { SM8150_SLAVE_GEM_NOC_CFG, 379 SM8150_SLAVE_LLCC_CFG 380 }, 381 }; 382 383 static struct qcom_icc_node acm_apps = { 384 .name = "acm_apps", 385 .id = SM8150_MASTER_AMPSS_M0, 386 .channels = 2, 387 .buswidth = 32, 388 .num_links = 3, 389 .links = { SM8150_SLAVE_ECC, 390 SM8150_SLAVE_LLCC, 391 SM8150_SLAVE_GEM_NOC_SNOC 392 }, 393 }; 394 395 static struct qcom_icc_node acm_gpu_tcu = { 396 .name = "acm_gpu_tcu", 397 .id = SM8150_MASTER_GPU_TCU, 398 .channels = 1, 399 .buswidth = 8, 400 .num_links = 2, 401 .links = { SM8150_SLAVE_LLCC, 402 SM8150_SLAVE_GEM_NOC_SNOC 403 }, 404 }; 405 406 static struct qcom_icc_node acm_sys_tcu = { 407 .name = "acm_sys_tcu", 408 .id = SM8150_MASTER_SYS_TCU, 409 .channels = 1, 410 .buswidth = 8, 411 .num_links = 2, 412 .links = { SM8150_SLAVE_LLCC, 413 SM8150_SLAVE_GEM_NOC_SNOC 414 }, 415 }; 416 417 static struct qcom_icc_node qhm_gemnoc_cfg = { 418 .name = "qhm_gemnoc_cfg", 419 .id = SM8150_MASTER_GEM_NOC_CFG, 420 .channels = 1, 421 .buswidth = 4, 422 .num_links = 2, 423 .links = { SM8150_SLAVE_SERVICE_GEM_NOC, 424 SM8150_SLAVE_MSS_PROC_MS_MPU_CFG 425 }, 426 }; 427 428 static struct qcom_icc_node qnm_cmpnoc = { 429 .name = "qnm_cmpnoc", 430 .id = SM8150_MASTER_COMPUTE_NOC, 431 .channels = 2, 432 .buswidth = 32, 433 .num_links = 3, 434 .links = { SM8150_SLAVE_ECC, 435 SM8150_SLAVE_LLCC, 436 SM8150_SLAVE_GEM_NOC_SNOC 437 }, 438 }; 439 440 static struct qcom_icc_node qnm_gpu = { 441 .name = "qnm_gpu", 442 .id = SM8150_MASTER_GRAPHICS_3D, 443 .channels = 2, 444 .buswidth = 32, 445 .num_links = 2, 446 .links = { SM8150_SLAVE_LLCC, 447 SM8150_SLAVE_GEM_NOC_SNOC 448 }, 449 }; 450 451 static struct qcom_icc_node qnm_mnoc_hf = { 452 .name = "qnm_mnoc_hf", 453 .id = SM8150_MASTER_MNOC_HF_MEM_NOC, 454 .channels = 2, 455 .buswidth = 32, 456 .num_links = 1, 457 .links = { SM8150_SLAVE_LLCC }, 458 }; 459 460 static struct qcom_icc_node qnm_mnoc_sf = { 461 .name = "qnm_mnoc_sf", 462 .id = SM8150_MASTER_MNOC_SF_MEM_NOC, 463 .channels = 1, 464 .buswidth = 32, 465 .num_links = 2, 466 .links = { SM8150_SLAVE_LLCC, 467 SM8150_SLAVE_GEM_NOC_SNOC 468 }, 469 }; 470 471 static struct qcom_icc_node qnm_pcie = { 472 .name = "qnm_pcie", 473 .id = SM8150_MASTER_GEM_NOC_PCIE_SNOC, 474 .channels = 1, 475 .buswidth = 16, 476 .num_links = 2, 477 .links = { SM8150_SLAVE_LLCC, 478 SM8150_SLAVE_GEM_NOC_SNOC 479 }, 480 }; 481 482 static struct qcom_icc_node qnm_snoc_gc = { 483 .name = "qnm_snoc_gc", 484 .id = SM8150_MASTER_SNOC_GC_MEM_NOC, 485 .channels = 1, 486 .buswidth = 8, 487 .num_links = 1, 488 .links = { SM8150_SLAVE_LLCC }, 489 }; 490 491 static struct qcom_icc_node qnm_snoc_sf = { 492 .name = "qnm_snoc_sf", 493 .id = SM8150_MASTER_SNOC_SF_MEM_NOC, 494 .channels = 1, 495 .buswidth = 16, 496 .num_links = 1, 497 .links = { SM8150_SLAVE_LLCC }, 498 }; 499 500 static struct qcom_icc_node qxm_ecc = { 501 .name = "qxm_ecc", 502 .id = SM8150_MASTER_ECC, 503 .channels = 2, 504 .buswidth = 32, 505 .num_links = 1, 506 .links = { SM8150_SLAVE_LLCC }, 507 }; 508 509 static struct qcom_icc_node llcc_mc = { 510 .name = "llcc_mc", 511 .id = SM8150_MASTER_LLCC, 512 .channels = 4, 513 .buswidth = 4, 514 .num_links = 1, 515 .links = { SM8150_SLAVE_EBI_CH0 }, 516 }; 517 518 static struct qcom_icc_node qhm_mnoc_cfg = { 519 .name = "qhm_mnoc_cfg", 520 .id = SM8150_MASTER_CNOC_MNOC_CFG, 521 .channels = 1, 522 .buswidth = 4, 523 .num_links = 1, 524 .links = { SM8150_SLAVE_SERVICE_MNOC }, 525 }; 526 527 static struct qcom_icc_node qxm_camnoc_hf0 = { 528 .name = "qxm_camnoc_hf0", 529 .id = SM8150_MASTER_CAMNOC_HF0, 530 .channels = 1, 531 .buswidth = 32, 532 .num_links = 1, 533 .links = { SM8150_SLAVE_MNOC_HF_MEM_NOC }, 534 }; 535 536 static struct qcom_icc_node qxm_camnoc_hf1 = { 537 .name = "qxm_camnoc_hf1", 538 .id = SM8150_MASTER_CAMNOC_HF1, 539 .channels = 1, 540 .buswidth = 32, 541 .num_links = 1, 542 .links = { SM8150_SLAVE_MNOC_HF_MEM_NOC }, 543 }; 544 545 static struct qcom_icc_node qxm_camnoc_sf = { 546 .name = "qxm_camnoc_sf", 547 .id = SM8150_MASTER_CAMNOC_SF, 548 .channels = 1, 549 .buswidth = 32, 550 .num_links = 1, 551 .links = { SM8150_SLAVE_MNOC_SF_MEM_NOC }, 552 }; 553 554 static struct qcom_icc_node qxm_mdp0 = { 555 .name = "qxm_mdp0", 556 .id = SM8150_MASTER_MDP_PORT0, 557 .channels = 1, 558 .buswidth = 32, 559 .num_links = 1, 560 .links = { SM8150_SLAVE_MNOC_HF_MEM_NOC }, 561 }; 562 563 static struct qcom_icc_node qxm_mdp1 = { 564 .name = "qxm_mdp1", 565 .id = SM8150_MASTER_MDP_PORT1, 566 .channels = 1, 567 .buswidth = 32, 568 .num_links = 1, 569 .links = { SM8150_SLAVE_MNOC_HF_MEM_NOC }, 570 }; 571 572 static struct qcom_icc_node qxm_rot = { 573 .name = "qxm_rot", 574 .id = SM8150_MASTER_ROTATOR, 575 .channels = 1, 576 .buswidth = 32, 577 .num_links = 1, 578 .links = { SM8150_SLAVE_MNOC_SF_MEM_NOC }, 579 }; 580 581 static struct qcom_icc_node qxm_venus0 = { 582 .name = "qxm_venus0", 583 .id = SM8150_MASTER_VIDEO_P0, 584 .channels = 1, 585 .buswidth = 32, 586 .num_links = 1, 587 .links = { SM8150_SLAVE_MNOC_SF_MEM_NOC }, 588 }; 589 590 static struct qcom_icc_node qxm_venus1 = { 591 .name = "qxm_venus1", 592 .id = SM8150_MASTER_VIDEO_P1, 593 .channels = 1, 594 .buswidth = 32, 595 .num_links = 1, 596 .links = { SM8150_SLAVE_MNOC_SF_MEM_NOC }, 597 }; 598 599 static struct qcom_icc_node qxm_venus_arm9 = { 600 .name = "qxm_venus_arm9", 601 .id = SM8150_MASTER_VIDEO_PROC, 602 .channels = 1, 603 .buswidth = 8, 604 .num_links = 1, 605 .links = { SM8150_SLAVE_MNOC_SF_MEM_NOC }, 606 }; 607 608 static struct qcom_icc_node qhm_snoc_cfg = { 609 .name = "qhm_snoc_cfg", 610 .id = SM8150_MASTER_SNOC_CFG, 611 .channels = 1, 612 .buswidth = 4, 613 .num_links = 1, 614 .links = { SM8150_SLAVE_SERVICE_SNOC }, 615 }; 616 617 static struct qcom_icc_node qnm_aggre1_noc = { 618 .name = "qnm_aggre1_noc", 619 .id = SM8150_A1NOC_SNOC_MAS, 620 .channels = 1, 621 .buswidth = 16, 622 .num_links = 6, 623 .links = { SM8150_SLAVE_SNOC_GEM_NOC_SF, 624 SM8150_SLAVE_PIMEM, 625 SM8150_SLAVE_OCIMEM, 626 SM8150_SLAVE_APPSS, 627 SM8150_SNOC_CNOC_SLV, 628 SM8150_SLAVE_QDSS_STM 629 }, 630 }; 631 632 static struct qcom_icc_node qnm_aggre2_noc = { 633 .name = "qnm_aggre2_noc", 634 .id = SM8150_A2NOC_SNOC_MAS, 635 .channels = 1, 636 .buswidth = 16, 637 .num_links = 9, 638 .links = { SM8150_SLAVE_SNOC_GEM_NOC_SF, 639 SM8150_SLAVE_PIMEM, 640 SM8150_SLAVE_OCIMEM, 641 SM8150_SLAVE_APPSS, 642 SM8150_SNOC_CNOC_SLV, 643 SM8150_SLAVE_PCIE_0, 644 SM8150_SLAVE_PCIE_1, 645 SM8150_SLAVE_TCU, 646 SM8150_SLAVE_QDSS_STM 647 }, 648 }; 649 650 static struct qcom_icc_node qnm_gemnoc = { 651 .name = "qnm_gemnoc", 652 .id = SM8150_MASTER_GEM_NOC_SNOC, 653 .channels = 1, 654 .buswidth = 8, 655 .num_links = 6, 656 .links = { SM8150_SLAVE_PIMEM, 657 SM8150_SLAVE_OCIMEM, 658 SM8150_SLAVE_APPSS, 659 SM8150_SNOC_CNOC_SLV, 660 SM8150_SLAVE_TCU, 661 SM8150_SLAVE_QDSS_STM 662 }, 663 }; 664 665 static struct qcom_icc_node qxm_pimem = { 666 .name = "qxm_pimem", 667 .id = SM8150_MASTER_PIMEM, 668 .channels = 1, 669 .buswidth = 8, 670 .num_links = 2, 671 .links = { SM8150_SLAVE_SNOC_GEM_NOC_GC, 672 SM8150_SLAVE_OCIMEM 673 }, 674 }; 675 676 static struct qcom_icc_node xm_gic = { 677 .name = "xm_gic", 678 .id = SM8150_MASTER_GIC, 679 .channels = 1, 680 .buswidth = 8, 681 .num_links = 2, 682 .links = { SM8150_SLAVE_SNOC_GEM_NOC_GC, 683 SM8150_SLAVE_OCIMEM 684 }, 685 }; 686 687 static struct qcom_icc_node qns_a1noc_snoc = { 688 .name = "qns_a1noc_snoc", 689 .id = SM8150_A1NOC_SNOC_SLV, 690 .channels = 1, 691 .buswidth = 16, 692 .num_links = 1, 693 .links = { SM8150_A1NOC_SNOC_MAS }, 694 }; 695 696 static struct qcom_icc_node srvc_aggre1_noc = { 697 .name = "srvc_aggre1_noc", 698 .id = SM8150_SLAVE_SERVICE_A1NOC, 699 .channels = 1, 700 .buswidth = 4, 701 }; 702 703 static struct qcom_icc_node qns_a2noc_snoc = { 704 .name = "qns_a2noc_snoc", 705 .id = SM8150_A2NOC_SNOC_SLV, 706 .channels = 1, 707 .buswidth = 16, 708 .num_links = 1, 709 .links = { SM8150_A2NOC_SNOC_MAS }, 710 }; 711 712 static struct qcom_icc_node qns_pcie_mem_noc = { 713 .name = "qns_pcie_mem_noc", 714 .id = SM8150_SLAVE_ANOC_PCIE_GEM_NOC, 715 .channels = 1, 716 .buswidth = 16, 717 .num_links = 1, 718 .links = { SM8150_MASTER_GEM_NOC_PCIE_SNOC }, 719 }; 720 721 static struct qcom_icc_node srvc_aggre2_noc = { 722 .name = "srvc_aggre2_noc", 723 .id = SM8150_SLAVE_SERVICE_A2NOC, 724 .channels = 1, 725 .buswidth = 4, 726 }; 727 728 static struct qcom_icc_node qns_camnoc_uncomp = { 729 .name = "qns_camnoc_uncomp", 730 .id = SM8150_SLAVE_CAMNOC_UNCOMP, 731 .channels = 1, 732 .buswidth = 32, 733 }; 734 735 static struct qcom_icc_node qns_cdsp_mem_noc = { 736 .name = "qns_cdsp_mem_noc", 737 .id = SM8150_SLAVE_CDSP_MEM_NOC, 738 .channels = 2, 739 .buswidth = 32, 740 .num_links = 1, 741 .links = { SM8150_MASTER_COMPUTE_NOC }, 742 }; 743 744 static struct qcom_icc_node qhs_a1_noc_cfg = { 745 .name = "qhs_a1_noc_cfg", 746 .id = SM8150_SLAVE_A1NOC_CFG, 747 .channels = 1, 748 .buswidth = 4, 749 .num_links = 1, 750 .links = { SM8150_MASTER_A1NOC_CFG }, 751 }; 752 753 static struct qcom_icc_node qhs_a2_noc_cfg = { 754 .name = "qhs_a2_noc_cfg", 755 .id = SM8150_SLAVE_A2NOC_CFG, 756 .channels = 1, 757 .buswidth = 4, 758 .num_links = 1, 759 .links = { SM8150_MASTER_A2NOC_CFG }, 760 }; 761 762 static struct qcom_icc_node qhs_ahb2phy_south = { 763 .name = "qhs_ahb2phy_south", 764 .id = SM8150_SLAVE_AHB2PHY_SOUTH, 765 .channels = 1, 766 .buswidth = 4, 767 }; 768 769 static struct qcom_icc_node qhs_aop = { 770 .name = "qhs_aop", 771 .id = SM8150_SLAVE_AOP, 772 .channels = 1, 773 .buswidth = 4, 774 }; 775 776 static struct qcom_icc_node qhs_aoss = { 777 .name = "qhs_aoss", 778 .id = SM8150_SLAVE_AOSS, 779 .channels = 1, 780 .buswidth = 4, 781 }; 782 783 static struct qcom_icc_node qhs_camera_cfg = { 784 .name = "qhs_camera_cfg", 785 .id = SM8150_SLAVE_CAMERA_CFG, 786 .channels = 1, 787 .buswidth = 4, 788 }; 789 790 static struct qcom_icc_node qhs_clk_ctl = { 791 .name = "qhs_clk_ctl", 792 .id = SM8150_SLAVE_CLK_CTL, 793 .channels = 1, 794 .buswidth = 4, 795 }; 796 797 static struct qcom_icc_node qhs_compute_dsp = { 798 .name = "qhs_compute_dsp", 799 .id = SM8150_SLAVE_CDSP_CFG, 800 .channels = 1, 801 .buswidth = 4, 802 }; 803 804 static struct qcom_icc_node qhs_cpr_cx = { 805 .name = "qhs_cpr_cx", 806 .id = SM8150_SLAVE_RBCPR_CX_CFG, 807 .channels = 1, 808 .buswidth = 4, 809 }; 810 811 static struct qcom_icc_node qhs_cpr_mmcx = { 812 .name = "qhs_cpr_mmcx", 813 .id = SM8150_SLAVE_RBCPR_MMCX_CFG, 814 .channels = 1, 815 .buswidth = 4, 816 }; 817 818 static struct qcom_icc_node qhs_cpr_mx = { 819 .name = "qhs_cpr_mx", 820 .id = SM8150_SLAVE_RBCPR_MX_CFG, 821 .channels = 1, 822 .buswidth = 4, 823 }; 824 825 static struct qcom_icc_node qhs_crypto0_cfg = { 826 .name = "qhs_crypto0_cfg", 827 .id = SM8150_SLAVE_CRYPTO_0_CFG, 828 .channels = 1, 829 .buswidth = 4, 830 }; 831 832 static struct qcom_icc_node qhs_ddrss_cfg = { 833 .name = "qhs_ddrss_cfg", 834 .id = SM8150_SLAVE_CNOC_DDRSS, 835 .channels = 1, 836 .buswidth = 4, 837 .num_links = 1, 838 .links = { SM8150_MASTER_CNOC_DC_NOC }, 839 }; 840 841 static struct qcom_icc_node qhs_display_cfg = { 842 .name = "qhs_display_cfg", 843 .id = SM8150_SLAVE_DISPLAY_CFG, 844 .channels = 1, 845 .buswidth = 4, 846 }; 847 848 static struct qcom_icc_node qhs_emac_cfg = { 849 .name = "qhs_emac_cfg", 850 .id = SM8150_SLAVE_EMAC_CFG, 851 .channels = 1, 852 .buswidth = 4, 853 }; 854 855 static struct qcom_icc_node qhs_glm = { 856 .name = "qhs_glm", 857 .id = SM8150_SLAVE_GLM, 858 .channels = 1, 859 .buswidth = 4, 860 }; 861 862 static struct qcom_icc_node qhs_gpuss_cfg = { 863 .name = "qhs_gpuss_cfg", 864 .id = SM8150_SLAVE_GRAPHICS_3D_CFG, 865 .channels = 1, 866 .buswidth = 8, 867 }; 868 869 static struct qcom_icc_node qhs_imem_cfg = { 870 .name = "qhs_imem_cfg", 871 .id = SM8150_SLAVE_IMEM_CFG, 872 .channels = 1, 873 .buswidth = 4, 874 }; 875 876 static struct qcom_icc_node qhs_ipa = { 877 .name = "qhs_ipa", 878 .id = SM8150_SLAVE_IPA_CFG, 879 .channels = 1, 880 .buswidth = 4, 881 }; 882 883 static struct qcom_icc_node qhs_mnoc_cfg = { 884 .name = "qhs_mnoc_cfg", 885 .id = SM8150_SLAVE_CNOC_MNOC_CFG, 886 .channels = 1, 887 .buswidth = 4, 888 .num_links = 1, 889 .links = { SM8150_MASTER_CNOC_MNOC_CFG }, 890 }; 891 892 static struct qcom_icc_node qhs_npu_cfg = { 893 .name = "qhs_npu_cfg", 894 .id = SM8150_SLAVE_NPU_CFG, 895 .channels = 1, 896 .buswidth = 4, 897 }; 898 899 static struct qcom_icc_node qhs_pcie0_cfg = { 900 .name = "qhs_pcie0_cfg", 901 .id = SM8150_SLAVE_PCIE_0_CFG, 902 .channels = 1, 903 .buswidth = 4, 904 }; 905 906 static struct qcom_icc_node qhs_pcie1_cfg = { 907 .name = "qhs_pcie1_cfg", 908 .id = SM8150_SLAVE_PCIE_1_CFG, 909 .channels = 1, 910 .buswidth = 4, 911 }; 912 913 static struct qcom_icc_node qhs_phy_refgen_north = { 914 .name = "qhs_phy_refgen_north", 915 .id = SM8150_SLAVE_NORTH_PHY_CFG, 916 .channels = 1, 917 .buswidth = 4, 918 }; 919 920 static struct qcom_icc_node qhs_pimem_cfg = { 921 .name = "qhs_pimem_cfg", 922 .id = SM8150_SLAVE_PIMEM_CFG, 923 .channels = 1, 924 .buswidth = 4, 925 }; 926 927 static struct qcom_icc_node qhs_prng = { 928 .name = "qhs_prng", 929 .id = SM8150_SLAVE_PRNG, 930 .channels = 1, 931 .buswidth = 4, 932 }; 933 934 static struct qcom_icc_node qhs_qdss_cfg = { 935 .name = "qhs_qdss_cfg", 936 .id = SM8150_SLAVE_QDSS_CFG, 937 .channels = 1, 938 .buswidth = 4, 939 }; 940 941 static struct qcom_icc_node qhs_qspi = { 942 .name = "qhs_qspi", 943 .id = SM8150_SLAVE_QSPI, 944 .channels = 1, 945 .buswidth = 4, 946 }; 947 948 static struct qcom_icc_node qhs_qupv3_east = { 949 .name = "qhs_qupv3_east", 950 .id = SM8150_SLAVE_QUP_2, 951 .channels = 1, 952 .buswidth = 4, 953 }; 954 955 static struct qcom_icc_node qhs_qupv3_north = { 956 .name = "qhs_qupv3_north", 957 .id = SM8150_SLAVE_QUP_1, 958 .channels = 1, 959 .buswidth = 4, 960 }; 961 962 static struct qcom_icc_node qhs_qupv3_south = { 963 .name = "qhs_qupv3_south", 964 .id = SM8150_SLAVE_QUP_0, 965 .channels = 1, 966 .buswidth = 4, 967 }; 968 969 static struct qcom_icc_node qhs_sdc2 = { 970 .name = "qhs_sdc2", 971 .id = SM8150_SLAVE_SDCC_2, 972 .channels = 1, 973 .buswidth = 4, 974 }; 975 976 static struct qcom_icc_node qhs_sdc4 = { 977 .name = "qhs_sdc4", 978 .id = SM8150_SLAVE_SDCC_4, 979 .channels = 1, 980 .buswidth = 4, 981 }; 982 983 static struct qcom_icc_node qhs_snoc_cfg = { 984 .name = "qhs_snoc_cfg", 985 .id = SM8150_SLAVE_SNOC_CFG, 986 .channels = 1, 987 .buswidth = 4, 988 .num_links = 1, 989 .links = { SM8150_MASTER_SNOC_CFG }, 990 }; 991 992 static struct qcom_icc_node qhs_spdm = { 993 .name = "qhs_spdm", 994 .id = SM8150_SLAVE_SPDM_WRAPPER, 995 .channels = 1, 996 .buswidth = 4, 997 }; 998 999 static struct qcom_icc_node qhs_spss_cfg = { 1000 .name = "qhs_spss_cfg", 1001 .id = SM8150_SLAVE_SPSS_CFG, 1002 .channels = 1, 1003 .buswidth = 4, 1004 }; 1005 1006 static struct qcom_icc_node qhs_ssc_cfg = { 1007 .name = "qhs_ssc_cfg", 1008 .id = SM8150_SLAVE_SSC_CFG, 1009 .channels = 1, 1010 .buswidth = 4, 1011 }; 1012 1013 static struct qcom_icc_node qhs_tcsr = { 1014 .name = "qhs_tcsr", 1015 .id = SM8150_SLAVE_TCSR, 1016 .channels = 1, 1017 .buswidth = 4, 1018 }; 1019 1020 static struct qcom_icc_node qhs_tlmm_east = { 1021 .name = "qhs_tlmm_east", 1022 .id = SM8150_SLAVE_TLMM_EAST, 1023 .channels = 1, 1024 .buswidth = 4, 1025 }; 1026 1027 static struct qcom_icc_node qhs_tlmm_north = { 1028 .name = "qhs_tlmm_north", 1029 .id = SM8150_SLAVE_TLMM_NORTH, 1030 .channels = 1, 1031 .buswidth = 4, 1032 }; 1033 1034 static struct qcom_icc_node qhs_tlmm_south = { 1035 .name = "qhs_tlmm_south", 1036 .id = SM8150_SLAVE_TLMM_SOUTH, 1037 .channels = 1, 1038 .buswidth = 4, 1039 }; 1040 1041 static struct qcom_icc_node qhs_tlmm_west = { 1042 .name = "qhs_tlmm_west", 1043 .id = SM8150_SLAVE_TLMM_WEST, 1044 .channels = 1, 1045 .buswidth = 4, 1046 }; 1047 1048 static struct qcom_icc_node qhs_tsif = { 1049 .name = "qhs_tsif", 1050 .id = SM8150_SLAVE_TSIF, 1051 .channels = 1, 1052 .buswidth = 4, 1053 }; 1054 1055 static struct qcom_icc_node qhs_ufs_card_cfg = { 1056 .name = "qhs_ufs_card_cfg", 1057 .id = SM8150_SLAVE_UFS_CARD_CFG, 1058 .channels = 1, 1059 .buswidth = 4, 1060 }; 1061 1062 static struct qcom_icc_node qhs_ufs_mem_cfg = { 1063 .name = "qhs_ufs_mem_cfg", 1064 .id = SM8150_SLAVE_UFS_MEM_CFG, 1065 .channels = 1, 1066 .buswidth = 4, 1067 }; 1068 1069 static struct qcom_icc_node qhs_usb3_0 = { 1070 .name = "qhs_usb3_0", 1071 .id = SM8150_SLAVE_USB3, 1072 .channels = 1, 1073 .buswidth = 4, 1074 }; 1075 1076 static struct qcom_icc_node qhs_usb3_1 = { 1077 .name = "qhs_usb3_1", 1078 .id = SM8150_SLAVE_USB3_1, 1079 .channels = 1, 1080 .buswidth = 4, 1081 }; 1082 1083 static struct qcom_icc_node qhs_venus_cfg = { 1084 .name = "qhs_venus_cfg", 1085 .id = SM8150_SLAVE_VENUS_CFG, 1086 .channels = 1, 1087 .buswidth = 4, 1088 }; 1089 1090 static struct qcom_icc_node qhs_vsense_ctrl_cfg = { 1091 .name = "qhs_vsense_ctrl_cfg", 1092 .id = SM8150_SLAVE_VSENSE_CTRL_CFG, 1093 .channels = 1, 1094 .buswidth = 4, 1095 }; 1096 1097 static struct qcom_icc_node qns_cnoc_a2noc = { 1098 .name = "qns_cnoc_a2noc", 1099 .id = SM8150_SLAVE_CNOC_A2NOC, 1100 .channels = 1, 1101 .buswidth = 8, 1102 .num_links = 1, 1103 .links = { SM8150_MASTER_CNOC_A2NOC }, 1104 }; 1105 1106 static struct qcom_icc_node srvc_cnoc = { 1107 .name = "srvc_cnoc", 1108 .id = SM8150_SLAVE_SERVICE_CNOC, 1109 .channels = 1, 1110 .buswidth = 4, 1111 }; 1112 1113 static struct qcom_icc_node qhs_llcc = { 1114 .name = "qhs_llcc", 1115 .id = SM8150_SLAVE_LLCC_CFG, 1116 .channels = 1, 1117 .buswidth = 4, 1118 }; 1119 1120 static struct qcom_icc_node qhs_memnoc = { 1121 .name = "qhs_memnoc", 1122 .id = SM8150_SLAVE_GEM_NOC_CFG, 1123 .channels = 1, 1124 .buswidth = 4, 1125 .num_links = 1, 1126 .links = { SM8150_MASTER_GEM_NOC_CFG }, 1127 }; 1128 1129 static struct qcom_icc_node qhs_mdsp_ms_mpu_cfg = { 1130 .name = "qhs_mdsp_ms_mpu_cfg", 1131 .id = SM8150_SLAVE_MSS_PROC_MS_MPU_CFG, 1132 .channels = 1, 1133 .buswidth = 4, 1134 }; 1135 1136 static struct qcom_icc_node qns_ecc = { 1137 .name = "qns_ecc", 1138 .id = SM8150_SLAVE_ECC, 1139 .channels = 1, 1140 .buswidth = 32, 1141 }; 1142 1143 static struct qcom_icc_node qns_gem_noc_snoc = { 1144 .name = "qns_gem_noc_snoc", 1145 .id = SM8150_SLAVE_GEM_NOC_SNOC, 1146 .channels = 1, 1147 .buswidth = 8, 1148 .num_links = 1, 1149 .links = { SM8150_MASTER_GEM_NOC_SNOC }, 1150 }; 1151 1152 static struct qcom_icc_node qns_llcc = { 1153 .name = "qns_llcc", 1154 .id = SM8150_SLAVE_LLCC, 1155 .channels = 4, 1156 .buswidth = 16, 1157 .num_links = 1, 1158 .links = { SM8150_MASTER_LLCC }, 1159 }; 1160 1161 static struct qcom_icc_node srvc_gemnoc = { 1162 .name = "srvc_gemnoc", 1163 .id = SM8150_SLAVE_SERVICE_GEM_NOC, 1164 .channels = 1, 1165 .buswidth = 4, 1166 }; 1167 1168 static struct qcom_icc_node ebi = { 1169 .name = "ebi", 1170 .id = SM8150_SLAVE_EBI_CH0, 1171 .channels = 4, 1172 .buswidth = 4, 1173 }; 1174 1175 static struct qcom_icc_node qns2_mem_noc = { 1176 .name = "qns2_mem_noc", 1177 .id = SM8150_SLAVE_MNOC_SF_MEM_NOC, 1178 .channels = 1, 1179 .buswidth = 32, 1180 .num_links = 1, 1181 .links = { SM8150_MASTER_MNOC_SF_MEM_NOC }, 1182 }; 1183 1184 static struct qcom_icc_node qns_mem_noc_hf = { 1185 .name = "qns_mem_noc_hf", 1186 .id = SM8150_SLAVE_MNOC_HF_MEM_NOC, 1187 .channels = 2, 1188 .buswidth = 32, 1189 .num_links = 1, 1190 .links = { SM8150_MASTER_MNOC_HF_MEM_NOC }, 1191 }; 1192 1193 static struct qcom_icc_node srvc_mnoc = { 1194 .name = "srvc_mnoc", 1195 .id = SM8150_SLAVE_SERVICE_MNOC, 1196 .channels = 1, 1197 .buswidth = 4, 1198 }; 1199 1200 static struct qcom_icc_node qhs_apss = { 1201 .name = "qhs_apss", 1202 .id = SM8150_SLAVE_APPSS, 1203 .channels = 1, 1204 .buswidth = 8, 1205 }; 1206 1207 static struct qcom_icc_node qns_cnoc = { 1208 .name = "qns_cnoc", 1209 .id = SM8150_SNOC_CNOC_SLV, 1210 .channels = 1, 1211 .buswidth = 8, 1212 .num_links = 1, 1213 .links = { SM8150_SNOC_CNOC_MAS }, 1214 }; 1215 1216 static struct qcom_icc_node qns_gemnoc_gc = { 1217 .name = "qns_gemnoc_gc", 1218 .id = SM8150_SLAVE_SNOC_GEM_NOC_GC, 1219 .channels = 1, 1220 .buswidth = 8, 1221 .num_links = 1, 1222 .links = { SM8150_MASTER_SNOC_GC_MEM_NOC }, 1223 }; 1224 1225 static struct qcom_icc_node qns_gemnoc_sf = { 1226 .name = "qns_gemnoc_sf", 1227 .id = SM8150_SLAVE_SNOC_GEM_NOC_SF, 1228 .channels = 1, 1229 .buswidth = 16, 1230 .num_links = 1, 1231 .links = { SM8150_MASTER_SNOC_SF_MEM_NOC }, 1232 }; 1233 1234 static struct qcom_icc_node qxs_imem = { 1235 .name = "qxs_imem", 1236 .id = SM8150_SLAVE_OCIMEM, 1237 .channels = 1, 1238 .buswidth = 8, 1239 }; 1240 1241 static struct qcom_icc_node qxs_pimem = { 1242 .name = "qxs_pimem", 1243 .id = SM8150_SLAVE_PIMEM, 1244 .channels = 1, 1245 .buswidth = 8, 1246 }; 1247 1248 static struct qcom_icc_node srvc_snoc = { 1249 .name = "srvc_snoc", 1250 .id = SM8150_SLAVE_SERVICE_SNOC, 1251 .channels = 1, 1252 .buswidth = 4, 1253 }; 1254 1255 static struct qcom_icc_node xs_pcie_0 = { 1256 .name = "xs_pcie_0", 1257 .id = SM8150_SLAVE_PCIE_0, 1258 .channels = 1, 1259 .buswidth = 8, 1260 }; 1261 1262 static struct qcom_icc_node xs_pcie_1 = { 1263 .name = "xs_pcie_1", 1264 .id = SM8150_SLAVE_PCIE_1, 1265 .channels = 1, 1266 .buswidth = 8, 1267 }; 1268 1269 static struct qcom_icc_node xs_qdss_stm = { 1270 .name = "xs_qdss_stm", 1271 .id = SM8150_SLAVE_QDSS_STM, 1272 .channels = 1, 1273 .buswidth = 4, 1274 }; 1275 1276 static struct qcom_icc_node xs_sys_tcu_cfg = { 1277 .name = "xs_sys_tcu_cfg", 1278 .id = SM8150_SLAVE_TCU, 1279 .channels = 1, 1280 .buswidth = 8, 1281 }; 1282 1283 static struct qcom_icc_bcm bcm_acv = { 1284 .name = "ACV", 1285 .enable_mask = BIT(3), 1286 .keepalive = false, 1287 .num_nodes = 1, 1288 .nodes = { &ebi }, 1289 }; 1290 1291 static struct qcom_icc_bcm bcm_mc0 = { 1292 .name = "MC0", 1293 .keepalive = true, 1294 .num_nodes = 1, 1295 .nodes = { &ebi }, 1296 }; 1297 1298 static struct qcom_icc_bcm bcm_sh0 = { 1299 .name = "SH0", 1300 .keepalive = true, 1301 .num_nodes = 1, 1302 .nodes = { &qns_llcc }, 1303 }; 1304 1305 static struct qcom_icc_bcm bcm_mm0 = { 1306 .name = "MM0", 1307 .keepalive = true, 1308 .num_nodes = 1, 1309 .nodes = { &qns_mem_noc_hf }, 1310 }; 1311 1312 static struct qcom_icc_bcm bcm_mm1 = { 1313 .name = "MM1", 1314 .keepalive = false, 1315 .num_nodes = 7, 1316 .nodes = { &qxm_camnoc_hf0_uncomp, 1317 &qxm_camnoc_hf1_uncomp, 1318 &qxm_camnoc_sf_uncomp, 1319 &qxm_camnoc_hf0, 1320 &qxm_camnoc_hf1, 1321 &qxm_mdp0, 1322 &qxm_mdp1 1323 }, 1324 }; 1325 1326 static struct qcom_icc_bcm bcm_sh2 = { 1327 .name = "SH2", 1328 .keepalive = false, 1329 .num_nodes = 1, 1330 .nodes = { &qns_gem_noc_snoc }, 1331 }; 1332 1333 static struct qcom_icc_bcm bcm_mm2 = { 1334 .name = "MM2", 1335 .keepalive = false, 1336 .num_nodes = 2, 1337 .nodes = { &qxm_camnoc_sf, &qns2_mem_noc }, 1338 }; 1339 1340 static struct qcom_icc_bcm bcm_sh3 = { 1341 .name = "SH3", 1342 .keepalive = false, 1343 .num_nodes = 2, 1344 .nodes = { &acm_gpu_tcu, &acm_sys_tcu }, 1345 }; 1346 1347 static struct qcom_icc_bcm bcm_mm3 = { 1348 .name = "MM3", 1349 .keepalive = false, 1350 .num_nodes = 4, 1351 .nodes = { &qxm_rot, &qxm_venus0, &qxm_venus1, &qxm_venus_arm9 }, 1352 }; 1353 1354 static struct qcom_icc_bcm bcm_sh4 = { 1355 .name = "SH4", 1356 .keepalive = false, 1357 .num_nodes = 1, 1358 .nodes = { &qnm_cmpnoc }, 1359 }; 1360 1361 static struct qcom_icc_bcm bcm_sh5 = { 1362 .name = "SH5", 1363 .keepalive = false, 1364 .num_nodes = 1, 1365 .nodes = { &acm_apps }, 1366 }; 1367 1368 static struct qcom_icc_bcm bcm_sn0 = { 1369 .name = "SN0", 1370 .keepalive = true, 1371 .num_nodes = 1, 1372 .nodes = { &qns_gemnoc_sf }, 1373 }; 1374 1375 static struct qcom_icc_bcm bcm_co0 = { 1376 .name = "CO0", 1377 .keepalive = false, 1378 .num_nodes = 1, 1379 .nodes = { &qns_cdsp_mem_noc }, 1380 }; 1381 1382 static struct qcom_icc_bcm bcm_ce0 = { 1383 .name = "CE0", 1384 .keepalive = false, 1385 .num_nodes = 1, 1386 .nodes = { &qxm_crypto }, 1387 }; 1388 1389 static struct qcom_icc_bcm bcm_sn1 = { 1390 .name = "SN1", 1391 .keepalive = false, 1392 .num_nodes = 1, 1393 .nodes = { &qxs_imem }, 1394 }; 1395 1396 static struct qcom_icc_bcm bcm_co1 = { 1397 .name = "CO1", 1398 .keepalive = false, 1399 .num_nodes = 1, 1400 .nodes = { &qnm_npu }, 1401 }; 1402 1403 static struct qcom_icc_bcm bcm_cn0 = { 1404 .name = "CN0", 1405 .keepalive = true, 1406 .num_nodes = 53, 1407 .nodes = { &qhm_spdm, 1408 &qnm_snoc, 1409 &qhs_a1_noc_cfg, 1410 &qhs_a2_noc_cfg, 1411 &qhs_ahb2phy_south, 1412 &qhs_aop, 1413 &qhs_aoss, 1414 &qhs_camera_cfg, 1415 &qhs_clk_ctl, 1416 &qhs_compute_dsp, 1417 &qhs_cpr_cx, 1418 &qhs_cpr_mmcx, 1419 &qhs_cpr_mx, 1420 &qhs_crypto0_cfg, 1421 &qhs_ddrss_cfg, 1422 &qhs_display_cfg, 1423 &qhs_emac_cfg, 1424 &qhs_glm, 1425 &qhs_gpuss_cfg, 1426 &qhs_imem_cfg, 1427 &qhs_ipa, 1428 &qhs_mnoc_cfg, 1429 &qhs_npu_cfg, 1430 &qhs_pcie0_cfg, 1431 &qhs_pcie1_cfg, 1432 &qhs_phy_refgen_north, 1433 &qhs_pimem_cfg, 1434 &qhs_prng, 1435 &qhs_qdss_cfg, 1436 &qhs_qspi, 1437 &qhs_qupv3_east, 1438 &qhs_qupv3_north, 1439 &qhs_qupv3_south, 1440 &qhs_sdc2, 1441 &qhs_sdc4, 1442 &qhs_snoc_cfg, 1443 &qhs_spdm, 1444 &qhs_spss_cfg, 1445 &qhs_ssc_cfg, 1446 &qhs_tcsr, 1447 &qhs_tlmm_east, 1448 &qhs_tlmm_north, 1449 &qhs_tlmm_south, 1450 &qhs_tlmm_west, 1451 &qhs_tsif, 1452 &qhs_ufs_card_cfg, 1453 &qhs_ufs_mem_cfg, 1454 &qhs_usb3_0, 1455 &qhs_usb3_1, 1456 &qhs_venus_cfg, 1457 &qhs_vsense_ctrl_cfg, 1458 &qns_cnoc_a2noc, 1459 &srvc_cnoc 1460 }, 1461 }; 1462 1463 static struct qcom_icc_bcm bcm_qup0 = { 1464 .name = "QUP0", 1465 .keepalive = false, 1466 .num_nodes = 3, 1467 .nodes = { &qhm_qup0, &qhm_qup1, &qhm_qup2 }, 1468 }; 1469 1470 static struct qcom_icc_bcm bcm_sn2 = { 1471 .name = "SN2", 1472 .keepalive = false, 1473 .num_nodes = 1, 1474 .nodes = { &qns_gemnoc_gc }, 1475 }; 1476 1477 static struct qcom_icc_bcm bcm_sn3 = { 1478 .name = "SN3", 1479 .keepalive = false, 1480 .num_nodes = 3, 1481 .nodes = { &srvc_aggre1_noc, &srvc_aggre2_noc, &qns_cnoc }, 1482 }; 1483 1484 static struct qcom_icc_bcm bcm_sn4 = { 1485 .name = "SN4", 1486 .keepalive = false, 1487 .num_nodes = 1, 1488 .nodes = { &qxs_pimem }, 1489 }; 1490 1491 static struct qcom_icc_bcm bcm_sn5 = { 1492 .name = "SN5", 1493 .keepalive = false, 1494 .num_nodes = 1, 1495 .nodes = { &xs_qdss_stm }, 1496 }; 1497 1498 static struct qcom_icc_bcm bcm_sn8 = { 1499 .name = "SN8", 1500 .keepalive = false, 1501 .num_nodes = 2, 1502 .nodes = { &xs_pcie_0, &xs_pcie_1 }, 1503 }; 1504 1505 static struct qcom_icc_bcm bcm_sn9 = { 1506 .name = "SN9", 1507 .keepalive = false, 1508 .num_nodes = 1, 1509 .nodes = { &qnm_aggre1_noc }, 1510 }; 1511 1512 static struct qcom_icc_bcm bcm_sn11 = { 1513 .name = "SN11", 1514 .keepalive = false, 1515 .num_nodes = 1, 1516 .nodes = { &qnm_aggre2_noc }, 1517 }; 1518 1519 static struct qcom_icc_bcm bcm_sn12 = { 1520 .name = "SN12", 1521 .keepalive = false, 1522 .num_nodes = 2, 1523 .nodes = { &qxm_pimem, &xm_gic }, 1524 }; 1525 1526 static struct qcom_icc_bcm bcm_sn14 = { 1527 .name = "SN14", 1528 .keepalive = false, 1529 .num_nodes = 1, 1530 .nodes = { &qns_pcie_mem_noc }, 1531 }; 1532 1533 static struct qcom_icc_bcm bcm_sn15 = { 1534 .name = "SN15", 1535 .keepalive = false, 1536 .num_nodes = 1, 1537 .nodes = { &qnm_gemnoc }, 1538 }; 1539 1540 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = { 1541 &bcm_qup0, 1542 &bcm_sn3, 1543 }; 1544 1545 static struct qcom_icc_node * const aggre1_noc_nodes[] = { 1546 [MASTER_A1NOC_CFG] = &qhm_a1noc_cfg, 1547 [MASTER_QUP_0] = &qhm_qup0, 1548 [MASTER_EMAC] = &xm_emac, 1549 [MASTER_UFS_MEM] = &xm_ufs_mem, 1550 [MASTER_USB3] = &xm_usb3_0, 1551 [MASTER_USB3_1] = &xm_usb3_1, 1552 [A1NOC_SNOC_SLV] = &qns_a1noc_snoc, 1553 [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc, 1554 }; 1555 1556 static const struct qcom_icc_desc sm8150_aggre1_noc = { 1557 .nodes = aggre1_noc_nodes, 1558 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 1559 .bcms = aggre1_noc_bcms, 1560 .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 1561 }; 1562 1563 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = { 1564 &bcm_ce0, 1565 &bcm_qup0, 1566 &bcm_sn14, 1567 &bcm_sn3, 1568 }; 1569 1570 static struct qcom_icc_node * const aggre2_noc_nodes[] = { 1571 [MASTER_A2NOC_CFG] = &qhm_a2noc_cfg, 1572 [MASTER_QDSS_BAM] = &qhm_qdss_bam, 1573 [MASTER_QSPI] = &qhm_qspi, 1574 [MASTER_QUP_1] = &qhm_qup1, 1575 [MASTER_QUP_2] = &qhm_qup2, 1576 [MASTER_SENSORS_AHB] = &qhm_sensorss_ahb, 1577 [MASTER_TSIF] = &qhm_tsif, 1578 [MASTER_CNOC_A2NOC] = &qnm_cnoc, 1579 [MASTER_CRYPTO_CORE_0] = &qxm_crypto, 1580 [MASTER_IPA] = &qxm_ipa, 1581 [MASTER_PCIE] = &xm_pcie3_0, 1582 [MASTER_PCIE_1] = &xm_pcie3_1, 1583 [MASTER_QDSS_ETR] = &xm_qdss_etr, 1584 [MASTER_SDCC_2] = &xm_sdc2, 1585 [MASTER_SDCC_4] = &xm_sdc4, 1586 [A2NOC_SNOC_SLV] = &qns_a2noc_snoc, 1587 [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc, 1588 [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc, 1589 }; 1590 1591 static const struct qcom_icc_desc sm8150_aggre2_noc = { 1592 .nodes = aggre2_noc_nodes, 1593 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 1594 .bcms = aggre2_noc_bcms, 1595 .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 1596 }; 1597 1598 static struct qcom_icc_bcm * const camnoc_virt_bcms[] = { 1599 &bcm_mm1, 1600 }; 1601 1602 static struct qcom_icc_node * const camnoc_virt_nodes[] = { 1603 [MASTER_CAMNOC_HF0_UNCOMP] = &qxm_camnoc_hf0_uncomp, 1604 [MASTER_CAMNOC_HF1_UNCOMP] = &qxm_camnoc_hf1_uncomp, 1605 [MASTER_CAMNOC_SF_UNCOMP] = &qxm_camnoc_sf_uncomp, 1606 [SLAVE_CAMNOC_UNCOMP] = &qns_camnoc_uncomp, 1607 }; 1608 1609 static const struct qcom_icc_desc sm8150_camnoc_virt = { 1610 .nodes = camnoc_virt_nodes, 1611 .num_nodes = ARRAY_SIZE(camnoc_virt_nodes), 1612 .bcms = camnoc_virt_bcms, 1613 .num_bcms = ARRAY_SIZE(camnoc_virt_bcms), 1614 }; 1615 1616 static struct qcom_icc_bcm * const compute_noc_bcms[] = { 1617 &bcm_co0, 1618 &bcm_co1, 1619 }; 1620 1621 static struct qcom_icc_node * const compute_noc_nodes[] = { 1622 [MASTER_NPU] = &qnm_npu, 1623 [SLAVE_CDSP_MEM_NOC] = &qns_cdsp_mem_noc, 1624 }; 1625 1626 static const struct qcom_icc_desc sm8150_compute_noc = { 1627 .nodes = compute_noc_nodes, 1628 .num_nodes = ARRAY_SIZE(compute_noc_nodes), 1629 .bcms = compute_noc_bcms, 1630 .num_bcms = ARRAY_SIZE(compute_noc_bcms), 1631 }; 1632 1633 static struct qcom_icc_bcm * const config_noc_bcms[] = { 1634 &bcm_cn0, 1635 }; 1636 1637 static struct qcom_icc_node * const config_noc_nodes[] = { 1638 [MASTER_SPDM] = &qhm_spdm, 1639 [SNOC_CNOC_MAS] = &qnm_snoc, 1640 [MASTER_QDSS_DAP] = &xm_qdss_dap, 1641 [SLAVE_A1NOC_CFG] = &qhs_a1_noc_cfg, 1642 [SLAVE_A2NOC_CFG] = &qhs_a2_noc_cfg, 1643 [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy_south, 1644 [SLAVE_AOP] = &qhs_aop, 1645 [SLAVE_AOSS] = &qhs_aoss, 1646 [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 1647 [SLAVE_CLK_CTL] = &qhs_clk_ctl, 1648 [SLAVE_CDSP_CFG] = &qhs_compute_dsp, 1649 [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 1650 [SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx, 1651 [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx, 1652 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 1653 [SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg, 1654 [SLAVE_DISPLAY_CFG] = &qhs_display_cfg, 1655 [SLAVE_EMAC_CFG] = &qhs_emac_cfg, 1656 [SLAVE_GLM] = &qhs_glm, 1657 [SLAVE_GRAPHICS_3D_CFG] = &qhs_gpuss_cfg, 1658 [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 1659 [SLAVE_IPA_CFG] = &qhs_ipa, 1660 [SLAVE_CNOC_MNOC_CFG] = &qhs_mnoc_cfg, 1661 [SLAVE_NPU_CFG] = &qhs_npu_cfg, 1662 [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg, 1663 [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg, 1664 [SLAVE_NORTH_PHY_CFG] = &qhs_phy_refgen_north, 1665 [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 1666 [SLAVE_PRNG] = &qhs_prng, 1667 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 1668 [SLAVE_QSPI] = &qhs_qspi, 1669 [SLAVE_QUP_2] = &qhs_qupv3_east, 1670 [SLAVE_QUP_1] = &qhs_qupv3_north, 1671 [SLAVE_QUP_0] = &qhs_qupv3_south, 1672 [SLAVE_SDCC_2] = &qhs_sdc2, 1673 [SLAVE_SDCC_4] = &qhs_sdc4, 1674 [SLAVE_SNOC_CFG] = &qhs_snoc_cfg, 1675 [SLAVE_SPDM_WRAPPER] = &qhs_spdm, 1676 [SLAVE_SPSS_CFG] = &qhs_spss_cfg, 1677 [SLAVE_SSC_CFG] = &qhs_ssc_cfg, 1678 [SLAVE_TCSR] = &qhs_tcsr, 1679 [SLAVE_TLMM_EAST] = &qhs_tlmm_east, 1680 [SLAVE_TLMM_NORTH] = &qhs_tlmm_north, 1681 [SLAVE_TLMM_SOUTH] = &qhs_tlmm_south, 1682 [SLAVE_TLMM_WEST] = &qhs_tlmm_west, 1683 [SLAVE_TSIF] = &qhs_tsif, 1684 [SLAVE_UFS_CARD_CFG] = &qhs_ufs_card_cfg, 1685 [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 1686 [SLAVE_USB3] = &qhs_usb3_0, 1687 [SLAVE_USB3_1] = &qhs_usb3_1, 1688 [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 1689 [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 1690 [SLAVE_CNOC_A2NOC] = &qns_cnoc_a2noc, 1691 [SLAVE_SERVICE_CNOC] = &srvc_cnoc, 1692 }; 1693 1694 static const struct qcom_icc_desc sm8150_config_noc = { 1695 .nodes = config_noc_nodes, 1696 .num_nodes = ARRAY_SIZE(config_noc_nodes), 1697 .bcms = config_noc_bcms, 1698 .num_bcms = ARRAY_SIZE(config_noc_bcms), 1699 }; 1700 1701 static struct qcom_icc_bcm * const dc_noc_bcms[] = { 1702 }; 1703 1704 static struct qcom_icc_node * const dc_noc_nodes[] = { 1705 [MASTER_CNOC_DC_NOC] = &qhm_cnoc_dc_noc, 1706 [SLAVE_LLCC_CFG] = &qhs_llcc, 1707 [SLAVE_GEM_NOC_CFG] = &qhs_memnoc, 1708 }; 1709 1710 static const struct qcom_icc_desc sm8150_dc_noc = { 1711 .nodes = dc_noc_nodes, 1712 .num_nodes = ARRAY_SIZE(dc_noc_nodes), 1713 .bcms = dc_noc_bcms, 1714 .num_bcms = ARRAY_SIZE(dc_noc_bcms), 1715 }; 1716 1717 static struct qcom_icc_bcm * const gem_noc_bcms[] = { 1718 &bcm_sh0, 1719 &bcm_sh2, 1720 &bcm_sh3, 1721 &bcm_sh4, 1722 &bcm_sh5, 1723 }; 1724 1725 static struct qcom_icc_node * const gem_noc_nodes[] = { 1726 [MASTER_AMPSS_M0] = &acm_apps, 1727 [MASTER_GPU_TCU] = &acm_gpu_tcu, 1728 [MASTER_SYS_TCU] = &acm_sys_tcu, 1729 [MASTER_GEM_NOC_CFG] = &qhm_gemnoc_cfg, 1730 [MASTER_COMPUTE_NOC] = &qnm_cmpnoc, 1731 [MASTER_GRAPHICS_3D] = &qnm_gpu, 1732 [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 1733 [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 1734 [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_pcie, 1735 [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 1736 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 1737 [MASTER_ECC] = &qxm_ecc, 1738 [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg, 1739 [SLAVE_ECC] = &qns_ecc, 1740 [SLAVE_GEM_NOC_SNOC] = &qns_gem_noc_snoc, 1741 [SLAVE_LLCC] = &qns_llcc, 1742 [SLAVE_SERVICE_GEM_NOC] = &srvc_gemnoc, 1743 }; 1744 1745 static const struct qcom_icc_desc sm8150_gem_noc = { 1746 .nodes = gem_noc_nodes, 1747 .num_nodes = ARRAY_SIZE(gem_noc_nodes), 1748 .bcms = gem_noc_bcms, 1749 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 1750 }; 1751 1752 static struct qcom_icc_bcm * const mc_virt_bcms[] = { 1753 &bcm_acv, 1754 &bcm_mc0, 1755 }; 1756 1757 static struct qcom_icc_node * const mc_virt_nodes[] = { 1758 [MASTER_LLCC] = &llcc_mc, 1759 [SLAVE_EBI_CH0] = &ebi, 1760 }; 1761 1762 static const struct qcom_icc_desc sm8150_mc_virt = { 1763 .nodes = mc_virt_nodes, 1764 .num_nodes = ARRAY_SIZE(mc_virt_nodes), 1765 .bcms = mc_virt_bcms, 1766 .num_bcms = ARRAY_SIZE(mc_virt_bcms), 1767 }; 1768 1769 static struct qcom_icc_bcm * const mmss_noc_bcms[] = { 1770 &bcm_mm0, 1771 &bcm_mm1, 1772 &bcm_mm2, 1773 &bcm_mm3, 1774 }; 1775 1776 static struct qcom_icc_node * const mmss_noc_nodes[] = { 1777 [MASTER_CNOC_MNOC_CFG] = &qhm_mnoc_cfg, 1778 [MASTER_CAMNOC_HF0] = &qxm_camnoc_hf0, 1779 [MASTER_CAMNOC_HF1] = &qxm_camnoc_hf1, 1780 [MASTER_CAMNOC_SF] = &qxm_camnoc_sf, 1781 [MASTER_MDP_PORT0] = &qxm_mdp0, 1782 [MASTER_MDP_PORT1] = &qxm_mdp1, 1783 [MASTER_ROTATOR] = &qxm_rot, 1784 [MASTER_VIDEO_P0] = &qxm_venus0, 1785 [MASTER_VIDEO_P1] = &qxm_venus1, 1786 [MASTER_VIDEO_PROC] = &qxm_venus_arm9, 1787 [SLAVE_MNOC_SF_MEM_NOC] = &qns2_mem_noc, 1788 [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 1789 [SLAVE_SERVICE_MNOC] = &srvc_mnoc, 1790 }; 1791 1792 static const struct qcom_icc_desc sm8150_mmss_noc = { 1793 .nodes = mmss_noc_nodes, 1794 .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 1795 .bcms = mmss_noc_bcms, 1796 .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 1797 }; 1798 1799 static struct qcom_icc_bcm * const system_noc_bcms[] = { 1800 &bcm_sn0, 1801 &bcm_sn1, 1802 &bcm_sn11, 1803 &bcm_sn12, 1804 &bcm_sn15, 1805 &bcm_sn2, 1806 &bcm_sn3, 1807 &bcm_sn4, 1808 &bcm_sn5, 1809 &bcm_sn8, 1810 &bcm_sn9, 1811 }; 1812 1813 static struct qcom_icc_node * const system_noc_nodes[] = { 1814 [MASTER_SNOC_CFG] = &qhm_snoc_cfg, 1815 [A1NOC_SNOC_MAS] = &qnm_aggre1_noc, 1816 [A2NOC_SNOC_MAS] = &qnm_aggre2_noc, 1817 [MASTER_GEM_NOC_SNOC] = &qnm_gemnoc, 1818 [MASTER_PIMEM] = &qxm_pimem, 1819 [MASTER_GIC] = &xm_gic, 1820 [SLAVE_APPSS] = &qhs_apss, 1821 [SNOC_CNOC_SLV] = &qns_cnoc, 1822 [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 1823 [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 1824 [SLAVE_OCIMEM] = &qxs_imem, 1825 [SLAVE_PIMEM] = &qxs_pimem, 1826 [SLAVE_SERVICE_SNOC] = &srvc_snoc, 1827 [SLAVE_PCIE_0] = &xs_pcie_0, 1828 [SLAVE_PCIE_1] = &xs_pcie_1, 1829 [SLAVE_QDSS_STM] = &xs_qdss_stm, 1830 [SLAVE_TCU] = &xs_sys_tcu_cfg, 1831 }; 1832 1833 static const struct qcom_icc_desc sm8150_system_noc = { 1834 .nodes = system_noc_nodes, 1835 .num_nodes = ARRAY_SIZE(system_noc_nodes), 1836 .bcms = system_noc_bcms, 1837 .num_bcms = ARRAY_SIZE(system_noc_bcms), 1838 }; 1839 1840 static const struct of_device_id qnoc_of_match[] = { 1841 { .compatible = "qcom,sm8150-aggre1-noc", 1842 .data = &sm8150_aggre1_noc}, 1843 { .compatible = "qcom,sm8150-aggre2-noc", 1844 .data = &sm8150_aggre2_noc}, 1845 { .compatible = "qcom,sm8150-camnoc-virt", 1846 .data = &sm8150_camnoc_virt}, 1847 { .compatible = "qcom,sm8150-compute-noc", 1848 .data = &sm8150_compute_noc}, 1849 { .compatible = "qcom,sm8150-config-noc", 1850 .data = &sm8150_config_noc}, 1851 { .compatible = "qcom,sm8150-dc-noc", 1852 .data = &sm8150_dc_noc}, 1853 { .compatible = "qcom,sm8150-gem-noc", 1854 .data = &sm8150_gem_noc}, 1855 { .compatible = "qcom,sm8150-mc-virt", 1856 .data = &sm8150_mc_virt}, 1857 { .compatible = "qcom,sm8150-mmss-noc", 1858 .data = &sm8150_mmss_noc}, 1859 { .compatible = "qcom,sm8150-system-noc", 1860 .data = &sm8150_system_noc}, 1861 { } 1862 }; 1863 MODULE_DEVICE_TABLE(of, qnoc_of_match); 1864 1865 static struct platform_driver qnoc_driver = { 1866 .probe = qcom_icc_rpmh_probe, 1867 .remove = qcom_icc_rpmh_remove, 1868 .driver = { 1869 .name = "qnoc-sm8150", 1870 .of_match_table = qnoc_of_match, 1871 }, 1872 }; 1873 module_platform_driver(qnoc_driver); 1874 1875 MODULE_DESCRIPTION("Qualcomm SM8150 NoC driver"); 1876 MODULE_LICENSE("GPL v2"); 1877