File Index
Files and directories
Sign in
FILE

sc8280xp.c

File preview with syntax highlighting.

linux-6.19.14/drivers/interconnect/qcom/sc8280xp.c C
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
   4 * Copyright (c) 2022, Linaro Ltd
   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,sc8280xp.h>
  14
  15#include "bcm-voter.h"
  16#include "icc-rpmh.h"
  17
  18static struct qcom_icc_node qhm_qspi;
  19static struct qcom_icc_node qhm_qup1;
  20static struct qcom_icc_node qhm_qup2;
  21static struct qcom_icc_node qnm_a1noc_cfg;
  22static struct qcom_icc_node qxm_ipa;
  23static struct qcom_icc_node xm_emac_1;
  24static struct qcom_icc_node xm_sdc4;
  25static struct qcom_icc_node xm_ufs_mem;
  26static struct qcom_icc_node xm_usb3_0;
  27static struct qcom_icc_node xm_usb3_1;
  28static struct qcom_icc_node xm_usb3_mp;
  29static struct qcom_icc_node xm_usb4_host0;
  30static struct qcom_icc_node xm_usb4_host1;
  31static struct qcom_icc_node qhm_qdss_bam;
  32static struct qcom_icc_node qhm_qup0;
  33static struct qcom_icc_node qnm_a2noc_cfg;
  34static struct qcom_icc_node qxm_crypto;
  35static struct qcom_icc_node qxm_sensorss_q6;
  36static struct qcom_icc_node qxm_sp;
  37static struct qcom_icc_node xm_emac_0;
  38static struct qcom_icc_node xm_pcie3_0;
  39static struct qcom_icc_node xm_pcie3_1;
  40static struct qcom_icc_node xm_pcie3_2a;
  41static struct qcom_icc_node xm_pcie3_2b;
  42static struct qcom_icc_node xm_pcie3_3a;
  43static struct qcom_icc_node xm_pcie3_3b;
  44static struct qcom_icc_node xm_pcie3_4;
  45static struct qcom_icc_node xm_qdss_etr;
  46static struct qcom_icc_node xm_sdc2;
  47static struct qcom_icc_node xm_ufs_card;
  48static struct qcom_icc_node qup0_core_master;
  49static struct qcom_icc_node qup1_core_master;
  50static struct qcom_icc_node qup2_core_master;
  51static struct qcom_icc_node qnm_gemnoc_cnoc;
  52static struct qcom_icc_node qnm_gemnoc_pcie;
  53static struct qcom_icc_node qnm_cnoc_dc_noc;
  54static struct qcom_icc_node alm_gpu_tcu;
  55static struct qcom_icc_node alm_pcie_tcu;
  56static struct qcom_icc_node alm_sys_tcu;
  57static struct qcom_icc_node chm_apps;
  58static struct qcom_icc_node qnm_cmpnoc0;
  59static struct qcom_icc_node qnm_cmpnoc1;
  60static struct qcom_icc_node qnm_gemnoc_cfg;
  61static struct qcom_icc_node qnm_gpu;
  62static struct qcom_icc_node qnm_mnoc_hf;
  63static struct qcom_icc_node qnm_mnoc_sf;
  64static struct qcom_icc_node qnm_pcie;
  65static struct qcom_icc_node qnm_snoc_gc;
  66static struct qcom_icc_node qnm_snoc_sf;
  67static struct qcom_icc_node qhm_config_noc;
  68static struct qcom_icc_node qxm_lpass_dsp;
  69static struct qcom_icc_node llcc_mc;
  70static struct qcom_icc_node qnm_camnoc_hf;
  71static struct qcom_icc_node qnm_mdp0_0;
  72static struct qcom_icc_node qnm_mdp0_1;
  73static struct qcom_icc_node qnm_mdp1_0;
  74static struct qcom_icc_node qnm_mdp1_1;
  75static struct qcom_icc_node qnm_mnoc_cfg;
  76static struct qcom_icc_node qnm_rot_0;
  77static struct qcom_icc_node qnm_rot_1;
  78static struct qcom_icc_node qnm_video0;
  79static struct qcom_icc_node qnm_video1;
  80static struct qcom_icc_node qnm_video_cvp;
  81static struct qcom_icc_node qxm_camnoc_icp;
  82static struct qcom_icc_node qxm_camnoc_sf;
  83static struct qcom_icc_node qhm_nsp_noc_config;
  84static struct qcom_icc_node qxm_nsp;
  85static struct qcom_icc_node qhm_nspb_noc_config;
  86static struct qcom_icc_node qxm_nspb;
  87static struct qcom_icc_node qnm_aggre1_noc;
  88static struct qcom_icc_node qnm_aggre2_noc;
  89static struct qcom_icc_node qnm_aggre_usb_noc;
  90static struct qcom_icc_node qnm_lpass_noc;
  91static struct qcom_icc_node qnm_snoc_cfg;
  92static struct qcom_icc_node qxm_pimem;
  93static struct qcom_icc_node xm_gic;
  94static struct qcom_icc_node qns_a1noc_snoc;
  95static struct qcom_icc_node qns_aggre_usb_snoc;
  96static struct qcom_icc_node srvc_aggre1_noc;
  97static struct qcom_icc_node qns_a2noc_snoc;
  98static struct qcom_icc_node qns_pcie_gem_noc;
  99static struct qcom_icc_node srvc_aggre2_noc;
 100static struct qcom_icc_node qup0_core_slave;
 101static struct qcom_icc_node qup1_core_slave;
 102static struct qcom_icc_node qup2_core_slave;
 103static struct qcom_icc_node qhs_ahb2phy0;
 104static struct qcom_icc_node qhs_ahb2phy1;
 105static struct qcom_icc_node qhs_ahb2phy2;
 106static struct qcom_icc_node qhs_aoss;
 107static struct qcom_icc_node qhs_apss;
 108static struct qcom_icc_node qhs_camera_cfg;
 109static struct qcom_icc_node qhs_clk_ctl;
 110static struct qcom_icc_node qhs_compute0_cfg;
 111static struct qcom_icc_node qhs_compute1_cfg;
 112static struct qcom_icc_node qhs_cpr_cx;
 113static struct qcom_icc_node qhs_cpr_mmcx;
 114static struct qcom_icc_node qhs_cpr_mx;
 115static struct qcom_icc_node qhs_cpr_nspcx;
 116static struct qcom_icc_node qhs_crypto0_cfg;
 117static struct qcom_icc_node qhs_cx_rdpm;
 118static struct qcom_icc_node qhs_dcc_cfg;
 119static struct qcom_icc_node qhs_display0_cfg;
 120static struct qcom_icc_node qhs_display1_cfg;
 121static struct qcom_icc_node qhs_emac0_cfg;
 122static struct qcom_icc_node qhs_emac1_cfg;
 123static struct qcom_icc_node qhs_gpuss_cfg;
 124static struct qcom_icc_node qhs_hwkm;
 125static struct qcom_icc_node qhs_imem_cfg;
 126static struct qcom_icc_node qhs_ipa;
 127static struct qcom_icc_node qhs_ipc_router;
 128static struct qcom_icc_node qhs_lpass_cfg;
 129static struct qcom_icc_node qhs_mx_rdpm;
 130static struct qcom_icc_node qhs_mxc_rdpm;
 131static struct qcom_icc_node qhs_pcie0_cfg;
 132static struct qcom_icc_node qhs_pcie1_cfg;
 133static struct qcom_icc_node qhs_pcie2a_cfg;
 134static struct qcom_icc_node qhs_pcie2b_cfg;
 135static struct qcom_icc_node qhs_pcie3a_cfg;
 136static struct qcom_icc_node qhs_pcie3b_cfg;
 137static struct qcom_icc_node qhs_pcie4_cfg;
 138static struct qcom_icc_node qhs_pcie_rsc_cfg;
 139static struct qcom_icc_node qhs_pdm;
 140static struct qcom_icc_node qhs_pimem_cfg;
 141static struct qcom_icc_node qhs_pka_wrapper_cfg;
 142static struct qcom_icc_node qhs_pmu_wrapper_cfg;
 143static struct qcom_icc_node qhs_qdss_cfg;
 144static struct qcom_icc_node qhs_qspi;
 145static struct qcom_icc_node qhs_qup0;
 146static struct qcom_icc_node qhs_qup1;
 147static struct qcom_icc_node qhs_qup2;
 148static struct qcom_icc_node qhs_sdc2;
 149static struct qcom_icc_node qhs_sdc4;
 150static struct qcom_icc_node qhs_security;
 151static struct qcom_icc_node qhs_smmuv3_cfg;
 152static struct qcom_icc_node qhs_smss_cfg;
 153static struct qcom_icc_node qhs_spss_cfg;
 154static struct qcom_icc_node qhs_tcsr;
 155static struct qcom_icc_node qhs_tlmm;
 156static struct qcom_icc_node qhs_ufs_card_cfg;
 157static struct qcom_icc_node qhs_ufs_mem_cfg;
 158static struct qcom_icc_node qhs_usb3_0;
 159static struct qcom_icc_node qhs_usb3_1;
 160static struct qcom_icc_node qhs_usb3_mp;
 161static struct qcom_icc_node qhs_usb4_host_0;
 162static struct qcom_icc_node qhs_usb4_host_1;
 163static struct qcom_icc_node qhs_venus_cfg;
 164static struct qcom_icc_node qhs_vsense_ctrl_cfg;
 165static struct qcom_icc_node qhs_vsense_ctrl_r_cfg;
 166static struct qcom_icc_node qns_a1_noc_cfg;
 167static struct qcom_icc_node qns_a2_noc_cfg;
 168static struct qcom_icc_node qns_anoc_pcie_bridge_cfg;
 169static struct qcom_icc_node qns_ddrss_cfg;
 170static struct qcom_icc_node qns_mnoc_cfg;
 171static struct qcom_icc_node qns_snoc_cfg;
 172static struct qcom_icc_node qns_snoc_sf_bridge_cfg;
 173static struct qcom_icc_node qxs_imem;
 174static struct qcom_icc_node qxs_pimem;
 175static struct qcom_icc_node srvc_cnoc;
 176static struct qcom_icc_node xs_pcie_0;
 177static struct qcom_icc_node xs_pcie_1;
 178static struct qcom_icc_node xs_pcie_2a;
 179static struct qcom_icc_node xs_pcie_2b;
 180static struct qcom_icc_node xs_pcie_3a;
 181static struct qcom_icc_node xs_pcie_3b;
 182static struct qcom_icc_node xs_pcie_4;
 183static struct qcom_icc_node xs_qdss_stm;
 184static struct qcom_icc_node xs_smss;
 185static struct qcom_icc_node xs_sys_tcu_cfg;
 186static struct qcom_icc_node qhs_llcc;
 187static struct qcom_icc_node qns_gemnoc;
 188static struct qcom_icc_node qns_gem_noc_cnoc;
 189static struct qcom_icc_node qns_llcc;
 190static struct qcom_icc_node qns_pcie;
 191static struct qcom_icc_node srvc_even_gemnoc;
 192static struct qcom_icc_node srvc_odd_gemnoc;
 193static struct qcom_icc_node srvc_sys_gemnoc;
 194static struct qcom_icc_node qhs_lpass_core;
 195static struct qcom_icc_node qhs_lpass_lpi;
 196static struct qcom_icc_node qhs_lpass_mpu;
 197static struct qcom_icc_node qhs_lpass_top;
 198static struct qcom_icc_node qns_sysnoc;
 199static struct qcom_icc_node srvc_niu_aml_noc;
 200static struct qcom_icc_node srvc_niu_lpass_agnoc;
 201static struct qcom_icc_node ebi;
 202static struct qcom_icc_node qns_mem_noc_hf;
 203static struct qcom_icc_node qns_mem_noc_sf;
 204static struct qcom_icc_node srvc_mnoc;
 205static struct qcom_icc_node qns_nsp_gemnoc;
 206static struct qcom_icc_node qxs_nsp_xfr;
 207static struct qcom_icc_node service_nsp_noc;
 208static struct qcom_icc_node qns_nspb_gemnoc;
 209static struct qcom_icc_node qxs_nspb_xfr;
 210static struct qcom_icc_node service_nspb_noc;
 211static struct qcom_icc_node qns_gemnoc_gc;
 212static struct qcom_icc_node qns_gemnoc_sf;
 213static struct qcom_icc_node srvc_snoc;
 214
 215static struct qcom_icc_node qhm_qspi = {
 216	.name = "qhm_qspi",
 217	.channels = 1,
 218	.buswidth = 4,
 219	.num_links = 1,
 220	.link_nodes = { &qns_a1noc_snoc },
 221};
 222
 223static struct qcom_icc_node qhm_qup1 = {
 224	.name = "qhm_qup1",
 225	.channels = 1,
 226	.buswidth = 4,
 227	.num_links = 1,
 228	.link_nodes = { &qns_a1noc_snoc },
 229};
 230
 231static struct qcom_icc_node qhm_qup2 = {
 232	.name = "qhm_qup2",
 233	.channels = 1,
 234	.buswidth = 4,
 235	.num_links = 1,
 236	.link_nodes = { &qns_a1noc_snoc },
 237};
 238
 239static struct qcom_icc_node qnm_a1noc_cfg = {
 240	.name = "qnm_a1noc_cfg",
 241	.channels = 1,
 242	.buswidth = 4,
 243	.num_links = 1,
 244	.link_nodes = { &srvc_aggre1_noc },
 245};
 246
 247static struct qcom_icc_node qxm_ipa = {
 248	.name = "qxm_ipa",
 249	.channels = 1,
 250	.buswidth = 8,
 251	.num_links = 1,
 252	.link_nodes = { &qns_a1noc_snoc },
 253};
 254
 255static struct qcom_icc_node xm_emac_1 = {
 256	.name = "xm_emac_1",
 257	.channels = 1,
 258	.buswidth = 8,
 259	.num_links = 1,
 260	.link_nodes = { &qns_a1noc_snoc },
 261};
 262
 263static struct qcom_icc_node xm_sdc4 = {
 264	.name = "xm_sdc4",
 265	.channels = 1,
 266	.buswidth = 8,
 267	.num_links = 1,
 268	.link_nodes = { &qns_a1noc_snoc },
 269};
 270
 271static struct qcom_icc_node xm_ufs_mem = {
 272	.name = "xm_ufs_mem",
 273	.channels = 1,
 274	.buswidth = 8,
 275	.num_links = 1,
 276	.link_nodes = { &qns_a1noc_snoc },
 277};
 278
 279static struct qcom_icc_node xm_usb3_0 = {
 280	.name = "xm_usb3_0",
 281	.channels = 1,
 282	.buswidth = 8,
 283	.num_links = 1,
 284	.link_nodes = { &qns_aggre_usb_snoc },
 285};
 286
 287static struct qcom_icc_node xm_usb3_1 = {
 288	.name = "xm_usb3_1",
 289	.channels = 1,
 290	.buswidth = 8,
 291	.num_links = 1,
 292	.link_nodes = { &qns_aggre_usb_snoc },
 293};
 294
 295static struct qcom_icc_node xm_usb3_mp = {
 296	.name = "xm_usb3_mp",
 297	.channels = 1,
 298	.buswidth = 16,
 299	.num_links = 1,
 300	.link_nodes = { &qns_aggre_usb_snoc },
 301};
 302
 303static struct qcom_icc_node xm_usb4_host0 = {
 304	.name = "xm_usb4_host0",
 305	.channels = 1,
 306	.buswidth = 16,
 307	.num_links = 1,
 308	.link_nodes = { &qns_aggre_usb_snoc },
 309};
 310
 311static struct qcom_icc_node xm_usb4_host1 = {
 312	.name = "xm_usb4_host1",
 313	.channels = 1,
 314	.buswidth = 16,
 315	.num_links = 1,
 316	.link_nodes = { &qns_aggre_usb_snoc },
 317};
 318
 319static struct qcom_icc_node qhm_qdss_bam = {
 320	.name = "qhm_qdss_bam",
 321	.channels = 1,
 322	.buswidth = 4,
 323	.num_links = 1,
 324	.link_nodes = { &qns_a2noc_snoc },
 325};
 326
 327static struct qcom_icc_node qhm_qup0 = {
 328	.name = "qhm_qup0",
 329	.channels = 1,
 330	.buswidth = 4,
 331	.num_links = 1,
 332	.link_nodes = { &qns_a2noc_snoc },
 333};
 334
 335static struct qcom_icc_node qnm_a2noc_cfg = {
 336	.name = "qnm_a2noc_cfg",
 337	.channels = 1,
 338	.buswidth = 4,
 339	.num_links = 1,
 340	.link_nodes = { &srvc_aggre2_noc },
 341};
 342
 343static struct qcom_icc_node qxm_crypto = {
 344	.name = "qxm_crypto",
 345	.channels = 1,
 346	.buswidth = 8,
 347	.num_links = 1,
 348	.link_nodes = { &qns_a2noc_snoc },
 349};
 350
 351static struct qcom_icc_node qxm_sensorss_q6 = {
 352	.name = "qxm_sensorss_q6",
 353	.channels = 1,
 354	.buswidth = 8,
 355	.num_links = 1,
 356	.link_nodes = { &qns_a2noc_snoc },
 357};
 358
 359static struct qcom_icc_node qxm_sp = {
 360	.name = "qxm_sp",
 361	.channels = 1,
 362	.buswidth = 8,
 363	.num_links = 1,
 364	.link_nodes = { &qns_a2noc_snoc },
 365};
 366
 367static struct qcom_icc_node xm_emac_0 = {
 368	.name = "xm_emac_0",
 369	.channels = 1,
 370	.buswidth = 8,
 371	.num_links = 1,
 372	.link_nodes = { &qns_a2noc_snoc },
 373};
 374
 375static struct qcom_icc_node xm_pcie3_0 = {
 376	.name = "xm_pcie3_0",
 377	.channels = 1,
 378	.buswidth = 16,
 379	.num_links = 1,
 380	.link_nodes = { &qns_pcie_gem_noc },
 381};
 382
 383static struct qcom_icc_node xm_pcie3_1 = {
 384	.name = "xm_pcie3_1",
 385	.channels = 1,
 386	.buswidth = 16,
 387	.num_links = 1,
 388	.link_nodes = { &qns_pcie_gem_noc },
 389};
 390
 391static struct qcom_icc_node xm_pcie3_2a = {
 392	.name = "xm_pcie3_2a",
 393	.channels = 1,
 394	.buswidth = 16,
 395	.num_links = 1,
 396	.link_nodes = { &qns_pcie_gem_noc },
 397};
 398
 399static struct qcom_icc_node xm_pcie3_2b = {
 400	.name = "xm_pcie3_2b",
 401	.channels = 1,
 402	.buswidth = 8,
 403	.num_links = 1,
 404	.link_nodes = { &qns_pcie_gem_noc },
 405};
 406
 407static struct qcom_icc_node xm_pcie3_3a = {
 408	.name = "xm_pcie3_3a",
 409	.channels = 1,
 410	.buswidth = 16,
 411	.num_links = 1,
 412	.link_nodes = { &qns_pcie_gem_noc },
 413};
 414
 415static struct qcom_icc_node xm_pcie3_3b = {
 416	.name = "xm_pcie3_3b",
 417	.channels = 1,
 418	.buswidth = 8,
 419	.num_links = 1,
 420	.link_nodes = { &qns_pcie_gem_noc },
 421};
 422
 423static struct qcom_icc_node xm_pcie3_4 = {
 424	.name = "xm_pcie3_4",
 425	.channels = 1,
 426	.buswidth = 8,
 427	.num_links = 1,
 428	.link_nodes = { &qns_pcie_gem_noc },
 429};
 430
 431static struct qcom_icc_node xm_qdss_etr = {
 432	.name = "xm_qdss_etr",
 433	.channels = 1,
 434	.buswidth = 8,
 435	.num_links = 1,
 436	.link_nodes = { &qns_a2noc_snoc },
 437};
 438
 439static struct qcom_icc_node xm_sdc2 = {
 440	.name = "xm_sdc2",
 441	.channels = 1,
 442	.buswidth = 8,
 443	.num_links = 1,
 444	.link_nodes = { &qns_a2noc_snoc },
 445};
 446
 447static struct qcom_icc_node xm_ufs_card = {
 448	.name = "xm_ufs_card",
 449	.channels = 1,
 450	.buswidth = 8,
 451	.num_links = 1,
 452	.link_nodes = { &qns_a2noc_snoc },
 453};
 454
 455static struct qcom_icc_node qup0_core_master = {
 456	.name = "qup0_core_master",
 457	.channels = 1,
 458	.buswidth = 4,
 459	.num_links = 1,
 460	.link_nodes = { &qup0_core_slave },
 461};
 462
 463static struct qcom_icc_node qup1_core_master = {
 464	.name = "qup1_core_master",
 465	.channels = 1,
 466	.buswidth = 4,
 467	.num_links = 1,
 468	.link_nodes = { &qup1_core_slave },
 469};
 470
 471static struct qcom_icc_node qup2_core_master = {
 472	.name = "qup2_core_master",
 473	.channels = 1,
 474	.buswidth = 4,
 475	.num_links = 1,
 476	.link_nodes = { &qup2_core_slave },
 477};
 478
 479static struct qcom_icc_node qnm_gemnoc_cnoc = {
 480	.name = "qnm_gemnoc_cnoc",
 481	.channels = 1,
 482	.buswidth = 16,
 483	.num_links = 76,
 484	.link_nodes = { &qhs_ahb2phy0,
 485			&qhs_ahb2phy1,
 486			&qhs_ahb2phy2,
 487			&qhs_aoss,
 488			&qhs_apss,
 489			&qhs_camera_cfg,
 490			&qhs_clk_ctl,
 491			&qhs_compute0_cfg,
 492			&qhs_compute1_cfg,
 493			&qhs_cpr_cx,
 494			&qhs_cpr_mmcx,
 495			&qhs_cpr_mx,
 496			&qhs_cpr_nspcx,
 497			&qhs_crypto0_cfg,
 498			&qhs_cx_rdpm,
 499			&qhs_dcc_cfg,
 500			&qhs_display0_cfg,
 501			&qhs_display1_cfg,
 502			&qhs_emac0_cfg,
 503			&qhs_emac1_cfg,
 504			&qhs_gpuss_cfg,
 505			&qhs_hwkm,
 506			&qhs_imem_cfg,
 507			&qhs_ipa,
 508			&qhs_ipc_router,
 509			&qhs_lpass_cfg,
 510			&qhs_mx_rdpm,
 511			&qhs_mxc_rdpm,
 512			&qhs_pcie0_cfg,
 513			&qhs_pcie1_cfg,
 514			&qhs_pcie2a_cfg,
 515			&qhs_pcie2b_cfg,
 516			&qhs_pcie3a_cfg,
 517			&qhs_pcie3b_cfg,
 518			&qhs_pcie4_cfg,
 519			&qhs_pcie_rsc_cfg,
 520			&qhs_pdm,
 521			&qhs_pimem_cfg,
 522			&qhs_pka_wrapper_cfg,
 523			&qhs_pmu_wrapper_cfg,
 524			&qhs_qdss_cfg,
 525			&qhs_qspi,
 526			&qhs_qup0,
 527			&qhs_qup1,
 528			&qhs_qup2,
 529			&qhs_sdc2,
 530			&qhs_sdc4,
 531			&qhs_security,
 532			&qhs_smmuv3_cfg,
 533			&qhs_smss_cfg,
 534			&qhs_spss_cfg,
 535			&qhs_tcsr,
 536			&qhs_tlmm,
 537			&qhs_ufs_card_cfg,
 538			&qhs_ufs_mem_cfg,
 539			&qhs_usb3_0,
 540			&qhs_usb3_1,
 541			&qhs_usb3_mp,
 542			&qhs_usb4_host_0,
 543			&qhs_usb4_host_1,
 544			&qhs_venus_cfg,
 545			&qhs_vsense_ctrl_cfg,
 546			&qhs_vsense_ctrl_r_cfg,
 547			&qns_a1_noc_cfg,
 548			&qns_a2_noc_cfg,
 549			&qns_anoc_pcie_bridge_cfg,
 550			&qns_ddrss_cfg,
 551			&qns_mnoc_cfg,
 552			&qns_snoc_cfg,
 553			&qns_snoc_sf_bridge_cfg,
 554			&qxs_imem,
 555			&qxs_pimem,
 556			&srvc_cnoc,
 557			&xs_qdss_stm,
 558			&xs_smss,
 559			&xs_sys_tcu_cfg,
 560			NULL },
 561};
 562
 563static struct qcom_icc_node qnm_gemnoc_pcie = {
 564	.name = "qnm_gemnoc_pcie",
 565	.channels = 1,
 566	.buswidth = 16,
 567	.num_links = 7,
 568	.link_nodes = { &xs_pcie_0,
 569			&xs_pcie_1,
 570			&xs_pcie_2a,
 571			&xs_pcie_2b,
 572			&xs_pcie_3a,
 573			&xs_pcie_3b,
 574			&xs_pcie_4 },
 575};
 576
 577static struct qcom_icc_node qnm_cnoc_dc_noc = {
 578	.name = "qnm_cnoc_dc_noc",
 579	.channels = 1,
 580	.buswidth = 4,
 581	.num_links = 2,
 582	.link_nodes = { &qhs_llcc,
 583			&qns_gemnoc },
 584};
 585
 586static struct qcom_icc_node alm_gpu_tcu = {
 587	.name = "alm_gpu_tcu",
 588	.channels = 1,
 589	.buswidth = 8,
 590	.num_links = 2,
 591	.link_nodes = { &qns_gem_noc_cnoc,
 592			&qns_llcc },
 593};
 594
 595static struct qcom_icc_node alm_pcie_tcu = {
 596	.name = "alm_pcie_tcu",
 597	.channels = 1,
 598	.buswidth = 8,
 599	.num_links = 2,
 600	.link_nodes = { &qns_gem_noc_cnoc,
 601			&qns_llcc },
 602};
 603
 604static struct qcom_icc_node alm_sys_tcu = {
 605	.name = "alm_sys_tcu",
 606	.channels = 1,
 607	.buswidth = 8,
 608	.num_links = 2,
 609	.link_nodes = { &qns_gem_noc_cnoc,
 610			&qns_llcc },
 611};
 612
 613static struct qcom_icc_node chm_apps = {
 614	.name = "chm_apps",
 615	.channels = 2,
 616	.buswidth = 32,
 617	.num_links = 3,
 618	.link_nodes = { &qns_gem_noc_cnoc,
 619			&qns_llcc,
 620			&qns_pcie },
 621};
 622
 623static struct qcom_icc_node qnm_cmpnoc0 = {
 624	.name = "qnm_cmpnoc0",
 625	.channels = 2,
 626	.buswidth = 32,
 627	.num_links = 2,
 628	.link_nodes = { &qns_gem_noc_cnoc,
 629			&qns_llcc },
 630};
 631
 632static struct qcom_icc_node qnm_cmpnoc1 = {
 633	.name = "qnm_cmpnoc1",
 634	.channels = 2,
 635	.buswidth = 32,
 636	.num_links = 2,
 637	.link_nodes = { &qns_gem_noc_cnoc,
 638			&qns_llcc },
 639};
 640
 641static struct qcom_icc_node qnm_gemnoc_cfg = {
 642	.name = "qnm_gemnoc_cfg",
 643	.channels = 1,
 644	.buswidth = 4,
 645	.num_links = 3,
 646	.link_nodes = { &srvc_even_gemnoc,
 647			&srvc_odd_gemnoc,
 648			&srvc_sys_gemnoc },
 649};
 650
 651static struct qcom_icc_node qnm_gpu = {
 652	.name = "qnm_gpu",
 653	.channels = 4,
 654	.buswidth = 32,
 655	.num_links = 2,
 656	.link_nodes = { &qns_gem_noc_cnoc,
 657			&qns_llcc },
 658};
 659
 660static struct qcom_icc_node qnm_mnoc_hf = {
 661	.name = "qnm_mnoc_hf",
 662	.channels = 2,
 663	.buswidth = 32,
 664	.num_links = 2,
 665	.link_nodes = { &qns_llcc,
 666			&qns_pcie },
 667};
 668
 669static struct qcom_icc_node qnm_mnoc_sf = {
 670	.name = "qnm_mnoc_sf",
 671	.channels = 2,
 672	.buswidth = 32,
 673	.num_links = 2,
 674	.link_nodes = { &qns_gem_noc_cnoc,
 675			&qns_llcc },
 676};
 677
 678static struct qcom_icc_node qnm_pcie = {
 679	.name = "qnm_pcie",
 680	.channels = 1,
 681	.buswidth = 32,
 682	.num_links = 2,
 683	.link_nodes = { &qns_gem_noc_cnoc,
 684			&qns_llcc },
 685};
 686
 687static struct qcom_icc_node qnm_snoc_gc = {
 688	.name = "qnm_snoc_gc",
 689	.channels = 1,
 690	.buswidth = 8,
 691	.num_links = 1,
 692	.link_nodes = { &qns_llcc },
 693};
 694
 695static struct qcom_icc_node qnm_snoc_sf = {
 696	.name = "qnm_snoc_sf",
 697	.channels = 1,
 698	.buswidth = 16,
 699	.num_links = 3,
 700	.link_nodes = { &qns_gem_noc_cnoc,
 701			&qns_llcc,
 702			&qns_pcie },
 703};
 704
 705static struct qcom_icc_node qhm_config_noc = {
 706	.name = "qhm_config_noc",
 707	.channels = 1,
 708	.buswidth = 4,
 709	.num_links = 6,
 710	.link_nodes = { &qhs_lpass_core,
 711			&qhs_lpass_lpi,
 712			&qhs_lpass_mpu,
 713			&qhs_lpass_top,
 714			&srvc_niu_aml_noc,
 715			&srvc_niu_lpass_agnoc },
 716};
 717
 718static struct qcom_icc_node qxm_lpass_dsp = {
 719	.name = "qxm_lpass_dsp",
 720	.channels = 1,
 721	.buswidth = 8,
 722	.num_links = 4,
 723	.link_nodes = { &qhs_lpass_top,
 724			&qns_sysnoc,
 725			&srvc_niu_aml_noc,
 726			&srvc_niu_lpass_agnoc },
 727};
 728
 729static struct qcom_icc_node llcc_mc = {
 730	.name = "llcc_mc",
 731	.channels = 8,
 732	.buswidth = 4,
 733	.num_links = 1,
 734	.link_nodes = { &ebi },
 735};
 736
 737static struct qcom_icc_node qnm_camnoc_hf = {
 738	.name = "qnm_camnoc_hf",
 739	.channels = 2,
 740	.buswidth = 32,
 741	.num_links = 1,
 742	.link_nodes = { &qns_mem_noc_hf },
 743};
 744
 745static struct qcom_icc_node qnm_mdp0_0 = {
 746	.name = "qnm_mdp0_0",
 747	.channels = 1,
 748	.buswidth = 32,
 749	.num_links = 1,
 750	.link_nodes = { &qns_mem_noc_hf },
 751};
 752
 753static struct qcom_icc_node qnm_mdp0_1 = {
 754	.name = "qnm_mdp0_1",
 755	.channels = 1,
 756	.buswidth = 32,
 757	.num_links = 1,
 758	.link_nodes = { &qns_mem_noc_hf },
 759};
 760
 761static struct qcom_icc_node qnm_mdp1_0 = {
 762	.name = "qnm_mdp1_0",
 763	.channels = 1,
 764	.buswidth = 32,
 765	.num_links = 1,
 766	.link_nodes = { &qns_mem_noc_hf },
 767};
 768
 769static struct qcom_icc_node qnm_mdp1_1 = {
 770	.name = "qnm_mdp1_1",
 771	.channels = 1,
 772	.buswidth = 32,
 773	.num_links = 1,
 774	.link_nodes = { &qns_mem_noc_hf },
 775};
 776
 777static struct qcom_icc_node qnm_mnoc_cfg = {
 778	.name = "qnm_mnoc_cfg",
 779	.channels = 1,
 780	.buswidth = 4,
 781	.num_links = 1,
 782	.link_nodes = { &srvc_mnoc },
 783};
 784
 785static struct qcom_icc_node qnm_rot_0 = {
 786	.name = "qnm_rot_0",
 787	.channels = 1,
 788	.buswidth = 32,
 789	.num_links = 1,
 790	.link_nodes = { &qns_mem_noc_sf },
 791};
 792
 793static struct qcom_icc_node qnm_rot_1 = {
 794	.name = "qnm_rot_1",
 795	.channels = 1,
 796	.buswidth = 32,
 797	.num_links = 1,
 798	.link_nodes = { &qns_mem_noc_sf },
 799};
 800
 801static struct qcom_icc_node qnm_video0 = {
 802	.name = "qnm_video0",
 803	.channels = 1,
 804	.buswidth = 32,
 805	.num_links = 1,
 806	.link_nodes = { &qns_mem_noc_sf },
 807};
 808
 809static struct qcom_icc_node qnm_video1 = {
 810	.name = "qnm_video1",
 811	.channels = 1,
 812	.buswidth = 32,
 813	.num_links = 1,
 814	.link_nodes = { &qns_mem_noc_sf },
 815};
 816
 817static struct qcom_icc_node qnm_video_cvp = {
 818	.name = "qnm_video_cvp",
 819	.channels = 1,
 820	.buswidth = 32,
 821	.num_links = 1,
 822	.link_nodes = { &qns_mem_noc_sf },
 823};
 824
 825static struct qcom_icc_node qxm_camnoc_icp = {
 826	.name = "qxm_camnoc_icp",
 827	.channels = 1,
 828	.buswidth = 8,
 829	.num_links = 1,
 830	.link_nodes = { &qns_mem_noc_sf },
 831};
 832
 833static struct qcom_icc_node qxm_camnoc_sf = {
 834	.name = "qxm_camnoc_sf",
 835	.channels = 1,
 836	.buswidth = 32,
 837	.num_links = 1,
 838	.link_nodes = { &qns_mem_noc_sf },
 839};
 840
 841static struct qcom_icc_node qhm_nsp_noc_config = {
 842	.name = "qhm_nsp_noc_config",
 843	.channels = 1,
 844	.buswidth = 4,
 845	.num_links = 1,
 846	.link_nodes = { &service_nsp_noc },
 847};
 848
 849static struct qcom_icc_node qxm_nsp = {
 850	.name = "qxm_nsp",
 851	.channels = 2,
 852	.buswidth = 32,
 853	.num_links = 2,
 854	.link_nodes = { &qns_nsp_gemnoc,
 855			&qxs_nsp_xfr },
 856};
 857
 858static struct qcom_icc_node qhm_nspb_noc_config = {
 859	.name = "qhm_nspb_noc_config",
 860	.channels = 1,
 861	.buswidth = 4,
 862	.num_links = 1,
 863	.link_nodes = { &service_nspb_noc },
 864};
 865
 866static struct qcom_icc_node qxm_nspb = {
 867	.name = "qxm_nspb",
 868	.channels = 2,
 869	.buswidth = 32,
 870	.num_links = 2,
 871	.link_nodes = { &qns_nspb_gemnoc,
 872			&qxs_nspb_xfr },
 873};
 874
 875static struct qcom_icc_node qnm_aggre1_noc = {
 876	.name = "qnm_aggre1_noc",
 877	.channels = 1,
 878	.buswidth = 16,
 879	.num_links = 1,
 880	.link_nodes = { &qns_gemnoc_sf },
 881};
 882
 883static struct qcom_icc_node qnm_aggre2_noc = {
 884	.name = "qnm_aggre2_noc",
 885	.channels = 1,
 886	.buswidth = 16,
 887	.num_links = 1,
 888	.link_nodes = { &qns_gemnoc_sf },
 889};
 890
 891static struct qcom_icc_node qnm_aggre_usb_noc = {
 892	.name = "qnm_aggre_usb_noc",
 893	.channels = 1,
 894	.buswidth = 16,
 895	.num_links = 1,
 896	.link_nodes = { &qns_gemnoc_sf },
 897};
 898
 899static struct qcom_icc_node qnm_lpass_noc = {
 900	.name = "qnm_lpass_noc",
 901	.channels = 1,
 902	.buswidth = 16,
 903	.num_links = 1,
 904	.link_nodes = { &qns_gemnoc_sf },
 905};
 906
 907static struct qcom_icc_node qnm_snoc_cfg = {
 908	.name = "qnm_snoc_cfg",
 909	.channels = 1,
 910	.buswidth = 4,
 911	.num_links = 1,
 912	.link_nodes = { &srvc_snoc },
 913};
 914
 915static struct qcom_icc_node qxm_pimem = {
 916	.name = "qxm_pimem",
 917	.channels = 1,
 918	.buswidth = 8,
 919	.num_links = 1,
 920	.link_nodes = { &qns_gemnoc_gc },
 921};
 922
 923static struct qcom_icc_node xm_gic = {
 924	.name = "xm_gic",
 925	.channels = 1,
 926	.buswidth = 8,
 927	.num_links = 1,
 928	.link_nodes = { &qns_gemnoc_gc },
 929};
 930
 931static struct qcom_icc_node qns_a1noc_snoc = {
 932	.name = "qns_a1noc_snoc",
 933	.channels = 1,
 934	.buswidth = 16,
 935	.num_links = 1,
 936	.link_nodes = { &qnm_aggre1_noc },
 937};
 938
 939static struct qcom_icc_node qns_aggre_usb_snoc = {
 940	.name = "qns_aggre_usb_snoc",
 941	.channels = 1,
 942	.buswidth = 16,
 943	.num_links = 1,
 944	.link_nodes = { &qnm_aggre_usb_noc },
 945};
 946
 947static struct qcom_icc_node srvc_aggre1_noc = {
 948	.name = "srvc_aggre1_noc",
 949	.channels = 1,
 950	.buswidth = 4,
 951};
 952
 953static struct qcom_icc_node qns_a2noc_snoc = {
 954	.name = "qns_a2noc_snoc",
 955	.channels = 1,
 956	.buswidth = 16,
 957	.num_links = 1,
 958	.link_nodes = { &qnm_aggre2_noc },
 959};
 960
 961static struct qcom_icc_node qns_pcie_gem_noc = {
 962	.name = "qns_pcie_gem_noc",
 963	.channels = 1,
 964	.buswidth = 32,
 965	.num_links = 1,
 966	.link_nodes = { &qnm_pcie },
 967};
 968
 969static struct qcom_icc_node srvc_aggre2_noc = {
 970	.name = "srvc_aggre2_noc",
 971	.channels = 1,
 972	.buswidth = 4,
 973};
 974
 975static struct qcom_icc_node qup0_core_slave = {
 976	.name = "qup0_core_slave",
 977	.channels = 1,
 978	.buswidth = 4,
 979};
 980
 981static struct qcom_icc_node qup1_core_slave = {
 982	.name = "qup1_core_slave",
 983	.channels = 1,
 984	.buswidth = 4,
 985};
 986
 987static struct qcom_icc_node qup2_core_slave = {
 988	.name = "qup2_core_slave",
 989	.channels = 1,
 990	.buswidth = 4,
 991};
 992
 993static struct qcom_icc_node qhs_ahb2phy0 = {
 994	.name = "qhs_ahb2phy0",
 995	.channels = 1,
 996	.buswidth = 4,
 997};
 998
 999static struct qcom_icc_node qhs_ahb2phy1 = {
1000	.name = "qhs_ahb2phy1",
1001	.channels = 1,
1002	.buswidth = 4,
1003};
1004
1005static struct qcom_icc_node qhs_ahb2phy2 = {
1006	.name = "qhs_ahb2phy2",
1007	.channels = 1,
1008	.buswidth = 4,
1009};
1010
1011static struct qcom_icc_node qhs_aoss = {
1012	.name = "qhs_aoss",
1013	.channels = 1,
1014	.buswidth = 4,
1015};
1016
1017static struct qcom_icc_node qhs_apss = {
1018	.name = "qhs_apss",
1019	.channels = 1,
1020	.buswidth = 8,
1021};
1022
1023static struct qcom_icc_node qhs_camera_cfg = {
1024	.name = "qhs_camera_cfg",
1025	.channels = 1,
1026	.buswidth = 4,
1027};
1028
1029static struct qcom_icc_node qhs_clk_ctl = {
1030	.name = "qhs_clk_ctl",
1031	.channels = 1,
1032	.buswidth = 4,
1033};
1034
1035static struct qcom_icc_node qhs_compute0_cfg = {
1036	.name = "qhs_compute0_cfg",
1037	.channels = 1,
1038	.buswidth = 4,
1039	.num_links = 1,
1040	.link_nodes = { &qhm_nsp_noc_config },
1041};
1042
1043static struct qcom_icc_node qhs_compute1_cfg = {
1044	.name = "qhs_compute1_cfg",
1045	.channels = 1,
1046	.buswidth = 4,
1047	.num_links = 1,
1048	.link_nodes = { &qhm_nspb_noc_config },
1049};
1050
1051static struct qcom_icc_node qhs_cpr_cx = {
1052	.name = "qhs_cpr_cx",
1053	.channels = 1,
1054	.buswidth = 4,
1055};
1056
1057static struct qcom_icc_node qhs_cpr_mmcx = {
1058	.name = "qhs_cpr_mmcx",
1059	.channels = 1,
1060	.buswidth = 4,
1061};
1062
1063static struct qcom_icc_node qhs_cpr_mx = {
1064	.name = "qhs_cpr_mx",
1065	.channels = 1,
1066	.buswidth = 4,
1067};
1068
1069static struct qcom_icc_node qhs_cpr_nspcx = {
1070	.name = "qhs_cpr_nspcx",
1071	.channels = 1,
1072	.buswidth = 4,
1073};
1074
1075static struct qcom_icc_node qhs_crypto0_cfg = {
1076	.name = "qhs_crypto0_cfg",
1077	.channels = 1,
1078	.buswidth = 4,
1079};
1080
1081static struct qcom_icc_node qhs_cx_rdpm = {
1082	.name = "qhs_cx_rdpm",
1083	.channels = 1,
1084	.buswidth = 4,
1085};
1086
1087static struct qcom_icc_node qhs_dcc_cfg = {
1088	.name = "qhs_dcc_cfg",
1089	.channels = 1,
1090	.buswidth = 4,
1091};
1092
1093static struct qcom_icc_node qhs_display0_cfg = {
1094	.name = "qhs_display0_cfg",
1095	.channels = 1,
1096	.buswidth = 4,
1097};
1098
1099static struct qcom_icc_node qhs_display1_cfg = {
1100	.name = "qhs_display1_cfg",
1101	.channels = 1,
1102	.buswidth = 4,
1103};
1104
1105static struct qcom_icc_node qhs_emac0_cfg = {
1106	.name = "qhs_emac0_cfg",
1107	.channels = 1,
1108	.buswidth = 4,
1109};
1110
1111static struct qcom_icc_node qhs_emac1_cfg = {
1112	.name = "qhs_emac1_cfg",
1113	.channels = 1,
1114	.buswidth = 4,
1115};
1116
1117static struct qcom_icc_node qhs_gpuss_cfg = {
1118	.name = "qhs_gpuss_cfg",
1119	.channels = 1,
1120	.buswidth = 8,
1121};
1122
1123static struct qcom_icc_node qhs_hwkm = {
1124	.name = "qhs_hwkm",
1125	.channels = 1,
1126	.buswidth = 4,
1127};
1128
1129static struct qcom_icc_node qhs_imem_cfg = {
1130	.name = "qhs_imem_cfg",
1131	.channels = 1,
1132	.buswidth = 4,
1133};
1134
1135static struct qcom_icc_node qhs_ipa = {
1136	.name = "qhs_ipa",
1137	.channels = 1,
1138	.buswidth = 4,
1139};
1140
1141static struct qcom_icc_node qhs_ipc_router = {
1142	.name = "qhs_ipc_router",
1143	.channels = 1,
1144	.buswidth = 4,
1145};
1146
1147static struct qcom_icc_node qhs_lpass_cfg = {
1148	.name = "qhs_lpass_cfg",
1149	.channels = 1,
1150	.buswidth = 4,
1151	.num_links = 1,
1152	.link_nodes = { &qhm_config_noc },
1153};
1154
1155static struct qcom_icc_node qhs_mx_rdpm = {
1156	.name = "qhs_mx_rdpm",
1157	.channels = 1,
1158	.buswidth = 4,
1159};
1160
1161static struct qcom_icc_node qhs_mxc_rdpm = {
1162	.name = "qhs_mxc_rdpm",
1163	.channels = 1,
1164	.buswidth = 4,
1165};
1166
1167static struct qcom_icc_node qhs_pcie0_cfg = {
1168	.name = "qhs_pcie0_cfg",
1169	.channels = 1,
1170	.buswidth = 4,
1171};
1172
1173static struct qcom_icc_node qhs_pcie1_cfg = {
1174	.name = "qhs_pcie1_cfg",
1175	.channels = 1,
1176	.buswidth = 4,
1177};
1178
1179static struct qcom_icc_node qhs_pcie2a_cfg = {
1180	.name = "qhs_pcie2a_cfg",
1181	.channels = 1,
1182	.buswidth = 4,
1183};
1184
1185static struct qcom_icc_node qhs_pcie2b_cfg = {
1186	.name = "qhs_pcie2b_cfg",
1187	.channels = 1,
1188	.buswidth = 4,
1189};
1190
1191static struct qcom_icc_node qhs_pcie3a_cfg = {
1192	.name = "qhs_pcie3a_cfg",
1193	.channels = 1,
1194	.buswidth = 4,
1195};
1196
1197static struct qcom_icc_node qhs_pcie3b_cfg = {
1198	.name = "qhs_pcie3b_cfg",
1199	.channels = 1,
1200	.buswidth = 4,
1201};
1202
1203static struct qcom_icc_node qhs_pcie4_cfg = {
1204	.name = "qhs_pcie4_cfg",
1205	.channels = 1,
1206	.buswidth = 4,
1207};
1208
1209static struct qcom_icc_node qhs_pcie_rsc_cfg = {
1210	.name = "qhs_pcie_rsc_cfg",
1211	.channels = 1,
1212	.buswidth = 4,
1213};
1214
1215static struct qcom_icc_node qhs_pdm = {
1216	.name = "qhs_pdm",
1217	.channels = 1,
1218	.buswidth = 4,
1219};
1220
1221static struct qcom_icc_node qhs_pimem_cfg = {
1222	.name = "qhs_pimem_cfg",
1223	.channels = 1,
1224	.buswidth = 4,
1225};
1226
1227static struct qcom_icc_node qhs_pka_wrapper_cfg = {
1228	.name = "qhs_pka_wrapper_cfg",
1229	.channels = 1,
1230	.buswidth = 4,
1231};
1232
1233static struct qcom_icc_node qhs_pmu_wrapper_cfg = {
1234	.name = "qhs_pmu_wrapper_cfg",
1235	.channels = 1,
1236	.buswidth = 4,
1237};
1238
1239static struct qcom_icc_node qhs_qdss_cfg = {
1240	.name = "qhs_qdss_cfg",
1241	.channels = 1,
1242	.buswidth = 4,
1243};
1244
1245static struct qcom_icc_node qhs_qspi = {
1246	.name = "qhs_qspi",
1247	.channels = 1,
1248	.buswidth = 4,
1249};
1250
1251static struct qcom_icc_node qhs_qup0 = {
1252	.name = "qhs_qup0",
1253	.channels = 1,
1254	.buswidth = 4,
1255};
1256
1257static struct qcom_icc_node qhs_qup1 = {
1258	.name = "qhs_qup1",
1259	.channels = 1,
1260	.buswidth = 4,
1261};
1262
1263static struct qcom_icc_node qhs_qup2 = {
1264	.name = "qhs_qup2",
1265	.channels = 1,
1266	.buswidth = 4,
1267};
1268
1269static struct qcom_icc_node qhs_sdc2 = {
1270	.name = "qhs_sdc2",
1271	.channels = 1,
1272	.buswidth = 4,
1273};
1274
1275static struct qcom_icc_node qhs_sdc4 = {
1276	.name = "qhs_sdc4",
1277	.channels = 1,
1278	.buswidth = 4,
1279};
1280
1281static struct qcom_icc_node qhs_security = {
1282	.name = "qhs_security",
1283	.channels = 1,
1284	.buswidth = 4,
1285};
1286
1287static struct qcom_icc_node qhs_smmuv3_cfg = {
1288	.name = "qhs_smmuv3_cfg",
1289	.channels = 1,
1290	.buswidth = 8,
1291};
1292
1293static struct qcom_icc_node qhs_smss_cfg = {
1294	.name = "qhs_smss_cfg",
1295	.channels = 1,
1296	.buswidth = 4,
1297};
1298
1299static struct qcom_icc_node qhs_spss_cfg = {
1300	.name = "qhs_spss_cfg",
1301	.channels = 1,
1302	.buswidth = 4,
1303};
1304
1305static struct qcom_icc_node qhs_tcsr = {
1306	.name = "qhs_tcsr",
1307	.channels = 1,
1308	.buswidth = 4,
1309};
1310
1311static struct qcom_icc_node qhs_tlmm = {
1312	.name = "qhs_tlmm",
1313	.channels = 1,
1314	.buswidth = 4,
1315};
1316
1317static struct qcom_icc_node qhs_ufs_card_cfg = {
1318	.name = "qhs_ufs_card_cfg",
1319	.channels = 1,
1320	.buswidth = 4,
1321};
1322
1323static struct qcom_icc_node qhs_ufs_mem_cfg = {
1324	.name = "qhs_ufs_mem_cfg",
1325	.channels = 1,
1326	.buswidth = 4,
1327};
1328
1329static struct qcom_icc_node qhs_usb3_0 = {
1330	.name = "qhs_usb3_0",
1331	.channels = 1,
1332	.buswidth = 4,
1333};
1334
1335static struct qcom_icc_node qhs_usb3_1 = {
1336	.name = "qhs_usb3_1",
1337	.channels = 1,
1338	.buswidth = 4,
1339};
1340
1341static struct qcom_icc_node qhs_usb3_mp = {
1342	.name = "qhs_usb3_mp",
1343	.channels = 1,
1344	.buswidth = 4,
1345};
1346
1347static struct qcom_icc_node qhs_usb4_host_0 = {
1348	.name = "qhs_usb4_host_0",
1349	.channels = 1,
1350	.buswidth = 4,
1351};
1352
1353static struct qcom_icc_node qhs_usb4_host_1 = {
1354	.name = "qhs_usb4_host_1",
1355	.channels = 1,
1356	.buswidth = 4,
1357};
1358
1359static struct qcom_icc_node qhs_venus_cfg = {
1360	.name = "qhs_venus_cfg",
1361	.channels = 1,
1362	.buswidth = 4,
1363};
1364
1365static struct qcom_icc_node qhs_vsense_ctrl_cfg = {
1366	.name = "qhs_vsense_ctrl_cfg",
1367	.channels = 1,
1368	.buswidth = 4,
1369};
1370
1371static struct qcom_icc_node qhs_vsense_ctrl_r_cfg = {
1372	.name = "qhs_vsense_ctrl_r_cfg",
1373	.channels = 1,
1374	.buswidth = 4,
1375};
1376
1377static struct qcom_icc_node qns_a1_noc_cfg = {
1378	.name = "qns_a1_noc_cfg",
1379	.channels = 1,
1380	.buswidth = 4,
1381	.num_links = 1,
1382	.link_nodes = { &qnm_a1noc_cfg },
1383};
1384
1385static struct qcom_icc_node qns_a2_noc_cfg = {
1386	.name = "qns_a2_noc_cfg",
1387	.channels = 1,
1388	.buswidth = 4,
1389	.num_links = 1,
1390	.link_nodes = { &qnm_a2noc_cfg },
1391};
1392
1393static struct qcom_icc_node qns_anoc_pcie_bridge_cfg = {
1394	.name = "qns_anoc_pcie_bridge_cfg",
1395	.channels = 1,
1396	.buswidth = 4,
1397};
1398
1399static struct qcom_icc_node qns_ddrss_cfg = {
1400	.name = "qns_ddrss_cfg",
1401	.channels = 1,
1402	.buswidth = 4,
1403	.num_links = 1,
1404	.link_nodes = { &qnm_cnoc_dc_noc },
1405};
1406
1407static struct qcom_icc_node qns_mnoc_cfg = {
1408	.name = "qns_mnoc_cfg",
1409	.channels = 1,
1410	.buswidth = 4,
1411	.num_links = 1,
1412	.link_nodes = { &qnm_mnoc_cfg },
1413};
1414
1415static struct qcom_icc_node qns_snoc_cfg = {
1416	.name = "qns_snoc_cfg",
1417	.channels = 1,
1418	.buswidth = 4,
1419	.num_links = 1,
1420	.link_nodes = { &qnm_snoc_cfg },
1421};
1422
1423static struct qcom_icc_node qns_snoc_sf_bridge_cfg = {
1424	.name = "qns_snoc_sf_bridge_cfg",
1425	.channels = 1,
1426	.buswidth = 4,
1427};
1428
1429static struct qcom_icc_node qxs_imem = {
1430	.name = "qxs_imem",
1431	.channels = 1,
1432	.buswidth = 8,
1433};
1434
1435static struct qcom_icc_node qxs_pimem = {
1436	.name = "qxs_pimem",
1437	.channels = 1,
1438	.buswidth = 8,
1439};
1440
1441static struct qcom_icc_node srvc_cnoc = {
1442	.name = "srvc_cnoc",
1443	.channels = 1,
1444	.buswidth = 4,
1445};
1446
1447static struct qcom_icc_node xs_pcie_0 = {
1448	.name = "xs_pcie_0",
1449	.channels = 1,
1450	.buswidth = 16,
1451};
1452
1453static struct qcom_icc_node xs_pcie_1 = {
1454	.name = "xs_pcie_1",
1455	.channels = 1,
1456	.buswidth = 16,
1457};
1458
1459static struct qcom_icc_node xs_pcie_2a = {
1460	.name = "xs_pcie_2a",
1461	.channels = 1,
1462	.buswidth = 16,
1463};
1464
1465static struct qcom_icc_node xs_pcie_2b = {
1466	.name = "xs_pcie_2b",
1467	.channels = 1,
1468	.buswidth = 8,
1469};
1470
1471static struct qcom_icc_node xs_pcie_3a = {
1472	.name = "xs_pcie_3a",
1473	.channels = 1,
1474	.buswidth = 16,
1475};
1476
1477static struct qcom_icc_node xs_pcie_3b = {
1478	.name = "xs_pcie_3b",
1479	.channels = 1,
1480	.buswidth = 8,
1481};
1482
1483static struct qcom_icc_node xs_pcie_4 = {
1484	.name = "xs_pcie_4",
1485	.channels = 1,
1486	.buswidth = 8,
1487};
1488
1489static struct qcom_icc_node xs_qdss_stm = {
1490	.name = "xs_qdss_stm",
1491	.channels = 1,
1492	.buswidth = 4,
1493};
1494
1495static struct qcom_icc_node xs_smss = {
1496	.name = "xs_smss",
1497	.channels = 1,
1498	.buswidth = 8,
1499};
1500
1501static struct qcom_icc_node xs_sys_tcu_cfg = {
1502	.name = "xs_sys_tcu_cfg",
1503	.channels = 1,
1504	.buswidth = 8,
1505};
1506
1507static struct qcom_icc_node qhs_llcc = {
1508	.name = "qhs_llcc",
1509	.channels = 1,
1510	.buswidth = 4,
1511};
1512
1513static struct qcom_icc_node qns_gemnoc = {
1514	.name = "qns_gemnoc",
1515	.channels = 1,
1516	.buswidth = 4,
1517	.num_links = 1,
1518	.link_nodes = { &qnm_gemnoc_cfg },
1519};
1520
1521static struct qcom_icc_node qns_gem_noc_cnoc = {
1522	.name = "qns_gem_noc_cnoc",
1523	.channels = 1,
1524	.buswidth = 16,
1525	.num_links = 1,
1526	.link_nodes = { &qnm_gemnoc_cnoc },
1527};
1528
1529static struct qcom_icc_node qns_llcc = {
1530	.name = "qns_llcc",
1531	.channels = 8,
1532	.buswidth = 16,
1533	.num_links = 1,
1534	.link_nodes = { &llcc_mc },
1535};
1536
1537static struct qcom_icc_node qns_pcie = {
1538	.name = "qns_pcie",
1539	.channels = 1,
1540	.buswidth = 16,
1541	.num_links = 1,
1542	.link_nodes = { &qnm_gemnoc_pcie },
1543};
1544
1545static struct qcom_icc_node srvc_even_gemnoc = {
1546	.name = "srvc_even_gemnoc",
1547	.channels = 1,
1548	.buswidth = 4,
1549};
1550
1551static struct qcom_icc_node srvc_odd_gemnoc = {
1552	.name = "srvc_odd_gemnoc",
1553	.channels = 1,
1554	.buswidth = 4,
1555};
1556
1557static struct qcom_icc_node srvc_sys_gemnoc = {
1558	.name = "srvc_sys_gemnoc",
1559	.channels = 1,
1560	.buswidth = 4,
1561};
1562
1563static struct qcom_icc_node qhs_lpass_core = {
1564	.name = "qhs_lpass_core",
1565	.channels = 1,
1566	.buswidth = 4,
1567};
1568
1569static struct qcom_icc_node qhs_lpass_lpi = {
1570	.name = "qhs_lpass_lpi",
1571	.channels = 1,
1572	.buswidth = 4,
1573};
1574
1575static struct qcom_icc_node qhs_lpass_mpu = {
1576	.name = "qhs_lpass_mpu",
1577	.channels = 1,
1578	.buswidth = 4,
1579};
1580
1581static struct qcom_icc_node qhs_lpass_top = {
1582	.name = "qhs_lpass_top",
1583	.channels = 1,
1584	.buswidth = 4,
1585};
1586
1587static struct qcom_icc_node qns_sysnoc = {
1588	.name = "qns_sysnoc",
1589	.channels = 1,
1590	.buswidth = 16,
1591	.num_links = 1,
1592	.link_nodes = { &qnm_lpass_noc },
1593};
1594
1595static struct qcom_icc_node srvc_niu_aml_noc = {
1596	.name = "srvc_niu_aml_noc",
1597	.channels = 1,
1598	.buswidth = 4,
1599};
1600
1601static struct qcom_icc_node srvc_niu_lpass_agnoc = {
1602	.name = "srvc_niu_lpass_agnoc",
1603	.channels = 1,
1604	.buswidth = 4,
1605};
1606
1607static struct qcom_icc_node ebi = {
1608	.name = "ebi",
1609	.channels = 8,
1610	.buswidth = 4,
1611};
1612
1613static struct qcom_icc_node qns_mem_noc_hf = {
1614	.name = "qns_mem_noc_hf",
1615	.channels = 2,
1616	.buswidth = 32,
1617	.num_links = 1,
1618	.link_nodes = { &qnm_mnoc_hf },
1619};
1620
1621static struct qcom_icc_node qns_mem_noc_sf = {
1622	.name = "qns_mem_noc_sf",
1623	.channels = 2,
1624	.buswidth = 32,
1625	.num_links = 1,
1626	.link_nodes = { &qnm_mnoc_sf },
1627};
1628
1629static struct qcom_icc_node srvc_mnoc = {
1630	.name = "srvc_mnoc",
1631	.channels = 1,
1632	.buswidth = 4,
1633};
1634
1635static struct qcom_icc_node qns_nsp_gemnoc = {
1636	.name = "qns_nsp_gemnoc",
1637	.channels = 2,
1638	.buswidth = 32,
1639	.num_links = 1,
1640	.link_nodes = { &qnm_cmpnoc0 },
1641};
1642
1643static struct qcom_icc_node qxs_nsp_xfr = {
1644	.name = "qxs_nsp_xfr",
1645	.channels = 1,
1646	.buswidth = 32,
1647};
1648
1649static struct qcom_icc_node service_nsp_noc = {
1650	.name = "service_nsp_noc",
1651	.channels = 1,
1652	.buswidth = 4,
1653};
1654
1655static struct qcom_icc_node qns_nspb_gemnoc = {
1656	.name = "qns_nspb_gemnoc",
1657	.channels = 2,
1658	.buswidth = 32,
1659	.num_links = 1,
1660	.link_nodes = { &qnm_cmpnoc1 },
1661};
1662
1663static struct qcom_icc_node qxs_nspb_xfr = {
1664	.name = "qxs_nspb_xfr",
1665	.channels = 1,
1666	.buswidth = 32,
1667};
1668
1669static struct qcom_icc_node service_nspb_noc = {
1670	.name = "service_nspb_noc",
1671	.channels = 1,
1672	.buswidth = 4,
1673};
1674
1675static struct qcom_icc_node qns_gemnoc_gc = {
1676	.name = "qns_gemnoc_gc",
1677	.channels = 1,
1678	.buswidth = 8,
1679	.num_links = 1,
1680	.link_nodes = { &qnm_snoc_gc },
1681};
1682
1683static struct qcom_icc_node qns_gemnoc_sf = {
1684	.name = "qns_gemnoc_sf",
1685	.channels = 1,
1686	.buswidth = 16,
1687	.num_links = 1,
1688	.link_nodes = { &qnm_snoc_sf },
1689};
1690
1691static struct qcom_icc_node srvc_snoc = {
1692	.name = "srvc_snoc",
1693	.channels = 1,
1694	.buswidth = 4,
1695};
1696
1697static struct qcom_icc_bcm bcm_acv = {
1698	.name = "ACV",
1699	.enable_mask = BIT(3),
1700	.num_nodes = 1,
1701	.nodes = { &ebi },
1702};
1703
1704static struct qcom_icc_bcm bcm_ce0 = {
1705	.name = "CE0",
1706	.num_nodes = 1,
1707	.nodes = { &qxm_crypto },
1708};
1709
1710static struct qcom_icc_bcm bcm_cn0 = {
1711	.name = "CN0",
1712	.keepalive = true,
1713	.num_nodes = 9,
1714	.nodes = { &qnm_gemnoc_cnoc,
1715		   &qnm_gemnoc_pcie,
1716		   &xs_pcie_0,
1717		   &xs_pcie_1,
1718		   &xs_pcie_2a,
1719		   &xs_pcie_2b,
1720		   &xs_pcie_3a,
1721		   &xs_pcie_3b,
1722		   &xs_pcie_4
1723	},
1724};
1725
1726static struct qcom_icc_bcm bcm_cn1 = {
1727	.name = "CN1",
1728	.num_nodes = 67,
1729	.nodes = { &qhs_ahb2phy0,
1730		   &qhs_ahb2phy1,
1731		   &qhs_ahb2phy2,
1732		   &qhs_aoss,
1733		   &qhs_apss,
1734		   &qhs_camera_cfg,
1735		   &qhs_clk_ctl,
1736		   &qhs_compute0_cfg,
1737		   &qhs_compute1_cfg,
1738		   &qhs_cpr_cx,
1739		   &qhs_cpr_mmcx,
1740		   &qhs_cpr_mx,
1741		   &qhs_cpr_nspcx,
1742		   &qhs_crypto0_cfg,
1743		   &qhs_cx_rdpm,
1744		   &qhs_dcc_cfg,
1745		   &qhs_display0_cfg,
1746		   &qhs_display1_cfg,
1747		   &qhs_emac0_cfg,
1748		   &qhs_emac1_cfg,
1749		   &qhs_gpuss_cfg,
1750		   &qhs_hwkm,
1751		   &qhs_imem_cfg,
1752		   &qhs_ipa,
1753		   &qhs_ipc_router,
1754		   &qhs_lpass_cfg,
1755		   &qhs_mx_rdpm,
1756		   &qhs_mxc_rdpm,
1757		   &qhs_pcie0_cfg,
1758		   &qhs_pcie1_cfg,
1759		   &qhs_pcie2a_cfg,
1760		   &qhs_pcie2b_cfg,
1761		   &qhs_pcie3a_cfg,
1762		   &qhs_pcie3b_cfg,
1763		   &qhs_pcie4_cfg,
1764		   &qhs_pcie_rsc_cfg,
1765		   &qhs_pdm,
1766		   &qhs_pimem_cfg,
1767		   &qhs_pka_wrapper_cfg,
1768		   &qhs_pmu_wrapper_cfg,
1769		   &qhs_qdss_cfg,
1770		   &qhs_sdc2,
1771		   &qhs_sdc4,
1772		   &qhs_security,
1773		   &qhs_smmuv3_cfg,
1774		   &qhs_smss_cfg,
1775		   &qhs_spss_cfg,
1776		   &qhs_tcsr,
1777		   &qhs_tlmm,
1778		   &qhs_ufs_card_cfg,
1779		   &qhs_ufs_mem_cfg,
1780		   &qhs_usb3_0,
1781		   &qhs_usb3_1,
1782		   &qhs_usb3_mp,
1783		   &qhs_usb4_host_0,
1784		   &qhs_usb4_host_1,
1785		   &qhs_venus_cfg,
1786		   &qhs_vsense_ctrl_cfg,
1787		   &qhs_vsense_ctrl_r_cfg,
1788		   &qns_a1_noc_cfg,
1789		   &qns_a2_noc_cfg,
1790		   &qns_anoc_pcie_bridge_cfg,
1791		   &qns_ddrss_cfg,
1792		   &qns_mnoc_cfg,
1793		   &qns_snoc_cfg,
1794		   &qns_snoc_sf_bridge_cfg,
1795		   &srvc_cnoc
1796	},
1797};
1798
1799static struct qcom_icc_bcm bcm_cn2 = {
1800	.name = "CN2",
1801	.num_nodes = 4,
1802	.nodes = { &qhs_qspi,
1803		   &qhs_qup0,
1804		   &qhs_qup1,
1805		   &qhs_qup2
1806	},
1807};
1808
1809static struct qcom_icc_bcm bcm_cn3 = {
1810	.name = "CN3",
1811	.num_nodes = 3,
1812	.nodes = { &qxs_imem,
1813		   &xs_smss,
1814		   &xs_sys_tcu_cfg
1815	},
1816};
1817
1818static struct qcom_icc_bcm bcm_mc0 = {
1819	.name = "MC0",
1820	.keepalive = true,
1821	.num_nodes = 1,
1822	.nodes = { &ebi },
1823};
1824
1825static struct qcom_icc_bcm bcm_mm0 = {
1826	.name = "MM0",
1827	.keepalive = true,
1828	.num_nodes = 5,
1829	.nodes = { &qnm_camnoc_hf,
1830		   &qnm_mdp0_0,
1831		   &qnm_mdp0_1,
1832		   &qnm_mdp1_0,
1833		   &qns_mem_noc_hf
1834	},
1835};
1836
1837static struct qcom_icc_bcm bcm_mm1 = {
1838	.name = "MM1",
1839	.num_nodes = 8,
1840	.nodes = { &qnm_rot_0,
1841		   &qnm_rot_1,
1842		   &qnm_video0,
1843		   &qnm_video1,
1844		   &qnm_video_cvp,
1845		   &qxm_camnoc_icp,
1846		   &qxm_camnoc_sf,
1847		   &qns_mem_noc_sf
1848	},
1849};
1850
1851static struct qcom_icc_bcm bcm_nsa0 = {
1852	.name = "NSA0",
1853	.num_nodes = 2,
1854	.nodes = { &qns_nsp_gemnoc,
1855		   &qxs_nsp_xfr
1856	},
1857};
1858
1859static struct qcom_icc_bcm bcm_nsa1 = {
1860	.name = "NSA1",
1861	.num_nodes = 1,
1862	.nodes = { &qxm_nsp },
1863};
1864
1865static struct qcom_icc_bcm bcm_nsb0 = {
1866	.name = "NSB0",
1867	.num_nodes = 2,
1868	.nodes = { &qns_nspb_gemnoc,
1869		   &qxs_nspb_xfr
1870	},
1871};
1872
1873static struct qcom_icc_bcm bcm_nsb1 = {
1874	.name = "NSB1",
1875	.num_nodes = 1,
1876	.nodes = { &qxm_nspb },
1877};
1878
1879static struct qcom_icc_bcm bcm_pci0 = {
1880	.name = "PCI0",
1881	.num_nodes = 1,
1882	.nodes = { &qns_pcie_gem_noc },
1883};
1884
1885static struct qcom_icc_bcm bcm_qup0 = {
1886	.name = "QUP0",
1887	.vote_scale = 1,
1888	.num_nodes = 1,
1889	.nodes = { &qup0_core_slave },
1890};
1891
1892static struct qcom_icc_bcm bcm_qup1 = {
1893	.name = "QUP1",
1894	.vote_scale = 1,
1895	.num_nodes = 1,
1896	.nodes = { &qup1_core_slave },
1897};
1898
1899static struct qcom_icc_bcm bcm_qup2 = {
1900	.name = "QUP2",
1901	.vote_scale = 1,
1902	.num_nodes = 1,
1903	.nodes = { &qup2_core_slave },
1904};
1905
1906static struct qcom_icc_bcm bcm_sh0 = {
1907	.name = "SH0",
1908	.keepalive = true,
1909	.num_nodes = 1,
1910	.nodes = { &qns_llcc },
1911};
1912
1913static struct qcom_icc_bcm bcm_sh2 = {
1914	.name = "SH2",
1915	.num_nodes = 1,
1916	.nodes = { &chm_apps },
1917};
1918
1919static struct qcom_icc_bcm bcm_sn0 = {
1920	.name = "SN0",
1921	.keepalive = true,
1922	.num_nodes = 1,
1923	.nodes = { &qns_gemnoc_sf },
1924};
1925
1926static struct qcom_icc_bcm bcm_sn1 = {
1927	.name = "SN1",
1928	.num_nodes = 1,
1929	.nodes = { &qns_gemnoc_gc },
1930};
1931
1932static struct qcom_icc_bcm bcm_sn2 = {
1933	.name = "SN2",
1934	.num_nodes = 1,
1935	.nodes = { &qxs_pimem },
1936};
1937
1938static struct qcom_icc_bcm bcm_sn3 = {
1939	.name = "SN3",
1940	.num_nodes = 2,
1941	.nodes = { &qns_a1noc_snoc,
1942		   &qnm_aggre1_noc
1943	},
1944};
1945
1946static struct qcom_icc_bcm bcm_sn4 = {
1947	.name = "SN4",
1948	.num_nodes = 2,
1949	.nodes = { &qns_a2noc_snoc,
1950		   &qnm_aggre2_noc
1951	},
1952};
1953
1954static struct qcom_icc_bcm bcm_sn5 = {
1955	.name = "SN5",
1956	.num_nodes = 2,
1957	.nodes = { &qns_aggre_usb_snoc,
1958		   &qnm_aggre_usb_noc
1959	},
1960};
1961
1962static struct qcom_icc_bcm bcm_sn9 = {
1963	.name = "SN9",
1964	.num_nodes = 2,
1965	.nodes = { &qns_sysnoc,
1966		   &qnm_lpass_noc
1967	},
1968};
1969
1970static struct qcom_icc_bcm bcm_sn10 = {
1971	.name = "SN10",
1972	.num_nodes = 1,
1973	.nodes = { &xs_qdss_stm },
1974};
1975
1976static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
1977	&bcm_sn3,
1978	&bcm_sn5,
1979};
1980
1981static struct qcom_icc_node * const aggre1_noc_nodes[] = {
1982	[MASTER_QSPI_0] = &qhm_qspi,
1983	[MASTER_QUP_1] = &qhm_qup1,
1984	[MASTER_QUP_2] = &qhm_qup2,
1985	[MASTER_A1NOC_CFG] = &qnm_a1noc_cfg,
1986	[MASTER_IPA] = &qxm_ipa,
1987	[MASTER_EMAC_1] = &xm_emac_1,
1988	[MASTER_SDCC_4] = &xm_sdc4,
1989	[MASTER_UFS_MEM] = &xm_ufs_mem,
1990	[MASTER_USB3_0] = &xm_usb3_0,
1991	[MASTER_USB3_1] = &xm_usb3_1,
1992	[MASTER_USB3_MP] = &xm_usb3_mp,
1993	[MASTER_USB4_0] = &xm_usb4_host0,
1994	[MASTER_USB4_1] = &xm_usb4_host1,
1995	[SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
1996	[SLAVE_USB_NOC_SNOC] = &qns_aggre_usb_snoc,
1997	[SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc,
1998};
1999
2000static const struct qcom_icc_desc sc8280xp_aggre1_noc = {
2001	.nodes = aggre1_noc_nodes,
2002	.num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
2003	.bcms = aggre1_noc_bcms,
2004	.num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
2005};
2006
2007static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
2008	&bcm_ce0,
2009	&bcm_pci0,
2010	&bcm_sn4,
2011};
2012
2013static struct qcom_icc_node * const aggre2_noc_nodes[] = {
2014	[MASTER_QDSS_BAM] = &qhm_qdss_bam,
2015	[MASTER_QUP_0] = &qhm_qup0,
2016	[MASTER_A2NOC_CFG] = &qnm_a2noc_cfg,
2017	[MASTER_CRYPTO] = &qxm_crypto,
2018	[MASTER_SENSORS_PROC] = &qxm_sensorss_q6,
2019	[MASTER_SP] = &qxm_sp,
2020	[MASTER_EMAC] = &xm_emac_0,
2021	[MASTER_PCIE_0] = &xm_pcie3_0,
2022	[MASTER_PCIE_1] = &xm_pcie3_1,
2023	[MASTER_PCIE_2A] = &xm_pcie3_2a,
2024	[MASTER_PCIE_2B] = &xm_pcie3_2b,
2025	[MASTER_PCIE_3A] = &xm_pcie3_3a,
2026	[MASTER_PCIE_3B] = &xm_pcie3_3b,
2027	[MASTER_PCIE_4] = &xm_pcie3_4,
2028	[MASTER_QDSS_ETR] = &xm_qdss_etr,
2029	[MASTER_SDCC_2] = &xm_sdc2,
2030	[MASTER_UFS_CARD] = &xm_ufs_card,
2031	[SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
2032	[SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_gem_noc,
2033	[SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc,
2034};
2035
2036static const struct qcom_icc_desc sc8280xp_aggre2_noc = {
2037	.nodes = aggre2_noc_nodes,
2038	.num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
2039	.bcms = aggre2_noc_bcms,
2040	.num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
2041};
2042
2043static struct qcom_icc_bcm * const clk_virt_bcms[] = {
2044	&bcm_qup0,
2045	&bcm_qup1,
2046	&bcm_qup2,
2047};
2048
2049static struct qcom_icc_node * const clk_virt_nodes[] = {
2050	[MASTER_QUP_CORE_0] = &qup0_core_master,
2051	[MASTER_QUP_CORE_1] = &qup1_core_master,
2052	[MASTER_QUP_CORE_2] = &qup2_core_master,
2053	[SLAVE_QUP_CORE_0] = &qup0_core_slave,
2054	[SLAVE_QUP_CORE_1] = &qup1_core_slave,
2055	[SLAVE_QUP_CORE_2] = &qup2_core_slave,
2056};
2057
2058static const struct qcom_icc_desc sc8280xp_clk_virt = {
2059	.nodes = clk_virt_nodes,
2060	.num_nodes = ARRAY_SIZE(clk_virt_nodes),
2061	.bcms = clk_virt_bcms,
2062	.num_bcms = ARRAY_SIZE(clk_virt_bcms),
2063};
2064
2065static struct qcom_icc_bcm * const config_noc_bcms[] = {
2066	&bcm_cn0,
2067	&bcm_cn1,
2068	&bcm_cn2,
2069	&bcm_cn3,
2070	&bcm_sn2,
2071	&bcm_sn10,
2072};
2073
2074static struct qcom_icc_node * const config_noc_nodes[] = {
2075	[MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc,
2076	[MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie,
2077	[SLAVE_AHB2PHY_0] = &qhs_ahb2phy0,
2078	[SLAVE_AHB2PHY_1] = &qhs_ahb2phy1,
2079	[SLAVE_AHB2PHY_2] = &qhs_ahb2phy2,
2080	[SLAVE_AOSS] = &qhs_aoss,
2081	[SLAVE_APPSS] = &qhs_apss,
2082	[SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
2083	[SLAVE_CLK_CTL] = &qhs_clk_ctl,
2084	[SLAVE_CDSP_CFG] = &qhs_compute0_cfg,
2085	[SLAVE_CDSP1_CFG] = &qhs_compute1_cfg,
2086	[SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
2087	[SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx,
2088	[SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx,
2089	[SLAVE_CPR_NSPCX] = &qhs_cpr_nspcx,
2090	[SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
2091	[SLAVE_CX_RDPM] = &qhs_cx_rdpm,
2092	[SLAVE_DCC_CFG] = &qhs_dcc_cfg,
2093	[SLAVE_DISPLAY_CFG] = &qhs_display0_cfg,
2094	[SLAVE_DISPLAY1_CFG] = &qhs_display1_cfg,
2095	[SLAVE_EMAC_CFG] = &qhs_emac0_cfg,
2096	[SLAVE_EMAC1_CFG] = &qhs_emac1_cfg,
2097	[SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
2098	[SLAVE_HWKM] = &qhs_hwkm,
2099	[SLAVE_IMEM_CFG] = &qhs_imem_cfg,
2100	[SLAVE_IPA_CFG] = &qhs_ipa,
2101	[SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
2102	[SLAVE_LPASS] = &qhs_lpass_cfg,
2103	[SLAVE_MX_RDPM] = &qhs_mx_rdpm,
2104	[SLAVE_MXC_RDPM] = &qhs_mxc_rdpm,
2105	[SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
2106	[SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
2107	[SLAVE_PCIE_2A_CFG] = &qhs_pcie2a_cfg,
2108	[SLAVE_PCIE_2B_CFG] = &qhs_pcie2b_cfg,
2109	[SLAVE_PCIE_3A_CFG] = &qhs_pcie3a_cfg,
2110	[SLAVE_PCIE_3B_CFG] = &qhs_pcie3b_cfg,
2111	[SLAVE_PCIE_4_CFG] = &qhs_pcie4_cfg,
2112	[SLAVE_PCIE_RSC_CFG] = &qhs_pcie_rsc_cfg,
2113	[SLAVE_PDM] = &qhs_pdm,
2114	[SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
2115	[SLAVE_PKA_WRAPPER_CFG] = &qhs_pka_wrapper_cfg,
2116	[SLAVE_PMU_WRAPPER_CFG] = &qhs_pmu_wrapper_cfg,
2117	[SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
2118	[SLAVE_QSPI_0] = &qhs_qspi,
2119	[SLAVE_QUP_0] = &qhs_qup0,
2120	[SLAVE_QUP_1] = &qhs_qup1,
2121	[SLAVE_QUP_2] = &qhs_qup2,
2122	[SLAVE_SDCC_2] = &qhs_sdc2,
2123	[SLAVE_SDCC_4] = &qhs_sdc4,
2124	[SLAVE_SECURITY] = &qhs_security,
2125	[SLAVE_SMMUV3_CFG] = &qhs_smmuv3_cfg,
2126	[SLAVE_SMSS_CFG] = &qhs_smss_cfg,
2127	[SLAVE_SPSS_CFG] = &qhs_spss_cfg,
2128	[SLAVE_TCSR] = &qhs_tcsr,
2129	[SLAVE_TLMM] = &qhs_tlmm,
2130	[SLAVE_UFS_CARD_CFG] = &qhs_ufs_card_cfg,
2131	[SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
2132	[SLAVE_USB3_0] = &qhs_usb3_0,
2133	[SLAVE_USB3_1] = &qhs_usb3_1,
2134	[SLAVE_USB3_MP] = &qhs_usb3_mp,
2135	[SLAVE_USB4_0] = &qhs_usb4_host_0,
2136	[SLAVE_USB4_1] = &qhs_usb4_host_1,
2137	[SLAVE_VENUS_CFG] = &qhs_venus_cfg,
2138	[SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg,
2139	[SLAVE_VSENSE_CTRL_R_CFG] = &qhs_vsense_ctrl_r_cfg,
2140	[SLAVE_A1NOC_CFG] = &qns_a1_noc_cfg,
2141	[SLAVE_A2NOC_CFG] = &qns_a2_noc_cfg,
2142	[SLAVE_ANOC_PCIE_BRIDGE_CFG] = &qns_anoc_pcie_bridge_cfg,
2143	[SLAVE_DDRSS_CFG] = &qns_ddrss_cfg,
2144	[SLAVE_CNOC_MNOC_CFG] = &qns_mnoc_cfg,
2145	[SLAVE_SNOC_CFG] = &qns_snoc_cfg,
2146	[SLAVE_SNOC_SF_BRIDGE_CFG] = &qns_snoc_sf_bridge_cfg,
2147	[SLAVE_IMEM] = &qxs_imem,
2148	[SLAVE_PIMEM] = &qxs_pimem,
2149	[SLAVE_SERVICE_CNOC] = &srvc_cnoc,
2150	[SLAVE_PCIE_0] = &xs_pcie_0,
2151	[SLAVE_PCIE_1] = &xs_pcie_1,
2152	[SLAVE_PCIE_2A] = &xs_pcie_2a,
2153	[SLAVE_PCIE_2B] = &xs_pcie_2b,
2154	[SLAVE_PCIE_3A] = &xs_pcie_3a,
2155	[SLAVE_PCIE_3B] = &xs_pcie_3b,
2156	[SLAVE_PCIE_4] = &xs_pcie_4,
2157	[SLAVE_QDSS_STM] = &xs_qdss_stm,
2158	[SLAVE_SMSS] = &xs_smss,
2159	[SLAVE_TCU] = &xs_sys_tcu_cfg,
2160};
2161
2162static const struct qcom_icc_desc sc8280xp_config_noc = {
2163	.nodes = config_noc_nodes,
2164	.num_nodes = ARRAY_SIZE(config_noc_nodes),
2165	.bcms = config_noc_bcms,
2166	.num_bcms = ARRAY_SIZE(config_noc_bcms),
2167};
2168
2169static struct qcom_icc_bcm * const dc_noc_bcms[] = {
2170};
2171
2172static struct qcom_icc_node * const dc_noc_nodes[] = {
2173	[MASTER_CNOC_DC_NOC] = &qnm_cnoc_dc_noc,
2174	[SLAVE_LLCC_CFG] = &qhs_llcc,
2175	[SLAVE_GEM_NOC_CFG] = &qns_gemnoc,
2176};
2177
2178static const struct qcom_icc_desc sc8280xp_dc_noc = {
2179	.nodes = dc_noc_nodes,
2180	.num_nodes = ARRAY_SIZE(dc_noc_nodes),
2181	.bcms = dc_noc_bcms,
2182	.num_bcms = ARRAY_SIZE(dc_noc_bcms),
2183};
2184
2185static struct qcom_icc_bcm * const gem_noc_bcms[] = {
2186	&bcm_sh0,
2187	&bcm_sh2,
2188};
2189
2190static struct qcom_icc_node * const gem_noc_nodes[] = {
2191	[MASTER_GPU_TCU] = &alm_gpu_tcu,
2192	[MASTER_PCIE_TCU] = &alm_pcie_tcu,
2193	[MASTER_SYS_TCU] = &alm_sys_tcu,
2194	[MASTER_APPSS_PROC] = &chm_apps,
2195	[MASTER_COMPUTE_NOC] = &qnm_cmpnoc0,
2196	[MASTER_COMPUTE_NOC_1] = &qnm_cmpnoc1,
2197	[MASTER_GEM_NOC_CFG] = &qnm_gemnoc_cfg,
2198	[MASTER_GFX3D] = &qnm_gpu,
2199	[MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
2200	[MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
2201	[MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie,
2202	[MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
2203	[MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
2204	[SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc,
2205	[SLAVE_LLCC] = &qns_llcc,
2206	[SLAVE_GEM_NOC_PCIE_CNOC] = &qns_pcie,
2207	[SLAVE_SERVICE_GEM_NOC_1] = &srvc_even_gemnoc,
2208	[SLAVE_SERVICE_GEM_NOC_2] = &srvc_odd_gemnoc,
2209	[SLAVE_SERVICE_GEM_NOC] = &srvc_sys_gemnoc,
2210};
2211
2212static const struct qcom_icc_desc sc8280xp_gem_noc = {
2213	.nodes = gem_noc_nodes,
2214	.num_nodes = ARRAY_SIZE(gem_noc_nodes),
2215	.bcms = gem_noc_bcms,
2216	.num_bcms = ARRAY_SIZE(gem_noc_bcms),
2217};
2218
2219static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = {
2220	&bcm_sn9,
2221};
2222
2223static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
2224	[MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc,
2225	[MASTER_LPASS_PROC] = &qxm_lpass_dsp,
2226	[SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core,
2227	[SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi,
2228	[SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu,
2229	[SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top,
2230	[SLAVE_LPASS_SNOC] = &qns_sysnoc,
2231	[SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc,
2232	[SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
2233};
2234
2235static const struct qcom_icc_desc sc8280xp_lpass_ag_noc = {
2236	.nodes = lpass_ag_noc_nodes,
2237	.num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
2238	.bcms = lpass_ag_noc_bcms,
2239	.num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms),
2240};
2241
2242static struct qcom_icc_bcm * const mc_virt_bcms[] = {
2243	&bcm_acv,
2244	&bcm_mc0,
2245};
2246
2247static struct qcom_icc_node * const mc_virt_nodes[] = {
2248	[MASTER_LLCC] = &llcc_mc,
2249	[SLAVE_EBI1] = &ebi,
2250};
2251
2252static const struct qcom_icc_desc sc8280xp_mc_virt = {
2253	.nodes = mc_virt_nodes,
2254	.num_nodes = ARRAY_SIZE(mc_virt_nodes),
2255	.bcms = mc_virt_bcms,
2256	.num_bcms = ARRAY_SIZE(mc_virt_bcms),
2257};
2258
2259static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
2260	&bcm_mm0,
2261	&bcm_mm1,
2262};
2263
2264static struct qcom_icc_node * const mmss_noc_nodes[] = {
2265	[MASTER_CAMNOC_HF] = &qnm_camnoc_hf,
2266	[MASTER_MDP0] = &qnm_mdp0_0,
2267	[MASTER_MDP1] = &qnm_mdp0_1,
2268	[MASTER_MDP_CORE1_0] = &qnm_mdp1_0,
2269	[MASTER_MDP_CORE1_1] = &qnm_mdp1_1,
2270	[MASTER_CNOC_MNOC_CFG] = &qnm_mnoc_cfg,
2271	[MASTER_ROTATOR] = &qnm_rot_0,
2272	[MASTER_ROTATOR_1] = &qnm_rot_1,
2273	[MASTER_VIDEO_P0] = &qnm_video0,
2274	[MASTER_VIDEO_P1] = &qnm_video1,
2275	[MASTER_VIDEO_PROC] = &qnm_video_cvp,
2276	[MASTER_CAMNOC_ICP] = &qxm_camnoc_icp,
2277	[MASTER_CAMNOC_SF] = &qxm_camnoc_sf,
2278	[SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
2279	[SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
2280	[SLAVE_SERVICE_MNOC] = &srvc_mnoc,
2281};
2282
2283static const struct qcom_icc_desc sc8280xp_mmss_noc = {
2284	.nodes = mmss_noc_nodes,
2285	.num_nodes = ARRAY_SIZE(mmss_noc_nodes),
2286	.bcms = mmss_noc_bcms,
2287	.num_bcms = ARRAY_SIZE(mmss_noc_bcms),
2288};
2289
2290static struct qcom_icc_bcm * const nspa_noc_bcms[] = {
2291	&bcm_nsa0,
2292	&bcm_nsa1,
2293};
2294
2295static struct qcom_icc_node * const nspa_noc_nodes[] = {
2296	[MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config,
2297	[MASTER_CDSP_PROC] = &qxm_nsp,
2298	[SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
2299	[SLAVE_NSP_XFR] = &qxs_nsp_xfr,
2300	[SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
2301};
2302
2303static const struct qcom_icc_desc sc8280xp_nspa_noc = {
2304	.nodes = nspa_noc_nodes,
2305	.num_nodes = ARRAY_SIZE(nspa_noc_nodes),
2306	.bcms = nspa_noc_bcms,
2307	.num_bcms = ARRAY_SIZE(nspa_noc_bcms),
2308};
2309
2310static struct qcom_icc_bcm * const nspb_noc_bcms[] = {
2311	&bcm_nsb0,
2312	&bcm_nsb1,
2313};
2314
2315static struct qcom_icc_node * const nspb_noc_nodes[] = {
2316	[MASTER_CDSPB_NOC_CFG] = &qhm_nspb_noc_config,
2317	[MASTER_CDSP_PROC_B] = &qxm_nspb,
2318	[SLAVE_CDSPB_MEM_NOC] = &qns_nspb_gemnoc,
2319	[SLAVE_NSPB_XFR] = &qxs_nspb_xfr,
2320	[SLAVE_SERVICE_NSPB_NOC] = &service_nspb_noc,
2321};
2322
2323static const struct qcom_icc_desc sc8280xp_nspb_noc = {
2324	.nodes = nspb_noc_nodes,
2325	.num_nodes = ARRAY_SIZE(nspb_noc_nodes),
2326	.bcms = nspb_noc_bcms,
2327	.num_bcms = ARRAY_SIZE(nspb_noc_bcms),
2328};
2329
2330static struct qcom_icc_bcm * const system_noc_main_bcms[] = {
2331	&bcm_sn0,
2332	&bcm_sn1,
2333	&bcm_sn3,
2334	&bcm_sn4,
2335	&bcm_sn5,
2336	&bcm_sn9,
2337};
2338
2339static struct qcom_icc_node * const system_noc_main_nodes[] = {
2340	[MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
2341	[MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
2342	[MASTER_USB_NOC_SNOC] = &qnm_aggre_usb_noc,
2343	[MASTER_LPASS_ANOC] = &qnm_lpass_noc,
2344	[MASTER_SNOC_CFG] = &qnm_snoc_cfg,
2345	[MASTER_PIMEM] = &qxm_pimem,
2346	[MASTER_GIC] = &xm_gic,
2347	[SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc,
2348	[SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
2349	[SLAVE_SERVICE_SNOC] = &srvc_snoc,
2350};
2351
2352static const struct qcom_icc_desc sc8280xp_system_noc_main = {
2353	.nodes = system_noc_main_nodes,
2354	.num_nodes = ARRAY_SIZE(system_noc_main_nodes),
2355	.bcms = system_noc_main_bcms,
2356	.num_bcms = ARRAY_SIZE(system_noc_main_bcms),
2357};
2358
2359static const struct of_device_id qnoc_of_match[] = {
2360	{ .compatible = "qcom,sc8280xp-aggre1-noc", .data = &sc8280xp_aggre1_noc, },
2361	{ .compatible = "qcom,sc8280xp-aggre2-noc", .data = &sc8280xp_aggre2_noc, },
2362	{ .compatible = "qcom,sc8280xp-clk-virt", .data = &sc8280xp_clk_virt, },
2363	{ .compatible = "qcom,sc8280xp-config-noc", .data = &sc8280xp_config_noc, },
2364	{ .compatible = "qcom,sc8280xp-dc-noc", .data = &sc8280xp_dc_noc, },
2365	{ .compatible = "qcom,sc8280xp-gem-noc", .data = &sc8280xp_gem_noc, },
2366	{ .compatible = "qcom,sc8280xp-lpass-ag-noc", .data = &sc8280xp_lpass_ag_noc, },
2367	{ .compatible = "qcom,sc8280xp-mc-virt", .data = &sc8280xp_mc_virt, },
2368	{ .compatible = "qcom,sc8280xp-mmss-noc", .data = &sc8280xp_mmss_noc, },
2369	{ .compatible = "qcom,sc8280xp-nspa-noc", .data = &sc8280xp_nspa_noc, },
2370	{ .compatible = "qcom,sc8280xp-nspb-noc", .data = &sc8280xp_nspb_noc, },
2371	{ .compatible = "qcom,sc8280xp-system-noc", .data = &sc8280xp_system_noc_main, },
2372	{ }
2373};
2374MODULE_DEVICE_TABLE(of, qnoc_of_match);
2375
2376static struct platform_driver qnoc_driver = {
2377	.probe = qcom_icc_rpmh_probe,
2378	.remove = qcom_icc_rpmh_remove,
2379	.driver = {
2380		.name = "qnoc-sc8280xp",
2381		.of_match_table = qnoc_of_match,
2382		.sync_state = icc_sync_state,
2383	},
2384};
2385
2386static int __init qnoc_driver_init(void)
2387{
2388	return platform_driver_register(&qnoc_driver);
2389}
2390core_initcall(qnoc_driver_init);
2391
2392static void __exit qnoc_driver_exit(void)
2393{
2394	platform_driver_unregister(&qnoc_driver);
2395}
2396module_exit(qnoc_driver_exit);
2397
2398MODULE_DESCRIPTION("Qualcomm SC8280XP NoC driver");
2399MODULE_LICENSE("GPL");
~/ Read-only file preview.