1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. 4 */ 5 6 #include <linux/device.h> 7 #include <linux/interconnect.h> 8 #include <linux/interconnect-provider.h> 9 #include <linux/module.h> 10 #include <linux/mod_devicetable.h> 11 #include <linux/platform_device.h> 12 13 #include <dt-bindings/interconnect/qcom,sdm845.h> 14 15 #include "bcm-voter.h" 16 #include "icc-rpmh.h" 17 #include "sdm845.h" 18 19 static struct qcom_icc_node qhm_a1noc_cfg = { 20 .name = "qhm_a1noc_cfg", 21 .id = SDM845_MASTER_A1NOC_CFG, 22 .channels = 1, 23 .buswidth = 4, 24 .num_links = 1, 25 .links = { SDM845_SLAVE_SERVICE_A1NOC }, 26 }; 27 28 static struct qcom_icc_node qhm_qup1 = { 29 .name = "qhm_qup1", 30 .id = SDM845_MASTER_BLSP_1, 31 .channels = 1, 32 .buswidth = 4, 33 .num_links = 1, 34 .links = { SDM845_SLAVE_A1NOC_SNOC }, 35 }; 36 37 static struct qcom_icc_node qhm_tsif = { 38 .name = "qhm_tsif", 39 .id = SDM845_MASTER_TSIF, 40 .channels = 1, 41 .buswidth = 4, 42 .num_links = 1, 43 .links = { SDM845_SLAVE_A1NOC_SNOC }, 44 }; 45 46 static struct qcom_icc_node xm_sdc2 = { 47 .name = "xm_sdc2", 48 .id = SDM845_MASTER_SDCC_2, 49 .channels = 1, 50 .buswidth = 8, 51 .num_links = 1, 52 .links = { SDM845_SLAVE_A1NOC_SNOC }, 53 }; 54 55 static struct qcom_icc_node xm_sdc4 = { 56 .name = "xm_sdc4", 57 .id = SDM845_MASTER_SDCC_4, 58 .channels = 1, 59 .buswidth = 8, 60 .num_links = 1, 61 .links = { SDM845_SLAVE_A1NOC_SNOC }, 62 }; 63 64 static struct qcom_icc_node xm_ufs_card = { 65 .name = "xm_ufs_card", 66 .id = SDM845_MASTER_UFS_CARD, 67 .channels = 1, 68 .buswidth = 8, 69 .num_links = 1, 70 .links = { SDM845_SLAVE_A1NOC_SNOC }, 71 }; 72 73 static struct qcom_icc_node xm_ufs_mem = { 74 .name = "xm_ufs_mem", 75 .id = SDM845_MASTER_UFS_MEM, 76 .channels = 1, 77 .buswidth = 8, 78 .num_links = 1, 79 .links = { SDM845_SLAVE_A1NOC_SNOC }, 80 }; 81 82 static struct qcom_icc_node xm_pcie_0 = { 83 .name = "xm_pcie_0", 84 .id = SDM845_MASTER_PCIE_0, 85 .channels = 1, 86 .buswidth = 8, 87 .num_links = 1, 88 .links = { SDM845_SLAVE_ANOC_PCIE_A1NOC_SNOC }, 89 }; 90 91 static struct qcom_icc_node qhm_a2noc_cfg = { 92 .name = "qhm_a2noc_cfg", 93 .id = SDM845_MASTER_A2NOC_CFG, 94 .channels = 1, 95 .buswidth = 4, 96 .num_links = 1, 97 .links = { SDM845_SLAVE_SERVICE_A2NOC }, 98 }; 99 100 static struct qcom_icc_node qhm_qdss_bam = { 101 .name = "qhm_qdss_bam", 102 .id = SDM845_MASTER_QDSS_BAM, 103 .channels = 1, 104 .buswidth = 4, 105 .num_links = 1, 106 .links = { SDM845_SLAVE_A2NOC_SNOC }, 107 }; 108 109 static struct qcom_icc_node qhm_qup2 = { 110 .name = "qhm_qup2", 111 .id = SDM845_MASTER_BLSP_2, 112 .channels = 1, 113 .buswidth = 4, 114 .num_links = 1, 115 .links = { SDM845_SLAVE_A2NOC_SNOC }, 116 }; 117 118 static struct qcom_icc_node qnm_cnoc = { 119 .name = "qnm_cnoc", 120 .id = SDM845_MASTER_CNOC_A2NOC, 121 .channels = 1, 122 .buswidth = 8, 123 .num_links = 1, 124 .links = { SDM845_SLAVE_A2NOC_SNOC }, 125 }; 126 127 static struct qcom_icc_node qxm_crypto = { 128 .name = "qxm_crypto", 129 .id = SDM845_MASTER_CRYPTO, 130 .channels = 1, 131 .buswidth = 8, 132 .num_links = 1, 133 .links = { SDM845_SLAVE_A2NOC_SNOC }, 134 }; 135 136 static struct qcom_icc_node qxm_ipa = { 137 .name = "qxm_ipa", 138 .id = SDM845_MASTER_IPA, 139 .channels = 1, 140 .buswidth = 8, 141 .num_links = 1, 142 .links = { SDM845_SLAVE_A2NOC_SNOC }, 143 }; 144 145 static struct qcom_icc_node xm_pcie3_1 = { 146 .name = "xm_pcie3_1", 147 .id = SDM845_MASTER_PCIE_1, 148 .channels = 1, 149 .buswidth = 8, 150 .num_links = 1, 151 .links = { SDM845_SLAVE_ANOC_PCIE_SNOC }, 152 }; 153 154 static struct qcom_icc_node xm_qdss_etr = { 155 .name = "xm_qdss_etr", 156 .id = SDM845_MASTER_QDSS_ETR, 157 .channels = 1, 158 .buswidth = 8, 159 .num_links = 1, 160 .links = { SDM845_SLAVE_A2NOC_SNOC }, 161 }; 162 163 static struct qcom_icc_node xm_usb3_0 = { 164 .name = "xm_usb3_0", 165 .id = SDM845_MASTER_USB3_0, 166 .channels = 1, 167 .buswidth = 8, 168 .num_links = 1, 169 .links = { SDM845_SLAVE_A2NOC_SNOC }, 170 }; 171 172 static struct qcom_icc_node xm_usb3_1 = { 173 .name = "xm_usb3_1", 174 .id = SDM845_MASTER_USB3_1, 175 .channels = 1, 176 .buswidth = 8, 177 .num_links = 1, 178 .links = { SDM845_SLAVE_A2NOC_SNOC }, 179 }; 180 181 static struct qcom_icc_node qxm_camnoc_hf0_uncomp = { 182 .name = "qxm_camnoc_hf0_uncomp", 183 .id = SDM845_MASTER_CAMNOC_HF0_UNCOMP, 184 .channels = 1, 185 .buswidth = 32, 186 .num_links = 1, 187 .links = { SDM845_SLAVE_CAMNOC_UNCOMP }, 188 }; 189 190 static struct qcom_icc_node qxm_camnoc_hf1_uncomp = { 191 .name = "qxm_camnoc_hf1_uncomp", 192 .id = SDM845_MASTER_CAMNOC_HF1_UNCOMP, 193 .channels = 1, 194 .buswidth = 32, 195 .num_links = 1, 196 .links = { SDM845_SLAVE_CAMNOC_UNCOMP }, 197 }; 198 199 static struct qcom_icc_node qxm_camnoc_sf_uncomp = { 200 .name = "qxm_camnoc_sf_uncomp", 201 .id = SDM845_MASTER_CAMNOC_SF_UNCOMP, 202 .channels = 1, 203 .buswidth = 32, 204 .num_links = 1, 205 .links = { SDM845_SLAVE_CAMNOC_UNCOMP }, 206 }; 207 208 static struct qcom_icc_node qhm_spdm = { 209 .name = "qhm_spdm", 210 .id = SDM845_MASTER_SPDM, 211 .channels = 1, 212 .buswidth = 4, 213 .num_links = 1, 214 .links = { SDM845_SLAVE_CNOC_A2NOC }, 215 }; 216 217 static struct qcom_icc_node qhm_tic = { 218 .name = "qhm_tic", 219 .id = SDM845_MASTER_TIC, 220 .channels = 1, 221 .buswidth = 4, 222 .num_links = 43, 223 .links = { SDM845_SLAVE_A1NOC_CFG, 224 SDM845_SLAVE_A2NOC_CFG, 225 SDM845_SLAVE_AOP, 226 SDM845_SLAVE_AOSS, 227 SDM845_SLAVE_CAMERA_CFG, 228 SDM845_SLAVE_CLK_CTL, 229 SDM845_SLAVE_CDSP_CFG, 230 SDM845_SLAVE_RBCPR_CX_CFG, 231 SDM845_SLAVE_CRYPTO_0_CFG, 232 SDM845_SLAVE_DCC_CFG, 233 SDM845_SLAVE_CNOC_DDRSS, 234 SDM845_SLAVE_DISPLAY_CFG, 235 SDM845_SLAVE_GLM, 236 SDM845_SLAVE_GFX3D_CFG, 237 SDM845_SLAVE_IMEM_CFG, 238 SDM845_SLAVE_IPA_CFG, 239 SDM845_SLAVE_CNOC_MNOC_CFG, 240 SDM845_SLAVE_PCIE_0_CFG, 241 SDM845_SLAVE_PCIE_1_CFG, 242 SDM845_SLAVE_PDM, 243 SDM845_SLAVE_SOUTH_PHY_CFG, 244 SDM845_SLAVE_PIMEM_CFG, 245 SDM845_SLAVE_PRNG, 246 SDM845_SLAVE_QDSS_CFG, 247 SDM845_SLAVE_BLSP_2, 248 SDM845_SLAVE_BLSP_1, 249 SDM845_SLAVE_SDCC_2, 250 SDM845_SLAVE_SDCC_4, 251 SDM845_SLAVE_SNOC_CFG, 252 SDM845_SLAVE_SPDM_WRAPPER, 253 SDM845_SLAVE_SPSS_CFG, 254 SDM845_SLAVE_TCSR, 255 SDM845_SLAVE_TLMM_NORTH, 256 SDM845_SLAVE_TLMM_SOUTH, 257 SDM845_SLAVE_TSIF, 258 SDM845_SLAVE_UFS_CARD_CFG, 259 SDM845_SLAVE_UFS_MEM_CFG, 260 SDM845_SLAVE_USB3_0, 261 SDM845_SLAVE_USB3_1, 262 SDM845_SLAVE_VENUS_CFG, 263 SDM845_SLAVE_VSENSE_CTRL_CFG, 264 SDM845_SLAVE_CNOC_A2NOC, 265 SDM845_SLAVE_SERVICE_CNOC 266 }, 267 }; 268 269 static struct qcom_icc_node qnm_snoc = { 270 .name = "qnm_snoc", 271 .id = SDM845_MASTER_SNOC_CNOC, 272 .channels = 1, 273 .buswidth = 8, 274 .num_links = 42, 275 .links = { SDM845_SLAVE_A1NOC_CFG, 276 SDM845_SLAVE_A2NOC_CFG, 277 SDM845_SLAVE_AOP, 278 SDM845_SLAVE_AOSS, 279 SDM845_SLAVE_CAMERA_CFG, 280 SDM845_SLAVE_CLK_CTL, 281 SDM845_SLAVE_CDSP_CFG, 282 SDM845_SLAVE_RBCPR_CX_CFG, 283 SDM845_SLAVE_CRYPTO_0_CFG, 284 SDM845_SLAVE_DCC_CFG, 285 SDM845_SLAVE_CNOC_DDRSS, 286 SDM845_SLAVE_DISPLAY_CFG, 287 SDM845_SLAVE_GLM, 288 SDM845_SLAVE_GFX3D_CFG, 289 SDM845_SLAVE_IMEM_CFG, 290 SDM845_SLAVE_IPA_CFG, 291 SDM845_SLAVE_CNOC_MNOC_CFG, 292 SDM845_SLAVE_PCIE_0_CFG, 293 SDM845_SLAVE_PCIE_1_CFG, 294 SDM845_SLAVE_PDM, 295 SDM845_SLAVE_SOUTH_PHY_CFG, 296 SDM845_SLAVE_PIMEM_CFG, 297 SDM845_SLAVE_PRNG, 298 SDM845_SLAVE_QDSS_CFG, 299 SDM845_SLAVE_BLSP_2, 300 SDM845_SLAVE_BLSP_1, 301 SDM845_SLAVE_SDCC_2, 302 SDM845_SLAVE_SDCC_4, 303 SDM845_SLAVE_SNOC_CFG, 304 SDM845_SLAVE_SPDM_WRAPPER, 305 SDM845_SLAVE_SPSS_CFG, 306 SDM845_SLAVE_TCSR, 307 SDM845_SLAVE_TLMM_NORTH, 308 SDM845_SLAVE_TLMM_SOUTH, 309 SDM845_SLAVE_TSIF, 310 SDM845_SLAVE_UFS_CARD_CFG, 311 SDM845_SLAVE_UFS_MEM_CFG, 312 SDM845_SLAVE_USB3_0, 313 SDM845_SLAVE_USB3_1, 314 SDM845_SLAVE_VENUS_CFG, 315 SDM845_SLAVE_VSENSE_CTRL_CFG, 316 SDM845_SLAVE_SERVICE_CNOC 317 }, 318 }; 319 320 static struct qcom_icc_node xm_qdss_dap = { 321 .name = "xm_qdss_dap", 322 .id = SDM845_MASTER_QDSS_DAP, 323 .channels = 1, 324 .buswidth = 8, 325 .num_links = 43, 326 .links = { SDM845_SLAVE_A1NOC_CFG, 327 SDM845_SLAVE_A2NOC_CFG, 328 SDM845_SLAVE_AOP, 329 SDM845_SLAVE_AOSS, 330 SDM845_SLAVE_CAMERA_CFG, 331 SDM845_SLAVE_CLK_CTL, 332 SDM845_SLAVE_CDSP_CFG, 333 SDM845_SLAVE_RBCPR_CX_CFG, 334 SDM845_SLAVE_CRYPTO_0_CFG, 335 SDM845_SLAVE_DCC_CFG, 336 SDM845_SLAVE_CNOC_DDRSS, 337 SDM845_SLAVE_DISPLAY_CFG, 338 SDM845_SLAVE_GLM, 339 SDM845_SLAVE_GFX3D_CFG, 340 SDM845_SLAVE_IMEM_CFG, 341 SDM845_SLAVE_IPA_CFG, 342 SDM845_SLAVE_CNOC_MNOC_CFG, 343 SDM845_SLAVE_PCIE_0_CFG, 344 SDM845_SLAVE_PCIE_1_CFG, 345 SDM845_SLAVE_PDM, 346 SDM845_SLAVE_SOUTH_PHY_CFG, 347 SDM845_SLAVE_PIMEM_CFG, 348 SDM845_SLAVE_PRNG, 349 SDM845_SLAVE_QDSS_CFG, 350 SDM845_SLAVE_BLSP_2, 351 SDM845_SLAVE_BLSP_1, 352 SDM845_SLAVE_SDCC_2, 353 SDM845_SLAVE_SDCC_4, 354 SDM845_SLAVE_SNOC_CFG, 355 SDM845_SLAVE_SPDM_WRAPPER, 356 SDM845_SLAVE_SPSS_CFG, 357 SDM845_SLAVE_TCSR, 358 SDM845_SLAVE_TLMM_NORTH, 359 SDM845_SLAVE_TLMM_SOUTH, 360 SDM845_SLAVE_TSIF, 361 SDM845_SLAVE_UFS_CARD_CFG, 362 SDM845_SLAVE_UFS_MEM_CFG, 363 SDM845_SLAVE_USB3_0, 364 SDM845_SLAVE_USB3_1, 365 SDM845_SLAVE_VENUS_CFG, 366 SDM845_SLAVE_VSENSE_CTRL_CFG, 367 SDM845_SLAVE_CNOC_A2NOC, 368 SDM845_SLAVE_SERVICE_CNOC 369 }, 370 }; 371 372 static struct qcom_icc_node qhm_cnoc = { 373 .name = "qhm_cnoc", 374 .id = SDM845_MASTER_CNOC_DC_NOC, 375 .channels = 1, 376 .buswidth = 4, 377 .num_links = 2, 378 .links = { SDM845_SLAVE_LLCC_CFG, 379 SDM845_SLAVE_MEM_NOC_CFG 380 }, 381 }; 382 383 static struct qcom_icc_node acm_l3 = { 384 .name = "acm_l3", 385 .id = SDM845_MASTER_APPSS_PROC, 386 .channels = 1, 387 .buswidth = 16, 388 .num_links = 3, 389 .links = { SDM845_SLAVE_GNOC_SNOC, 390 SDM845_SLAVE_GNOC_MEM_NOC, 391 SDM845_SLAVE_SERVICE_GNOC 392 }, 393 }; 394 395 static struct qcom_icc_node pm_gnoc_cfg = { 396 .name = "pm_gnoc_cfg", 397 .id = SDM845_MASTER_GNOC_CFG, 398 .channels = 1, 399 .buswidth = 4, 400 .num_links = 1, 401 .links = { SDM845_SLAVE_SERVICE_GNOC }, 402 }; 403 404 static struct qcom_icc_node llcc_mc = { 405 .name = "llcc_mc", 406 .id = SDM845_MASTER_LLCC, 407 .channels = 4, 408 .buswidth = 4, 409 .num_links = 1, 410 .links = { SDM845_SLAVE_EBI1 }, 411 }; 412 413 static struct qcom_icc_node acm_tcu = { 414 .name = "acm_tcu", 415 .id = SDM845_MASTER_TCU_0, 416 .channels = 1, 417 .buswidth = 8, 418 .num_links = 3, 419 .links = { SDM845_SLAVE_MEM_NOC_GNOC, 420 SDM845_SLAVE_LLCC, 421 SDM845_SLAVE_MEM_NOC_SNOC 422 }, 423 }; 424 425 static struct qcom_icc_node qhm_memnoc_cfg = { 426 .name = "qhm_memnoc_cfg", 427 .id = SDM845_MASTER_MEM_NOC_CFG, 428 .channels = 1, 429 .buswidth = 4, 430 .num_links = 2, 431 .links = { SDM845_SLAVE_MSS_PROC_MS_MPU_CFG, 432 SDM845_SLAVE_SERVICE_MEM_NOC 433 }, 434 }; 435 436 static struct qcom_icc_node qnm_apps = { 437 .name = "qnm_apps", 438 .id = SDM845_MASTER_GNOC_MEM_NOC, 439 .channels = 2, 440 .buswidth = 32, 441 .num_links = 1, 442 .links = { SDM845_SLAVE_LLCC }, 443 }; 444 445 static struct qcom_icc_node qnm_mnoc_hf = { 446 .name = "qnm_mnoc_hf", 447 .id = SDM845_MASTER_MNOC_HF_MEM_NOC, 448 .channels = 2, 449 .buswidth = 32, 450 .num_links = 2, 451 .links = { SDM845_SLAVE_MEM_NOC_GNOC, 452 SDM845_SLAVE_LLCC 453 }, 454 }; 455 456 static struct qcom_icc_node qnm_mnoc_sf = { 457 .name = "qnm_mnoc_sf", 458 .id = SDM845_MASTER_MNOC_SF_MEM_NOC, 459 .channels = 1, 460 .buswidth = 32, 461 .num_links = 3, 462 .links = { SDM845_SLAVE_MEM_NOC_GNOC, 463 SDM845_SLAVE_LLCC, 464 SDM845_SLAVE_MEM_NOC_SNOC 465 }, 466 }; 467 468 static struct qcom_icc_node qnm_snoc_gc = { 469 .name = "qnm_snoc_gc", 470 .id = SDM845_MASTER_SNOC_GC_MEM_NOC, 471 .channels = 1, 472 .buswidth = 8, 473 .num_links = 1, 474 .links = { SDM845_SLAVE_LLCC }, 475 }; 476 477 static struct qcom_icc_node qnm_snoc_sf = { 478 .name = "qnm_snoc_sf", 479 .id = SDM845_MASTER_SNOC_SF_MEM_NOC, 480 .channels = 1, 481 .buswidth = 16, 482 .num_links = 2, 483 .links = { SDM845_SLAVE_MEM_NOC_GNOC, 484 SDM845_SLAVE_LLCC 485 }, 486 }; 487 488 static struct qcom_icc_node qxm_gpu = { 489 .name = "qxm_gpu", 490 .id = SDM845_MASTER_GFX3D, 491 .channels = 2, 492 .buswidth = 32, 493 .num_links = 3, 494 .links = { SDM845_SLAVE_MEM_NOC_GNOC, 495 SDM845_SLAVE_LLCC, 496 SDM845_SLAVE_MEM_NOC_SNOC 497 }, 498 }; 499 500 static struct qcom_icc_node qhm_mnoc_cfg = { 501 .name = "qhm_mnoc_cfg", 502 .id = SDM845_MASTER_CNOC_MNOC_CFG, 503 .channels = 1, 504 .buswidth = 4, 505 .num_links = 1, 506 .links = { SDM845_SLAVE_SERVICE_MNOC }, 507 }; 508 509 static struct qcom_icc_node qxm_camnoc_hf0 = { 510 .name = "qxm_camnoc_hf0", 511 .id = SDM845_MASTER_CAMNOC_HF0, 512 .channels = 1, 513 .buswidth = 32, 514 .num_links = 1, 515 .links = { SDM845_SLAVE_MNOC_HF_MEM_NOC }, 516 }; 517 518 static struct qcom_icc_node qxm_camnoc_hf1 = { 519 .name = "qxm_camnoc_hf1", 520 .id = SDM845_MASTER_CAMNOC_HF1, 521 .channels = 1, 522 .buswidth = 32, 523 .num_links = 1, 524 .links = { SDM845_SLAVE_MNOC_HF_MEM_NOC }, 525 }; 526 527 static struct qcom_icc_node qxm_camnoc_sf = { 528 .name = "qxm_camnoc_sf", 529 .id = SDM845_MASTER_CAMNOC_SF, 530 .channels = 1, 531 .buswidth = 32, 532 .num_links = 1, 533 .links = { SDM845_SLAVE_MNOC_SF_MEM_NOC }, 534 }; 535 536 static struct qcom_icc_node qxm_mdp0 = { 537 .name = "qxm_mdp0", 538 .id = SDM845_MASTER_MDP0, 539 .channels = 1, 540 .buswidth = 32, 541 .num_links = 1, 542 .links = { SDM845_SLAVE_MNOC_HF_MEM_NOC }, 543 }; 544 545 static struct qcom_icc_node qxm_mdp1 = { 546 .name = "qxm_mdp1", 547 .id = SDM845_MASTER_MDP1, 548 .channels = 1, 549 .buswidth = 32, 550 .num_links = 1, 551 .links = { SDM845_SLAVE_MNOC_HF_MEM_NOC }, 552 }; 553 554 static struct qcom_icc_node qxm_rot = { 555 .name = "qxm_rot", 556 .id = SDM845_MASTER_ROTATOR, 557 .channels = 1, 558 .buswidth = 32, 559 .num_links = 1, 560 .links = { SDM845_SLAVE_MNOC_SF_MEM_NOC }, 561 }; 562 563 static struct qcom_icc_node qxm_venus0 = { 564 .name = "qxm_venus0", 565 .id = SDM845_MASTER_VIDEO_P0, 566 .channels = 1, 567 .buswidth = 32, 568 .num_links = 1, 569 .links = { SDM845_SLAVE_MNOC_SF_MEM_NOC }, 570 }; 571 572 static struct qcom_icc_node qxm_venus1 = { 573 .name = "qxm_venus1", 574 .id = SDM845_MASTER_VIDEO_P1, 575 .channels = 1, 576 .buswidth = 32, 577 .num_links = 1, 578 .links = { SDM845_SLAVE_MNOC_SF_MEM_NOC }, 579 }; 580 581 static struct qcom_icc_node qxm_venus_arm9 = { 582 .name = "qxm_venus_arm9", 583 .id = SDM845_MASTER_VIDEO_PROC, 584 .channels = 1, 585 .buswidth = 8, 586 .num_links = 1, 587 .links = { SDM845_SLAVE_MNOC_SF_MEM_NOC }, 588 }; 589 590 static struct qcom_icc_node qhm_snoc_cfg = { 591 .name = "qhm_snoc_cfg", 592 .id = SDM845_MASTER_SNOC_CFG, 593 .channels = 1, 594 .buswidth = 4, 595 .num_links = 1, 596 .links = { SDM845_SLAVE_SERVICE_SNOC }, 597 }; 598 599 static struct qcom_icc_node qnm_aggre1_noc = { 600 .name = "qnm_aggre1_noc", 601 .id = SDM845_MASTER_A1NOC_SNOC, 602 .channels = 1, 603 .buswidth = 16, 604 .num_links = 6, 605 .links = { SDM845_SLAVE_APPSS, 606 SDM845_SLAVE_SNOC_CNOC, 607 SDM845_SLAVE_SNOC_MEM_NOC_SF, 608 SDM845_SLAVE_IMEM, 609 SDM845_SLAVE_PIMEM, 610 SDM845_SLAVE_QDSS_STM 611 }, 612 }; 613 614 static struct qcom_icc_node qnm_aggre2_noc = { 615 .name = "qnm_aggre2_noc", 616 .id = SDM845_MASTER_A2NOC_SNOC, 617 .channels = 1, 618 .buswidth = 16, 619 .num_links = 9, 620 .links = { SDM845_SLAVE_APPSS, 621 SDM845_SLAVE_SNOC_CNOC, 622 SDM845_SLAVE_SNOC_MEM_NOC_SF, 623 SDM845_SLAVE_IMEM, 624 SDM845_SLAVE_PCIE_0, 625 SDM845_SLAVE_PCIE_1, 626 SDM845_SLAVE_PIMEM, 627 SDM845_SLAVE_QDSS_STM, 628 SDM845_SLAVE_TCU 629 }, 630 }; 631 632 static struct qcom_icc_node qnm_gladiator_sodv = { 633 .name = "qnm_gladiator_sodv", 634 .id = SDM845_MASTER_GNOC_SNOC, 635 .channels = 1, 636 .buswidth = 8, 637 .num_links = 8, 638 .links = { SDM845_SLAVE_APPSS, 639 SDM845_SLAVE_SNOC_CNOC, 640 SDM845_SLAVE_IMEM, 641 SDM845_SLAVE_PCIE_0, 642 SDM845_SLAVE_PCIE_1, 643 SDM845_SLAVE_PIMEM, 644 SDM845_SLAVE_QDSS_STM, 645 SDM845_SLAVE_TCU 646 }, 647 }; 648 649 static struct qcom_icc_node qnm_memnoc = { 650 .name = "qnm_memnoc", 651 .id = SDM845_MASTER_MEM_NOC_SNOC, 652 .channels = 1, 653 .buswidth = 8, 654 .num_links = 5, 655 .links = { SDM845_SLAVE_APPSS, 656 SDM845_SLAVE_SNOC_CNOC, 657 SDM845_SLAVE_IMEM, 658 SDM845_SLAVE_PIMEM, 659 SDM845_SLAVE_QDSS_STM 660 }, 661 }; 662 663 static struct qcom_icc_node qnm_pcie_anoc = { 664 .name = "qnm_pcie_anoc", 665 .id = SDM845_MASTER_ANOC_PCIE_SNOC, 666 .channels = 1, 667 .buswidth = 16, 668 .num_links = 5, 669 .links = { SDM845_SLAVE_APPSS, 670 SDM845_SLAVE_SNOC_CNOC, 671 SDM845_SLAVE_SNOC_MEM_NOC_SF, 672 SDM845_SLAVE_IMEM, 673 SDM845_SLAVE_QDSS_STM 674 }, 675 }; 676 677 static struct qcom_icc_node qxm_pimem = { 678 .name = "qxm_pimem", 679 .id = SDM845_MASTER_PIMEM, 680 .channels = 1, 681 .buswidth = 8, 682 .num_links = 2, 683 .links = { SDM845_SLAVE_SNOC_MEM_NOC_GC, 684 SDM845_SLAVE_IMEM 685 }, 686 }; 687 688 static struct qcom_icc_node xm_gic = { 689 .name = "xm_gic", 690 .id = SDM845_MASTER_GIC, 691 .channels = 1, 692 .buswidth = 8, 693 .num_links = 2, 694 .links = { SDM845_SLAVE_SNOC_MEM_NOC_GC, 695 SDM845_SLAVE_IMEM 696 }, 697 }; 698 699 static struct qcom_icc_node qns_a1noc_snoc = { 700 .name = "qns_a1noc_snoc", 701 .id = SDM845_SLAVE_A1NOC_SNOC, 702 .channels = 1, 703 .buswidth = 16, 704 .num_links = 1, 705 .links = { SDM845_MASTER_A1NOC_SNOC }, 706 }; 707 708 static struct qcom_icc_node srvc_aggre1_noc = { 709 .name = "srvc_aggre1_noc", 710 .id = SDM845_SLAVE_SERVICE_A1NOC, 711 .channels = 1, 712 .buswidth = 4, 713 .num_links = 1, 714 .links = { 0 }, 715 }; 716 717 static struct qcom_icc_node qns_pcie_a1noc_snoc = { 718 .name = "qns_pcie_a1noc_snoc", 719 .id = SDM845_SLAVE_ANOC_PCIE_A1NOC_SNOC, 720 .channels = 1, 721 .buswidth = 16, 722 .num_links = 1, 723 .links = { SDM845_MASTER_ANOC_PCIE_SNOC }, 724 }; 725 726 static struct qcom_icc_node qns_a2noc_snoc = { 727 .name = "qns_a2noc_snoc", 728 .id = SDM845_SLAVE_A2NOC_SNOC, 729 .channels = 1, 730 .buswidth = 16, 731 .num_links = 1, 732 .links = { SDM845_MASTER_A2NOC_SNOC }, 733 }; 734 735 static struct qcom_icc_node qns_pcie_snoc = { 736 .name = "qns_pcie_snoc", 737 .id = SDM845_SLAVE_ANOC_PCIE_SNOC, 738 .channels = 1, 739 .buswidth = 16, 740 .num_links = 1, 741 .links = { SDM845_MASTER_ANOC_PCIE_SNOC }, 742 }; 743 744 static struct qcom_icc_node srvc_aggre2_noc = { 745 .name = "srvc_aggre2_noc", 746 .id = SDM845_SLAVE_SERVICE_A2NOC, 747 .channels = 1, 748 .buswidth = 4, 749 }; 750 751 static struct qcom_icc_node qns_camnoc_uncomp = { 752 .name = "qns_camnoc_uncomp", 753 .id = SDM845_SLAVE_CAMNOC_UNCOMP, 754 .channels = 1, 755 .buswidth = 32, 756 }; 757 758 static struct qcom_icc_node qhs_a1_noc_cfg = { 759 .name = "qhs_a1_noc_cfg", 760 .id = SDM845_SLAVE_A1NOC_CFG, 761 .channels = 1, 762 .buswidth = 4, 763 .num_links = 1, 764 .links = { SDM845_MASTER_A1NOC_CFG }, 765 }; 766 767 static struct qcom_icc_node qhs_a2_noc_cfg = { 768 .name = "qhs_a2_noc_cfg", 769 .id = SDM845_SLAVE_A2NOC_CFG, 770 .channels = 1, 771 .buswidth = 4, 772 .num_links = 1, 773 .links = { SDM845_MASTER_A2NOC_CFG }, 774 }; 775 776 static struct qcom_icc_node qhs_aop = { 777 .name = "qhs_aop", 778 .id = SDM845_SLAVE_AOP, 779 .channels = 1, 780 .buswidth = 4, 781 }; 782 783 static struct qcom_icc_node qhs_aoss = { 784 .name = "qhs_aoss", 785 .id = SDM845_SLAVE_AOSS, 786 .channels = 1, 787 .buswidth = 4, 788 }; 789 790 static struct qcom_icc_node qhs_camera_cfg = { 791 .name = "qhs_camera_cfg", 792 .id = SDM845_SLAVE_CAMERA_CFG, 793 .channels = 1, 794 .buswidth = 4, 795 }; 796 797 static struct qcom_icc_node qhs_clk_ctl = { 798 .name = "qhs_clk_ctl", 799 .id = SDM845_SLAVE_CLK_CTL, 800 .channels = 1, 801 .buswidth = 4, 802 }; 803 804 static struct qcom_icc_node qhs_compute_dsp_cfg = { 805 .name = "qhs_compute_dsp_cfg", 806 .id = SDM845_SLAVE_CDSP_CFG, 807 .channels = 1, 808 .buswidth = 4, 809 }; 810 811 static struct qcom_icc_node qhs_cpr_cx = { 812 .name = "qhs_cpr_cx", 813 .id = SDM845_SLAVE_RBCPR_CX_CFG, 814 .channels = 1, 815 .buswidth = 4, 816 }; 817 818 static struct qcom_icc_node qhs_crypto0_cfg = { 819 .name = "qhs_crypto0_cfg", 820 .id = SDM845_SLAVE_CRYPTO_0_CFG, 821 .channels = 1, 822 .buswidth = 4, 823 }; 824 825 static struct qcom_icc_node qhs_dcc_cfg = { 826 .name = "qhs_dcc_cfg", 827 .id = SDM845_SLAVE_DCC_CFG, 828 .channels = 1, 829 .buswidth = 4, 830 .num_links = 1, 831 .links = { SDM845_MASTER_CNOC_DC_NOC }, 832 }; 833 834 static struct qcom_icc_node qhs_ddrss_cfg = { 835 .name = "qhs_ddrss_cfg", 836 .id = SDM845_SLAVE_CNOC_DDRSS, 837 .channels = 1, 838 .buswidth = 4, 839 }; 840 841 static struct qcom_icc_node qhs_display_cfg = { 842 .name = "qhs_display_cfg", 843 .id = SDM845_SLAVE_DISPLAY_CFG, 844 .channels = 1, 845 .buswidth = 4, 846 }; 847 848 static struct qcom_icc_node qhs_glm = { 849 .name = "qhs_glm", 850 .id = SDM845_SLAVE_GLM, 851 .channels = 1, 852 .buswidth = 4, 853 }; 854 855 static struct qcom_icc_node qhs_gpuss_cfg = { 856 .name = "qhs_gpuss_cfg", 857 .id = SDM845_SLAVE_GFX3D_CFG, 858 .channels = 1, 859 .buswidth = 8, 860 }; 861 862 static struct qcom_icc_node qhs_imem_cfg = { 863 .name = "qhs_imem_cfg", 864 .id = SDM845_SLAVE_IMEM_CFG, 865 .channels = 1, 866 .buswidth = 4, 867 }; 868 869 static struct qcom_icc_node qhs_ipa = { 870 .name = "qhs_ipa", 871 .id = SDM845_SLAVE_IPA_CFG, 872 .channels = 1, 873 .buswidth = 4, 874 }; 875 876 static struct qcom_icc_node qhs_mnoc_cfg = { 877 .name = "qhs_mnoc_cfg", 878 .id = SDM845_SLAVE_CNOC_MNOC_CFG, 879 .channels = 1, 880 .buswidth = 4, 881 .num_links = 1, 882 .links = { SDM845_MASTER_CNOC_MNOC_CFG }, 883 }; 884 885 static struct qcom_icc_node qhs_pcie0_cfg = { 886 .name = "qhs_pcie0_cfg", 887 .id = SDM845_SLAVE_PCIE_0_CFG, 888 .channels = 1, 889 .buswidth = 4, 890 }; 891 892 static struct qcom_icc_node qhs_pcie_gen3_cfg = { 893 .name = "qhs_pcie_gen3_cfg", 894 .id = SDM845_SLAVE_PCIE_1_CFG, 895 .channels = 1, 896 .buswidth = 4, 897 }; 898 899 static struct qcom_icc_node qhs_pdm = { 900 .name = "qhs_pdm", 901 .id = SDM845_SLAVE_PDM, 902 .channels = 1, 903 .buswidth = 4, 904 }; 905 906 static struct qcom_icc_node qhs_phy_refgen_south = { 907 .name = "qhs_phy_refgen_south", 908 .id = SDM845_SLAVE_SOUTH_PHY_CFG, 909 .channels = 1, 910 .buswidth = 4, 911 }; 912 913 static struct qcom_icc_node qhs_pimem_cfg = { 914 .name = "qhs_pimem_cfg", 915 .id = SDM845_SLAVE_PIMEM_CFG, 916 .channels = 1, 917 .buswidth = 4, 918 }; 919 920 static struct qcom_icc_node qhs_prng = { 921 .name = "qhs_prng", 922 .id = SDM845_SLAVE_PRNG, 923 .channels = 1, 924 .buswidth = 4, 925 }; 926 927 static struct qcom_icc_node qhs_qdss_cfg = { 928 .name = "qhs_qdss_cfg", 929 .id = SDM845_SLAVE_QDSS_CFG, 930 .channels = 1, 931 .buswidth = 4, 932 }; 933 934 static struct qcom_icc_node qhs_qupv3_north = { 935 .name = "qhs_qupv3_north", 936 .id = SDM845_SLAVE_BLSP_2, 937 .channels = 1, 938 .buswidth = 4, 939 }; 940 941 static struct qcom_icc_node qhs_qupv3_south = { 942 .name = "qhs_qupv3_south", 943 .id = SDM845_SLAVE_BLSP_1, 944 .channels = 1, 945 .buswidth = 4, 946 }; 947 948 static struct qcom_icc_node qhs_sdc2 = { 949 .name = "qhs_sdc2", 950 .id = SDM845_SLAVE_SDCC_2, 951 .channels = 1, 952 .buswidth = 4, 953 }; 954 955 static struct qcom_icc_node qhs_sdc4 = { 956 .name = "qhs_sdc4", 957 .id = SDM845_SLAVE_SDCC_4, 958 .channels = 1, 959 .buswidth = 4, 960 }; 961 962 static struct qcom_icc_node qhs_snoc_cfg = { 963 .name = "qhs_snoc_cfg", 964 .id = SDM845_SLAVE_SNOC_CFG, 965 .channels = 1, 966 .buswidth = 4, 967 .num_links = 1, 968 .links = { SDM845_MASTER_SNOC_CFG }, 969 }; 970 971 static struct qcom_icc_node qhs_spdm = { 972 .name = "qhs_spdm", 973 .id = SDM845_SLAVE_SPDM_WRAPPER, 974 .channels = 1, 975 .buswidth = 4, 976 }; 977 978 static struct qcom_icc_node qhs_spss_cfg = { 979 .name = "qhs_spss_cfg", 980 .id = SDM845_SLAVE_SPSS_CFG, 981 .channels = 1, 982 .buswidth = 4, 983 }; 984 985 static struct qcom_icc_node qhs_tcsr = { 986 .name = "qhs_tcsr", 987 .id = SDM845_SLAVE_TCSR, 988 .channels = 1, 989 .buswidth = 4, 990 }; 991 992 static struct qcom_icc_node qhs_tlmm_north = { 993 .name = "qhs_tlmm_north", 994 .id = SDM845_SLAVE_TLMM_NORTH, 995 .channels = 1, 996 .buswidth = 4, 997 }; 998 999 static struct qcom_icc_node qhs_tlmm_south = { 1000 .name = "qhs_tlmm_south", 1001 .id = SDM845_SLAVE_TLMM_SOUTH, 1002 .channels = 1, 1003 .buswidth = 4, 1004 }; 1005 1006 static struct qcom_icc_node qhs_tsif = { 1007 .name = "qhs_tsif", 1008 .id = SDM845_SLAVE_TSIF, 1009 .channels = 1, 1010 .buswidth = 4, 1011 }; 1012 1013 static struct qcom_icc_node qhs_ufs_card_cfg = { 1014 .name = "qhs_ufs_card_cfg", 1015 .id = SDM845_SLAVE_UFS_CARD_CFG, 1016 .channels = 1, 1017 .buswidth = 4, 1018 }; 1019 1020 static struct qcom_icc_node qhs_ufs_mem_cfg = { 1021 .name = "qhs_ufs_mem_cfg", 1022 .id = SDM845_SLAVE_UFS_MEM_CFG, 1023 .channels = 1, 1024 .buswidth = 4, 1025 }; 1026 1027 static struct qcom_icc_node qhs_usb3_0 = { 1028 .name = "qhs_usb3_0", 1029 .id = SDM845_SLAVE_USB3_0, 1030 .channels = 1, 1031 .buswidth = 4, 1032 }; 1033 1034 static struct qcom_icc_node qhs_usb3_1 = { 1035 .name = "qhs_usb3_1", 1036 .id = SDM845_SLAVE_USB3_1, 1037 .channels = 1, 1038 .buswidth = 4, 1039 }; 1040 1041 static struct qcom_icc_node qhs_venus_cfg = { 1042 .name = "qhs_venus_cfg", 1043 .id = SDM845_SLAVE_VENUS_CFG, 1044 .channels = 1, 1045 .buswidth = 4, 1046 }; 1047 1048 static struct qcom_icc_node qhs_vsense_ctrl_cfg = { 1049 .name = "qhs_vsense_ctrl_cfg", 1050 .id = SDM845_SLAVE_VSENSE_CTRL_CFG, 1051 .channels = 1, 1052 .buswidth = 4, 1053 }; 1054 1055 static struct qcom_icc_node qns_cnoc_a2noc = { 1056 .name = "qns_cnoc_a2noc", 1057 .id = SDM845_SLAVE_CNOC_A2NOC, 1058 .channels = 1, 1059 .buswidth = 8, 1060 .num_links = 1, 1061 .links = { SDM845_MASTER_CNOC_A2NOC }, 1062 }; 1063 1064 static struct qcom_icc_node srvc_cnoc = { 1065 .name = "srvc_cnoc", 1066 .id = SDM845_SLAVE_SERVICE_CNOC, 1067 .channels = 1, 1068 .buswidth = 4, 1069 }; 1070 1071 static struct qcom_icc_node qhs_llcc = { 1072 .name = "qhs_llcc", 1073 .id = SDM845_SLAVE_LLCC_CFG, 1074 .channels = 1, 1075 .buswidth = 4, 1076 }; 1077 1078 static struct qcom_icc_node qhs_memnoc = { 1079 .name = "qhs_memnoc", 1080 .id = SDM845_SLAVE_MEM_NOC_CFG, 1081 .channels = 1, 1082 .buswidth = 4, 1083 .num_links = 1, 1084 .links = { SDM845_MASTER_MEM_NOC_CFG }, 1085 }; 1086 1087 static struct qcom_icc_node qns_gladiator_sodv = { 1088 .name = "qns_gladiator_sodv", 1089 .id = SDM845_SLAVE_GNOC_SNOC, 1090 .channels = 1, 1091 .buswidth = 8, 1092 .num_links = 1, 1093 .links = { SDM845_MASTER_GNOC_SNOC }, 1094 }; 1095 1096 static struct qcom_icc_node qns_gnoc_memnoc = { 1097 .name = "qns_gnoc_memnoc", 1098 .id = SDM845_SLAVE_GNOC_MEM_NOC, 1099 .channels = 2, 1100 .buswidth = 32, 1101 .num_links = 1, 1102 .links = { SDM845_MASTER_GNOC_MEM_NOC }, 1103 }; 1104 1105 static struct qcom_icc_node srvc_gnoc = { 1106 .name = "srvc_gnoc", 1107 .id = SDM845_SLAVE_SERVICE_GNOC, 1108 .channels = 1, 1109 .buswidth = 4, 1110 }; 1111 1112 static struct qcom_icc_node ebi = { 1113 .name = "ebi", 1114 .id = SDM845_SLAVE_EBI1, 1115 .channels = 4, 1116 .buswidth = 4, 1117 }; 1118 1119 static struct qcom_icc_node qhs_mdsp_ms_mpu_cfg = { 1120 .name = "qhs_mdsp_ms_mpu_cfg", 1121 .id = SDM845_SLAVE_MSS_PROC_MS_MPU_CFG, 1122 .channels = 1, 1123 .buswidth = 4, 1124 }; 1125 1126 static struct qcom_icc_node qns_apps_io = { 1127 .name = "qns_apps_io", 1128 .id = SDM845_SLAVE_MEM_NOC_GNOC, 1129 .channels = 1, 1130 .buswidth = 32, 1131 }; 1132 1133 static struct qcom_icc_node qns_llcc = { 1134 .name = "qns_llcc", 1135 .id = SDM845_SLAVE_LLCC, 1136 .channels = 4, 1137 .buswidth = 16, 1138 .num_links = 1, 1139 .links = { SDM845_MASTER_LLCC }, 1140 }; 1141 1142 static struct qcom_icc_node qns_memnoc_snoc = { 1143 .name = "qns_memnoc_snoc", 1144 .id = SDM845_SLAVE_MEM_NOC_SNOC, 1145 .channels = 1, 1146 .buswidth = 8, 1147 .num_links = 1, 1148 .links = { SDM845_MASTER_MEM_NOC_SNOC }, 1149 }; 1150 1151 static struct qcom_icc_node srvc_memnoc = { 1152 .name = "srvc_memnoc", 1153 .id = SDM845_SLAVE_SERVICE_MEM_NOC, 1154 .channels = 1, 1155 .buswidth = 4, 1156 }; 1157 1158 static struct qcom_icc_node qns2_mem_noc = { 1159 .name = "qns2_mem_noc", 1160 .id = SDM845_SLAVE_MNOC_SF_MEM_NOC, 1161 .channels = 1, 1162 .buswidth = 32, 1163 .num_links = 1, 1164 .links = { SDM845_MASTER_MNOC_SF_MEM_NOC }, 1165 }; 1166 1167 static struct qcom_icc_node qns_mem_noc_hf = { 1168 .name = "qns_mem_noc_hf", 1169 .id = SDM845_SLAVE_MNOC_HF_MEM_NOC, 1170 .channels = 2, 1171 .buswidth = 32, 1172 .num_links = 1, 1173 .links = { SDM845_MASTER_MNOC_HF_MEM_NOC }, 1174 }; 1175 1176 static struct qcom_icc_node srvc_mnoc = { 1177 .name = "srvc_mnoc", 1178 .id = SDM845_SLAVE_SERVICE_MNOC, 1179 .channels = 1, 1180 .buswidth = 4, 1181 }; 1182 1183 static struct qcom_icc_node qhs_apss = { 1184 .name = "qhs_apss", 1185 .id = SDM845_SLAVE_APPSS, 1186 .channels = 1, 1187 .buswidth = 8, 1188 }; 1189 1190 static struct qcom_icc_node qns_cnoc = { 1191 .name = "qns_cnoc", 1192 .id = SDM845_SLAVE_SNOC_CNOC, 1193 .channels = 1, 1194 .buswidth = 8, 1195 .num_links = 1, 1196 .links = { SDM845_MASTER_SNOC_CNOC }, 1197 }; 1198 1199 static struct qcom_icc_node qns_memnoc_gc = { 1200 .name = "qns_memnoc_gc", 1201 .id = SDM845_SLAVE_SNOC_MEM_NOC_GC, 1202 .channels = 1, 1203 .buswidth = 8, 1204 .num_links = 1, 1205 .links = { SDM845_MASTER_SNOC_GC_MEM_NOC }, 1206 }; 1207 1208 static struct qcom_icc_node qns_memnoc_sf = { 1209 .name = "qns_memnoc_sf", 1210 .id = SDM845_SLAVE_SNOC_MEM_NOC_SF, 1211 .channels = 1, 1212 .buswidth = 16, 1213 .num_links = 1, 1214 .links = { SDM845_MASTER_SNOC_SF_MEM_NOC }, 1215 }; 1216 1217 static struct qcom_icc_node qxs_imem = { 1218 .name = "qxs_imem", 1219 .id = SDM845_SLAVE_IMEM, 1220 .channels = 1, 1221 .buswidth = 8, 1222 }; 1223 1224 static struct qcom_icc_node qxs_pcie = { 1225 .name = "qxs_pcie", 1226 .id = SDM845_SLAVE_PCIE_0, 1227 .channels = 1, 1228 .buswidth = 8, 1229 }; 1230 1231 static struct qcom_icc_node qxs_pcie_gen3 = { 1232 .name = "qxs_pcie_gen3", 1233 .id = SDM845_SLAVE_PCIE_1, 1234 .channels = 1, 1235 .buswidth = 8, 1236 }; 1237 1238 static struct qcom_icc_node qxs_pimem = { 1239 .name = "qxs_pimem", 1240 .id = SDM845_SLAVE_PIMEM, 1241 .channels = 1, 1242 .buswidth = 8, 1243 }; 1244 1245 static struct qcom_icc_node srvc_snoc = { 1246 .name = "srvc_snoc", 1247 .id = SDM845_SLAVE_SERVICE_SNOC, 1248 .channels = 1, 1249 .buswidth = 4, 1250 }; 1251 1252 static struct qcom_icc_node xs_qdss_stm = { 1253 .name = "xs_qdss_stm", 1254 .id = SDM845_SLAVE_QDSS_STM, 1255 .channels = 1, 1256 .buswidth = 4, 1257 }; 1258 1259 static struct qcom_icc_node xs_sys_tcu_cfg = { 1260 .name = "xs_sys_tcu_cfg", 1261 .id = SDM845_SLAVE_TCU, 1262 .channels = 1, 1263 .buswidth = 8, 1264 }; 1265 1266 static struct qcom_icc_bcm bcm_acv = { 1267 .name = "ACV", 1268 .keepalive = false, 1269 .num_nodes = 1, 1270 .nodes = { &ebi }, 1271 }; 1272 1273 static struct qcom_icc_bcm bcm_mc0 = { 1274 .name = "MC0", 1275 .keepalive = true, 1276 .num_nodes = 1, 1277 .nodes = { &ebi }, 1278 }; 1279 1280 static struct qcom_icc_bcm bcm_sh0 = { 1281 .name = "SH0", 1282 .keepalive = true, 1283 .num_nodes = 1, 1284 .nodes = { &qns_llcc }, 1285 }; 1286 1287 static struct qcom_icc_bcm bcm_mm0 = { 1288 .name = "MM0", 1289 .keepalive = false, 1290 .num_nodes = 1, 1291 .nodes = { &qns_mem_noc_hf }, 1292 }; 1293 1294 static struct qcom_icc_bcm bcm_sh1 = { 1295 .name = "SH1", 1296 .keepalive = false, 1297 .num_nodes = 1, 1298 .nodes = { &qns_apps_io }, 1299 }; 1300 1301 static struct qcom_icc_bcm bcm_mm1 = { 1302 .name = "MM1", 1303 .keepalive = true, 1304 .num_nodes = 7, 1305 .nodes = { &qxm_camnoc_hf0_uncomp, 1306 &qxm_camnoc_hf1_uncomp, 1307 &qxm_camnoc_sf_uncomp, 1308 &qxm_camnoc_hf0, 1309 &qxm_camnoc_hf1, 1310 &qxm_mdp0, 1311 &qxm_mdp1 1312 }, 1313 }; 1314 1315 static struct qcom_icc_bcm bcm_sh2 = { 1316 .name = "SH2", 1317 .keepalive = false, 1318 .num_nodes = 1, 1319 .nodes = { &qns_memnoc_snoc }, 1320 }; 1321 1322 static struct qcom_icc_bcm bcm_mm2 = { 1323 .name = "MM2", 1324 .keepalive = false, 1325 .num_nodes = 1, 1326 .nodes = { &qns2_mem_noc }, 1327 }; 1328 1329 static struct qcom_icc_bcm bcm_sh3 = { 1330 .name = "SH3", 1331 .keepalive = false, 1332 .num_nodes = 1, 1333 .nodes = { &acm_tcu }, 1334 }; 1335 1336 static struct qcom_icc_bcm bcm_mm3 = { 1337 .name = "MM3", 1338 .keepalive = false, 1339 .num_nodes = 5, 1340 .nodes = { &qxm_camnoc_sf, &qxm_rot, &qxm_venus0, &qxm_venus1, &qxm_venus_arm9 }, 1341 }; 1342 1343 static struct qcom_icc_bcm bcm_sh5 = { 1344 .name = "SH5", 1345 .keepalive = false, 1346 .num_nodes = 1, 1347 .nodes = { &qnm_apps }, 1348 }; 1349 1350 static struct qcom_icc_bcm bcm_sn0 = { 1351 .name = "SN0", 1352 .keepalive = true, 1353 .num_nodes = 1, 1354 .nodes = { &qns_memnoc_sf }, 1355 }; 1356 1357 static struct qcom_icc_bcm bcm_ce0 = { 1358 .name = "CE0", 1359 .keepalive = false, 1360 .num_nodes = 1, 1361 .nodes = { &qxm_crypto }, 1362 }; 1363 1364 static struct qcom_icc_bcm bcm_cn0 = { 1365 .name = "CN0", 1366 .keepalive = false, 1367 .num_nodes = 47, 1368 .nodes = { &qhm_spdm, 1369 &qhm_tic, 1370 &qnm_snoc, 1371 &xm_qdss_dap, 1372 &qhs_a1_noc_cfg, 1373 &qhs_a2_noc_cfg, 1374 &qhs_aop, 1375 &qhs_aoss, 1376 &qhs_camera_cfg, 1377 &qhs_clk_ctl, 1378 &qhs_compute_dsp_cfg, 1379 &qhs_cpr_cx, 1380 &qhs_crypto0_cfg, 1381 &qhs_dcc_cfg, 1382 &qhs_ddrss_cfg, 1383 &qhs_display_cfg, 1384 &qhs_glm, 1385 &qhs_gpuss_cfg, 1386 &qhs_imem_cfg, 1387 &qhs_ipa, 1388 &qhs_mnoc_cfg, 1389 &qhs_pcie0_cfg, 1390 &qhs_pcie_gen3_cfg, 1391 &qhs_pdm, 1392 &qhs_phy_refgen_south, 1393 &qhs_pimem_cfg, 1394 &qhs_prng, 1395 &qhs_qdss_cfg, 1396 &qhs_qupv3_north, 1397 &qhs_qupv3_south, 1398 &qhs_sdc2, 1399 &qhs_sdc4, 1400 &qhs_snoc_cfg, 1401 &qhs_spdm, 1402 &qhs_spss_cfg, 1403 &qhs_tcsr, 1404 &qhs_tlmm_north, 1405 &qhs_tlmm_south, 1406 &qhs_tsif, 1407 &qhs_ufs_card_cfg, 1408 &qhs_ufs_mem_cfg, 1409 &qhs_usb3_0, 1410 &qhs_usb3_1, 1411 &qhs_venus_cfg, 1412 &qhs_vsense_ctrl_cfg, 1413 &qns_cnoc_a2noc, 1414 &srvc_cnoc 1415 }, 1416 }; 1417 1418 static struct qcom_icc_bcm bcm_qup0 = { 1419 .name = "QUP0", 1420 .keepalive = false, 1421 .num_nodes = 2, 1422 .nodes = { &qhm_qup1, &qhm_qup2 }, 1423 }; 1424 1425 static struct qcom_icc_bcm bcm_sn1 = { 1426 .name = "SN1", 1427 .keepalive = false, 1428 .num_nodes = 1, 1429 .nodes = { &qxs_imem }, 1430 }; 1431 1432 static struct qcom_icc_bcm bcm_sn2 = { 1433 .name = "SN2", 1434 .keepalive = false, 1435 .num_nodes = 1, 1436 .nodes = { &qns_memnoc_gc }, 1437 }; 1438 1439 static struct qcom_icc_bcm bcm_sn3 = { 1440 .name = "SN3", 1441 .keepalive = false, 1442 .num_nodes = 1, 1443 .nodes = { &qns_cnoc }, 1444 }; 1445 1446 static struct qcom_icc_bcm bcm_sn4 = { 1447 .name = "SN4", 1448 .keepalive = false, 1449 .num_nodes = 1, 1450 .nodes = { &qxm_pimem }, 1451 }; 1452 1453 static struct qcom_icc_bcm bcm_sn5 = { 1454 .name = "SN5", 1455 .keepalive = false, 1456 .num_nodes = 1, 1457 .nodes = { &xs_qdss_stm }, 1458 }; 1459 1460 static struct qcom_icc_bcm bcm_sn6 = { 1461 .name = "SN6", 1462 .keepalive = false, 1463 .num_nodes = 3, 1464 .nodes = { &qhs_apss, &srvc_snoc, &xs_sys_tcu_cfg }, 1465 }; 1466 1467 static struct qcom_icc_bcm bcm_sn7 = { 1468 .name = "SN7", 1469 .keepalive = false, 1470 .num_nodes = 1, 1471 .nodes = { &qxs_pcie }, 1472 }; 1473 1474 static struct qcom_icc_bcm bcm_sn8 = { 1475 .name = "SN8", 1476 .keepalive = false, 1477 .num_nodes = 1, 1478 .nodes = { &qxs_pcie_gen3 }, 1479 }; 1480 1481 static struct qcom_icc_bcm bcm_sn9 = { 1482 .name = "SN9", 1483 .keepalive = false, 1484 .num_nodes = 2, 1485 .nodes = { &srvc_aggre1_noc, &qnm_aggre1_noc }, 1486 }; 1487 1488 static struct qcom_icc_bcm bcm_sn11 = { 1489 .name = "SN11", 1490 .keepalive = false, 1491 .num_nodes = 2, 1492 .nodes = { &srvc_aggre2_noc, &qnm_aggre2_noc }, 1493 }; 1494 1495 static struct qcom_icc_bcm bcm_sn12 = { 1496 .name = "SN12", 1497 .keepalive = false, 1498 .num_nodes = 2, 1499 .nodes = { &qnm_gladiator_sodv, &xm_gic }, 1500 }; 1501 1502 static struct qcom_icc_bcm bcm_sn14 = { 1503 .name = "SN14", 1504 .keepalive = false, 1505 .num_nodes = 1, 1506 .nodes = { &qnm_pcie_anoc }, 1507 }; 1508 1509 static struct qcom_icc_bcm bcm_sn15 = { 1510 .name = "SN15", 1511 .keepalive = false, 1512 .num_nodes = 1, 1513 .nodes = { &qnm_memnoc }, 1514 }; 1515 1516 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = { 1517 &bcm_sn9, 1518 &bcm_qup0, 1519 }; 1520 1521 static struct qcom_icc_node * const aggre1_noc_nodes[] = { 1522 [MASTER_A1NOC_CFG] = &qhm_a1noc_cfg, 1523 [MASTER_TSIF] = &qhm_tsif, 1524 [MASTER_SDCC_2] = &xm_sdc2, 1525 [MASTER_SDCC_4] = &xm_sdc4, 1526 [MASTER_UFS_CARD] = &xm_ufs_card, 1527 [MASTER_UFS_MEM] = &xm_ufs_mem, 1528 [MASTER_PCIE_0] = &xm_pcie_0, 1529 [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 1530 [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc, 1531 [SLAVE_ANOC_PCIE_A1NOC_SNOC] = &qns_pcie_a1noc_snoc, 1532 [MASTER_QUP_1] = &qhm_qup1, 1533 }; 1534 1535 static const struct qcom_icc_desc sdm845_aggre1_noc = { 1536 .nodes = aggre1_noc_nodes, 1537 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 1538 .bcms = aggre1_noc_bcms, 1539 .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 1540 }; 1541 1542 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = { 1543 &bcm_ce0, 1544 &bcm_sn11, 1545 &bcm_qup0, 1546 }; 1547 1548 static struct qcom_icc_node * const aggre2_noc_nodes[] = { 1549 [MASTER_A2NOC_CFG] = &qhm_a2noc_cfg, 1550 [MASTER_QDSS_BAM] = &qhm_qdss_bam, 1551 [MASTER_CNOC_A2NOC] = &qnm_cnoc, 1552 [MASTER_CRYPTO] = &qxm_crypto, 1553 [MASTER_IPA] = &qxm_ipa, 1554 [MASTER_PCIE_1] = &xm_pcie3_1, 1555 [MASTER_QDSS_ETR] = &xm_qdss_etr, 1556 [MASTER_USB3_0] = &xm_usb3_0, 1557 [MASTER_USB3_1] = &xm_usb3_1, 1558 [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc, 1559 [SLAVE_ANOC_PCIE_SNOC] = &qns_pcie_snoc, 1560 [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc, 1561 [MASTER_QUP_2] = &qhm_qup2, 1562 }; 1563 1564 static const struct qcom_icc_desc sdm845_aggre2_noc = { 1565 .nodes = aggre2_noc_nodes, 1566 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 1567 .bcms = aggre2_noc_bcms, 1568 .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 1569 }; 1570 1571 static struct qcom_icc_bcm * const config_noc_bcms[] = { 1572 &bcm_cn0, 1573 }; 1574 1575 static struct qcom_icc_node * const config_noc_nodes[] = { 1576 [MASTER_SPDM] = &qhm_spdm, 1577 [MASTER_TIC] = &qhm_tic, 1578 [MASTER_SNOC_CNOC] = &qnm_snoc, 1579 [MASTER_QDSS_DAP] = &xm_qdss_dap, 1580 [SLAVE_A1NOC_CFG] = &qhs_a1_noc_cfg, 1581 [SLAVE_A2NOC_CFG] = &qhs_a2_noc_cfg, 1582 [SLAVE_AOP] = &qhs_aop, 1583 [SLAVE_AOSS] = &qhs_aoss, 1584 [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 1585 [SLAVE_CLK_CTL] = &qhs_clk_ctl, 1586 [SLAVE_CDSP_CFG] = &qhs_compute_dsp_cfg, 1587 [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 1588 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 1589 [SLAVE_DCC_CFG] = &qhs_dcc_cfg, 1590 [SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg, 1591 [SLAVE_DISPLAY_CFG] = &qhs_display_cfg, 1592 [SLAVE_GLM] = &qhs_glm, 1593 [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg, 1594 [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 1595 [SLAVE_IPA_CFG] = &qhs_ipa, 1596 [SLAVE_CNOC_MNOC_CFG] = &qhs_mnoc_cfg, 1597 [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg, 1598 [SLAVE_PCIE_1_CFG] = &qhs_pcie_gen3_cfg, 1599 [SLAVE_PDM] = &qhs_pdm, 1600 [SLAVE_SOUTH_PHY_CFG] = &qhs_phy_refgen_south, 1601 [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 1602 [SLAVE_PRNG] = &qhs_prng, 1603 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 1604 [SLAVE_BLSP_2] = &qhs_qupv3_north, 1605 [SLAVE_BLSP_1] = &qhs_qupv3_south, 1606 [SLAVE_SDCC_2] = &qhs_sdc2, 1607 [SLAVE_SDCC_4] = &qhs_sdc4, 1608 [SLAVE_SNOC_CFG] = &qhs_snoc_cfg, 1609 [SLAVE_SPDM_WRAPPER] = &qhs_spdm, 1610 [SLAVE_SPSS_CFG] = &qhs_spss_cfg, 1611 [SLAVE_TCSR] = &qhs_tcsr, 1612 [SLAVE_TLMM_NORTH] = &qhs_tlmm_north, 1613 [SLAVE_TLMM_SOUTH] = &qhs_tlmm_south, 1614 [SLAVE_TSIF] = &qhs_tsif, 1615 [SLAVE_UFS_CARD_CFG] = &qhs_ufs_card_cfg, 1616 [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 1617 [SLAVE_USB3_0] = &qhs_usb3_0, 1618 [SLAVE_USB3_1] = &qhs_usb3_1, 1619 [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 1620 [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 1621 [SLAVE_CNOC_A2NOC] = &qns_cnoc_a2noc, 1622 [SLAVE_SERVICE_CNOC] = &srvc_cnoc, 1623 }; 1624 1625 static const struct qcom_icc_desc sdm845_config_noc = { 1626 .nodes = config_noc_nodes, 1627 .num_nodes = ARRAY_SIZE(config_noc_nodes), 1628 .bcms = config_noc_bcms, 1629 .num_bcms = ARRAY_SIZE(config_noc_bcms), 1630 }; 1631 1632 static struct qcom_icc_bcm * const dc_noc_bcms[] = { 1633 }; 1634 1635 static struct qcom_icc_node * const dc_noc_nodes[] = { 1636 [MASTER_CNOC_DC_NOC] = &qhm_cnoc, 1637 [SLAVE_LLCC_CFG] = &qhs_llcc, 1638 [SLAVE_MEM_NOC_CFG] = &qhs_memnoc, 1639 }; 1640 1641 static const struct qcom_icc_desc sdm845_dc_noc = { 1642 .nodes = dc_noc_nodes, 1643 .num_nodes = ARRAY_SIZE(dc_noc_nodes), 1644 .bcms = dc_noc_bcms, 1645 .num_bcms = ARRAY_SIZE(dc_noc_bcms), 1646 }; 1647 1648 static struct qcom_icc_bcm * const gladiator_noc_bcms[] = { 1649 }; 1650 1651 static struct qcom_icc_node * const gladiator_noc_nodes[] = { 1652 [MASTER_APPSS_PROC] = &acm_l3, 1653 [MASTER_GNOC_CFG] = &pm_gnoc_cfg, 1654 [SLAVE_GNOC_SNOC] = &qns_gladiator_sodv, 1655 [SLAVE_GNOC_MEM_NOC] = &qns_gnoc_memnoc, 1656 [SLAVE_SERVICE_GNOC] = &srvc_gnoc, 1657 }; 1658 1659 static const struct qcom_icc_desc sdm845_gladiator_noc = { 1660 .nodes = gladiator_noc_nodes, 1661 .num_nodes = ARRAY_SIZE(gladiator_noc_nodes), 1662 .bcms = gladiator_noc_bcms, 1663 .num_bcms = ARRAY_SIZE(gladiator_noc_bcms), 1664 }; 1665 1666 static struct qcom_icc_bcm * const mem_noc_bcms[] = { 1667 &bcm_mc0, 1668 &bcm_acv, 1669 &bcm_sh0, 1670 &bcm_sh1, 1671 &bcm_sh2, 1672 &bcm_sh3, 1673 &bcm_sh5, 1674 }; 1675 1676 static struct qcom_icc_node * const mem_noc_nodes[] = { 1677 [MASTER_TCU_0] = &acm_tcu, 1678 [MASTER_MEM_NOC_CFG] = &qhm_memnoc_cfg, 1679 [MASTER_GNOC_MEM_NOC] = &qnm_apps, 1680 [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 1681 [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 1682 [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 1683 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 1684 [MASTER_GFX3D] = &qxm_gpu, 1685 [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg, 1686 [SLAVE_MEM_NOC_GNOC] = &qns_apps_io, 1687 [SLAVE_LLCC] = &qns_llcc, 1688 [SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc, 1689 [SLAVE_SERVICE_MEM_NOC] = &srvc_memnoc, 1690 [MASTER_LLCC] = &llcc_mc, 1691 [SLAVE_EBI1] = &ebi, 1692 }; 1693 1694 static const struct qcom_icc_desc sdm845_mem_noc = { 1695 .nodes = mem_noc_nodes, 1696 .num_nodes = ARRAY_SIZE(mem_noc_nodes), 1697 .bcms = mem_noc_bcms, 1698 .num_bcms = ARRAY_SIZE(mem_noc_bcms), 1699 }; 1700 1701 static struct qcom_icc_bcm * const mmss_noc_bcms[] = { 1702 &bcm_mm0, 1703 &bcm_mm1, 1704 &bcm_mm2, 1705 &bcm_mm3, 1706 }; 1707 1708 static struct qcom_icc_node * const mmss_noc_nodes[] = { 1709 [MASTER_CNOC_MNOC_CFG] = &qhm_mnoc_cfg, 1710 [MASTER_CAMNOC_HF0] = &qxm_camnoc_hf0, 1711 [MASTER_CAMNOC_HF1] = &qxm_camnoc_hf1, 1712 [MASTER_CAMNOC_SF] = &qxm_camnoc_sf, 1713 [MASTER_MDP0] = &qxm_mdp0, 1714 [MASTER_MDP1] = &qxm_mdp1, 1715 [MASTER_ROTATOR] = &qxm_rot, 1716 [MASTER_VIDEO_P0] = &qxm_venus0, 1717 [MASTER_VIDEO_P1] = &qxm_venus1, 1718 [MASTER_VIDEO_PROC] = &qxm_venus_arm9, 1719 [SLAVE_MNOC_SF_MEM_NOC] = &qns2_mem_noc, 1720 [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 1721 [SLAVE_SERVICE_MNOC] = &srvc_mnoc, 1722 [MASTER_CAMNOC_HF0_UNCOMP] = &qxm_camnoc_hf0_uncomp, 1723 [MASTER_CAMNOC_HF1_UNCOMP] = &qxm_camnoc_hf1_uncomp, 1724 [MASTER_CAMNOC_SF_UNCOMP] = &qxm_camnoc_sf_uncomp, 1725 [SLAVE_CAMNOC_UNCOMP] = &qns_camnoc_uncomp, 1726 }; 1727 1728 static const struct qcom_icc_desc sdm845_mmss_noc = { 1729 .nodes = mmss_noc_nodes, 1730 .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 1731 .bcms = mmss_noc_bcms, 1732 .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 1733 }; 1734 1735 static struct qcom_icc_bcm * const system_noc_bcms[] = { 1736 &bcm_sn0, 1737 &bcm_sn1, 1738 &bcm_sn2, 1739 &bcm_sn3, 1740 &bcm_sn4, 1741 &bcm_sn5, 1742 &bcm_sn6, 1743 &bcm_sn7, 1744 &bcm_sn8, 1745 &bcm_sn9, 1746 &bcm_sn11, 1747 &bcm_sn12, 1748 &bcm_sn14, 1749 &bcm_sn15, 1750 }; 1751 1752 static struct qcom_icc_node * const system_noc_nodes[] = { 1753 [MASTER_SNOC_CFG] = &qhm_snoc_cfg, 1754 [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc, 1755 [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc, 1756 [MASTER_GNOC_SNOC] = &qnm_gladiator_sodv, 1757 [MASTER_MEM_NOC_SNOC] = &qnm_memnoc, 1758 [MASTER_ANOC_PCIE_SNOC] = &qnm_pcie_anoc, 1759 [MASTER_PIMEM] = &qxm_pimem, 1760 [MASTER_GIC] = &xm_gic, 1761 [SLAVE_APPSS] = &qhs_apss, 1762 [SLAVE_SNOC_CNOC] = &qns_cnoc, 1763 [SLAVE_SNOC_MEM_NOC_GC] = &qns_memnoc_gc, 1764 [SLAVE_SNOC_MEM_NOC_SF] = &qns_memnoc_sf, 1765 [SLAVE_IMEM] = &qxs_imem, 1766 [SLAVE_PCIE_0] = &qxs_pcie, 1767 [SLAVE_PCIE_1] = &qxs_pcie_gen3, 1768 [SLAVE_PIMEM] = &qxs_pimem, 1769 [SLAVE_SERVICE_SNOC] = &srvc_snoc, 1770 [SLAVE_QDSS_STM] = &xs_qdss_stm, 1771 [SLAVE_TCU] = &xs_sys_tcu_cfg, 1772 }; 1773 1774 static const struct qcom_icc_desc sdm845_system_noc = { 1775 .nodes = system_noc_nodes, 1776 .num_nodes = ARRAY_SIZE(system_noc_nodes), 1777 .bcms = system_noc_bcms, 1778 .num_bcms = ARRAY_SIZE(system_noc_bcms), 1779 }; 1780 1781 static const struct of_device_id qnoc_of_match[] = { 1782 { .compatible = "qcom,sdm845-aggre1-noc", 1783 .data = &sdm845_aggre1_noc}, 1784 { .compatible = "qcom,sdm845-aggre2-noc", 1785 .data = &sdm845_aggre2_noc}, 1786 { .compatible = "qcom,sdm845-config-noc", 1787 .data = &sdm845_config_noc}, 1788 { .compatible = "qcom,sdm845-dc-noc", 1789 .data = &sdm845_dc_noc}, 1790 { .compatible = "qcom,sdm845-gladiator-noc", 1791 .data = &sdm845_gladiator_noc}, 1792 { .compatible = "qcom,sdm845-mem-noc", 1793 .data = &sdm845_mem_noc}, 1794 { .compatible = "qcom,sdm845-mmss-noc", 1795 .data = &sdm845_mmss_noc}, 1796 { .compatible = "qcom,sdm845-system-noc", 1797 .data = &sdm845_system_noc}, 1798 { } 1799 }; 1800 MODULE_DEVICE_TABLE(of, qnoc_of_match); 1801 1802 static struct platform_driver qnoc_driver = { 1803 .probe = qcom_icc_rpmh_probe, 1804 .remove = qcom_icc_rpmh_remove, 1805 .driver = { 1806 .name = "qnoc-sdm845", 1807 .of_match_table = qnoc_of_match, 1808 .sync_state = icc_sync_state, 1809 }, 1810 }; 1811 module_platform_driver(qnoc_driver); 1812 1813 MODULE_AUTHOR("David Dai <daidavid1@codeaurora.org>"); 1814 MODULE_DESCRIPTION("Qualcomm sdm845 NoC driver"); 1815 MODULE_LICENSE("GPL v2"); 1816