Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.6-rc1 1068 lines 24 kB view raw
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 */ 6 7#include <linux/device.h> 8#include <linux/interconnect.h> 9#include <linux/interconnect-provider.h> 10#include <linux/mod_devicetable.h> 11#include <linux/module.h> 12#include <linux/platform_device.h> 13#include <dt-bindings/interconnect/qcom,qdu1000-rpmh.h> 14 15#include "bcm-voter.h" 16#include "icc-common.h" 17#include "icc-rpmh.h" 18#include "qdu1000.h" 19 20static struct qcom_icc_node qup0_core_master = { 21 .name = "qup0_core_master", 22 .id = QDU1000_MASTER_QUP_CORE_0, 23 .channels = 1, 24 .buswidth = 4, 25 .num_links = 1, 26 .links = { QDU1000_SLAVE_QUP_CORE_0 }, 27}; 28 29static struct qcom_icc_node qup1_core_master = { 30 .name = "qup1_core_master", 31 .id = QDU1000_MASTER_QUP_CORE_1, 32 .channels = 1, 33 .buswidth = 4, 34 .num_links = 1, 35 .links = { QDU1000_SLAVE_QUP_CORE_1 }, 36}; 37 38static struct qcom_icc_node alm_sys_tcu = { 39 .name = "alm_sys_tcu", 40 .id = QDU1000_MASTER_SYS_TCU, 41 .channels = 1, 42 .buswidth = 8, 43 .num_links = 2, 44 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC }, 45}; 46 47static struct qcom_icc_node chm_apps = { 48 .name = "chm_apps", 49 .id = QDU1000_MASTER_APPSS_PROC, 50 .channels = 1, 51 .buswidth = 16, 52 .num_links = 4, 53 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 54 QDU1000_SLAVE_GEMNOC_MODEM_CNOC, QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 55 }, 56}; 57 58static struct qcom_icc_node qnm_ecpri_dma = { 59 .name = "qnm_ecpri_dma", 60 .id = QDU1000_MASTER_GEMNOC_ECPRI_DMA, 61 .channels = 2, 62 .buswidth = 32, 63 .num_links = 2, 64 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC }, 65}; 66 67static struct qcom_icc_node qnm_fec_2_gemnoc = { 68 .name = "qnm_fec_2_gemnoc", 69 .id = QDU1000_MASTER_FEC_2_GEMNOC, 70 .channels = 2, 71 .buswidth = 32, 72 .num_links = 2, 73 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC }, 74}; 75 76static struct qcom_icc_node qnm_pcie = { 77 .name = "qnm_pcie", 78 .id = QDU1000_MASTER_ANOC_PCIE_GEM_NOC, 79 .channels = 1, 80 .buswidth = 64, 81 .num_links = 3, 82 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 83 QDU1000_SLAVE_GEMNOC_MODEM_CNOC 84 }, 85}; 86 87static struct qcom_icc_node qnm_snoc_gc = { 88 .name = "qnm_snoc_gc", 89 .id = QDU1000_MASTER_SNOC_GC_MEM_NOC, 90 .channels = 1, 91 .buswidth = 8, 92 .num_links = 1, 93 .links = { QDU1000_SLAVE_LLCC }, 94}; 95 96static struct qcom_icc_node qnm_snoc_sf = { 97 .name = "qnm_snoc_sf", 98 .id = QDU1000_MASTER_SNOC_SF_MEM_NOC, 99 .channels = 1, 100 .buswidth = 16, 101 .num_links = 4, 102 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 103 QDU1000_SLAVE_GEMNOC_MODEM_CNOC, QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 104 }, 105}; 106 107static struct qcom_icc_node qxm_mdsp = { 108 .name = "qxm_mdsp", 109 .id = QDU1000_MASTER_MSS_PROC, 110 .channels = 1, 111 .buswidth = 16, 112 .num_links = 3, 113 .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 114 QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 115 }, 116}; 117 118static struct qcom_icc_node llcc_mc = { 119 .name = "llcc_mc", 120 .id = QDU1000_MASTER_LLCC, 121 .channels = 8, 122 .buswidth = 4, 123 .num_links = 1, 124 .links = { QDU1000_SLAVE_EBI1 }, 125}; 126 127static struct qcom_icc_node qhm_gic = { 128 .name = "qhm_gic", 129 .id = QDU1000_MASTER_GIC_AHB, 130 .channels = 1, 131 .buswidth = 4, 132 .num_links = 1, 133 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 134}; 135 136static struct qcom_icc_node qhm_qdss_bam = { 137 .name = "qhm_qdss_bam", 138 .id = QDU1000_MASTER_QDSS_BAM, 139 .channels = 1, 140 .buswidth = 4, 141 .num_links = 1, 142 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 143}; 144 145static struct qcom_icc_node qhm_qpic = { 146 .name = "qhm_qpic", 147 .id = QDU1000_MASTER_QPIC, 148 .channels = 1, 149 .buswidth = 4, 150 .num_links = 1, 151 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 152}; 153 154static struct qcom_icc_node qhm_qspi = { 155 .name = "qhm_qspi", 156 .id = QDU1000_MASTER_QSPI_0, 157 .channels = 1, 158 .buswidth = 4, 159 .num_links = 1, 160 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 161}; 162 163static struct qcom_icc_node qhm_qup0 = { 164 .name = "qhm_qup0", 165 .id = QDU1000_MASTER_QUP_0, 166 .channels = 1, 167 .buswidth = 4, 168 .num_links = 1, 169 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 170}; 171 172static struct qcom_icc_node qhm_qup1 = { 173 .name = "qhm_qup1", 174 .id = QDU1000_MASTER_QUP_1, 175 .channels = 1, 176 .buswidth = 4, 177 .num_links = 1, 178 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 179}; 180 181static struct qcom_icc_node qhm_system_noc_cfg = { 182 .name = "qhm_system_noc_cfg", 183 .id = QDU1000_MASTER_SNOC_CFG, 184 .channels = 1, 185 .buswidth = 4, 186 .num_links = 1, 187 .links = { QDU1000_SLAVE_SERVICE_SNOC }, 188}; 189 190static struct qcom_icc_node qnm_aggre_noc = { 191 .name = "qnm_aggre_noc", 192 .id = QDU1000_MASTER_ANOC_SNOC, 193 .channels = 1, 194 .buswidth = 8, 195 .num_links = 1, 196 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 197}; 198 199static struct qcom_icc_node qnm_aggre_noc_gsi = { 200 .name = "qnm_aggre_noc_gsi", 201 .id = QDU1000_MASTER_ANOC_GSI, 202 .channels = 1, 203 .buswidth = 8, 204 .num_links = 1, 205 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_GC }, 206}; 207 208static struct qcom_icc_node qnm_gemnoc_cnoc = { 209 .name = "qnm_gemnoc_cnoc", 210 .id = QDU1000_MASTER_GEM_NOC_CNOC, 211 .channels = 1, 212 .buswidth = 16, 213 .num_links = 36, 214 .links = { QDU1000_SLAVE_AHB2PHY_SOUTH, QDU1000_SLAVE_AHB2PHY_NORTH, 215 QDU1000_SLAVE_AHB2PHY_EAST, QDU1000_SLAVE_AOSS, 216 QDU1000_SLAVE_CLK_CTL, QDU1000_SLAVE_RBCPR_CX_CFG, 217 QDU1000_SLAVE_RBCPR_MX_CFG, QDU1000_SLAVE_CRYPTO_0_CFG, 218 QDU1000_SLAVE_ECPRI_CFG, QDU1000_SLAVE_IMEM_CFG, 219 QDU1000_SLAVE_IPC_ROUTER_CFG, QDU1000_SLAVE_CNOC_MSS, 220 QDU1000_SLAVE_PCIE_CFG, QDU1000_SLAVE_PDM, 221 QDU1000_SLAVE_PIMEM_CFG, QDU1000_SLAVE_PRNG, 222 QDU1000_SLAVE_QDSS_CFG, QDU1000_SLAVE_QPIC, 223 QDU1000_SLAVE_QSPI_0, QDU1000_SLAVE_QUP_0, 224 QDU1000_SLAVE_QUP_1, QDU1000_SLAVE_SDCC_2, 225 QDU1000_SLAVE_SMBUS_CFG, QDU1000_SLAVE_SNOC_CFG, 226 QDU1000_SLAVE_TCSR, QDU1000_SLAVE_TLMM, 227 QDU1000_SLAVE_TME_CFG, QDU1000_SLAVE_TSC_CFG, 228 QDU1000_SLAVE_USB3_0, QDU1000_SLAVE_VSENSE_CTRL_CFG, 229 QDU1000_SLAVE_DDRSS_CFG, QDU1000_SLAVE_IMEM, 230 QDU1000_SLAVE_PIMEM, QDU1000_SLAVE_ETHERNET_SS, 231 QDU1000_SLAVE_QDSS_STM, QDU1000_SLAVE_TCU 232 }, 233}; 234 235static struct qcom_icc_node qnm_gemnoc_modem_slave = { 236 .name = "qnm_gemnoc_modem_slave", 237 .id = QDU1000_MASTER_GEMNOC_MODEM_CNOC, 238 .channels = 1, 239 .buswidth = 16, 240 .num_links = 1, 241 .links = { QDU1000_SLAVE_MODEM_OFFLINE }, 242}; 243 244static struct qcom_icc_node qnm_gemnoc_pcie = { 245 .name = "qnm_gemnoc_pcie", 246 .id = QDU1000_MASTER_GEM_NOC_PCIE_SNOC, 247 .channels = 1, 248 .buswidth = 16, 249 .num_links = 1, 250 .links = { QDU1000_SLAVE_PCIE_0 }, 251}; 252 253static struct qcom_icc_node qxm_crypto = { 254 .name = "qxm_crypto", 255 .id = QDU1000_MASTER_CRYPTO, 256 .channels = 1, 257 .buswidth = 8, 258 .num_links = 1, 259 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 260}; 261 262static struct qcom_icc_node qxm_ecpri_gsi = { 263 .name = "qxm_ecpri_gsi", 264 .id = QDU1000_MASTER_ECPRI_GSI, 265 .channels = 1, 266 .buswidth = 8, 267 .num_links = 2, 268 .links = { QDU1000_SLAVE_ANOC_SNOC_GSI, QDU1000_SLAVE_PCIE_0 }, 269}; 270 271static struct qcom_icc_node qxm_pimem = { 272 .name = "qxm_pimem", 273 .id = QDU1000_MASTER_PIMEM, 274 .channels = 1, 275 .buswidth = 8, 276 .num_links = 1, 277 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_GC }, 278}; 279 280static struct qcom_icc_node xm_ecpri_dma = { 281 .name = "xm_ecpri_dma", 282 .id = QDU1000_MASTER_SNOC_ECPRI_DMA, 283 .channels = 2, 284 .buswidth = 32, 285 .num_links = 2, 286 .links = { QDU1000_SLAVE_ECPRI_GEMNOC, QDU1000_SLAVE_PCIE_0 }, 287}; 288 289static struct qcom_icc_node xm_gic = { 290 .name = "xm_gic", 291 .id = QDU1000_MASTER_GIC, 292 .channels = 1, 293 .buswidth = 8, 294 .num_links = 1, 295 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_GC }, 296}; 297 298static struct qcom_icc_node xm_pcie = { 299 .name = "xm_pcie", 300 .id = QDU1000_MASTER_PCIE, 301 .channels = 1, 302 .buswidth = 64, 303 .num_links = 1, 304 .links = { QDU1000_SLAVE_ANOC_PCIE_GEM_NOC }, 305}; 306 307static struct qcom_icc_node xm_qdss_etr0 = { 308 .name = "xm_qdss_etr0", 309 .id = QDU1000_MASTER_QDSS_ETR, 310 .channels = 1, 311 .buswidth = 8, 312 .num_links = 1, 313 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 314}; 315 316static struct qcom_icc_node xm_qdss_etr1 = { 317 .name = "xm_qdss_etr1", 318 .id = QDU1000_MASTER_QDSS_ETR_1, 319 .channels = 1, 320 .buswidth = 8, 321 .num_links = 1, 322 .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 323}; 324 325static struct qcom_icc_node xm_sdc = { 326 .name = "xm_sdc", 327 .id = QDU1000_MASTER_SDCC_1, 328 .channels = 1, 329 .buswidth = 8, 330 .num_links = 1, 331 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 332}; 333 334static struct qcom_icc_node xm_usb3 = { 335 .name = "xm_usb3", 336 .id = QDU1000_MASTER_USB3, 337 .channels = 1, 338 .buswidth = 8, 339 .num_links = 1, 340 .links = { QDU1000_SLAVE_A1NOC_SNOC }, 341}; 342 343static struct qcom_icc_node qup0_core_slave = { 344 .name = "qup0_core_slave", 345 .id = QDU1000_SLAVE_QUP_CORE_0, 346 .channels = 1, 347 .buswidth = 4, 348 .num_links = 0, 349}; 350 351static struct qcom_icc_node qup1_core_slave = { 352 .name = "qup1_core_slave", 353 .id = QDU1000_SLAVE_QUP_CORE_1, 354 .channels = 1, 355 .buswidth = 4, 356 .num_links = 0, 357}; 358 359static struct qcom_icc_node qns_gem_noc_cnoc = { 360 .name = "qns_gem_noc_cnoc", 361 .id = QDU1000_SLAVE_GEM_NOC_CNOC, 362 .channels = 1, 363 .buswidth = 16, 364 .num_links = 1, 365 .links = { QDU1000_MASTER_GEM_NOC_CNOC }, 366}; 367 368static struct qcom_icc_node qns_llcc = { 369 .name = "qns_llcc", 370 .id = QDU1000_SLAVE_LLCC, 371 .channels = 8, 372 .buswidth = 16, 373 .num_links = 1, 374 .links = { QDU1000_MASTER_LLCC }, 375}; 376 377static struct qcom_icc_node qns_modem_slave = { 378 .name = "qns_modem_slave", 379 .id = QDU1000_SLAVE_GEMNOC_MODEM_CNOC, 380 .channels = 1, 381 .buswidth = 16, 382 .num_links = 1, 383 .links = { QDU1000_MASTER_GEMNOC_MODEM_CNOC }, 384}; 385 386static struct qcom_icc_node qns_pcie = { 387 .name = "qns_pcie", 388 .id = QDU1000_SLAVE_MEM_NOC_PCIE_SNOC, 389 .channels = 1, 390 .buswidth = 16, 391 .num_links = 1, 392 .links = { QDU1000_MASTER_GEM_NOC_PCIE_SNOC }, 393}; 394 395static struct qcom_icc_node ebi = { 396 .name = "ebi", 397 .id = QDU1000_SLAVE_EBI1, 398 .channels = 8, 399 .buswidth = 4, 400 .num_links = 0, 401}; 402 403static struct qcom_icc_node qhs_ahb2phy0_south = { 404 .name = "qhs_ahb2phy0_south", 405 .id = QDU1000_SLAVE_AHB2PHY_SOUTH, 406 .channels = 1, 407 .buswidth = 4, 408 .num_links = 0, 409}; 410 411static struct qcom_icc_node qhs_ahb2phy1_north = { 412 .name = "qhs_ahb2phy1_north", 413 .id = QDU1000_SLAVE_AHB2PHY_NORTH, 414 .channels = 1, 415 .buswidth = 4, 416 .num_links = 0, 417}; 418 419static struct qcom_icc_node qhs_ahb2phy2_east = { 420 .name = "qhs_ahb2phy2_east", 421 .id = QDU1000_SLAVE_AHB2PHY_EAST, 422 .channels = 1, 423 .buswidth = 4, 424 .num_links = 0, 425}; 426 427static struct qcom_icc_node qhs_aoss = { 428 .name = "qhs_aoss", 429 .id = QDU1000_SLAVE_AOSS, 430 .channels = 1, 431 .buswidth = 4, 432 .num_links = 0, 433}; 434 435static struct qcom_icc_node qhs_clk_ctl = { 436 .name = "qhs_clk_ctl", 437 .id = QDU1000_SLAVE_CLK_CTL, 438 .channels = 1, 439 .buswidth = 4, 440 .num_links = 0, 441}; 442 443static struct qcom_icc_node qhs_cpr_cx = { 444 .name = "qhs_cpr_cx", 445 .id = QDU1000_SLAVE_RBCPR_CX_CFG, 446 .channels = 1, 447 .buswidth = 4, 448 .num_links = 0, 449}; 450 451static struct qcom_icc_node qhs_cpr_mx = { 452 .name = "qhs_cpr_mx", 453 .id = QDU1000_SLAVE_RBCPR_MX_CFG, 454 .channels = 1, 455 .buswidth = 4, 456 .num_links = 0, 457}; 458 459static struct qcom_icc_node qhs_crypto_cfg = { 460 .name = "qhs_crypto_cfg", 461 .id = QDU1000_SLAVE_CRYPTO_0_CFG, 462 .channels = 1, 463 .buswidth = 4, 464 .num_links = 0, 465}; 466 467static struct qcom_icc_node qhs_ecpri_cfg = { 468 .name = "qhs_ecpri_cfg", 469 .id = QDU1000_SLAVE_ECPRI_CFG, 470 .channels = 1, 471 .buswidth = 4, 472 .num_links = 0, 473}; 474 475static struct qcom_icc_node qhs_imem_cfg = { 476 .name = "qhs_imem_cfg", 477 .id = QDU1000_SLAVE_IMEM_CFG, 478 .channels = 1, 479 .buswidth = 4, 480 .num_links = 0, 481}; 482 483static struct qcom_icc_node qhs_ipc_router = { 484 .name = "qhs_ipc_router", 485 .id = QDU1000_SLAVE_IPC_ROUTER_CFG, 486 .channels = 1, 487 .buswidth = 4, 488 .num_links = 0, 489}; 490 491static struct qcom_icc_node qhs_mss_cfg = { 492 .name = "qhs_mss_cfg", 493 .id = QDU1000_SLAVE_CNOC_MSS, 494 .channels = 1, 495 .buswidth = 4, 496 .num_links = 0, 497}; 498 499static struct qcom_icc_node qhs_pcie_cfg = { 500 .name = "qhs_pcie_cfg", 501 .id = QDU1000_SLAVE_PCIE_CFG, 502 .channels = 1, 503 .buswidth = 4, 504 .num_links = 0, 505}; 506 507static struct qcom_icc_node qhs_pdm = { 508 .name = "qhs_pdm", 509 .id = QDU1000_SLAVE_PDM, 510 .channels = 1, 511 .buswidth = 4, 512 .num_links = 0, 513}; 514 515static struct qcom_icc_node qhs_pimem_cfg = { 516 .name = "qhs_pimem_cfg", 517 .id = QDU1000_SLAVE_PIMEM_CFG, 518 .channels = 1, 519 .buswidth = 4, 520 .num_links = 0, 521}; 522 523static struct qcom_icc_node qhs_prng = { 524 .name = "qhs_prng", 525 .id = QDU1000_SLAVE_PRNG, 526 .channels = 1, 527 .buswidth = 4, 528 .num_links = 0, 529}; 530 531static struct qcom_icc_node qhs_qdss_cfg = { 532 .name = "qhs_qdss_cfg", 533 .id = QDU1000_SLAVE_QDSS_CFG, 534 .channels = 1, 535 .buswidth = 4, 536 .num_links = 0, 537}; 538 539static struct qcom_icc_node qhs_qpic = { 540 .name = "qhs_qpic", 541 .id = QDU1000_SLAVE_QPIC, 542 .channels = 1, 543 .buswidth = 4, 544 .num_links = 0, 545}; 546 547static struct qcom_icc_node qhs_qspi = { 548 .name = "qhs_qspi", 549 .id = QDU1000_SLAVE_QSPI_0, 550 .channels = 1, 551 .buswidth = 4, 552 .num_links = 0, 553}; 554 555static struct qcom_icc_node qhs_qup0 = { 556 .name = "qhs_qup0", 557 .id = QDU1000_SLAVE_QUP_0, 558 .channels = 1, 559 .buswidth = 4, 560 .num_links = 0, 561}; 562 563static struct qcom_icc_node qhs_qup1 = { 564 .name = "qhs_qup1", 565 .id = QDU1000_SLAVE_QUP_1, 566 .channels = 1, 567 .buswidth = 4, 568 .num_links = 0, 569}; 570 571static struct qcom_icc_node qhs_sdc2 = { 572 .name = "qhs_sdc2", 573 .id = QDU1000_SLAVE_SDCC_2, 574 .channels = 1, 575 .buswidth = 4, 576 .num_links = 0, 577}; 578 579static struct qcom_icc_node qhs_smbus_cfg = { 580 .name = "qhs_smbus_cfg", 581 .id = QDU1000_SLAVE_SMBUS_CFG, 582 .channels = 1, 583 .buswidth = 4, 584 .num_links = 0, 585}; 586 587static struct qcom_icc_node qhs_system_noc_cfg = { 588 .name = "qhs_system_noc_cfg", 589 .id = QDU1000_SLAVE_SNOC_CFG, 590 .channels = 1, 591 .buswidth = 4, 592 .num_links = 1, 593 .links = { QDU1000_MASTER_SNOC_CFG }, 594}; 595 596static struct qcom_icc_node qhs_tcsr = { 597 .name = "qhs_tcsr", 598 .id = QDU1000_SLAVE_TCSR, 599 .channels = 1, 600 .buswidth = 4, 601 .num_links = 0, 602}; 603 604static struct qcom_icc_node qhs_tlmm = { 605 .name = "qhs_tlmm", 606 .id = QDU1000_SLAVE_TLMM, 607 .channels = 1, 608 .buswidth = 4, 609 .num_links = 0, 610}; 611 612static struct qcom_icc_node qhs_tme_cfg = { 613 .name = "qhs_tme_cfg", 614 .id = QDU1000_SLAVE_TME_CFG, 615 .channels = 1, 616 .buswidth = 4, 617 .num_links = 0, 618}; 619 620static struct qcom_icc_node qhs_tsc_cfg = { 621 .name = "qhs_tsc_cfg", 622 .id = QDU1000_SLAVE_TSC_CFG, 623 .channels = 1, 624 .buswidth = 4, 625 .num_links = 0, 626}; 627 628static struct qcom_icc_node qhs_usb3 = { 629 .name = "qhs_usb3", 630 .id = QDU1000_SLAVE_USB3_0, 631 .channels = 1, 632 .buswidth = 4, 633 .num_links = 0, 634}; 635 636static struct qcom_icc_node qhs_vsense_ctrl_cfg = { 637 .name = "qhs_vsense_ctrl_cfg", 638 .id = QDU1000_SLAVE_VSENSE_CTRL_CFG, 639 .channels = 1, 640 .buswidth = 4, 641 .num_links = 0, 642}; 643 644static struct qcom_icc_node qns_a1noc_snoc = { 645 .name = "qns_a1noc_snoc", 646 .id = QDU1000_SLAVE_A1NOC_SNOC, 647 .channels = 1, 648 .buswidth = 8, 649 .num_links = 1, 650 .links = { QDU1000_MASTER_ANOC_SNOC }, 651}; 652 653static struct qcom_icc_node qns_anoc_snoc_gsi = { 654 .name = "qns_anoc_snoc_gsi", 655 .id = QDU1000_SLAVE_ANOC_SNOC_GSI, 656 .channels = 1, 657 .buswidth = 8, 658 .num_links = 1, 659 .links = { QDU1000_MASTER_ANOC_GSI }, 660}; 661 662static struct qcom_icc_node qns_ddrss_cfg = { 663 .name = "qns_ddrss_cfg", 664 .id = QDU1000_SLAVE_DDRSS_CFG, 665 .channels = 1, 666 .buswidth = 4, 667 .num_links = 0, 668}; 669 670static struct qcom_icc_node qns_ecpri_gemnoc = { 671 .name = "qns_ecpri_gemnoc", 672 .id = QDU1000_SLAVE_ECPRI_GEMNOC, 673 .channels = 2, 674 .buswidth = 32, 675 .num_links = 1, 676 .links = { QDU1000_MASTER_GEMNOC_ECPRI_DMA }, 677}; 678 679static struct qcom_icc_node qns_gemnoc_gc = { 680 .name = "qns_gemnoc_gc", 681 .id = QDU1000_SLAVE_SNOC_GEM_NOC_GC, 682 .channels = 1, 683 .buswidth = 8, 684 .num_links = 1, 685 .links = { QDU1000_MASTER_SNOC_GC_MEM_NOC }, 686}; 687 688static struct qcom_icc_node qns_gemnoc_sf = { 689 .name = "qns_gemnoc_sf", 690 .id = QDU1000_SLAVE_SNOC_GEM_NOC_SF, 691 .channels = 1, 692 .buswidth = 16, 693 .num_links = 1, 694 .links = { QDU1000_MASTER_SNOC_SF_MEM_NOC }, 695}; 696 697static struct qcom_icc_node qns_modem = { 698 .name = "qns_modem", 699 .id = QDU1000_SLAVE_MODEM_OFFLINE, 700 .channels = 1, 701 .buswidth = 32, 702 .num_links = 0, 703}; 704 705static struct qcom_icc_node qns_pcie_gemnoc = { 706 .name = "qns_pcie_gemnoc", 707 .id = QDU1000_SLAVE_ANOC_PCIE_GEM_NOC, 708 .channels = 1, 709 .buswidth = 64, 710 .num_links = 1, 711 .links = { QDU1000_MASTER_ANOC_PCIE_GEM_NOC }, 712}; 713 714static struct qcom_icc_node qxs_imem = { 715 .name = "qxs_imem", 716 .id = QDU1000_SLAVE_IMEM, 717 .channels = 1, 718 .buswidth = 8, 719 .num_links = 0, 720}; 721 722static struct qcom_icc_node qxs_pimem = { 723 .name = "qxs_pimem", 724 .id = QDU1000_SLAVE_PIMEM, 725 .channels = 1, 726 .buswidth = 8, 727 .num_links = 0, 728}; 729 730static struct qcom_icc_node srvc_system_noc = { 731 .name = "srvc_system_noc", 732 .id = QDU1000_SLAVE_SERVICE_SNOC, 733 .channels = 1, 734 .buswidth = 4, 735 .num_links = 0, 736}; 737 738static struct qcom_icc_node xs_ethernet_ss = { 739 .name = "xs_ethernet_ss", 740 .id = QDU1000_SLAVE_ETHERNET_SS, 741 .channels = 1, 742 .buswidth = 32, 743 .num_links = 0, 744}; 745 746static struct qcom_icc_node xs_pcie = { 747 .name = "xs_pcie", 748 .id = QDU1000_SLAVE_PCIE_0, 749 .channels = 1, 750 .buswidth = 64, 751 .num_links = 0, 752}; 753 754static struct qcom_icc_node xs_qdss_stm = { 755 .name = "xs_qdss_stm", 756 .id = QDU1000_SLAVE_QDSS_STM, 757 .channels = 1, 758 .buswidth = 4, 759 .num_links = 0, 760}; 761 762static struct qcom_icc_node xs_sys_tcu_cfg = { 763 .name = "xs_sys_tcu_cfg", 764 .id = QDU1000_SLAVE_TCU, 765 .channels = 1, 766 .buswidth = 8, 767 .num_links = 0, 768}; 769 770static struct qcom_icc_bcm bcm_acv = { 771 .name = "ACV", 772 .num_nodes = 1, 773 .nodes = { &ebi }, 774}; 775 776static struct qcom_icc_bcm bcm_ce0 = { 777 .name = "CE0", 778 .num_nodes = 1, 779 .nodes = { &qxm_crypto }, 780}; 781 782static struct qcom_icc_bcm bcm_cn0 = { 783 .name = "CN0", 784 .num_nodes = 44, 785 .nodes = { &qhm_qpic, &qhm_qspi, 786 &qnm_gemnoc_cnoc, &qnm_gemnoc_modem_slave, 787 &qnm_gemnoc_pcie, &xm_sdc, 788 &xm_usb3, &qhs_ahb2phy0_south, 789 &qhs_ahb2phy1_north, &qhs_ahb2phy2_east, 790 &qhs_aoss, &qhs_clk_ctl, 791 &qhs_cpr_cx, &qhs_cpr_mx, 792 &qhs_crypto_cfg, &qhs_ecpri_cfg, 793 &qhs_imem_cfg, &qhs_ipc_router, 794 &qhs_mss_cfg, &qhs_pcie_cfg, 795 &qhs_pdm, &qhs_pimem_cfg, 796 &qhs_prng, &qhs_qdss_cfg, 797 &qhs_qpic, &qhs_qspi, 798 &qhs_qup0, &qhs_qup1, 799 &qhs_sdc2, &qhs_smbus_cfg, 800 &qhs_system_noc_cfg, &qhs_tcsr, 801 &qhs_tlmm, &qhs_tme_cfg, 802 &qhs_tsc_cfg, &qhs_usb3, 803 &qhs_vsense_ctrl_cfg, &qns_ddrss_cfg, 804 &qns_modem, &qxs_imem, 805 &qxs_pimem, &xs_ethernet_ss, 806 &xs_qdss_stm, &xs_sys_tcu_cfg 807 }, 808}; 809 810static struct qcom_icc_bcm bcm_mc0 = { 811 .name = "MC0", 812 .num_nodes = 1, 813 .nodes = { &ebi }, 814}; 815 816static struct qcom_icc_bcm bcm_qup0 = { 817 .name = "QUP0", 818 .num_nodes = 2, 819 .nodes = { &qup0_core_slave, &qup1_core_slave }, 820}; 821 822static struct qcom_icc_bcm bcm_sh0 = { 823 .name = "SH0", 824 .num_nodes = 1, 825 .nodes = { &qns_llcc }, 826}; 827 828static struct qcom_icc_bcm bcm_sh1 = { 829 .name = "SH1", 830 .num_nodes = 11, 831 .nodes = { &alm_sys_tcu, &chm_apps, 832 &qnm_ecpri_dma, &qnm_fec_2_gemnoc, 833 &qnm_pcie, &qnm_snoc_gc, 834 &qnm_snoc_sf, &qxm_mdsp, 835 &qns_gem_noc_cnoc, &qns_modem_slave, 836 &qns_pcie 837 }, 838}; 839 840static struct qcom_icc_bcm bcm_sn0 = { 841 .name = "SN0", 842 .num_nodes = 1, 843 .nodes = { &qns_gemnoc_sf }, 844}; 845 846static struct qcom_icc_bcm bcm_sn1 = { 847 .name = "SN1", 848 .num_nodes = 6, 849 .nodes = { &qhm_gic, &qxm_pimem, 850 &xm_gic, &xm_qdss_etr0, 851 &xm_qdss_etr1, &qns_gemnoc_gc 852 }, 853}; 854 855static struct qcom_icc_bcm bcm_sn2 = { 856 .name = "SN2", 857 .num_nodes = 5, 858 .nodes = { &qnm_aggre_noc, &qxm_ecpri_gsi, 859 &xm_ecpri_dma, &qns_anoc_snoc_gsi, 860 &qns_ecpri_gemnoc 861 }, 862}; 863 864static struct qcom_icc_bcm bcm_sn7 = { 865 .name = "SN7", 866 .num_nodes = 2, 867 .nodes = { &qns_pcie_gemnoc, &xs_pcie }, 868}; 869 870static struct qcom_icc_bcm * const clk_virt_bcms[] = { 871 &bcm_qup0, 872}; 873 874static struct qcom_icc_node * const clk_virt_nodes[] = { 875 [MASTER_QUP_CORE_0] = &qup0_core_master, 876 [MASTER_QUP_CORE_1] = &qup1_core_master, 877 [SLAVE_QUP_CORE_0] = &qup0_core_slave, 878 [SLAVE_QUP_CORE_1] = &qup1_core_slave, 879}; 880 881static const struct qcom_icc_desc qdu1000_clk_virt = { 882 .nodes = clk_virt_nodes, 883 .num_nodes = ARRAY_SIZE(clk_virt_nodes), 884 .bcms = clk_virt_bcms, 885 .num_bcms = ARRAY_SIZE(clk_virt_bcms), 886}; 887 888static struct qcom_icc_bcm * const gem_noc_bcms[] = { 889 &bcm_sh0, 890 &bcm_sh1, 891}; 892 893static struct qcom_icc_node * const gem_noc_nodes[] = { 894 [MASTER_SYS_TCU] = &alm_sys_tcu, 895 [MASTER_APPSS_PROC] = &chm_apps, 896 [MASTER_GEMNOC_ECPRI_DMA] = &qnm_ecpri_dma, 897 [MASTER_FEC_2_GEMNOC] = &qnm_fec_2_gemnoc, 898 [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie, 899 [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 900 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 901 [MASTER_MSS_PROC] = &qxm_mdsp, 902 [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc, 903 [SLAVE_LLCC] = &qns_llcc, 904 [SLAVE_GEMNOC_MODEM_CNOC] = &qns_modem_slave, 905 [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie, 906}; 907 908static const struct qcom_icc_desc qdu1000_gem_noc = { 909 .nodes = gem_noc_nodes, 910 .num_nodes = ARRAY_SIZE(gem_noc_nodes), 911 .bcms = gem_noc_bcms, 912 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 913}; 914 915static struct qcom_icc_bcm * const mc_virt_bcms[] = { 916 &bcm_acv, 917 &bcm_mc0, 918}; 919 920static struct qcom_icc_node * const mc_virt_nodes[] = { 921 [MASTER_LLCC] = &llcc_mc, 922 [SLAVE_EBI1] = &ebi, 923}; 924 925static const struct qcom_icc_desc qdu1000_mc_virt = { 926 .nodes = mc_virt_nodes, 927 .num_nodes = ARRAY_SIZE(mc_virt_nodes), 928 .bcms = mc_virt_bcms, 929 .num_bcms = ARRAY_SIZE(mc_virt_bcms), 930}; 931 932static struct qcom_icc_bcm * const system_noc_bcms[] = { 933 &bcm_ce0, 934 &bcm_cn0, 935 &bcm_sn0, 936 &bcm_sn1, 937 &bcm_sn2, 938 &bcm_sn7, 939}; 940 941static struct qcom_icc_node * const system_noc_nodes[] = { 942 [MASTER_GIC_AHB] = &qhm_gic, 943 [MASTER_QDSS_BAM] = &qhm_qdss_bam, 944 [MASTER_QPIC] = &qhm_qpic, 945 [MASTER_QSPI_0] = &qhm_qspi, 946 [MASTER_QUP_0] = &qhm_qup0, 947 [MASTER_QUP_1] = &qhm_qup1, 948 [MASTER_SNOC_CFG] = &qhm_system_noc_cfg, 949 [MASTER_ANOC_SNOC] = &qnm_aggre_noc, 950 [MASTER_ANOC_GSI] = &qnm_aggre_noc_gsi, 951 [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc, 952 [MASTER_GEMNOC_MODEM_CNOC] = &qnm_gemnoc_modem_slave, 953 [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie, 954 [MASTER_CRYPTO] = &qxm_crypto, 955 [MASTER_ECPRI_GSI] = &qxm_ecpri_gsi, 956 [MASTER_PIMEM] = &qxm_pimem, 957 [MASTER_SNOC_ECPRI_DMA] = &xm_ecpri_dma, 958 [MASTER_GIC] = &xm_gic, 959 [MASTER_PCIE] = &xm_pcie, 960 [MASTER_QDSS_ETR] = &xm_qdss_etr0, 961 [MASTER_QDSS_ETR_1] = &xm_qdss_etr1, 962 [MASTER_SDCC_1] = &xm_sdc, 963 [MASTER_USB3] = &xm_usb3, 964 [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0_south, 965 [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1_north, 966 [SLAVE_AHB2PHY_EAST] = &qhs_ahb2phy2_east, 967 [SLAVE_AOSS] = &qhs_aoss, 968 [SLAVE_CLK_CTL] = &qhs_clk_ctl, 969 [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 970 [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx, 971 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto_cfg, 972 [SLAVE_ECPRI_CFG] = &qhs_ecpri_cfg, 973 [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 974 [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router, 975 [SLAVE_CNOC_MSS] = &qhs_mss_cfg, 976 [SLAVE_PCIE_CFG] = &qhs_pcie_cfg, 977 [SLAVE_PDM] = &qhs_pdm, 978 [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 979 [SLAVE_PRNG] = &qhs_prng, 980 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 981 [SLAVE_QPIC] = &qhs_qpic, 982 [SLAVE_QSPI_0] = &qhs_qspi, 983 [SLAVE_QUP_0] = &qhs_qup0, 984 [SLAVE_QUP_1] = &qhs_qup1, 985 [SLAVE_SDCC_2] = &qhs_sdc2, 986 [SLAVE_SMBUS_CFG] = &qhs_smbus_cfg, 987 [SLAVE_SNOC_CFG] = &qhs_system_noc_cfg, 988 [SLAVE_TCSR] = &qhs_tcsr, 989 [SLAVE_TLMM] = &qhs_tlmm, 990 [SLAVE_TME_CFG] = &qhs_tme_cfg, 991 [SLAVE_TSC_CFG] = &qhs_tsc_cfg, 992 [SLAVE_USB3_0] = &qhs_usb3, 993 [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 994 [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 995 [SLAVE_ANOC_SNOC_GSI] = &qns_anoc_snoc_gsi, 996 [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg, 997 [SLAVE_ECPRI_GEMNOC] = &qns_ecpri_gemnoc, 998 [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 999 [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 1000 [SLAVE_MODEM_OFFLINE] = &qns_modem, 1001 [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_gemnoc, 1002 [SLAVE_IMEM] = &qxs_imem, 1003 [SLAVE_PIMEM] = &qxs_pimem, 1004 [SLAVE_SERVICE_SNOC] = &srvc_system_noc, 1005 [SLAVE_ETHERNET_SS] = &xs_ethernet_ss, 1006 [SLAVE_PCIE_0] = &xs_pcie, 1007 [SLAVE_QDSS_STM] = &xs_qdss_stm, 1008 [SLAVE_TCU] = &xs_sys_tcu_cfg, 1009}; 1010 1011static const struct qcom_icc_desc qdu1000_system_noc = { 1012 .nodes = system_noc_nodes, 1013 .num_nodes = ARRAY_SIZE(system_noc_nodes), 1014 .bcms = system_noc_bcms, 1015 .num_bcms = ARRAY_SIZE(system_noc_bcms), 1016}; 1017 1018static int qnoc_probe(struct platform_device *pdev) 1019{ 1020 int ret; 1021 1022 ret = qcom_icc_rpmh_probe(pdev); 1023 if (ret) 1024 dev_err(&pdev->dev, "failed to register ICC provider\n"); 1025 1026 return ret; 1027} 1028 1029static const struct of_device_id qnoc_of_match[] = { 1030 { .compatible = "qcom,qdu1000-clk-virt", 1031 .data = &qdu1000_clk_virt 1032 }, 1033 { .compatible = "qcom,qdu1000-gem-noc", 1034 .data = &qdu1000_gem_noc 1035 }, 1036 { .compatible = "qcom,qdu1000-mc-virt", 1037 .data = &qdu1000_mc_virt 1038 }, 1039 { .compatible = "qcom,qdu1000-system-noc", 1040 .data = &qdu1000_system_noc 1041 }, 1042 { } 1043}; 1044MODULE_DEVICE_TABLE(of, qnoc_of_match); 1045 1046static struct platform_driver qnoc_driver = { 1047 .probe = qnoc_probe, 1048 .remove = qcom_icc_rpmh_remove, 1049 .driver = { 1050 .name = "qnoc-qdu1000", 1051 .of_match_table = qnoc_of_match, 1052 }, 1053}; 1054 1055static int __init qnoc_driver_init(void) 1056{ 1057 return platform_driver_register(&qnoc_driver); 1058} 1059core_initcall(qnoc_driver_init); 1060 1061static void __exit qnoc_driver_exit(void) 1062{ 1063 platform_driver_unregister(&qnoc_driver); 1064} 1065module_exit(qnoc_driver_exit); 1066 1067MODULE_DESCRIPTION("QDU1000 NoC driver"); 1068MODULE_LICENSE("GPL");