1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. 4 * Copyright (c) 2021, Linaro Limited 5 */ 6 7 #include <linux/device.h> 8 #include <linux/interconnect.h> 9 #include <linux/interconnect-provider.h> 10 #include <linux/module.h> 11 #include <linux/mod_devicetable.h> 12 #include <linux/platform_device.h> 13 #include <linux/property.h> 14 #include <dt-bindings/interconnect/qcom,sm8450.h> 15 16 #include "bcm-voter.h" 17 #include "icc-common.h" 18 #include "icc-rpmh.h" 19 #include "sm8450.h" 20 21 static struct qcom_icc_node qhm_qspi = { 22 .name = "qhm_qspi", 23 .id = SM8450_MASTER_QSPI_0, 24 .channels = 1, 25 .buswidth = 4, 26 .num_links = 1, 27 .links = { SM8450_SLAVE_A1NOC_SNOC }, 28 }; 29 30 static struct qcom_icc_node qhm_qup1 = { 31 .name = "qhm_qup1", 32 .id = SM8450_MASTER_QUP_1, 33 .channels = 1, 34 .buswidth = 4, 35 .num_links = 1, 36 .links = { SM8450_SLAVE_A1NOC_SNOC }, 37 }; 38 39 static struct qcom_icc_node qnm_a1noc_cfg = { 40 .name = "qnm_a1noc_cfg", 41 .id = SM8450_MASTER_A1NOC_CFG, 42 .channels = 1, 43 .buswidth = 4, 44 .num_links = 1, 45 .links = { SM8450_SLAVE_SERVICE_A1NOC }, 46 }; 47 48 static struct qcom_icc_node xm_sdc4 = { 49 .name = "xm_sdc4", 50 .id = SM8450_MASTER_SDCC_4, 51 .channels = 1, 52 .buswidth = 8, 53 .num_links = 1, 54 .links = { SM8450_SLAVE_A1NOC_SNOC }, 55 }; 56 57 static struct qcom_icc_node xm_ufs_mem = { 58 .name = "xm_ufs_mem", 59 .id = SM8450_MASTER_UFS_MEM, 60 .channels = 1, 61 .buswidth = 8, 62 .num_links = 1, 63 .links = { SM8450_SLAVE_A1NOC_SNOC }, 64 }; 65 66 static struct qcom_icc_node xm_usb3_0 = { 67 .name = "xm_usb3_0", 68 .id = SM8450_MASTER_USB3_0, 69 .channels = 1, 70 .buswidth = 8, 71 .num_links = 1, 72 .links = { SM8450_SLAVE_A1NOC_SNOC }, 73 }; 74 75 static struct qcom_icc_node qhm_qdss_bam = { 76 .name = "qhm_qdss_bam", 77 .id = SM8450_MASTER_QDSS_BAM, 78 .channels = 1, 79 .buswidth = 4, 80 .num_links = 1, 81 .links = { SM8450_SLAVE_A2NOC_SNOC }, 82 }; 83 84 static struct qcom_icc_node qhm_qup0 = { 85 .name = "qhm_qup0", 86 .id = SM8450_MASTER_QUP_0, 87 .channels = 1, 88 .buswidth = 4, 89 .num_links = 1, 90 .links = { SM8450_SLAVE_A2NOC_SNOC }, 91 }; 92 93 static struct qcom_icc_node qhm_qup2 = { 94 .name = "qhm_qup2", 95 .id = SM8450_MASTER_QUP_2, 96 .channels = 1, 97 .buswidth = 4, 98 .num_links = 1, 99 .links = { SM8450_SLAVE_A2NOC_SNOC }, 100 }; 101 102 static struct qcom_icc_node qnm_a2noc_cfg = { 103 .name = "qnm_a2noc_cfg", 104 .id = SM8450_MASTER_A2NOC_CFG, 105 .channels = 1, 106 .buswidth = 4, 107 .num_links = 1, 108 .links = { SM8450_SLAVE_SERVICE_A2NOC }, 109 }; 110 111 static struct qcom_icc_node qxm_crypto = { 112 .name = "qxm_crypto", 113 .id = SM8450_MASTER_CRYPTO, 114 .channels = 1, 115 .buswidth = 8, 116 .num_links = 1, 117 .links = { SM8450_SLAVE_A2NOC_SNOC }, 118 }; 119 120 static struct qcom_icc_node qxm_ipa = { 121 .name = "qxm_ipa", 122 .id = SM8450_MASTER_IPA, 123 .channels = 1, 124 .buswidth = 8, 125 .num_links = 1, 126 .links = { SM8450_SLAVE_A2NOC_SNOC }, 127 }; 128 129 static struct qcom_icc_node qxm_sensorss_q6 = { 130 .name = "qxm_sensorss_q6", 131 .id = SM8450_MASTER_SENSORS_PROC, 132 .channels = 1, 133 .buswidth = 8, 134 .num_links = 1, 135 .links = { SM8450_SLAVE_A2NOC_SNOC }, 136 }; 137 138 static struct qcom_icc_node qxm_sp = { 139 .name = "qxm_sp", 140 .id = SM8450_MASTER_SP, 141 .channels = 1, 142 .buswidth = 8, 143 .num_links = 1, 144 .links = { SM8450_SLAVE_A2NOC_SNOC }, 145 }; 146 147 static struct qcom_icc_node xm_qdss_etr_0 = { 148 .name = "xm_qdss_etr_0", 149 .id = SM8450_MASTER_QDSS_ETR, 150 .channels = 1, 151 .buswidth = 8, 152 .num_links = 1, 153 .links = { SM8450_SLAVE_A2NOC_SNOC }, 154 }; 155 156 static struct qcom_icc_node xm_qdss_etr_1 = { 157 .name = "xm_qdss_etr_1", 158 .id = SM8450_MASTER_QDSS_ETR_1, 159 .channels = 1, 160 .buswidth = 8, 161 .num_links = 1, 162 .links = { SM8450_SLAVE_A2NOC_SNOC }, 163 }; 164 165 static struct qcom_icc_node xm_sdc2 = { 166 .name = "xm_sdc2", 167 .id = SM8450_MASTER_SDCC_2, 168 .channels = 1, 169 .buswidth = 8, 170 .num_links = 1, 171 .links = { SM8450_SLAVE_A2NOC_SNOC }, 172 }; 173 174 static struct qcom_icc_node qup0_core_master = { 175 .name = "qup0_core_master", 176 .id = SM8450_MASTER_QUP_CORE_0, 177 .channels = 1, 178 .buswidth = 4, 179 .num_links = 1, 180 .links = { SM8450_SLAVE_QUP_CORE_0 }, 181 }; 182 183 static struct qcom_icc_node qup1_core_master = { 184 .name = "qup1_core_master", 185 .id = SM8450_MASTER_QUP_CORE_1, 186 .channels = 1, 187 .buswidth = 4, 188 .num_links = 1, 189 .links = { SM8450_SLAVE_QUP_CORE_1 }, 190 }; 191 192 static struct qcom_icc_node qup2_core_master = { 193 .name = "qup2_core_master", 194 .id = SM8450_MASTER_QUP_CORE_2, 195 .channels = 1, 196 .buswidth = 4, 197 .num_links = 1, 198 .links = { SM8450_SLAVE_QUP_CORE_2 }, 199 }; 200 201 static struct qcom_icc_node qnm_gemnoc_cnoc = { 202 .name = "qnm_gemnoc_cnoc", 203 .id = SM8450_MASTER_GEM_NOC_CNOC, 204 .channels = 1, 205 .buswidth = 16, 206 .num_links = 51, 207 .links = { SM8450_SLAVE_AHB2PHY_SOUTH, SM8450_SLAVE_AHB2PHY_NORTH, 208 SM8450_SLAVE_AOSS, SM8450_SLAVE_CAMERA_CFG, 209 SM8450_SLAVE_CLK_CTL, SM8450_SLAVE_CDSP_CFG, 210 SM8450_SLAVE_RBCPR_CX_CFG, SM8450_SLAVE_RBCPR_MMCX_CFG, 211 SM8450_SLAVE_RBCPR_MXA_CFG, SM8450_SLAVE_RBCPR_MXC_CFG, 212 SM8450_SLAVE_CRYPTO_0_CFG, SM8450_SLAVE_CX_RDPM, 213 SM8450_SLAVE_DISPLAY_CFG, SM8450_SLAVE_GFX3D_CFG, 214 SM8450_SLAVE_IMEM_CFG, SM8450_SLAVE_IPA_CFG, 215 SM8450_SLAVE_IPC_ROUTER_CFG, SM8450_SLAVE_LPASS, 216 SM8450_SLAVE_CNOC_MSS, SM8450_SLAVE_MX_RDPM, 217 SM8450_SLAVE_PCIE_0_CFG, SM8450_SLAVE_PCIE_1_CFG, 218 SM8450_SLAVE_PDM, SM8450_SLAVE_PIMEM_CFG, 219 SM8450_SLAVE_PRNG, SM8450_SLAVE_QDSS_CFG, 220 SM8450_SLAVE_QSPI_0, SM8450_SLAVE_QUP_0, 221 SM8450_SLAVE_QUP_1, SM8450_SLAVE_QUP_2, 222 SM8450_SLAVE_SDCC_2, SM8450_SLAVE_SDCC_4, 223 SM8450_SLAVE_SPSS_CFG, SM8450_SLAVE_TCSR, 224 SM8450_SLAVE_TLMM, SM8450_SLAVE_TME_CFG, 225 SM8450_SLAVE_UFS_MEM_CFG, SM8450_SLAVE_USB3_0, 226 SM8450_SLAVE_VENUS_CFG, SM8450_SLAVE_VSENSE_CTRL_CFG, 227 SM8450_SLAVE_A1NOC_CFG, SM8450_SLAVE_A2NOC_CFG, 228 SM8450_SLAVE_DDRSS_CFG, SM8450_SLAVE_CNOC_MNOC_CFG, 229 SM8450_SLAVE_PCIE_ANOC_CFG, SM8450_SLAVE_SNOC_CFG, 230 SM8450_SLAVE_IMEM, SM8450_SLAVE_PIMEM, 231 SM8450_SLAVE_SERVICE_CNOC, SM8450_SLAVE_QDSS_STM, 232 SM8450_SLAVE_TCU }, 233 }; 234 235 static struct qcom_icc_node qnm_gemnoc_pcie = { 236 .name = "qnm_gemnoc_pcie", 237 .id = SM8450_MASTER_GEM_NOC_PCIE_SNOC, 238 .channels = 1, 239 .buswidth = 8, 240 .num_links = 2, 241 .links = { SM8450_SLAVE_PCIE_0, SM8450_SLAVE_PCIE_1 }, 242 }; 243 244 static struct qcom_icc_node alm_gpu_tcu = { 245 .name = "alm_gpu_tcu", 246 .id = SM8450_MASTER_GPU_TCU, 247 .channels = 1, 248 .buswidth = 8, 249 .num_links = 2, 250 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC }, 251 }; 252 253 static struct qcom_icc_node alm_sys_tcu = { 254 .name = "alm_sys_tcu", 255 .id = SM8450_MASTER_SYS_TCU, 256 .channels = 1, 257 .buswidth = 8, 258 .num_links = 2, 259 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC }, 260 }; 261 262 static struct qcom_icc_node chm_apps = { 263 .name = "chm_apps", 264 .id = SM8450_MASTER_APPSS_PROC, 265 .channels = 3, 266 .buswidth = 32, 267 .num_links = 3, 268 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC, 269 SM8450_SLAVE_MEM_NOC_PCIE_SNOC }, 270 }; 271 272 static struct qcom_icc_node qnm_gpu = { 273 .name = "qnm_gpu", 274 .id = SM8450_MASTER_GFX3D, 275 .channels = 2, 276 .buswidth = 32, 277 .num_links = 2, 278 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC }, 279 }; 280 281 static struct qcom_icc_node qnm_mdsp = { 282 .name = "qnm_mdsp", 283 .id = SM8450_MASTER_MSS_PROC, 284 .channels = 1, 285 .buswidth = 16, 286 .num_links = 3, 287 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC, 288 SM8450_SLAVE_MEM_NOC_PCIE_SNOC }, 289 }; 290 291 static struct qcom_icc_node qnm_mnoc_hf = { 292 .name = "qnm_mnoc_hf", 293 .id = SM8450_MASTER_MNOC_HF_MEM_NOC, 294 .channels = 2, 295 .buswidth = 32, 296 .num_links = 1, 297 .links = { SM8450_SLAVE_LLCC }, 298 }; 299 300 static struct qcom_icc_node qnm_mnoc_sf = { 301 .name = "qnm_mnoc_sf", 302 .id = SM8450_MASTER_MNOC_SF_MEM_NOC, 303 .channels = 2, 304 .buswidth = 32, 305 .num_links = 2, 306 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC }, 307 }; 308 309 static struct qcom_icc_node qnm_nsp_gemnoc = { 310 .name = "qnm_nsp_gemnoc", 311 .id = SM8450_MASTER_COMPUTE_NOC, 312 .channels = 2, 313 .buswidth = 32, 314 .num_links = 2, 315 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC }, 316 }; 317 318 static struct qcom_icc_node qnm_pcie = { 319 .name = "qnm_pcie", 320 .id = SM8450_MASTER_ANOC_PCIE_GEM_NOC, 321 .channels = 1, 322 .buswidth = 16, 323 .num_links = 2, 324 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC }, 325 }; 326 327 static struct qcom_icc_node qnm_snoc_gc = { 328 .name = "qnm_snoc_gc", 329 .id = SM8450_MASTER_SNOC_GC_MEM_NOC, 330 .channels = 1, 331 .buswidth = 8, 332 .num_links = 1, 333 .links = { SM8450_SLAVE_LLCC }, 334 }; 335 336 static struct qcom_icc_node qnm_snoc_sf = { 337 .name = "qnm_snoc_sf", 338 .id = SM8450_MASTER_SNOC_SF_MEM_NOC, 339 .channels = 1, 340 .buswidth = 16, 341 .num_links = 3, 342 .links = { SM8450_SLAVE_GEM_NOC_CNOC, SM8450_SLAVE_LLCC, 343 SM8450_SLAVE_MEM_NOC_PCIE_SNOC }, 344 }; 345 346 static struct qcom_icc_node qhm_config_noc = { 347 .name = "qhm_config_noc", 348 .id = SM8450_MASTER_CNOC_LPASS_AG_NOC, 349 .channels = 1, 350 .buswidth = 4, 351 .num_links = 6, 352 .links = { SM8450_SLAVE_LPASS_CORE_CFG, SM8450_SLAVE_LPASS_LPI_CFG, 353 SM8450_SLAVE_LPASS_MPU_CFG, SM8450_SLAVE_LPASS_TOP_CFG, 354 SM8450_SLAVE_SERVICES_LPASS_AML_NOC, SM8450_SLAVE_SERVICE_LPASS_AG_NOC }, 355 }; 356 357 static struct qcom_icc_node qxm_lpass_dsp = { 358 .name = "qxm_lpass_dsp", 359 .id = SM8450_MASTER_LPASS_PROC, 360 .channels = 1, 361 .buswidth = 8, 362 .num_links = 4, 363 .links = { SM8450_SLAVE_LPASS_TOP_CFG, SM8450_SLAVE_LPASS_SNOC, 364 SM8450_SLAVE_SERVICES_LPASS_AML_NOC, SM8450_SLAVE_SERVICE_LPASS_AG_NOC }, 365 }; 366 367 static struct qcom_icc_node llcc_mc = { 368 .name = "llcc_mc", 369 .id = SM8450_MASTER_LLCC, 370 .channels = 4, 371 .buswidth = 4, 372 .num_links = 1, 373 .links = { SM8450_SLAVE_EBI1 }, 374 }; 375 376 static struct qcom_icc_node qnm_camnoc_hf = { 377 .name = "qnm_camnoc_hf", 378 .id = SM8450_MASTER_CAMNOC_HF, 379 .channels = 2, 380 .buswidth = 32, 381 .num_links = 1, 382 .links = { SM8450_SLAVE_MNOC_HF_MEM_NOC }, 383 }; 384 385 static struct qcom_icc_node qnm_camnoc_icp = { 386 .name = "qnm_camnoc_icp", 387 .id = SM8450_MASTER_CAMNOC_ICP, 388 .channels = 1, 389 .buswidth = 8, 390 .num_links = 1, 391 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 392 }; 393 394 static struct qcom_icc_node qnm_camnoc_sf = { 395 .name = "qnm_camnoc_sf", 396 .id = SM8450_MASTER_CAMNOC_SF, 397 .channels = 2, 398 .buswidth = 32, 399 .num_links = 1, 400 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 401 }; 402 403 static struct qcom_icc_node qnm_mdp = { 404 .name = "qnm_mdp", 405 .id = SM8450_MASTER_MDP, 406 .channels = 2, 407 .buswidth = 32, 408 .num_links = 1, 409 .links = { SM8450_SLAVE_MNOC_HF_MEM_NOC }, 410 }; 411 412 static struct qcom_icc_node qnm_mnoc_cfg = { 413 .name = "qnm_mnoc_cfg", 414 .id = SM8450_MASTER_CNOC_MNOC_CFG, 415 .channels = 1, 416 .buswidth = 4, 417 .num_links = 1, 418 .links = { SM8450_SLAVE_SERVICE_MNOC }, 419 }; 420 421 static struct qcom_icc_node qnm_rot = { 422 .name = "qnm_rot", 423 .id = SM8450_MASTER_ROTATOR, 424 .channels = 1, 425 .buswidth = 32, 426 .num_links = 1, 427 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 428 }; 429 430 static struct qcom_icc_node qnm_vapss_hcp = { 431 .name = "qnm_vapss_hcp", 432 .id = SM8450_MASTER_CDSP_HCP, 433 .channels = 1, 434 .buswidth = 32, 435 .num_links = 1, 436 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 437 }; 438 439 static struct qcom_icc_node qnm_video = { 440 .name = "qnm_video", 441 .id = SM8450_MASTER_VIDEO, 442 .channels = 2, 443 .buswidth = 32, 444 .num_links = 1, 445 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 446 }; 447 448 static struct qcom_icc_node qnm_video_cv_cpu = { 449 .name = "qnm_video_cv_cpu", 450 .id = SM8450_MASTER_VIDEO_CV_PROC, 451 .channels = 1, 452 .buswidth = 8, 453 .num_links = 1, 454 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 455 }; 456 457 static struct qcom_icc_node qnm_video_cvp = { 458 .name = "qnm_video_cvp", 459 .id = SM8450_MASTER_VIDEO_PROC, 460 .channels = 1, 461 .buswidth = 32, 462 .num_links = 1, 463 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 464 }; 465 466 static struct qcom_icc_node qnm_video_v_cpu = { 467 .name = "qnm_video_v_cpu", 468 .id = SM8450_MASTER_VIDEO_V_PROC, 469 .channels = 1, 470 .buswidth = 8, 471 .num_links = 1, 472 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC }, 473 }; 474 475 static struct qcom_icc_node qhm_nsp_noc_config = { 476 .name = "qhm_nsp_noc_config", 477 .id = SM8450_MASTER_CDSP_NOC_CFG, 478 .channels = 1, 479 .buswidth = 4, 480 .num_links = 1, 481 .links = { SM8450_SLAVE_SERVICE_NSP_NOC }, 482 }; 483 484 static struct qcom_icc_node qxm_nsp = { 485 .name = "qxm_nsp", 486 .id = SM8450_MASTER_CDSP_PROC, 487 .channels = 2, 488 .buswidth = 32, 489 .num_links = 1, 490 .links = { SM8450_SLAVE_CDSP_MEM_NOC }, 491 }; 492 493 static struct qcom_icc_node qnm_pcie_anoc_cfg = { 494 .name = "qnm_pcie_anoc_cfg", 495 .id = SM8450_MASTER_PCIE_ANOC_CFG, 496 .channels = 1, 497 .buswidth = 4, 498 .num_links = 1, 499 .links = { SM8450_SLAVE_SERVICE_PCIE_ANOC }, 500 }; 501 502 static struct qcom_icc_node xm_pcie3_0 = { 503 .name = "xm_pcie3_0", 504 .id = SM8450_MASTER_PCIE_0, 505 .channels = 1, 506 .buswidth = 8, 507 .num_links = 1, 508 .links = { SM8450_SLAVE_ANOC_PCIE_GEM_NOC }, 509 }; 510 511 static struct qcom_icc_node xm_pcie3_1 = { 512 .name = "xm_pcie3_1", 513 .id = SM8450_MASTER_PCIE_1, 514 .channels = 1, 515 .buswidth = 8, 516 .num_links = 1, 517 .links = { SM8450_SLAVE_ANOC_PCIE_GEM_NOC }, 518 }; 519 520 static struct qcom_icc_node qhm_gic = { 521 .name = "qhm_gic", 522 .id = SM8450_MASTER_GIC_AHB, 523 .channels = 1, 524 .buswidth = 4, 525 .num_links = 1, 526 .links = { SM8450_SLAVE_SNOC_GEM_NOC_SF }, 527 }; 528 529 static struct qcom_icc_node qnm_aggre1_noc = { 530 .name = "qnm_aggre1_noc", 531 .id = SM8450_MASTER_A1NOC_SNOC, 532 .channels = 1, 533 .buswidth = 16, 534 .num_links = 1, 535 .links = { SM8450_SLAVE_SNOC_GEM_NOC_SF }, 536 }; 537 538 static struct qcom_icc_node qnm_aggre2_noc = { 539 .name = "qnm_aggre2_noc", 540 .id = SM8450_MASTER_A2NOC_SNOC, 541 .channels = 1, 542 .buswidth = 16, 543 .num_links = 1, 544 .links = { SM8450_SLAVE_SNOC_GEM_NOC_SF }, 545 }; 546 547 static struct qcom_icc_node qnm_lpass_noc = { 548 .name = "qnm_lpass_noc", 549 .id = SM8450_MASTER_LPASS_ANOC, 550 .channels = 1, 551 .buswidth = 16, 552 .num_links = 1, 553 .links = { SM8450_SLAVE_SNOC_GEM_NOC_SF }, 554 }; 555 556 static struct qcom_icc_node qnm_snoc_cfg = { 557 .name = "qnm_snoc_cfg", 558 .id = SM8450_MASTER_SNOC_CFG, 559 .channels = 1, 560 .buswidth = 4, 561 .num_links = 1, 562 .links = { SM8450_SLAVE_SERVICE_SNOC }, 563 }; 564 565 static struct qcom_icc_node qxm_pimem = { 566 .name = "qxm_pimem", 567 .id = SM8450_MASTER_PIMEM, 568 .channels = 1, 569 .buswidth = 8, 570 .num_links = 1, 571 .links = { SM8450_SLAVE_SNOC_GEM_NOC_GC }, 572 }; 573 574 static struct qcom_icc_node xm_gic = { 575 .name = "xm_gic", 576 .id = SM8450_MASTER_GIC, 577 .channels = 1, 578 .buswidth = 8, 579 .num_links = 1, 580 .links = { SM8450_SLAVE_SNOC_GEM_NOC_GC }, 581 }; 582 583 static struct qcom_icc_node qnm_mnoc_hf_disp = { 584 .name = "qnm_mnoc_hf_disp", 585 .id = SM8450_MASTER_MNOC_HF_MEM_NOC_DISP, 586 .channels = 2, 587 .buswidth = 32, 588 .num_links = 1, 589 .links = { SM8450_SLAVE_LLCC_DISP }, 590 }; 591 592 static struct qcom_icc_node qnm_mnoc_sf_disp = { 593 .name = "qnm_mnoc_sf_disp", 594 .id = SM8450_MASTER_MNOC_SF_MEM_NOC_DISP, 595 .channels = 2, 596 .buswidth = 32, 597 .num_links = 1, 598 .links = { SM8450_SLAVE_LLCC_DISP }, 599 }; 600 601 static struct qcom_icc_node qnm_pcie_disp = { 602 .name = "qnm_pcie_disp", 603 .id = SM8450_MASTER_ANOC_PCIE_GEM_NOC_DISP, 604 .channels = 1, 605 .buswidth = 16, 606 .num_links = 1, 607 .links = { SM8450_SLAVE_LLCC_DISP }, 608 }; 609 610 static struct qcom_icc_node llcc_mc_disp = { 611 .name = "llcc_mc_disp", 612 .id = SM8450_MASTER_LLCC_DISP, 613 .channels = 4, 614 .buswidth = 4, 615 .num_links = 1, 616 .links = { SM8450_SLAVE_EBI1_DISP }, 617 }; 618 619 static struct qcom_icc_node qnm_mdp_disp = { 620 .name = "qnm_mdp_disp", 621 .id = SM8450_MASTER_MDP_DISP, 622 .channels = 2, 623 .buswidth = 32, 624 .num_links = 1, 625 .links = { SM8450_SLAVE_MNOC_HF_MEM_NOC_DISP }, 626 }; 627 628 static struct qcom_icc_node qnm_rot_disp = { 629 .name = "qnm_rot_disp", 630 .id = SM8450_MASTER_ROTATOR_DISP, 631 .channels = 1, 632 .buswidth = 32, 633 .num_links = 1, 634 .links = { SM8450_SLAVE_MNOC_SF_MEM_NOC_DISP }, 635 }; 636 637 static struct qcom_icc_node qns_a1noc_snoc = { 638 .name = "qns_a1noc_snoc", 639 .id = SM8450_SLAVE_A1NOC_SNOC, 640 .channels = 1, 641 .buswidth = 16, 642 .num_links = 1, 643 .links = { SM8450_MASTER_A1NOC_SNOC }, 644 }; 645 646 static struct qcom_icc_node srvc_aggre1_noc = { 647 .name = "srvc_aggre1_noc", 648 .id = SM8450_SLAVE_SERVICE_A1NOC, 649 .channels = 1, 650 .buswidth = 4, 651 .num_links = 0, 652 }; 653 654 static struct qcom_icc_node qns_a2noc_snoc = { 655 .name = "qns_a2noc_snoc", 656 .id = SM8450_SLAVE_A2NOC_SNOC, 657 .channels = 1, 658 .buswidth = 16, 659 .num_links = 1, 660 .links = { SM8450_MASTER_A2NOC_SNOC }, 661 }; 662 663 static struct qcom_icc_node srvc_aggre2_noc = { 664 .name = "srvc_aggre2_noc", 665 .id = SM8450_SLAVE_SERVICE_A2NOC, 666 .channels = 1, 667 .buswidth = 4, 668 .num_links = 0, 669 }; 670 671 static struct qcom_icc_node qup0_core_slave = { 672 .name = "qup0_core_slave", 673 .id = SM8450_SLAVE_QUP_CORE_0, 674 .channels = 1, 675 .buswidth = 4, 676 .num_links = 0, 677 }; 678 679 static struct qcom_icc_node qup1_core_slave = { 680 .name = "qup1_core_slave", 681 .id = SM8450_SLAVE_QUP_CORE_1, 682 .channels = 1, 683 .buswidth = 4, 684 .num_links = 0, 685 }; 686 687 static struct qcom_icc_node qup2_core_slave = { 688 .name = "qup2_core_slave", 689 .id = SM8450_SLAVE_QUP_CORE_2, 690 .channels = 1, 691 .buswidth = 4, 692 .num_links = 0, 693 }; 694 695 static struct qcom_icc_node qhs_ahb2phy0 = { 696 .name = "qhs_ahb2phy0", 697 .id = SM8450_SLAVE_AHB2PHY_SOUTH, 698 .channels = 1, 699 .buswidth = 4, 700 .num_links = 0, 701 }; 702 703 static struct qcom_icc_node qhs_ahb2phy1 = { 704 .name = "qhs_ahb2phy1", 705 .id = SM8450_SLAVE_AHB2PHY_NORTH, 706 .channels = 1, 707 .buswidth = 4, 708 .num_links = 0, 709 }; 710 711 static struct qcom_icc_node qhs_aoss = { 712 .name = "qhs_aoss", 713 .id = SM8450_SLAVE_AOSS, 714 .channels = 1, 715 .buswidth = 4, 716 .num_links = 0, 717 }; 718 719 static struct qcom_icc_node qhs_camera_cfg = { 720 .name = "qhs_camera_cfg", 721 .id = SM8450_SLAVE_CAMERA_CFG, 722 .channels = 1, 723 .buswidth = 4, 724 .num_links = 0, 725 }; 726 727 static struct qcom_icc_node qhs_clk_ctl = { 728 .name = "qhs_clk_ctl", 729 .id = SM8450_SLAVE_CLK_CTL, 730 .channels = 1, 731 .buswidth = 4, 732 .num_links = 0, 733 }; 734 735 static struct qcom_icc_node qhs_compute_cfg = { 736 .name = "qhs_compute_cfg", 737 .id = SM8450_SLAVE_CDSP_CFG, 738 .channels = 1, 739 .buswidth = 4, 740 .num_links = 1, 741 .links = { MASTER_CDSP_NOC_CFG }, 742 }; 743 744 static struct qcom_icc_node qhs_cpr_cx = { 745 .name = "qhs_cpr_cx", 746 .id = SM8450_SLAVE_RBCPR_CX_CFG, 747 .channels = 1, 748 .buswidth = 4, 749 .num_links = 0, 750 }; 751 752 static struct qcom_icc_node qhs_cpr_mmcx = { 753 .name = "qhs_cpr_mmcx", 754 .id = SM8450_SLAVE_RBCPR_MMCX_CFG, 755 .channels = 1, 756 .buswidth = 4, 757 .num_links = 0, 758 }; 759 760 static struct qcom_icc_node qhs_cpr_mxa = { 761 .name = "qhs_cpr_mxa", 762 .id = SM8450_SLAVE_RBCPR_MXA_CFG, 763 .channels = 1, 764 .buswidth = 4, 765 .num_links = 0, 766 }; 767 768 static struct qcom_icc_node qhs_cpr_mxc = { 769 .name = "qhs_cpr_mxc", 770 .id = SM8450_SLAVE_RBCPR_MXC_CFG, 771 .channels = 1, 772 .buswidth = 4, 773 .num_links = 0, 774 }; 775 776 static struct qcom_icc_node qhs_crypto0_cfg = { 777 .name = "qhs_crypto0_cfg", 778 .id = SM8450_SLAVE_CRYPTO_0_CFG, 779 .channels = 1, 780 .buswidth = 4, 781 .num_links = 0, 782 }; 783 784 static struct qcom_icc_node qhs_cx_rdpm = { 785 .name = "qhs_cx_rdpm", 786 .id = SM8450_SLAVE_CX_RDPM, 787 .channels = 1, 788 .buswidth = 4, 789 .num_links = 0, 790 }; 791 792 static struct qcom_icc_node qhs_display_cfg = { 793 .name = "qhs_display_cfg", 794 .id = SM8450_SLAVE_DISPLAY_CFG, 795 .channels = 1, 796 .buswidth = 4, 797 .num_links = 0, 798 }; 799 800 static struct qcom_icc_node qhs_gpuss_cfg = { 801 .name = "qhs_gpuss_cfg", 802 .id = SM8450_SLAVE_GFX3D_CFG, 803 .channels = 1, 804 .buswidth = 8, 805 .num_links = 0, 806 }; 807 808 static struct qcom_icc_node qhs_imem_cfg = { 809 .name = "qhs_imem_cfg", 810 .id = SM8450_SLAVE_IMEM_CFG, 811 .channels = 1, 812 .buswidth = 4, 813 .num_links = 0, 814 }; 815 816 static struct qcom_icc_node qhs_ipa = { 817 .name = "qhs_ipa", 818 .id = SM8450_SLAVE_IPA_CFG, 819 .channels = 1, 820 .buswidth = 4, 821 .num_links = 0, 822 }; 823 824 static struct qcom_icc_node qhs_ipc_router = { 825 .name = "qhs_ipc_router", 826 .id = SM8450_SLAVE_IPC_ROUTER_CFG, 827 .channels = 1, 828 .buswidth = 4, 829 .num_links = 0, 830 }; 831 832 static struct qcom_icc_node qhs_lpass_cfg = { 833 .name = "qhs_lpass_cfg", 834 .id = SM8450_SLAVE_LPASS, 835 .channels = 1, 836 .buswidth = 4, 837 .num_links = 1, 838 .links = { MASTER_CNOC_LPASS_AG_NOC }, 839 }; 840 841 static struct qcom_icc_node qhs_mss_cfg = { 842 .name = "qhs_mss_cfg", 843 .id = SM8450_SLAVE_CNOC_MSS, 844 .channels = 1, 845 .buswidth = 4, 846 .num_links = 0, 847 }; 848 849 static struct qcom_icc_node qhs_mx_rdpm = { 850 .name = "qhs_mx_rdpm", 851 .id = SM8450_SLAVE_MX_RDPM, 852 .channels = 1, 853 .buswidth = 4, 854 .num_links = 0, 855 }; 856 857 static struct qcom_icc_node qhs_pcie0_cfg = { 858 .name = "qhs_pcie0_cfg", 859 .id = SM8450_SLAVE_PCIE_0_CFG, 860 .channels = 1, 861 .buswidth = 4, 862 .num_links = 0, 863 }; 864 865 static struct qcom_icc_node qhs_pcie1_cfg = { 866 .name = "qhs_pcie1_cfg", 867 .id = SM8450_SLAVE_PCIE_1_CFG, 868 .channels = 1, 869 .buswidth = 4, 870 .num_links = 0, 871 }; 872 873 static struct qcom_icc_node qhs_pdm = { 874 .name = "qhs_pdm", 875 .id = SM8450_SLAVE_PDM, 876 .channels = 1, 877 .buswidth = 4, 878 .num_links = 0, 879 }; 880 881 static struct qcom_icc_node qhs_pimem_cfg = { 882 .name = "qhs_pimem_cfg", 883 .id = SM8450_SLAVE_PIMEM_CFG, 884 .channels = 1, 885 .buswidth = 4, 886 .num_links = 0, 887 }; 888 889 static struct qcom_icc_node qhs_prng = { 890 .name = "qhs_prng", 891 .id = SM8450_SLAVE_PRNG, 892 .channels = 1, 893 .buswidth = 4, 894 .num_links = 0, 895 }; 896 897 static struct qcom_icc_node qhs_qdss_cfg = { 898 .name = "qhs_qdss_cfg", 899 .id = SM8450_SLAVE_QDSS_CFG, 900 .channels = 1, 901 .buswidth = 4, 902 .num_links = 0, 903 }; 904 905 static struct qcom_icc_node qhs_qspi = { 906 .name = "qhs_qspi", 907 .id = SM8450_SLAVE_QSPI_0, 908 .channels = 1, 909 .buswidth = 4, 910 .num_links = 0, 911 }; 912 913 static struct qcom_icc_node qhs_qup0 = { 914 .name = "qhs_qup0", 915 .id = SM8450_SLAVE_QUP_0, 916 .channels = 1, 917 .buswidth = 4, 918 .num_links = 0, 919 }; 920 921 static struct qcom_icc_node qhs_qup1 = { 922 .name = "qhs_qup1", 923 .id = SM8450_SLAVE_QUP_1, 924 .channels = 1, 925 .buswidth = 4, 926 .num_links = 0, 927 }; 928 929 static struct qcom_icc_node qhs_qup2 = { 930 .name = "qhs_qup2", 931 .id = SM8450_SLAVE_QUP_2, 932 .channels = 1, 933 .buswidth = 4, 934 .num_links = 0, 935 }; 936 937 static struct qcom_icc_node qhs_sdc2 = { 938 .name = "qhs_sdc2", 939 .id = SM8450_SLAVE_SDCC_2, 940 .channels = 1, 941 .buswidth = 4, 942 .num_links = 0, 943 }; 944 945 static struct qcom_icc_node qhs_sdc4 = { 946 .name = "qhs_sdc4", 947 .id = SM8450_SLAVE_SDCC_4, 948 .channels = 1, 949 .buswidth = 4, 950 .num_links = 0, 951 }; 952 953 static struct qcom_icc_node qhs_spss_cfg = { 954 .name = "qhs_spss_cfg", 955 .id = SM8450_SLAVE_SPSS_CFG, 956 .channels = 1, 957 .buswidth = 4, 958 .num_links = 0, 959 }; 960 961 static struct qcom_icc_node qhs_tcsr = { 962 .name = "qhs_tcsr", 963 .id = SM8450_SLAVE_TCSR, 964 .channels = 1, 965 .buswidth = 4, 966 .num_links = 0, 967 }; 968 969 static struct qcom_icc_node qhs_tlmm = { 970 .name = "qhs_tlmm", 971 .id = SM8450_SLAVE_TLMM, 972 .channels = 1, 973 .buswidth = 4, 974 .num_links = 0, 975 }; 976 977 static struct qcom_icc_node qhs_tme_cfg = { 978 .name = "qhs_tme_cfg", 979 .id = SM8450_SLAVE_TME_CFG, 980 .channels = 1, 981 .buswidth = 4, 982 .num_links = 0, 983 }; 984 985 static struct qcom_icc_node qhs_ufs_mem_cfg = { 986 .name = "qhs_ufs_mem_cfg", 987 .id = SM8450_SLAVE_UFS_MEM_CFG, 988 .channels = 1, 989 .buswidth = 4, 990 .num_links = 0, 991 }; 992 993 static struct qcom_icc_node qhs_usb3_0 = { 994 .name = "qhs_usb3_0", 995 .id = SM8450_SLAVE_USB3_0, 996 .channels = 1, 997 .buswidth = 4, 998 .num_links = 0, 999 }; 1000 1001 static struct qcom_icc_node qhs_venus_cfg = { 1002 .name = "qhs_venus_cfg", 1003 .id = SM8450_SLAVE_VENUS_CFG, 1004 .channels = 1, 1005 .buswidth = 4, 1006 .num_links = 0, 1007 }; 1008 1009 static struct qcom_icc_node qhs_vsense_ctrl_cfg = { 1010 .name = "qhs_vsense_ctrl_cfg", 1011 .id = SM8450_SLAVE_VSENSE_CTRL_CFG, 1012 .channels = 1, 1013 .buswidth = 4, 1014 .num_links = 0, 1015 }; 1016 1017 static struct qcom_icc_node qns_a1_noc_cfg = { 1018 .name = "qns_a1_noc_cfg", 1019 .id = SM8450_SLAVE_A1NOC_CFG, 1020 .channels = 1, 1021 .buswidth = 4, 1022 .num_links = 1, 1023 .links = { SM8450_MASTER_A1NOC_CFG }, 1024 }; 1025 1026 static struct qcom_icc_node qns_a2_noc_cfg = { 1027 .name = "qns_a2_noc_cfg", 1028 .id = SM8450_SLAVE_A2NOC_CFG, 1029 .channels = 1, 1030 .buswidth = 4, 1031 .num_links = 1, 1032 .links = { SM8450_MASTER_A2NOC_CFG }, 1033 }; 1034 1035 static struct qcom_icc_node qns_ddrss_cfg = { 1036 .name = "qns_ddrss_cfg", 1037 .id = SM8450_SLAVE_DDRSS_CFG, 1038 .channels = 1, 1039 .buswidth = 4, 1040 .num_links = 1, 1041 //FIXME where is link 1042 }; 1043 1044 static struct qcom_icc_node qns_mnoc_cfg = { 1045 .name = "qns_mnoc_cfg", 1046 .id = SM8450_SLAVE_CNOC_MNOC_CFG, 1047 .channels = 1, 1048 .buswidth = 4, 1049 .num_links = 1, 1050 .links = { SM8450_MASTER_CNOC_MNOC_CFG }, 1051 }; 1052 1053 static struct qcom_icc_node qns_pcie_anoc_cfg = { 1054 .name = "qns_pcie_anoc_cfg", 1055 .id = SM8450_SLAVE_PCIE_ANOC_CFG, 1056 .channels = 1, 1057 .buswidth = 4, 1058 .num_links = 1, 1059 .links = { SM8450_MASTER_PCIE_ANOC_CFG }, 1060 }; 1061 1062 static struct qcom_icc_node qns_snoc_cfg = { 1063 .name = "qns_snoc_cfg", 1064 .id = SM8450_SLAVE_SNOC_CFG, 1065 .channels = 1, 1066 .buswidth = 4, 1067 .num_links = 1, 1068 .links = { SM8450_MASTER_SNOC_CFG }, 1069 }; 1070 1071 static struct qcom_icc_node qxs_imem = { 1072 .name = "qxs_imem", 1073 .id = SM8450_SLAVE_IMEM, 1074 .channels = 1, 1075 .buswidth = 8, 1076 .num_links = 0, 1077 }; 1078 1079 static struct qcom_icc_node qxs_pimem = { 1080 .name = "qxs_pimem", 1081 .id = SM8450_SLAVE_PIMEM, 1082 .channels = 1, 1083 .buswidth = 8, 1084 .num_links = 0, 1085 }; 1086 1087 static struct qcom_icc_node srvc_cnoc = { 1088 .name = "srvc_cnoc", 1089 .id = SM8450_SLAVE_SERVICE_CNOC, 1090 .channels = 1, 1091 .buswidth = 4, 1092 .num_links = 0, 1093 }; 1094 1095 static struct qcom_icc_node xs_pcie_0 = { 1096 .name = "xs_pcie_0", 1097 .id = SM8450_SLAVE_PCIE_0, 1098 .channels = 1, 1099 .buswidth = 8, 1100 .num_links = 0, 1101 }; 1102 1103 static struct qcom_icc_node xs_pcie_1 = { 1104 .name = "xs_pcie_1", 1105 .id = SM8450_SLAVE_PCIE_1, 1106 .channels = 1, 1107 .buswidth = 8, 1108 .num_links = 0, 1109 }; 1110 1111 static struct qcom_icc_node xs_qdss_stm = { 1112 .name = "xs_qdss_stm", 1113 .id = SM8450_SLAVE_QDSS_STM, 1114 .channels = 1, 1115 .buswidth = 4, 1116 .num_links = 0, 1117 }; 1118 1119 static struct qcom_icc_node xs_sys_tcu_cfg = { 1120 .name = "xs_sys_tcu_cfg", 1121 .id = SM8450_SLAVE_TCU, 1122 .channels = 1, 1123 .buswidth = 8, 1124 .num_links = 0, 1125 }; 1126 1127 static struct qcom_icc_node qns_gem_noc_cnoc = { 1128 .name = "qns_gem_noc_cnoc", 1129 .id = SM8450_SLAVE_GEM_NOC_CNOC, 1130 .channels = 1, 1131 .buswidth = 16, 1132 .num_links = 1, 1133 .links = { SM8450_MASTER_GEM_NOC_CNOC }, 1134 }; 1135 1136 static struct qcom_icc_node qns_llcc = { 1137 .name = "qns_llcc", 1138 .id = SM8450_SLAVE_LLCC, 1139 .channels = 4, 1140 .buswidth = 16, 1141 .num_links = 1, 1142 .links = { SM8450_MASTER_LLCC }, 1143 }; 1144 1145 static struct qcom_icc_node qns_pcie = { 1146 .name = "qns_pcie", 1147 .id = SM8450_SLAVE_MEM_NOC_PCIE_SNOC, 1148 .channels = 1, 1149 .buswidth = 8, 1150 .num_links = 1, 1151 .links = { SM8450_MASTER_GEM_NOC_PCIE_SNOC }, 1152 }; 1153 1154 static struct qcom_icc_node qhs_lpass_core = { 1155 .name = "qhs_lpass_core", 1156 .id = SM8450_SLAVE_LPASS_CORE_CFG, 1157 .channels = 1, 1158 .buswidth = 4, 1159 .num_links = 0, 1160 }; 1161 1162 static struct qcom_icc_node qhs_lpass_lpi = { 1163 .name = "qhs_lpass_lpi", 1164 .id = SM8450_SLAVE_LPASS_LPI_CFG, 1165 .channels = 1, 1166 .buswidth = 4, 1167 .num_links = 0, 1168 }; 1169 1170 static struct qcom_icc_node qhs_lpass_mpu = { 1171 .name = "qhs_lpass_mpu", 1172 .id = SM8450_SLAVE_LPASS_MPU_CFG, 1173 .channels = 1, 1174 .buswidth = 4, 1175 .num_links = 0, 1176 }; 1177 1178 static struct qcom_icc_node qhs_lpass_top = { 1179 .name = "qhs_lpass_top", 1180 .id = SM8450_SLAVE_LPASS_TOP_CFG, 1181 .channels = 1, 1182 .buswidth = 4, 1183 .num_links = 0, 1184 }; 1185 1186 static struct qcom_icc_node qns_sysnoc = { 1187 .name = "qns_sysnoc", 1188 .id = SM8450_SLAVE_LPASS_SNOC, 1189 .channels = 1, 1190 .buswidth = 16, 1191 .num_links = 1, 1192 .links = { SM8450_MASTER_LPASS_ANOC }, 1193 }; 1194 1195 static struct qcom_icc_node srvc_niu_aml_noc = { 1196 .name = "srvc_niu_aml_noc", 1197 .id = SM8450_SLAVE_SERVICES_LPASS_AML_NOC, 1198 .channels = 1, 1199 .buswidth = 4, 1200 .num_links = 0, 1201 }; 1202 1203 static struct qcom_icc_node srvc_niu_lpass_agnoc = { 1204 .name = "srvc_niu_lpass_agnoc", 1205 .id = SM8450_SLAVE_SERVICE_LPASS_AG_NOC, 1206 .channels = 1, 1207 .buswidth = 4, 1208 .num_links = 0, 1209 }; 1210 1211 static struct qcom_icc_node ebi = { 1212 .name = "ebi", 1213 .id = SM8450_SLAVE_EBI1, 1214 .channels = 4, 1215 .buswidth = 4, 1216 .num_links = 0, 1217 }; 1218 1219 static struct qcom_icc_node qns_mem_noc_hf = { 1220 .name = "qns_mem_noc_hf", 1221 .id = SM8450_SLAVE_MNOC_HF_MEM_NOC, 1222 .channels = 2, 1223 .buswidth = 32, 1224 .num_links = 1, 1225 .links = { SM8450_MASTER_MNOC_HF_MEM_NOC }, 1226 }; 1227 1228 static struct qcom_icc_node qns_mem_noc_sf = { 1229 .name = "qns_mem_noc_sf", 1230 .id = SM8450_SLAVE_MNOC_SF_MEM_NOC, 1231 .channels = 2, 1232 .buswidth = 32, 1233 .num_links = 1, 1234 .links = { SM8450_MASTER_MNOC_SF_MEM_NOC }, 1235 }; 1236 1237 static struct qcom_icc_node srvc_mnoc = { 1238 .name = "srvc_mnoc", 1239 .id = SM8450_SLAVE_SERVICE_MNOC, 1240 .channels = 1, 1241 .buswidth = 4, 1242 .num_links = 0, 1243 }; 1244 1245 static struct qcom_icc_node qns_nsp_gemnoc = { 1246 .name = "qns_nsp_gemnoc", 1247 .id = SM8450_SLAVE_CDSP_MEM_NOC, 1248 .channels = 2, 1249 .buswidth = 32, 1250 .num_links = 1, 1251 .links = { SM8450_MASTER_COMPUTE_NOC }, 1252 }; 1253 1254 static struct qcom_icc_node service_nsp_noc = { 1255 .name = "service_nsp_noc", 1256 .id = SM8450_SLAVE_SERVICE_NSP_NOC, 1257 .channels = 1, 1258 .buswidth = 4, 1259 .num_links = 0, 1260 }; 1261 1262 static struct qcom_icc_node qns_pcie_mem_noc = { 1263 .name = "qns_pcie_mem_noc", 1264 .id = SM8450_SLAVE_ANOC_PCIE_GEM_NOC, 1265 .channels = 1, 1266 .buswidth = 16, 1267 .num_links = 1, 1268 .links = { SM8450_MASTER_ANOC_PCIE_GEM_NOC }, 1269 }; 1270 1271 static struct qcom_icc_node srvc_pcie_aggre_noc = { 1272 .name = "srvc_pcie_aggre_noc", 1273 .id = SM8450_SLAVE_SERVICE_PCIE_ANOC, 1274 .channels = 1, 1275 .buswidth = 4, 1276 .num_links = 0, 1277 }; 1278 1279 static struct qcom_icc_node qns_gemnoc_gc = { 1280 .name = "qns_gemnoc_gc", 1281 .id = SM8450_SLAVE_SNOC_GEM_NOC_GC, 1282 .channels = 1, 1283 .buswidth = 8, 1284 .num_links = 1, 1285 .links = { SM8450_MASTER_SNOC_GC_MEM_NOC }, 1286 }; 1287 1288 static struct qcom_icc_node qns_gemnoc_sf = { 1289 .name = "qns_gemnoc_sf", 1290 .id = SM8450_SLAVE_SNOC_GEM_NOC_SF, 1291 .channels = 1, 1292 .buswidth = 16, 1293 .num_links = 1, 1294 .links = { SM8450_MASTER_SNOC_SF_MEM_NOC }, 1295 }; 1296 1297 static struct qcom_icc_node srvc_snoc = { 1298 .name = "srvc_snoc", 1299 .id = SM8450_SLAVE_SERVICE_SNOC, 1300 .channels = 1, 1301 .buswidth = 4, 1302 .num_links = 0, 1303 }; 1304 1305 static struct qcom_icc_node qns_llcc_disp = { 1306 .name = "qns_llcc_disp", 1307 .id = SM8450_SLAVE_LLCC_DISP, 1308 .channels = 4, 1309 .buswidth = 16, 1310 .num_links = 1, 1311 .links = { SM8450_MASTER_LLCC_DISP }, 1312 }; 1313 1314 static struct qcom_icc_node ebi_disp = { 1315 .name = "ebi_disp", 1316 .id = SM8450_SLAVE_EBI1_DISP, 1317 .channels = 4, 1318 .buswidth = 4, 1319 .num_links = 0, 1320 }; 1321 1322 static struct qcom_icc_node qns_mem_noc_hf_disp = { 1323 .name = "qns_mem_noc_hf_disp", 1324 .id = SM8450_SLAVE_MNOC_HF_MEM_NOC_DISP, 1325 .channels = 2, 1326 .buswidth = 32, 1327 .num_links = 1, 1328 .links = { SM8450_MASTER_MNOC_HF_MEM_NOC_DISP }, 1329 }; 1330 1331 static struct qcom_icc_node qns_mem_noc_sf_disp = { 1332 .name = "qns_mem_noc_sf_disp", 1333 .id = SM8450_SLAVE_MNOC_SF_MEM_NOC_DISP, 1334 .channels = 2, 1335 .buswidth = 32, 1336 .num_links = 1, 1337 .links = { SM8450_MASTER_MNOC_SF_MEM_NOC_DISP }, 1338 }; 1339 1340 static struct qcom_icc_bcm bcm_acv = { 1341 .name = "ACV", 1342 .enable_mask = 0x8, 1343 .num_nodes = 1, 1344 .nodes = { &ebi }, 1345 }; 1346 1347 static struct qcom_icc_bcm bcm_ce0 = { 1348 .name = "CE0", 1349 .num_nodes = 1, 1350 .nodes = { &qxm_crypto }, 1351 }; 1352 1353 static struct qcom_icc_bcm bcm_cn0 = { 1354 .name = "CN0", 1355 .enable_mask = 0x1, 1356 .keepalive = true, 1357 .num_nodes = 55, 1358 .nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie, 1359 &qhs_ahb2phy0, &qhs_ahb2phy1, 1360 &qhs_aoss, &qhs_camera_cfg, 1361 &qhs_clk_ctl, &qhs_compute_cfg, 1362 &qhs_cpr_cx, &qhs_cpr_mmcx, 1363 &qhs_cpr_mxa, &qhs_cpr_mxc, 1364 &qhs_crypto0_cfg, &qhs_cx_rdpm, 1365 &qhs_display_cfg, &qhs_gpuss_cfg, 1366 &qhs_imem_cfg, &qhs_ipa, 1367 &qhs_ipc_router, &qhs_lpass_cfg, 1368 &qhs_mss_cfg, &qhs_mx_rdpm, 1369 &qhs_pcie0_cfg, &qhs_pcie1_cfg, 1370 &qhs_pdm, &qhs_pimem_cfg, 1371 &qhs_prng, &qhs_qdss_cfg, 1372 &qhs_qspi, &qhs_qup0, 1373 &qhs_qup1, &qhs_qup2, 1374 &qhs_sdc2, &qhs_sdc4, 1375 &qhs_spss_cfg, &qhs_tcsr, 1376 &qhs_tlmm, &qhs_tme_cfg, 1377 &qhs_ufs_mem_cfg, &qhs_usb3_0, 1378 &qhs_venus_cfg, &qhs_vsense_ctrl_cfg, 1379 &qns_a1_noc_cfg, &qns_a2_noc_cfg, 1380 &qns_ddrss_cfg, &qns_mnoc_cfg, 1381 &qns_pcie_anoc_cfg, &qns_snoc_cfg, 1382 &qxs_imem, &qxs_pimem, 1383 &srvc_cnoc, &xs_pcie_0, 1384 &xs_pcie_1, &xs_qdss_stm, 1385 &xs_sys_tcu_cfg }, 1386 }; 1387 1388 static struct qcom_icc_bcm bcm_co0 = { 1389 .name = "CO0", 1390 .enable_mask = 0x1, 1391 .num_nodes = 2, 1392 .nodes = { &qxm_nsp, &qns_nsp_gemnoc }, 1393 }; 1394 1395 static struct qcom_icc_bcm bcm_mc0 = { 1396 .name = "MC0", 1397 .keepalive = true, 1398 .num_nodes = 1, 1399 .nodes = { &ebi }, 1400 }; 1401 1402 static struct qcom_icc_bcm bcm_mm0 = { 1403 .name = "MM0", 1404 .keepalive = true, 1405 .num_nodes = 1, 1406 .nodes = { &qns_mem_noc_hf }, 1407 }; 1408 1409 static struct qcom_icc_bcm bcm_mm1 = { 1410 .name = "MM1", 1411 .enable_mask = 0x1, 1412 .num_nodes = 12, 1413 .nodes = { &qnm_camnoc_hf, &qnm_camnoc_icp, 1414 &qnm_camnoc_sf, &qnm_mdp, 1415 &qnm_mnoc_cfg, &qnm_rot, 1416 &qnm_vapss_hcp, &qnm_video, 1417 &qnm_video_cv_cpu, &qnm_video_cvp, 1418 &qnm_video_v_cpu, &qns_mem_noc_sf }, 1419 }; 1420 1421 static struct qcom_icc_bcm bcm_qup0 = { 1422 .name = "QUP0", 1423 .keepalive = true, 1424 .vote_scale = 1, 1425 .num_nodes = 1, 1426 .nodes = { &qup0_core_slave }, 1427 }; 1428 1429 static struct qcom_icc_bcm bcm_qup1 = { 1430 .name = "QUP1", 1431 .keepalive = true, 1432 .vote_scale = 1, 1433 .num_nodes = 1, 1434 .nodes = { &qup1_core_slave }, 1435 }; 1436 1437 static struct qcom_icc_bcm bcm_qup2 = { 1438 .name = "QUP2", 1439 .keepalive = true, 1440 .vote_scale = 1, 1441 .num_nodes = 1, 1442 .nodes = { &qup2_core_slave }, 1443 }; 1444 1445 static struct qcom_icc_bcm bcm_sh0 = { 1446 .name = "SH0", 1447 .keepalive = true, 1448 .num_nodes = 1, 1449 .nodes = { &qns_llcc }, 1450 }; 1451 1452 static struct qcom_icc_bcm bcm_sh1 = { 1453 .name = "SH1", 1454 .enable_mask = 0x1, 1455 .num_nodes = 7, 1456 .nodes = { &alm_gpu_tcu, &alm_sys_tcu, 1457 &qnm_nsp_gemnoc, &qnm_pcie, 1458 &qnm_snoc_gc, &qns_gem_noc_cnoc, 1459 &qns_pcie }, 1460 }; 1461 1462 static struct qcom_icc_bcm bcm_sn0 = { 1463 .name = "SN0", 1464 .keepalive = true, 1465 .num_nodes = 1, 1466 .nodes = { &qns_gemnoc_sf }, 1467 }; 1468 1469 static struct qcom_icc_bcm bcm_sn1 = { 1470 .name = "SN1", 1471 .enable_mask = 0x1, 1472 .num_nodes = 4, 1473 .nodes = { &qhm_gic, &qxm_pimem, 1474 &xm_gic, &qns_gemnoc_gc }, 1475 }; 1476 1477 static struct qcom_icc_bcm bcm_sn2 = { 1478 .name = "SN2", 1479 .num_nodes = 1, 1480 .nodes = { &qnm_aggre1_noc }, 1481 }; 1482 1483 static struct qcom_icc_bcm bcm_sn3 = { 1484 .name = "SN3", 1485 .num_nodes = 1, 1486 .nodes = { &qnm_aggre2_noc }, 1487 }; 1488 1489 static struct qcom_icc_bcm bcm_sn4 = { 1490 .name = "SN4", 1491 .num_nodes = 1, 1492 .nodes = { &qnm_lpass_noc }, 1493 }; 1494 1495 static struct qcom_icc_bcm bcm_sn7 = { 1496 .name = "SN7", 1497 .num_nodes = 1, 1498 .nodes = { &qns_pcie_mem_noc }, 1499 }; 1500 1501 static struct qcom_icc_bcm bcm_acv_disp = { 1502 .name = "ACV", 1503 .enable_mask = 0x1, 1504 .num_nodes = 1, 1505 .nodes = { &ebi_disp }, 1506 }; 1507 1508 static struct qcom_icc_bcm bcm_mc0_disp = { 1509 .name = "MC0", 1510 .num_nodes = 1, 1511 .nodes = { &ebi_disp }, 1512 }; 1513 1514 static struct qcom_icc_bcm bcm_mm0_disp = { 1515 .name = "MM0", 1516 .num_nodes = 1, 1517 .nodes = { &qns_mem_noc_hf_disp }, 1518 }; 1519 1520 static struct qcom_icc_bcm bcm_mm1_disp = { 1521 .name = "MM1", 1522 .enable_mask = 0x1, 1523 .num_nodes = 3, 1524 .nodes = { &qnm_mdp_disp, &qnm_rot_disp, 1525 &qns_mem_noc_sf_disp }, 1526 }; 1527 1528 static struct qcom_icc_bcm bcm_sh0_disp = { 1529 .name = "SH0", 1530 .num_nodes = 1, 1531 .nodes = { &qns_llcc_disp }, 1532 }; 1533 1534 static struct qcom_icc_bcm bcm_sh1_disp = { 1535 .name = "SH1", 1536 .enable_mask = 0x1, 1537 .num_nodes = 1, 1538 .nodes = { &qnm_pcie_disp }, 1539 }; 1540 1541 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = { 1542 }; 1543 1544 static struct qcom_icc_node * const aggre1_noc_nodes[] = { 1545 [MASTER_QSPI_0] = &qhm_qspi, 1546 [MASTER_QUP_1] = &qhm_qup1, 1547 [MASTER_A1NOC_CFG] = &qnm_a1noc_cfg, 1548 [MASTER_SDCC_4] = &xm_sdc4, 1549 [MASTER_UFS_MEM] = &xm_ufs_mem, 1550 [MASTER_USB3_0] = &xm_usb3_0, 1551 [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 1552 [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc, 1553 }; 1554 1555 static const struct qcom_icc_desc sm8450_aggre1_noc = { 1556 .nodes = aggre1_noc_nodes, 1557 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 1558 .bcms = aggre1_noc_bcms, 1559 .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 1560 }; 1561 1562 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = { 1563 &bcm_ce0, 1564 }; 1565 1566 static struct qcom_icc_node * const aggre2_noc_nodes[] = { 1567 [MASTER_QDSS_BAM] = &qhm_qdss_bam, 1568 [MASTER_QUP_0] = &qhm_qup0, 1569 [MASTER_QUP_2] = &qhm_qup2, 1570 [MASTER_A2NOC_CFG] = &qnm_a2noc_cfg, 1571 [MASTER_CRYPTO] = &qxm_crypto, 1572 [MASTER_IPA] = &qxm_ipa, 1573 [MASTER_SENSORS_PROC] = &qxm_sensorss_q6, 1574 [MASTER_SP] = &qxm_sp, 1575 [MASTER_QDSS_ETR] = &xm_qdss_etr_0, 1576 [MASTER_QDSS_ETR_1] = &xm_qdss_etr_1, 1577 [MASTER_SDCC_2] = &xm_sdc2, 1578 [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc, 1579 [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc, 1580 }; 1581 1582 static const struct qcom_icc_desc sm8450_aggre2_noc = { 1583 .nodes = aggre2_noc_nodes, 1584 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 1585 .bcms = aggre2_noc_bcms, 1586 .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 1587 }; 1588 1589 static struct qcom_icc_bcm * const clk_virt_bcms[] = { 1590 &bcm_qup0, 1591 &bcm_qup1, 1592 &bcm_qup2, 1593 }; 1594 1595 static struct qcom_icc_node * const clk_virt_nodes[] = { 1596 [MASTER_QUP_CORE_0] = &qup0_core_master, 1597 [MASTER_QUP_CORE_1] = &qup1_core_master, 1598 [MASTER_QUP_CORE_2] = &qup2_core_master, 1599 [SLAVE_QUP_CORE_0] = &qup0_core_slave, 1600 [SLAVE_QUP_CORE_1] = &qup1_core_slave, 1601 [SLAVE_QUP_CORE_2] = &qup2_core_slave, 1602 }; 1603 1604 static const struct qcom_icc_desc sm8450_clk_virt = { 1605 .nodes = clk_virt_nodes, 1606 .num_nodes = ARRAY_SIZE(clk_virt_nodes), 1607 .bcms = clk_virt_bcms, 1608 .num_bcms = ARRAY_SIZE(clk_virt_bcms), 1609 }; 1610 1611 static struct qcom_icc_bcm * const config_noc_bcms[] = { 1612 &bcm_cn0, 1613 }; 1614 1615 static struct qcom_icc_node * const config_noc_nodes[] = { 1616 [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc, 1617 [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie, 1618 [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0, 1619 [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1, 1620 [SLAVE_AOSS] = &qhs_aoss, 1621 [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 1622 [SLAVE_CLK_CTL] = &qhs_clk_ctl, 1623 [SLAVE_CDSP_CFG] = &qhs_compute_cfg, 1624 [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 1625 [SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx, 1626 [SLAVE_RBCPR_MXA_CFG] = &qhs_cpr_mxa, 1627 [SLAVE_RBCPR_MXC_CFG] = &qhs_cpr_mxc, 1628 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 1629 [SLAVE_CX_RDPM] = &qhs_cx_rdpm, 1630 [SLAVE_DISPLAY_CFG] = &qhs_display_cfg, 1631 [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg, 1632 [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 1633 [SLAVE_IPA_CFG] = &qhs_ipa, 1634 [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router, 1635 [SLAVE_LPASS] = &qhs_lpass_cfg, 1636 [SLAVE_CNOC_MSS] = &qhs_mss_cfg, 1637 [SLAVE_MX_RDPM] = &qhs_mx_rdpm, 1638 [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg, 1639 [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg, 1640 [SLAVE_PDM] = &qhs_pdm, 1641 [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 1642 [SLAVE_PRNG] = &qhs_prng, 1643 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 1644 [SLAVE_QSPI_0] = &qhs_qspi, 1645 [SLAVE_QUP_0] = &qhs_qup0, 1646 [SLAVE_QUP_1] = &qhs_qup1, 1647 [SLAVE_QUP_2] = &qhs_qup2, 1648 [SLAVE_SDCC_2] = &qhs_sdc2, 1649 [SLAVE_SDCC_4] = &qhs_sdc4, 1650 [SLAVE_SPSS_CFG] = &qhs_spss_cfg, 1651 [SLAVE_TCSR] = &qhs_tcsr, 1652 [SLAVE_TLMM] = &qhs_tlmm, 1653 [SLAVE_TME_CFG] = &qhs_tme_cfg, 1654 [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 1655 [SLAVE_USB3_0] = &qhs_usb3_0, 1656 [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 1657 [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 1658 [SLAVE_A1NOC_CFG] = &qns_a1_noc_cfg, 1659 [SLAVE_A2NOC_CFG] = &qns_a2_noc_cfg, 1660 [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg, 1661 [SLAVE_CNOC_MNOC_CFG] = &qns_mnoc_cfg, 1662 [SLAVE_PCIE_ANOC_CFG] = &qns_pcie_anoc_cfg, 1663 [SLAVE_SNOC_CFG] = &qns_snoc_cfg, 1664 [SLAVE_IMEM] = &qxs_imem, 1665 [SLAVE_PIMEM] = &qxs_pimem, 1666 [SLAVE_SERVICE_CNOC] = &srvc_cnoc, 1667 [SLAVE_PCIE_0] = &xs_pcie_0, 1668 [SLAVE_PCIE_1] = &xs_pcie_1, 1669 [SLAVE_QDSS_STM] = &xs_qdss_stm, 1670 [SLAVE_TCU] = &xs_sys_tcu_cfg, 1671 }; 1672 1673 static const struct qcom_icc_desc sm8450_config_noc = { 1674 .nodes = config_noc_nodes, 1675 .num_nodes = ARRAY_SIZE(config_noc_nodes), 1676 .bcms = config_noc_bcms, 1677 .num_bcms = ARRAY_SIZE(config_noc_bcms), 1678 }; 1679 1680 static struct qcom_icc_bcm * const gem_noc_bcms[] = { 1681 &bcm_sh0, 1682 &bcm_sh1, 1683 &bcm_sh0_disp, 1684 &bcm_sh1_disp, 1685 }; 1686 1687 static struct qcom_icc_node * const gem_noc_nodes[] = { 1688 [MASTER_GPU_TCU] = &alm_gpu_tcu, 1689 [MASTER_SYS_TCU] = &alm_sys_tcu, 1690 [MASTER_APPSS_PROC] = &chm_apps, 1691 [MASTER_GFX3D] = &qnm_gpu, 1692 [MASTER_MSS_PROC] = &qnm_mdsp, 1693 [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 1694 [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 1695 [MASTER_COMPUTE_NOC] = &qnm_nsp_gemnoc, 1696 [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie, 1697 [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 1698 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 1699 [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc, 1700 [SLAVE_LLCC] = &qns_llcc, 1701 [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie, 1702 [MASTER_MNOC_HF_MEM_NOC_DISP] = &qnm_mnoc_hf_disp, 1703 [MASTER_MNOC_SF_MEM_NOC_DISP] = &qnm_mnoc_sf_disp, 1704 [MASTER_ANOC_PCIE_GEM_NOC_DISP] = &qnm_pcie_disp, 1705 [SLAVE_LLCC_DISP] = &qns_llcc_disp, 1706 }; 1707 1708 static const struct qcom_icc_desc sm8450_gem_noc = { 1709 .nodes = gem_noc_nodes, 1710 .num_nodes = ARRAY_SIZE(gem_noc_nodes), 1711 .bcms = gem_noc_bcms, 1712 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 1713 }; 1714 1715 static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = { 1716 }; 1717 1718 static struct qcom_icc_node * const lpass_ag_noc_nodes[] = { 1719 [MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc, 1720 [MASTER_LPASS_PROC] = &qxm_lpass_dsp, 1721 [SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core, 1722 [SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi, 1723 [SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu, 1724 [SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top, 1725 [SLAVE_LPASS_SNOC] = &qns_sysnoc, 1726 [SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc, 1727 [SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc, 1728 }; 1729 1730 static const struct qcom_icc_desc sm8450_lpass_ag_noc = { 1731 .nodes = lpass_ag_noc_nodes, 1732 .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes), 1733 .bcms = lpass_ag_noc_bcms, 1734 .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms), 1735 }; 1736 1737 static struct qcom_icc_bcm * const mc_virt_bcms[] = { 1738 &bcm_acv, 1739 &bcm_mc0, 1740 &bcm_acv_disp, 1741 &bcm_mc0_disp, 1742 }; 1743 1744 static struct qcom_icc_node * const mc_virt_nodes[] = { 1745 [MASTER_LLCC] = &llcc_mc, 1746 [SLAVE_EBI1] = &ebi, 1747 [MASTER_LLCC_DISP] = &llcc_mc_disp, 1748 [SLAVE_EBI1_DISP] = &ebi_disp, 1749 }; 1750 1751 static const struct qcom_icc_desc sm8450_mc_virt = { 1752 .nodes = mc_virt_nodes, 1753 .num_nodes = ARRAY_SIZE(mc_virt_nodes), 1754 .bcms = mc_virt_bcms, 1755 .num_bcms = ARRAY_SIZE(mc_virt_bcms), 1756 }; 1757 1758 static struct qcom_icc_bcm * const mmss_noc_bcms[] = { 1759 &bcm_mm0, 1760 &bcm_mm1, 1761 &bcm_mm0_disp, 1762 &bcm_mm1_disp, 1763 }; 1764 1765 static struct qcom_icc_node * const mmss_noc_nodes[] = { 1766 [MASTER_CAMNOC_HF] = &qnm_camnoc_hf, 1767 [MASTER_CAMNOC_ICP] = &qnm_camnoc_icp, 1768 [MASTER_CAMNOC_SF] = &qnm_camnoc_sf, 1769 [MASTER_MDP] = &qnm_mdp, 1770 [MASTER_CNOC_MNOC_CFG] = &qnm_mnoc_cfg, 1771 [MASTER_ROTATOR] = &qnm_rot, 1772 [MASTER_CDSP_HCP] = &qnm_vapss_hcp, 1773 [MASTER_VIDEO] = &qnm_video, 1774 [MASTER_VIDEO_CV_PROC] = &qnm_video_cv_cpu, 1775 [MASTER_VIDEO_PROC] = &qnm_video_cvp, 1776 [MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu, 1777 [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 1778 [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf, 1779 [SLAVE_SERVICE_MNOC] = &srvc_mnoc, 1780 [MASTER_MDP_DISP] = &qnm_mdp_disp, 1781 [MASTER_ROTATOR_DISP] = &qnm_rot_disp, 1782 [SLAVE_MNOC_HF_MEM_NOC_DISP] = &qns_mem_noc_hf_disp, 1783 [SLAVE_MNOC_SF_MEM_NOC_DISP] = &qns_mem_noc_sf_disp, 1784 }; 1785 1786 static const struct qcom_icc_desc sm8450_mmss_noc = { 1787 .nodes = mmss_noc_nodes, 1788 .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 1789 .bcms = mmss_noc_bcms, 1790 .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 1791 }; 1792 1793 static struct qcom_icc_bcm * const nsp_noc_bcms[] = { 1794 &bcm_co0, 1795 }; 1796 1797 static struct qcom_icc_node * const nsp_noc_nodes[] = { 1798 [MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config, 1799 [MASTER_CDSP_PROC] = &qxm_nsp, 1800 [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc, 1801 [SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc, 1802 }; 1803 1804 static const struct qcom_icc_desc sm8450_nsp_noc = { 1805 .nodes = nsp_noc_nodes, 1806 .num_nodes = ARRAY_SIZE(nsp_noc_nodes), 1807 .bcms = nsp_noc_bcms, 1808 .num_bcms = ARRAY_SIZE(nsp_noc_bcms), 1809 }; 1810 1811 static struct qcom_icc_bcm * const pcie_anoc_bcms[] = { 1812 &bcm_sn7, 1813 }; 1814 1815 static struct qcom_icc_node * const pcie_anoc_nodes[] = { 1816 [MASTER_PCIE_ANOC_CFG] = &qnm_pcie_anoc_cfg, 1817 [MASTER_PCIE_0] = &xm_pcie3_0, 1818 [MASTER_PCIE_1] = &xm_pcie3_1, 1819 [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc, 1820 [SLAVE_SERVICE_PCIE_ANOC] = &srvc_pcie_aggre_noc, 1821 }; 1822 1823 static const struct qcom_icc_desc sm8450_pcie_anoc = { 1824 .nodes = pcie_anoc_nodes, 1825 .num_nodes = ARRAY_SIZE(pcie_anoc_nodes), 1826 .bcms = pcie_anoc_bcms, 1827 .num_bcms = ARRAY_SIZE(pcie_anoc_bcms), 1828 }; 1829 1830 static struct qcom_icc_bcm * const system_noc_bcms[] = { 1831 &bcm_sn0, 1832 &bcm_sn1, 1833 &bcm_sn2, 1834 &bcm_sn3, 1835 &bcm_sn4, 1836 }; 1837 1838 static struct qcom_icc_node * const system_noc_nodes[] = { 1839 [MASTER_GIC_AHB] = &qhm_gic, 1840 [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc, 1841 [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc, 1842 [MASTER_LPASS_ANOC] = &qnm_lpass_noc, 1843 [MASTER_SNOC_CFG] = &qnm_snoc_cfg, 1844 [MASTER_PIMEM] = &qxm_pimem, 1845 [MASTER_GIC] = &xm_gic, 1846 [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 1847 [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 1848 [SLAVE_SERVICE_SNOC] = &srvc_snoc, 1849 }; 1850 1851 static const struct qcom_icc_desc sm8450_system_noc = { 1852 .nodes = system_noc_nodes, 1853 .num_nodes = ARRAY_SIZE(system_noc_nodes), 1854 .bcms = system_noc_bcms, 1855 .num_bcms = ARRAY_SIZE(system_noc_bcms), 1856 }; 1857 1858 static const struct of_device_id qnoc_of_match[] = { 1859 { .compatible = "qcom,sm8450-aggre1-noc", 1860 .data = &sm8450_aggre1_noc}, 1861 { .compatible = "qcom,sm8450-aggre2-noc", 1862 .data = &sm8450_aggre2_noc}, 1863 { .compatible = "qcom,sm8450-clk-virt", 1864 .data = &sm8450_clk_virt}, 1865 { .compatible = "qcom,sm8450-config-noc", 1866 .data = &sm8450_config_noc}, 1867 { .compatible = "qcom,sm8450-gem-noc", 1868 .data = &sm8450_gem_noc}, 1869 { .compatible = "qcom,sm8450-lpass-ag-noc", 1870 .data = &sm8450_lpass_ag_noc}, 1871 { .compatible = "qcom,sm8450-mc-virt", 1872 .data = &sm8450_mc_virt}, 1873 { .compatible = "qcom,sm8450-mmss-noc", 1874 .data = &sm8450_mmss_noc}, 1875 { .compatible = "qcom,sm8450-nsp-noc", 1876 .data = &sm8450_nsp_noc}, 1877 { .compatible = "qcom,sm8450-pcie-anoc", 1878 .data = &sm8450_pcie_anoc}, 1879 { .compatible = "qcom,sm8450-system-noc", 1880 .data = &sm8450_system_noc}, 1881 { } 1882 }; 1883 MODULE_DEVICE_TABLE(of, qnoc_of_match); 1884 1885 static struct platform_driver qnoc_driver = { 1886 .probe = qcom_icc_rpmh_probe, 1887 .remove_new = qcom_icc_rpmh_remove, 1888 .driver = { 1889 .name = "qnoc-sm8450", 1890 .of_match_table = qnoc_of_match, 1891 .sync_state = icc_sync_state, 1892 }, 1893 }; 1894 1895 static int __init qnoc_driver_init(void) 1896 { 1897 return platform_driver_register(&qnoc_driver); 1898 } 1899 core_initcall(qnoc_driver_init); 1900 1901 static void __exit qnoc_driver_exit(void) 1902 { 1903 platform_driver_unregister(&qnoc_driver); 1904 } 1905 module_exit(qnoc_driver_exit); 1906 1907 MODULE_DESCRIPTION("sm8450 NoC driver"); 1908 MODULE_LICENSE("GPL v2"); 1909