cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sc8180x.c (45952B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
      4 * Copyright (c) 2021, Linaro Ltd.
      5 */
      6
      7#include <linux/device.h>
      8#include <linux/interconnect-provider.h>
      9#include <linux/module.h>
     10#include <linux/of_device.h>
     11
     12#include <dt-bindings/interconnect/qcom,sc8180x.h>
     13
     14#include "bcm-voter.h"
     15#include "icc-rpmh.h"
     16#include "sc8180x.h"
     17
     18static struct qcom_icc_node mas_qhm_a1noc_cfg = {
     19	.name = "mas_qhm_a1noc_cfg",
     20	.id = SC8180X_MASTER_A1NOC_CFG,
     21	.channels = 1,
     22	.buswidth = 4,
     23	.num_links = 1,
     24	.links = { SC8180X_SLAVE_SERVICE_A1NOC }
     25};
     26
     27static struct qcom_icc_node mas_xm_ufs_card = {
     28	.name = "mas_xm_ufs_card",
     29	.id = SC8180X_MASTER_UFS_CARD,
     30	.channels = 1,
     31	.buswidth = 8,
     32	.num_links = 1,
     33	.links = { SC8180X_A1NOC_SNOC_SLV }
     34};
     35
     36static struct qcom_icc_node mas_xm_ufs_g4 = {
     37	.name = "mas_xm_ufs_g4",
     38	.id = SC8180X_MASTER_UFS_GEN4,
     39	.channels = 1,
     40	.buswidth = 8,
     41	.num_links = 1,
     42	.links = { SC8180X_A1NOC_SNOC_SLV }
     43};
     44
     45static struct qcom_icc_node mas_xm_ufs_mem = {
     46	.name = "mas_xm_ufs_mem",
     47	.id = SC8180X_MASTER_UFS_MEM,
     48	.channels = 1,
     49	.buswidth = 8,
     50	.num_links = 1,
     51	.links = { SC8180X_A1NOC_SNOC_SLV }
     52};
     53
     54static struct qcom_icc_node mas_xm_usb3_0 = {
     55	.name = "mas_xm_usb3_0",
     56	.id = SC8180X_MASTER_USB3,
     57	.channels = 1,
     58	.buswidth = 8,
     59	.num_links = 1,
     60	.links = { SC8180X_A1NOC_SNOC_SLV }
     61};
     62
     63static struct qcom_icc_node mas_xm_usb3_1 = {
     64	.name = "mas_xm_usb3_1",
     65	.id = SC8180X_MASTER_USB3_1,
     66	.channels = 1,
     67	.buswidth = 8,
     68	.num_links = 1,
     69	.links = { SC8180X_A1NOC_SNOC_SLV }
     70};
     71
     72static struct qcom_icc_node mas_xm_usb3_2 = {
     73	.name = "mas_xm_usb3_2",
     74	.id = SC8180X_MASTER_USB3_2,
     75	.channels = 1,
     76	.buswidth = 16,
     77	.num_links = 1,
     78	.links = { SC8180X_A1NOC_SNOC_SLV }
     79};
     80
     81static struct qcom_icc_node mas_qhm_a2noc_cfg = {
     82	.name = "mas_qhm_a2noc_cfg",
     83	.id = SC8180X_MASTER_A2NOC_CFG,
     84	.channels = 1,
     85	.buswidth = 4,
     86	.num_links = 1,
     87	.links = { SC8180X_SLAVE_SERVICE_A2NOC }
     88};
     89
     90static struct qcom_icc_node mas_qhm_qdss_bam = {
     91	.name = "mas_qhm_qdss_bam",
     92	.id = SC8180X_MASTER_QDSS_BAM,
     93	.channels = 1,
     94	.buswidth = 4,
     95	.num_links = 1,
     96	.links = { SC8180X_A2NOC_SNOC_SLV }
     97};
     98
     99static struct qcom_icc_node mas_qhm_qspi = {
    100	.name = "mas_qhm_qspi",
    101	.id = SC8180X_MASTER_QSPI_0,
    102	.channels = 1,
    103	.buswidth = 4,
    104	.num_links = 1,
    105	.links = { SC8180X_A2NOC_SNOC_SLV }
    106};
    107
    108static struct qcom_icc_node mas_qhm_qspi1 = {
    109	.name = "mas_qhm_qspi1",
    110	.id = SC8180X_MASTER_QSPI_1,
    111	.channels = 1,
    112	.buswidth = 4,
    113	.num_links = 1,
    114	.links = { SC8180X_A2NOC_SNOC_SLV }
    115};
    116
    117static struct qcom_icc_node mas_qhm_qup0 = {
    118	.name = "mas_qhm_qup0",
    119	.id = SC8180X_MASTER_QUP_0,
    120	.channels = 1,
    121	.buswidth = 4,
    122	.num_links = 1,
    123	.links = { SC8180X_A2NOC_SNOC_SLV }
    124};
    125
    126static struct qcom_icc_node mas_qhm_qup1 = {
    127	.name = "mas_qhm_qup1",
    128	.id = SC8180X_MASTER_QUP_1,
    129	.channels = 1,
    130	.buswidth = 4,
    131	.num_links = 1,
    132	.links = { SC8180X_A2NOC_SNOC_SLV }
    133};
    134
    135static struct qcom_icc_node mas_qhm_qup2 = {
    136	.name = "mas_qhm_qup2",
    137	.id = SC8180X_MASTER_QUP_2,
    138	.channels = 1,
    139	.buswidth = 4,
    140	.num_links = 1,
    141	.links = { SC8180X_A2NOC_SNOC_SLV }
    142};
    143
    144static struct qcom_icc_node mas_qhm_sensorss_ahb = {
    145	.name = "mas_qhm_sensorss_ahb",
    146	.id = SC8180X_MASTER_SENSORS_AHB,
    147	.channels = 1,
    148	.buswidth = 4,
    149	.num_links = 1,
    150	.links = { SC8180X_A2NOC_SNOC_SLV }
    151};
    152
    153static struct qcom_icc_node mas_qxm_crypto = {
    154	.name = "mas_qxm_crypto",
    155	.id = SC8180X_MASTER_CRYPTO_CORE_0,
    156	.channels = 1,
    157	.buswidth = 8,
    158	.num_links = 1,
    159	.links = { SC8180X_A2NOC_SNOC_SLV }
    160};
    161
    162static struct qcom_icc_node mas_qxm_ipa = {
    163	.name = "mas_qxm_ipa",
    164	.id = SC8180X_MASTER_IPA,
    165	.channels = 1,
    166	.buswidth = 8,
    167	.num_links = 1,
    168	.links = { SC8180X_A2NOC_SNOC_SLV }
    169};
    170
    171static struct qcom_icc_node mas_xm_emac = {
    172	.name = "mas_xm_emac",
    173	.id = SC8180X_MASTER_EMAC,
    174	.channels = 1,
    175	.buswidth = 8,
    176	.num_links = 1,
    177	.links = { SC8180X_A2NOC_SNOC_SLV }
    178};
    179
    180static struct qcom_icc_node mas_xm_pcie3_0 = {
    181	.name = "mas_xm_pcie3_0",
    182	.id = SC8180X_MASTER_PCIE,
    183	.channels = 1,
    184	.buswidth = 8,
    185	.num_links = 1,
    186	.links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
    187};
    188
    189static struct qcom_icc_node mas_xm_pcie3_1 = {
    190	.name = "mas_xm_pcie3_1",
    191	.id = SC8180X_MASTER_PCIE_1,
    192	.channels = 1,
    193	.buswidth = 16,
    194	.num_links = 1,
    195	.links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
    196};
    197
    198static struct qcom_icc_node mas_xm_pcie3_2 = {
    199	.name = "mas_xm_pcie3_2",
    200	.id = SC8180X_MASTER_PCIE_2,
    201	.channels = 1,
    202	.buswidth = 8,
    203	.num_links = 1,
    204	.links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
    205};
    206
    207static struct qcom_icc_node mas_xm_pcie3_3 = {
    208	.name = "mas_xm_pcie3_3",
    209	.id = SC8180X_MASTER_PCIE_3,
    210	.channels = 1,
    211	.buswidth = 16,
    212	.num_links = 1,
    213	.links = { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC }
    214};
    215
    216static struct qcom_icc_node mas_xm_qdss_etr = {
    217	.name = "mas_xm_qdss_etr",
    218	.id = SC8180X_MASTER_QDSS_ETR,
    219	.channels = 1,
    220	.buswidth = 8,
    221	.num_links = 1,
    222	.links = { SC8180X_A2NOC_SNOC_SLV }
    223};
    224
    225static struct qcom_icc_node mas_xm_sdc2 = {
    226	.name = "mas_xm_sdc2",
    227	.id = SC8180X_MASTER_SDCC_2,
    228	.channels = 1,
    229	.buswidth = 8,
    230	.num_links = 1,
    231	.links = { SC8180X_A2NOC_SNOC_SLV }
    232};
    233
    234static struct qcom_icc_node mas_xm_sdc4 = {
    235	.name = "mas_xm_sdc4",
    236	.id = SC8180X_MASTER_SDCC_4,
    237	.channels = 1,
    238	.buswidth = 8,
    239	.num_links = 1,
    240	.links = { SC8180X_A2NOC_SNOC_SLV }
    241};
    242
    243static struct qcom_icc_node mas_qxm_camnoc_hf0_uncomp = {
    244	.name = "mas_qxm_camnoc_hf0_uncomp",
    245	.id = SC8180X_MASTER_CAMNOC_HF0_UNCOMP,
    246	.channels = 1,
    247	.buswidth = 32,
    248	.num_links = 1,
    249	.links = { SC8180X_SLAVE_CAMNOC_UNCOMP }
    250};
    251
    252static struct qcom_icc_node mas_qxm_camnoc_hf1_uncomp = {
    253	.name = "mas_qxm_camnoc_hf1_uncomp",
    254	.id = SC8180X_MASTER_CAMNOC_HF1_UNCOMP,
    255	.channels = 1,
    256	.buswidth = 32,
    257	.num_links = 1,
    258	.links = { SC8180X_SLAVE_CAMNOC_UNCOMP }
    259};
    260
    261static struct qcom_icc_node mas_qxm_camnoc_sf_uncomp = {
    262	.name = "mas_qxm_camnoc_sf_uncomp",
    263	.id = SC8180X_MASTER_CAMNOC_SF_UNCOMP,
    264	.channels = 1,
    265	.buswidth = 32,
    266	.num_links = 1,
    267	.links = { SC8180X_SLAVE_CAMNOC_UNCOMP }
    268};
    269
    270static struct qcom_icc_node mas_qnm_npu = {
    271	.name = "mas_qnm_npu",
    272	.id = SC8180X_MASTER_NPU,
    273	.channels = 1,
    274	.buswidth = 32,
    275	.num_links = 1,
    276	.links = { SC8180X_SLAVE_CDSP_MEM_NOC }
    277};
    278
    279static struct qcom_icc_node mas_qnm_snoc = {
    280	.name = "mas_qnm_snoc",
    281	.id = SC8180X_SNOC_CNOC_MAS,
    282	.channels = 1,
    283	.buswidth = 8,
    284	.num_links = 56,
    285	.links = { SC8180X_SLAVE_TLMM_SOUTH,
    286		   SC8180X_SLAVE_CDSP_CFG,
    287		   SC8180X_SLAVE_SPSS_CFG,
    288		   SC8180X_SLAVE_CAMERA_CFG,
    289		   SC8180X_SLAVE_SDCC_4,
    290		   SC8180X_SLAVE_AHB2PHY_CENTER,
    291		   SC8180X_SLAVE_SDCC_2,
    292		   SC8180X_SLAVE_PCIE_2_CFG,
    293		   SC8180X_SLAVE_CNOC_MNOC_CFG,
    294		   SC8180X_SLAVE_EMAC_CFG,
    295		   SC8180X_SLAVE_QSPI_0,
    296		   SC8180X_SLAVE_QSPI_1,
    297		   SC8180X_SLAVE_TLMM_EAST,
    298		   SC8180X_SLAVE_SNOC_CFG,
    299		   SC8180X_SLAVE_AHB2PHY_EAST,
    300		   SC8180X_SLAVE_GLM,
    301		   SC8180X_SLAVE_PDM,
    302		   SC8180X_SLAVE_PCIE_1_CFG,
    303		   SC8180X_SLAVE_A2NOC_CFG,
    304		   SC8180X_SLAVE_QDSS_CFG,
    305		   SC8180X_SLAVE_DISPLAY_CFG,
    306		   SC8180X_SLAVE_TCSR,
    307		   SC8180X_SLAVE_UFS_MEM_0_CFG,
    308		   SC8180X_SLAVE_CNOC_DDRSS,
    309		   SC8180X_SLAVE_PCIE_0_CFG,
    310		   SC8180X_SLAVE_QUP_1,
    311		   SC8180X_SLAVE_QUP_2,
    312		   SC8180X_SLAVE_NPU_CFG,
    313		   SC8180X_SLAVE_CRYPTO_0_CFG,
    314		   SC8180X_SLAVE_GRAPHICS_3D_CFG,
    315		   SC8180X_SLAVE_VENUS_CFG,
    316		   SC8180X_SLAVE_TSIF,
    317		   SC8180X_SLAVE_IPA_CFG,
    318		   SC8180X_SLAVE_CLK_CTL,
    319		   SC8180X_SLAVE_SECURITY,
    320		   SC8180X_SLAVE_AOP,
    321		   SC8180X_SLAVE_AHB2PHY_WEST,
    322		   SC8180X_SLAVE_AHB2PHY_SOUTH,
    323		   SC8180X_SLAVE_SERVICE_CNOC,
    324		   SC8180X_SLAVE_UFS_CARD_CFG,
    325		   SC8180X_SLAVE_USB3_1,
    326		   SC8180X_SLAVE_USB3_2,
    327		   SC8180X_SLAVE_PCIE_3_CFG,
    328		   SC8180X_SLAVE_RBCPR_CX_CFG,
    329		   SC8180X_SLAVE_TLMM_WEST,
    330		   SC8180X_SLAVE_A1NOC_CFG,
    331		   SC8180X_SLAVE_AOSS,
    332		   SC8180X_SLAVE_PRNG,
    333		   SC8180X_SLAVE_VSENSE_CTRL_CFG,
    334		   SC8180X_SLAVE_QUP_0,
    335		   SC8180X_SLAVE_USB3,
    336		   SC8180X_SLAVE_RBCPR_MMCX_CFG,
    337		   SC8180X_SLAVE_PIMEM_CFG,
    338		   SC8180X_SLAVE_UFS_MEM_1_CFG,
    339		   SC8180X_SLAVE_RBCPR_MX_CFG,
    340		   SC8180X_SLAVE_IMEM_CFG }
    341};
    342
    343static struct qcom_icc_node mas_qhm_cnoc_dc_noc = {
    344	.name = "mas_qhm_cnoc_dc_noc",
    345	.id = SC8180X_MASTER_CNOC_DC_NOC,
    346	.channels = 1,
    347	.buswidth = 4,
    348	.num_links = 2,
    349	.links = { SC8180X_SLAVE_LLCC_CFG,
    350		   SC8180X_SLAVE_GEM_NOC_CFG }
    351};
    352
    353static struct qcom_icc_node mas_acm_apps = {
    354	.name = "mas_acm_apps",
    355	.id = SC8180X_MASTER_AMPSS_M0,
    356	.channels = 4,
    357	.buswidth = 64,
    358	.num_links = 3,
    359	.links = { SC8180X_SLAVE_ECC,
    360		   SC8180X_SLAVE_LLCC,
    361		   SC8180X_SLAVE_GEM_NOC_SNOC }
    362};
    363
    364static struct qcom_icc_node mas_acm_gpu_tcu = {
    365	.name = "mas_acm_gpu_tcu",
    366	.id = SC8180X_MASTER_GPU_TCU,
    367	.channels = 1,
    368	.buswidth = 8,
    369	.num_links = 2,
    370	.links = { SC8180X_SLAVE_LLCC,
    371		   SC8180X_SLAVE_GEM_NOC_SNOC }
    372};
    373
    374static struct qcom_icc_node mas_acm_sys_tcu = {
    375	.name = "mas_acm_sys_tcu",
    376	.id = SC8180X_MASTER_SYS_TCU,
    377	.channels = 1,
    378	.buswidth = 8,
    379	.num_links = 2,
    380	.links = { SC8180X_SLAVE_LLCC,
    381		   SC8180X_SLAVE_GEM_NOC_SNOC }
    382};
    383
    384static struct qcom_icc_node mas_qhm_gemnoc_cfg = {
    385	.name = "mas_qhm_gemnoc_cfg",
    386	.id = SC8180X_MASTER_GEM_NOC_CFG,
    387	.channels = 1,
    388	.buswidth = 4,
    389	.num_links = 3,
    390	.links = { SC8180X_SLAVE_SERVICE_GEM_NOC_1,
    391		   SC8180X_SLAVE_SERVICE_GEM_NOC,
    392		   SC8180X_SLAVE_MSS_PROC_MS_MPU_CFG }
    393};
    394
    395static struct qcom_icc_node mas_qnm_cmpnoc = {
    396	.name = "mas_qnm_cmpnoc",
    397	.id = SC8180X_MASTER_COMPUTE_NOC,
    398	.channels = 2,
    399	.buswidth = 32,
    400	.num_links = 3,
    401	.links = { SC8180X_SLAVE_ECC,
    402		   SC8180X_SLAVE_LLCC,
    403		   SC8180X_SLAVE_GEM_NOC_SNOC }
    404};
    405
    406static struct qcom_icc_node mas_qnm_gpu = {
    407	.name = "mas_qnm_gpu",
    408	.id = SC8180X_MASTER_GRAPHICS_3D,
    409	.channels = 4,
    410	.buswidth = 32,
    411	.num_links = 2,
    412	.links = { SC8180X_SLAVE_LLCC,
    413		   SC8180X_SLAVE_GEM_NOC_SNOC }
    414};
    415
    416static struct qcom_icc_node mas_qnm_mnoc_hf = {
    417	.name = "mas_qnm_mnoc_hf",
    418	.id = SC8180X_MASTER_MNOC_HF_MEM_NOC,
    419	.channels = 2,
    420	.buswidth = 32,
    421	.num_links = 1,
    422	.links = { SC8180X_SLAVE_LLCC }
    423};
    424
    425static struct qcom_icc_node mas_qnm_mnoc_sf = {
    426	.name = "mas_qnm_mnoc_sf",
    427	.id = SC8180X_MASTER_MNOC_SF_MEM_NOC,
    428	.channels = 1,
    429	.buswidth = 32,
    430	.num_links = 2,
    431	.links = { SC8180X_SLAVE_LLCC,
    432		   SC8180X_SLAVE_GEM_NOC_SNOC }
    433};
    434
    435static struct qcom_icc_node mas_qnm_pcie = {
    436	.name = "mas_qnm_pcie",
    437	.id = SC8180X_MASTER_GEM_NOC_PCIE_SNOC,
    438	.channels = 1,
    439	.buswidth = 32,
    440	.num_links = 2,
    441	.links = { SC8180X_SLAVE_LLCC,
    442		   SC8180X_SLAVE_GEM_NOC_SNOC }
    443};
    444
    445static struct qcom_icc_node mas_qnm_snoc_gc = {
    446	.name = "mas_qnm_snoc_gc",
    447	.id = SC8180X_MASTER_SNOC_GC_MEM_NOC,
    448	.channels = 1,
    449	.buswidth = 8,
    450	.num_links = 1,
    451	.links = { SC8180X_SLAVE_LLCC }
    452};
    453
    454static struct qcom_icc_node mas_qnm_snoc_sf = {
    455	.name = "mas_qnm_snoc_sf",
    456	.id = SC8180X_MASTER_SNOC_SF_MEM_NOC,
    457	.channels = 1,
    458	.buswidth = 32,
    459	.num_links = 1,
    460	.links = { SC8180X_SLAVE_LLCC }
    461};
    462
    463static struct qcom_icc_node mas_qxm_ecc = {
    464	.name = "mas_qxm_ecc",
    465	.id = SC8180X_MASTER_ECC,
    466	.channels = 2,
    467	.buswidth = 32,
    468	.num_links = 1,
    469	.links = { SC8180X_SLAVE_LLCC }
    470};
    471
    472static struct qcom_icc_node mas_ipa_core_master = {
    473	.name = "mas_ipa_core_master",
    474	.id = SC8180X_MASTER_IPA_CORE,
    475	.channels = 1,
    476	.buswidth = 8,
    477	.num_links = 1,
    478	.links = { SC8180X_SLAVE_IPA_CORE }
    479};
    480
    481static struct qcom_icc_node mas_llcc_mc = {
    482	.name = "mas_llcc_mc",
    483	.id = SC8180X_MASTER_LLCC,
    484	.channels = 8,
    485	.buswidth = 4,
    486	.num_links = 1,
    487	.links = { SC8180X_SLAVE_EBI_CH0 }
    488};
    489
    490static struct qcom_icc_node mas_qhm_mnoc_cfg = {
    491	.name = "mas_qhm_mnoc_cfg",
    492	.id = SC8180X_MASTER_CNOC_MNOC_CFG,
    493	.channels = 1,
    494	.buswidth = 4,
    495	.num_links = 1,
    496	.links = { SC8180X_SLAVE_SERVICE_MNOC }
    497};
    498
    499static struct qcom_icc_node mas_qxm_camnoc_hf0 = {
    500	.name = "mas_qxm_camnoc_hf0",
    501	.id = SC8180X_MASTER_CAMNOC_HF0,
    502	.channels = 1,
    503	.buswidth = 32,
    504	.num_links = 1,
    505	.links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
    506};
    507
    508static struct qcom_icc_node mas_qxm_camnoc_hf1 = {
    509	.name = "mas_qxm_camnoc_hf1",
    510	.id = SC8180X_MASTER_CAMNOC_HF1,
    511	.channels = 1,
    512	.buswidth = 32,
    513	.num_links = 1,
    514	.links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
    515};
    516
    517static struct qcom_icc_node mas_qxm_camnoc_sf = {
    518	.name = "mas_qxm_camnoc_sf",
    519	.id = SC8180X_MASTER_CAMNOC_SF,
    520	.channels = 1,
    521	.buswidth = 32,
    522	.num_links = 1,
    523	.links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
    524};
    525
    526static struct qcom_icc_node mas_qxm_mdp0 = {
    527	.name = "mas_qxm_mdp0",
    528	.id = SC8180X_MASTER_MDP_PORT0,
    529	.channels = 1,
    530	.buswidth = 32,
    531	.num_links = 1,
    532	.links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
    533};
    534
    535static struct qcom_icc_node mas_qxm_mdp1 = {
    536	.name = "mas_qxm_mdp1",
    537	.id = SC8180X_MASTER_MDP_PORT1,
    538	.channels = 1,
    539	.buswidth = 32,
    540	.num_links = 1,
    541	.links = { SC8180X_SLAVE_MNOC_HF_MEM_NOC }
    542};
    543
    544static struct qcom_icc_node mas_qxm_rot = {
    545	.name = "mas_qxm_rot",
    546	.id = SC8180X_MASTER_ROTATOR,
    547	.channels = 1,
    548	.buswidth = 32,
    549	.num_links = 1,
    550	.links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
    551};
    552
    553static struct qcom_icc_node mas_qxm_venus0 = {
    554	.name = "mas_qxm_venus0",
    555	.id = SC8180X_MASTER_VIDEO_P0,
    556	.channels = 1,
    557	.buswidth = 32,
    558	.num_links = 1,
    559	.links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
    560};
    561
    562static struct qcom_icc_node mas_qxm_venus1 = {
    563	.name = "mas_qxm_venus1",
    564	.id = SC8180X_MASTER_VIDEO_P1,
    565	.channels = 1,
    566	.buswidth = 32,
    567	.num_links = 1,
    568	.links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
    569};
    570
    571static struct qcom_icc_node mas_qxm_venus_arm9 = {
    572	.name = "mas_qxm_venus_arm9",
    573	.id = SC8180X_MASTER_VIDEO_PROC,
    574	.channels = 1,
    575	.buswidth = 8,
    576	.num_links = 1,
    577	.links = { SC8180X_SLAVE_MNOC_SF_MEM_NOC }
    578};
    579
    580static struct qcom_icc_node mas_qhm_snoc_cfg = {
    581	.name = "mas_qhm_snoc_cfg",
    582	.id = SC8180X_MASTER_SNOC_CFG,
    583	.channels = 1,
    584	.buswidth = 4,
    585	.num_links = 1,
    586	.links = { SC8180X_SLAVE_SERVICE_SNOC }
    587};
    588
    589static struct qcom_icc_node mas_qnm_aggre1_noc = {
    590	.name = "mas_qnm_aggre1_noc",
    591	.id = SC8180X_A1NOC_SNOC_MAS,
    592	.channels = 1,
    593	.buswidth = 32,
    594	.num_links = 6,
    595	.links = { SC8180X_SLAVE_SNOC_GEM_NOC_SF,
    596		   SC8180X_SLAVE_PIMEM,
    597		   SC8180X_SLAVE_OCIMEM,
    598		   SC8180X_SLAVE_APPSS,
    599		   SC8180X_SNOC_CNOC_SLV,
    600		   SC8180X_SLAVE_QDSS_STM }
    601};
    602
    603static struct qcom_icc_node mas_qnm_aggre2_noc = {
    604	.name = "mas_qnm_aggre2_noc",
    605	.id = SC8180X_A2NOC_SNOC_MAS,
    606	.channels = 1,
    607	.buswidth = 16,
    608	.num_links = 11,
    609	.links = { SC8180X_SLAVE_SNOC_GEM_NOC_SF,
    610		   SC8180X_SLAVE_PIMEM,
    611		   SC8180X_SLAVE_PCIE_3,
    612		   SC8180X_SLAVE_OCIMEM,
    613		   SC8180X_SLAVE_APPSS,
    614		   SC8180X_SLAVE_PCIE_2,
    615		   SC8180X_SNOC_CNOC_SLV,
    616		   SC8180X_SLAVE_PCIE_0,
    617		   SC8180X_SLAVE_PCIE_1,
    618		   SC8180X_SLAVE_TCU,
    619		   SC8180X_SLAVE_QDSS_STM }
    620};
    621
    622static struct qcom_icc_node mas_qnm_gemnoc = {
    623	.name = "mas_qnm_gemnoc",
    624	.id = SC8180X_MASTER_GEM_NOC_SNOC,
    625	.channels = 1,
    626	.buswidth = 8,
    627	.num_links = 6,
    628	.links = { SC8180X_SLAVE_PIMEM,
    629		   SC8180X_SLAVE_OCIMEM,
    630		   SC8180X_SLAVE_APPSS,
    631		   SC8180X_SNOC_CNOC_SLV,
    632		   SC8180X_SLAVE_TCU,
    633		   SC8180X_SLAVE_QDSS_STM }
    634};
    635
    636static struct qcom_icc_node mas_qxm_pimem = {
    637	.name = "mas_qxm_pimem",
    638	.id = SC8180X_MASTER_PIMEM,
    639	.channels = 1,
    640	.buswidth = 8,
    641	.num_links = 2,
    642	.links = { SC8180X_SLAVE_SNOC_GEM_NOC_GC,
    643		   SC8180X_SLAVE_OCIMEM }
    644};
    645
    646static struct qcom_icc_node mas_xm_gic = {
    647	.name = "mas_xm_gic",
    648	.id = SC8180X_MASTER_GIC,
    649	.channels = 1,
    650	.buswidth = 8,
    651	.num_links = 2,
    652	.links = { SC8180X_SLAVE_SNOC_GEM_NOC_GC,
    653		   SC8180X_SLAVE_OCIMEM }
    654};
    655
    656static struct qcom_icc_node mas_qup_core_0 = {
    657	.name = "mas_qup_core_0",
    658	.id = SC8180X_MASTER_QUP_CORE_0,
    659	.channels = 1,
    660	.buswidth = 4,
    661	.num_links = 1,
    662	.links = { SC8180X_SLAVE_QUP_CORE_0 }
    663};
    664
    665static struct qcom_icc_node mas_qup_core_1 = {
    666	.name = "mas_qup_core_1",
    667	.id = SC8180X_MASTER_QUP_CORE_1,
    668	.channels = 1,
    669	.buswidth = 4,
    670	.num_links = 1,
    671	.links = { SC8180X_SLAVE_QUP_CORE_1 }
    672};
    673
    674static struct qcom_icc_node mas_qup_core_2 = {
    675	.name = "mas_qup_core_2",
    676	.id = SC8180X_MASTER_QUP_CORE_2,
    677	.channels = 1,
    678	.buswidth = 4,
    679	.num_links = 1,
    680	.links = { SC8180X_SLAVE_QUP_CORE_2 }
    681};
    682
    683static struct qcom_icc_node slv_qns_a1noc_snoc = {
    684	.name = "slv_qns_a1noc_snoc",
    685	.id = SC8180X_A1NOC_SNOC_SLV,
    686	.channels = 1,
    687	.buswidth = 32,
    688	.num_links = 1,
    689	.links = { SC8180X_A1NOC_SNOC_MAS }
    690};
    691
    692static struct qcom_icc_node slv_srvc_aggre1_noc = {
    693	.name = "slv_srvc_aggre1_noc",
    694	.id = SC8180X_SLAVE_SERVICE_A1NOC,
    695	.channels = 1,
    696	.buswidth = 4
    697};
    698
    699static struct qcom_icc_node slv_qns_a2noc_snoc = {
    700	.name = "slv_qns_a2noc_snoc",
    701	.id = SC8180X_A2NOC_SNOC_SLV,
    702	.channels = 1,
    703	.buswidth = 16,
    704	.num_links = 1,
    705	.links = { SC8180X_A2NOC_SNOC_MAS }
    706};
    707
    708static struct qcom_icc_node slv_qns_pcie_mem_noc = {
    709	.name = "slv_qns_pcie_mem_noc",
    710	.id = SC8180X_SLAVE_ANOC_PCIE_GEM_NOC,
    711	.channels = 1,
    712	.buswidth = 32,
    713	.num_links = 1,
    714	.links = { SC8180X_MASTER_GEM_NOC_PCIE_SNOC }
    715};
    716
    717static struct qcom_icc_node slv_srvc_aggre2_noc = {
    718	.name = "slv_srvc_aggre2_noc",
    719	.id = SC8180X_SLAVE_SERVICE_A2NOC,
    720	.channels = 1,
    721	.buswidth = 4
    722};
    723
    724static struct qcom_icc_node slv_qns_camnoc_uncomp = {
    725	.name = "slv_qns_camnoc_uncomp",
    726	.id = SC8180X_SLAVE_CAMNOC_UNCOMP,
    727	.channels = 1,
    728	.buswidth = 32
    729};
    730
    731static struct qcom_icc_node slv_qns_cdsp_mem_noc = {
    732	.name = "slv_qns_cdsp_mem_noc",
    733	.id = SC8180X_SLAVE_CDSP_MEM_NOC,
    734	.channels = 2,
    735	.buswidth = 32,
    736	.num_links = 1,
    737	.links = { SC8180X_MASTER_COMPUTE_NOC }
    738};
    739
    740static struct qcom_icc_node slv_qhs_a1_noc_cfg = {
    741	.name = "slv_qhs_a1_noc_cfg",
    742	.id = SC8180X_SLAVE_A1NOC_CFG,
    743	.channels = 1,
    744	.buswidth = 4,
    745	.num_links = 1,
    746	.links = { SC8180X_MASTER_A1NOC_CFG }
    747};
    748
    749static struct qcom_icc_node slv_qhs_a2_noc_cfg = {
    750	.name = "slv_qhs_a2_noc_cfg",
    751	.id = SC8180X_SLAVE_A2NOC_CFG,
    752	.channels = 1,
    753	.buswidth = 4,
    754	.num_links = 1,
    755	.links = { SC8180X_MASTER_A2NOC_CFG }
    756};
    757
    758static struct qcom_icc_node slv_qhs_ahb2phy_refgen_center = {
    759	.name = "slv_qhs_ahb2phy_refgen_center",
    760	.id = SC8180X_SLAVE_AHB2PHY_CENTER,
    761	.channels = 1,
    762	.buswidth = 4
    763};
    764
    765static struct qcom_icc_node slv_qhs_ahb2phy_refgen_east = {
    766	.name = "slv_qhs_ahb2phy_refgen_east",
    767	.id = SC8180X_SLAVE_AHB2PHY_EAST,
    768	.channels = 1,
    769	.buswidth = 4
    770};
    771
    772static struct qcom_icc_node slv_qhs_ahb2phy_refgen_west = {
    773	.name = "slv_qhs_ahb2phy_refgen_west",
    774	.id = SC8180X_SLAVE_AHB2PHY_WEST,
    775	.channels = 1,
    776	.buswidth = 4
    777};
    778
    779static struct qcom_icc_node slv_qhs_ahb2phy_south = {
    780	.name = "slv_qhs_ahb2phy_south",
    781	.id = SC8180X_SLAVE_AHB2PHY_SOUTH,
    782	.channels = 1,
    783	.buswidth = 4
    784};
    785
    786static struct qcom_icc_node slv_qhs_aop = {
    787	.name = "slv_qhs_aop",
    788	.id = SC8180X_SLAVE_AOP,
    789	.channels = 1,
    790	.buswidth = 4
    791};
    792
    793static struct qcom_icc_node slv_qhs_aoss = {
    794	.name = "slv_qhs_aoss",
    795	.id = SC8180X_SLAVE_AOSS,
    796	.channels = 1,
    797	.buswidth = 4
    798};
    799
    800static struct qcom_icc_node slv_qhs_camera_cfg = {
    801	.name = "slv_qhs_camera_cfg",
    802	.id = SC8180X_SLAVE_CAMERA_CFG,
    803	.channels = 1,
    804	.buswidth = 4
    805};
    806
    807static struct qcom_icc_node slv_qhs_clk_ctl = {
    808	.name = "slv_qhs_clk_ctl",
    809	.id = SC8180X_SLAVE_CLK_CTL,
    810	.channels = 1,
    811	.buswidth = 4
    812};
    813
    814static struct qcom_icc_node slv_qhs_compute_dsp = {
    815	.name = "slv_qhs_compute_dsp",
    816	.id = SC8180X_SLAVE_CDSP_CFG,
    817	.channels = 1,
    818	.buswidth = 4
    819};
    820
    821static struct qcom_icc_node slv_qhs_cpr_cx = {
    822	.name = "slv_qhs_cpr_cx",
    823	.id = SC8180X_SLAVE_RBCPR_CX_CFG,
    824	.channels = 1,
    825	.buswidth = 4
    826};
    827
    828static struct qcom_icc_node slv_qhs_cpr_mmcx = {
    829	.name = "slv_qhs_cpr_mmcx",
    830	.id = SC8180X_SLAVE_RBCPR_MMCX_CFG,
    831	.channels = 1,
    832	.buswidth = 4
    833};
    834
    835static struct qcom_icc_node slv_qhs_cpr_mx = {
    836	.name = "slv_qhs_cpr_mx",
    837	.id = SC8180X_SLAVE_RBCPR_MX_CFG,
    838	.channels = 1,
    839	.buswidth = 4
    840};
    841
    842static struct qcom_icc_node slv_qhs_crypto0_cfg = {
    843	.name = "slv_qhs_crypto0_cfg",
    844	.id = SC8180X_SLAVE_CRYPTO_0_CFG,
    845	.channels = 1,
    846	.buswidth = 4
    847};
    848
    849static struct qcom_icc_node slv_qhs_ddrss_cfg = {
    850	.name = "slv_qhs_ddrss_cfg",
    851	.id = SC8180X_SLAVE_CNOC_DDRSS,
    852	.channels = 1,
    853	.buswidth = 4,
    854	.num_links = 1,
    855	.links = { SC8180X_MASTER_CNOC_DC_NOC }
    856};
    857
    858static struct qcom_icc_node slv_qhs_display_cfg = {
    859	.name = "slv_qhs_display_cfg",
    860	.id = SC8180X_SLAVE_DISPLAY_CFG,
    861	.channels = 1,
    862	.buswidth = 4
    863};
    864
    865static struct qcom_icc_node slv_qhs_emac_cfg = {
    866	.name = "slv_qhs_emac_cfg",
    867	.id = SC8180X_SLAVE_EMAC_CFG,
    868	.channels = 1,
    869	.buswidth = 4
    870};
    871
    872static struct qcom_icc_node slv_qhs_glm = {
    873	.name = "slv_qhs_glm",
    874	.id = SC8180X_SLAVE_GLM,
    875	.channels = 1,
    876	.buswidth = 4
    877};
    878
    879static struct qcom_icc_node slv_qhs_gpuss_cfg = {
    880	.name = "slv_qhs_gpuss_cfg",
    881	.id = SC8180X_SLAVE_GRAPHICS_3D_CFG,
    882	.channels = 1,
    883	.buswidth = 8
    884};
    885
    886static struct qcom_icc_node slv_qhs_imem_cfg = {
    887	.name = "slv_qhs_imem_cfg",
    888	.id = SC8180X_SLAVE_IMEM_CFG,
    889	.channels = 1,
    890	.buswidth = 4
    891};
    892
    893static struct qcom_icc_node slv_qhs_ipa = {
    894	.name = "slv_qhs_ipa",
    895	.id = SC8180X_SLAVE_IPA_CFG,
    896	.channels = 1,
    897	.buswidth = 4
    898};
    899
    900static struct qcom_icc_node slv_qhs_mnoc_cfg = {
    901	.name = "slv_qhs_mnoc_cfg",
    902	.id = SC8180X_SLAVE_CNOC_MNOC_CFG,
    903	.channels = 1,
    904	.buswidth = 4,
    905	.num_links = 1,
    906	.links = { SC8180X_MASTER_CNOC_MNOC_CFG }
    907};
    908
    909static struct qcom_icc_node slv_qhs_npu_cfg = {
    910	.name = "slv_qhs_npu_cfg",
    911	.id = SC8180X_SLAVE_NPU_CFG,
    912	.channels = 1,
    913	.buswidth = 4
    914};
    915
    916static struct qcom_icc_node slv_qhs_pcie0_cfg = {
    917	.name = "slv_qhs_pcie0_cfg",
    918	.id = SC8180X_SLAVE_PCIE_0_CFG,
    919	.channels = 1,
    920	.buswidth = 4
    921};
    922
    923static struct qcom_icc_node slv_qhs_pcie1_cfg = {
    924	.name = "slv_qhs_pcie1_cfg",
    925	.id = SC8180X_SLAVE_PCIE_1_CFG,
    926	.channels = 1,
    927	.buswidth = 4
    928};
    929
    930static struct qcom_icc_node slv_qhs_pcie2_cfg = {
    931	.name = "slv_qhs_pcie2_cfg",
    932	.id = SC8180X_SLAVE_PCIE_2_CFG,
    933	.channels = 1,
    934	.buswidth = 4
    935};
    936
    937static struct qcom_icc_node slv_qhs_pcie3_cfg = {
    938	.name = "slv_qhs_pcie3_cfg",
    939	.id = SC8180X_SLAVE_PCIE_3_CFG,
    940	.channels = 1,
    941	.buswidth = 4
    942};
    943
    944static struct qcom_icc_node slv_qhs_pdm = {
    945	.name = "slv_qhs_pdm",
    946	.id = SC8180X_SLAVE_PDM,
    947	.channels = 1,
    948	.buswidth = 4
    949};
    950
    951static struct qcom_icc_node slv_qhs_pimem_cfg = {
    952	.name = "slv_qhs_pimem_cfg",
    953	.id = SC8180X_SLAVE_PIMEM_CFG,
    954	.channels = 1,
    955	.buswidth = 4
    956};
    957
    958static struct qcom_icc_node slv_qhs_prng = {
    959	.name = "slv_qhs_prng",
    960	.id = SC8180X_SLAVE_PRNG,
    961	.channels = 1,
    962	.buswidth = 4
    963};
    964
    965static struct qcom_icc_node slv_qhs_qdss_cfg = {
    966	.name = "slv_qhs_qdss_cfg",
    967	.id = SC8180X_SLAVE_QDSS_CFG,
    968	.channels = 1,
    969	.buswidth = 4
    970};
    971
    972static struct qcom_icc_node slv_qhs_qspi_0 = {
    973	.name = "slv_qhs_qspi_0",
    974	.id = SC8180X_SLAVE_QSPI_0,
    975	.channels = 1,
    976	.buswidth = 4
    977};
    978
    979static struct qcom_icc_node slv_qhs_qspi_1 = {
    980	.name = "slv_qhs_qspi_1",
    981	.id = SC8180X_SLAVE_QSPI_1,
    982	.channels = 1,
    983	.buswidth = 4
    984};
    985
    986static struct qcom_icc_node slv_qhs_qupv3_east0 = {
    987	.name = "slv_qhs_qupv3_east0",
    988	.id = SC8180X_SLAVE_QUP_1,
    989	.channels = 1,
    990	.buswidth = 4
    991};
    992
    993static struct qcom_icc_node slv_qhs_qupv3_east1 = {
    994	.name = "slv_qhs_qupv3_east1",
    995	.id = SC8180X_SLAVE_QUP_2,
    996	.channels = 1,
    997	.buswidth = 4
    998};
    999
   1000static struct qcom_icc_node slv_qhs_qupv3_west = {
   1001	.name = "slv_qhs_qupv3_west",
   1002	.id = SC8180X_SLAVE_QUP_0,
   1003	.channels = 1,
   1004	.buswidth = 4
   1005};
   1006
   1007static struct qcom_icc_node slv_qhs_sdc2 = {
   1008	.name = "slv_qhs_sdc2",
   1009	.id = SC8180X_SLAVE_SDCC_2,
   1010	.channels = 1,
   1011	.buswidth = 4
   1012};
   1013
   1014static struct qcom_icc_node slv_qhs_sdc4 = {
   1015	.name = "slv_qhs_sdc4",
   1016	.id = SC8180X_SLAVE_SDCC_4,
   1017	.channels = 1,
   1018	.buswidth = 4
   1019};
   1020
   1021static struct qcom_icc_node slv_qhs_security = {
   1022	.name = "slv_qhs_security",
   1023	.id = SC8180X_SLAVE_SECURITY,
   1024	.channels = 1,
   1025	.buswidth = 4
   1026};
   1027
   1028static struct qcom_icc_node slv_qhs_snoc_cfg = {
   1029	.name = "slv_qhs_snoc_cfg",
   1030	.id = SC8180X_SLAVE_SNOC_CFG,
   1031	.channels = 1,
   1032	.buswidth = 4,
   1033	.num_links = 1,
   1034	.links = { SC8180X_MASTER_SNOC_CFG }
   1035};
   1036
   1037static struct qcom_icc_node slv_qhs_spss_cfg = {
   1038	.name = "slv_qhs_spss_cfg",
   1039	.id = SC8180X_SLAVE_SPSS_CFG,
   1040	.channels = 1,
   1041	.buswidth = 4
   1042};
   1043
   1044static struct qcom_icc_node slv_qhs_tcsr = {
   1045	.name = "slv_qhs_tcsr",
   1046	.id = SC8180X_SLAVE_TCSR,
   1047	.channels = 1,
   1048	.buswidth = 4
   1049};
   1050
   1051static struct qcom_icc_node slv_qhs_tlmm_east = {
   1052	.name = "slv_qhs_tlmm_east",
   1053	.id = SC8180X_SLAVE_TLMM_EAST,
   1054	.channels = 1,
   1055	.buswidth = 4
   1056};
   1057
   1058static struct qcom_icc_node slv_qhs_tlmm_south = {
   1059	.name = "slv_qhs_tlmm_south",
   1060	.id = SC8180X_SLAVE_TLMM_SOUTH,
   1061	.channels = 1,
   1062	.buswidth = 4
   1063};
   1064
   1065static struct qcom_icc_node slv_qhs_tlmm_west = {
   1066	.name = "slv_qhs_tlmm_west",
   1067	.id = SC8180X_SLAVE_TLMM_WEST,
   1068	.channels = 1,
   1069	.buswidth = 4
   1070};
   1071
   1072static struct qcom_icc_node slv_qhs_tsif = {
   1073	.name = "slv_qhs_tsif",
   1074	.id = SC8180X_SLAVE_TSIF,
   1075	.channels = 1,
   1076	.buswidth = 4
   1077};
   1078
   1079static struct qcom_icc_node slv_qhs_ufs_card_cfg = {
   1080	.name = "slv_qhs_ufs_card_cfg",
   1081	.id = SC8180X_SLAVE_UFS_CARD_CFG,
   1082	.channels = 1,
   1083	.buswidth = 4
   1084};
   1085
   1086static struct qcom_icc_node slv_qhs_ufs_mem0_cfg = {
   1087	.name = "slv_qhs_ufs_mem0_cfg",
   1088	.id = SC8180X_SLAVE_UFS_MEM_0_CFG,
   1089	.channels = 1,
   1090	.buswidth = 4
   1091};
   1092
   1093static struct qcom_icc_node slv_qhs_ufs_mem1_cfg = {
   1094	.name = "slv_qhs_ufs_mem1_cfg",
   1095	.id = SC8180X_SLAVE_UFS_MEM_1_CFG,
   1096	.channels = 1,
   1097	.buswidth = 4
   1098};
   1099
   1100static struct qcom_icc_node slv_qhs_usb3_0 = {
   1101	.name = "slv_qhs_usb3_0",
   1102	.id = SC8180X_SLAVE_USB3,
   1103	.channels = 1,
   1104	.buswidth = 4
   1105};
   1106
   1107static struct qcom_icc_node slv_qhs_usb3_1 = {
   1108	.name = "slv_qhs_usb3_1",
   1109	.id = SC8180X_SLAVE_USB3_1,
   1110	.channels = 1,
   1111	.buswidth = 4
   1112};
   1113
   1114static struct qcom_icc_node slv_qhs_usb3_2 = {
   1115	.name = "slv_qhs_usb3_2",
   1116	.id = SC8180X_SLAVE_USB3_2,
   1117	.channels = 1,
   1118	.buswidth = 4
   1119};
   1120
   1121static struct qcom_icc_node slv_qhs_venus_cfg = {
   1122	.name = "slv_qhs_venus_cfg",
   1123	.id = SC8180X_SLAVE_VENUS_CFG,
   1124	.channels = 1,
   1125	.buswidth = 4
   1126};
   1127
   1128static struct qcom_icc_node slv_qhs_vsense_ctrl_cfg = {
   1129	.name = "slv_qhs_vsense_ctrl_cfg",
   1130	.id = SC8180X_SLAVE_VSENSE_CTRL_CFG,
   1131	.channels = 1,
   1132	.buswidth = 4
   1133};
   1134
   1135static struct qcom_icc_node slv_srvc_cnoc = {
   1136	.name = "slv_srvc_cnoc",
   1137	.id = SC8180X_SLAVE_SERVICE_CNOC,
   1138	.channels = 1,
   1139	.buswidth = 4
   1140};
   1141
   1142static struct qcom_icc_node slv_qhs_gemnoc = {
   1143	.name = "slv_qhs_gemnoc",
   1144	.id = SC8180X_SLAVE_GEM_NOC_CFG,
   1145	.channels = 1,
   1146	.buswidth = 4,
   1147	.num_links = 1,
   1148	.links = { SC8180X_MASTER_GEM_NOC_CFG }
   1149};
   1150
   1151static struct qcom_icc_node slv_qhs_llcc = {
   1152	.name = "slv_qhs_llcc",
   1153	.id = SC8180X_SLAVE_LLCC_CFG,
   1154	.channels = 1,
   1155	.buswidth = 4
   1156};
   1157
   1158static struct qcom_icc_node slv_qhs_mdsp_ms_mpu_cfg = {
   1159	.name = "slv_qhs_mdsp_ms_mpu_cfg",
   1160	.id = SC8180X_SLAVE_MSS_PROC_MS_MPU_CFG,
   1161	.channels = 1,
   1162	.buswidth = 4
   1163};
   1164
   1165static struct qcom_icc_node slv_qns_ecc = {
   1166	.name = "slv_qns_ecc",
   1167	.id = SC8180X_SLAVE_ECC,
   1168	.channels = 1,
   1169	.buswidth = 32
   1170};
   1171
   1172static struct qcom_icc_node slv_qns_gem_noc_snoc = {
   1173	.name = "slv_qns_gem_noc_snoc",
   1174	.id = SC8180X_SLAVE_GEM_NOC_SNOC,
   1175	.channels = 1,
   1176	.buswidth = 8,
   1177	.num_links = 1,
   1178	.links = { SC8180X_MASTER_GEM_NOC_SNOC }
   1179};
   1180
   1181static struct qcom_icc_node slv_qns_llcc = {
   1182	.name = "slv_qns_llcc",
   1183	.id = SC8180X_SLAVE_LLCC,
   1184	.channels = 8,
   1185	.buswidth = 16,
   1186	.num_links = 1,
   1187	.links = { SC8180X_MASTER_LLCC }
   1188};
   1189
   1190static struct qcom_icc_node slv_srvc_gemnoc = {
   1191	.name = "slv_srvc_gemnoc",
   1192	.id = SC8180X_SLAVE_SERVICE_GEM_NOC,
   1193	.channels = 1,
   1194	.buswidth = 4
   1195};
   1196
   1197static struct qcom_icc_node slv_srvc_gemnoc1 = {
   1198	.name = "slv_srvc_gemnoc1",
   1199	.id = SC8180X_SLAVE_SERVICE_GEM_NOC_1,
   1200	.channels = 1,
   1201	.buswidth = 4
   1202};
   1203
   1204static struct qcom_icc_node slv_ipa_core_slave = {
   1205	.name = "slv_ipa_core_slave",
   1206	.id = SC8180X_SLAVE_IPA_CORE,
   1207	.channels = 1,
   1208	.buswidth = 8
   1209};
   1210
   1211static struct qcom_icc_node slv_ebi = {
   1212	.name = "slv_ebi",
   1213	.id = SC8180X_SLAVE_EBI_CH0,
   1214	.channels = 8,
   1215	.buswidth = 4
   1216};
   1217
   1218static struct qcom_icc_node slv_qns2_mem_noc = {
   1219	.name = "slv_qns2_mem_noc",
   1220	.id = SC8180X_SLAVE_MNOC_SF_MEM_NOC,
   1221	.channels = 1,
   1222	.buswidth = 32,
   1223	.num_links = 1,
   1224	.links = { SC8180X_MASTER_MNOC_SF_MEM_NOC }
   1225};
   1226
   1227static struct qcom_icc_node slv_qns_mem_noc_hf = {
   1228	.name = "slv_qns_mem_noc_hf",
   1229	.id = SC8180X_SLAVE_MNOC_HF_MEM_NOC,
   1230	.channels = 2,
   1231	.buswidth = 32,
   1232	.num_links = 1,
   1233	.links = { SC8180X_MASTER_MNOC_HF_MEM_NOC }
   1234};
   1235
   1236static struct qcom_icc_node slv_srvc_mnoc = {
   1237	.name = "slv_srvc_mnoc",
   1238	.id = SC8180X_SLAVE_SERVICE_MNOC,
   1239	.channels = 1,
   1240	.buswidth = 4
   1241};
   1242
   1243static struct qcom_icc_node slv_qhs_apss = {
   1244	.name = "slv_qhs_apss",
   1245	.id = SC8180X_SLAVE_APPSS,
   1246	.channels = 1,
   1247	.buswidth = 8
   1248};
   1249
   1250static struct qcom_icc_node slv_qns_cnoc = {
   1251	.name = "slv_qns_cnoc",
   1252	.id = SC8180X_SNOC_CNOC_SLV,
   1253	.channels = 1,
   1254	.buswidth = 8,
   1255	.num_links = 1,
   1256	.links = { SC8180X_SNOC_CNOC_MAS }
   1257};
   1258
   1259static struct qcom_icc_node slv_qns_gemnoc_gc = {
   1260	.name = "slv_qns_gemnoc_gc",
   1261	.id = SC8180X_SLAVE_SNOC_GEM_NOC_GC,
   1262	.channels = 1,
   1263	.buswidth = 8,
   1264	.num_links = 1,
   1265	.links = { SC8180X_MASTER_SNOC_GC_MEM_NOC }
   1266};
   1267
   1268static struct qcom_icc_node slv_qns_gemnoc_sf = {
   1269	.name = "slv_qns_gemnoc_sf",
   1270	.id = SC8180X_SLAVE_SNOC_GEM_NOC_SF,
   1271	.channels = 1,
   1272	.buswidth = 32,
   1273	.num_links = 1,
   1274	.links = { SC8180X_MASTER_SNOC_SF_MEM_NOC }
   1275};
   1276
   1277static struct qcom_icc_node slv_qxs_imem = {
   1278	.name = "slv_qxs_imem",
   1279	.id = SC8180X_SLAVE_OCIMEM,
   1280	.channels = 1,
   1281	.buswidth = 8
   1282};
   1283
   1284static struct qcom_icc_node slv_qxs_pimem = {
   1285	.name = "slv_qxs_pimem",
   1286	.id = SC8180X_SLAVE_PIMEM,
   1287	.channels = 1,
   1288	.buswidth = 8
   1289};
   1290
   1291static struct qcom_icc_node slv_srvc_snoc = {
   1292	.name = "slv_srvc_snoc",
   1293	.id = SC8180X_SLAVE_SERVICE_SNOC,
   1294	.channels = 1,
   1295	.buswidth = 4
   1296};
   1297
   1298static struct qcom_icc_node slv_xs_pcie_0 = {
   1299	.name = "slv_xs_pcie_0",
   1300	.id = SC8180X_SLAVE_PCIE_0,
   1301	.channels = 1,
   1302	.buswidth = 8
   1303};
   1304
   1305static struct qcom_icc_node slv_xs_pcie_1 = {
   1306	.name = "slv_xs_pcie_1",
   1307	.id = SC8180X_SLAVE_PCIE_1,
   1308	.channels = 1,
   1309	.buswidth = 8
   1310};
   1311
   1312static struct qcom_icc_node slv_xs_pcie_2 = {
   1313	.name = "slv_xs_pcie_2",
   1314	.id = SC8180X_SLAVE_PCIE_2,
   1315	.channels = 1,
   1316	.buswidth = 8
   1317};
   1318
   1319static struct qcom_icc_node slv_xs_pcie_3 = {
   1320	.name = "slv_xs_pcie_3",
   1321	.id = SC8180X_SLAVE_PCIE_3,
   1322	.channels = 1,
   1323	.buswidth = 8
   1324};
   1325
   1326static struct qcom_icc_node slv_xs_qdss_stm = {
   1327	.name = "slv_xs_qdss_stm",
   1328	.id = SC8180X_SLAVE_QDSS_STM,
   1329	.channels = 1,
   1330	.buswidth = 4
   1331};
   1332
   1333static struct qcom_icc_node slv_xs_sys_tcu_cfg = {
   1334	.name = "slv_xs_sys_tcu_cfg",
   1335	.id = SC8180X_SLAVE_TCU,
   1336	.channels = 1,
   1337	.buswidth = 8
   1338};
   1339
   1340static struct qcom_icc_node slv_qup_core_0 = {
   1341	.name = "slv_qup_core_0",
   1342	.id = SC8180X_SLAVE_QUP_CORE_0,
   1343	.channels = 1,
   1344	.buswidth = 4
   1345};
   1346
   1347static struct qcom_icc_node slv_qup_core_1 = {
   1348	.name = "slv_qup_core_1",
   1349	.id = SC8180X_SLAVE_QUP_CORE_1,
   1350	.channels = 1,
   1351	.buswidth = 4
   1352};
   1353
   1354static struct qcom_icc_node slv_qup_core_2 = {
   1355	.name = "slv_qup_core_2",
   1356	.id = SC8180X_SLAVE_QUP_CORE_2,
   1357	.channels = 1,
   1358	.buswidth = 4
   1359};
   1360
   1361static struct qcom_icc_bcm bcm_acv = {
   1362	.name = "ACV",
   1363	.num_nodes = 1,
   1364	.nodes = { &slv_ebi }
   1365};
   1366
   1367static struct qcom_icc_bcm bcm_mc0 = {
   1368	.name = "MC0",
   1369	.keepalive = true,
   1370	.num_nodes = 1,
   1371	.nodes = { &slv_ebi }
   1372};
   1373
   1374static struct qcom_icc_bcm bcm_sh0 = {
   1375	.name = "SH0",
   1376	.keepalive = true,
   1377	.num_nodes = 1,
   1378	.nodes = { &slv_qns_llcc }
   1379};
   1380
   1381static struct qcom_icc_bcm bcm_mm0 = {
   1382	.name = "MM0",
   1383	.num_nodes = 1,
   1384	.nodes = { &slv_qns_mem_noc_hf }
   1385};
   1386
   1387static struct qcom_icc_bcm bcm_co0 = {
   1388	.name = "CO0",
   1389	.num_nodes = 1,
   1390	.nodes = { &slv_qns_cdsp_mem_noc }
   1391};
   1392
   1393static struct qcom_icc_bcm bcm_ce0 = {
   1394	.name = "CE0",
   1395	.num_nodes = 1,
   1396	.nodes = { &mas_qxm_crypto }
   1397};
   1398
   1399static struct qcom_icc_bcm bcm_cn0 = {
   1400	.name = "CN0",
   1401	.keepalive = true,
   1402	.num_nodes = 57,
   1403	.nodes = { &mas_qnm_snoc,
   1404		   &slv_qhs_a1_noc_cfg,
   1405		   &slv_qhs_a2_noc_cfg,
   1406		   &slv_qhs_ahb2phy_refgen_center,
   1407		   &slv_qhs_ahb2phy_refgen_east,
   1408		   &slv_qhs_ahb2phy_refgen_west,
   1409		   &slv_qhs_ahb2phy_south,
   1410		   &slv_qhs_aop,
   1411		   &slv_qhs_aoss,
   1412		   &slv_qhs_camera_cfg,
   1413		   &slv_qhs_clk_ctl,
   1414		   &slv_qhs_compute_dsp,
   1415		   &slv_qhs_cpr_cx,
   1416		   &slv_qhs_cpr_mmcx,
   1417		   &slv_qhs_cpr_mx,
   1418		   &slv_qhs_crypto0_cfg,
   1419		   &slv_qhs_ddrss_cfg,
   1420		   &slv_qhs_display_cfg,
   1421		   &slv_qhs_emac_cfg,
   1422		   &slv_qhs_glm,
   1423		   &slv_qhs_gpuss_cfg,
   1424		   &slv_qhs_imem_cfg,
   1425		   &slv_qhs_ipa,
   1426		   &slv_qhs_mnoc_cfg,
   1427		   &slv_qhs_npu_cfg,
   1428		   &slv_qhs_pcie0_cfg,
   1429		   &slv_qhs_pcie1_cfg,
   1430		   &slv_qhs_pcie2_cfg,
   1431		   &slv_qhs_pcie3_cfg,
   1432		   &slv_qhs_pdm,
   1433		   &slv_qhs_pimem_cfg,
   1434		   &slv_qhs_prng,
   1435		   &slv_qhs_qdss_cfg,
   1436		   &slv_qhs_qspi_0,
   1437		   &slv_qhs_qspi_1,
   1438		   &slv_qhs_qupv3_east0,
   1439		   &slv_qhs_qupv3_east1,
   1440		   &slv_qhs_qupv3_west,
   1441		   &slv_qhs_sdc2,
   1442		   &slv_qhs_sdc4,
   1443		   &slv_qhs_security,
   1444		   &slv_qhs_snoc_cfg,
   1445		   &slv_qhs_spss_cfg,
   1446		   &slv_qhs_tcsr,
   1447		   &slv_qhs_tlmm_east,
   1448		   &slv_qhs_tlmm_south,
   1449		   &slv_qhs_tlmm_west,
   1450		   &slv_qhs_tsif,
   1451		   &slv_qhs_ufs_card_cfg,
   1452		   &slv_qhs_ufs_mem0_cfg,
   1453		   &slv_qhs_ufs_mem1_cfg,
   1454		   &slv_qhs_usb3_0,
   1455		   &slv_qhs_usb3_1,
   1456		   &slv_qhs_usb3_2,
   1457		   &slv_qhs_venus_cfg,
   1458		   &slv_qhs_vsense_ctrl_cfg,
   1459		   &slv_srvc_cnoc }
   1460};
   1461
   1462static struct qcom_icc_bcm bcm_mm1 = {
   1463	.name = "MM1",
   1464	.num_nodes = 7,
   1465	.nodes = { &mas_qxm_camnoc_hf0_uncomp,
   1466		   &mas_qxm_camnoc_hf1_uncomp,
   1467		   &mas_qxm_camnoc_sf_uncomp,
   1468		   &mas_qxm_camnoc_hf0,
   1469		   &mas_qxm_camnoc_hf1,
   1470		   &mas_qxm_mdp0,
   1471		   &mas_qxm_mdp1 }
   1472};
   1473
   1474static struct qcom_icc_bcm bcm_qup0 = {
   1475	.name = "QUP0",
   1476	.num_nodes = 3,
   1477	.nodes = { &mas_qup_core_0,
   1478		   &mas_qup_core_1,
   1479		   &mas_qup_core_2 }
   1480};
   1481
   1482static struct qcom_icc_bcm bcm_sh2 = {
   1483	.name = "SH2",
   1484	.num_nodes = 1,
   1485	.nodes = { &slv_qns_gem_noc_snoc }
   1486};
   1487
   1488static struct qcom_icc_bcm bcm_mm2 = {
   1489	.name = "MM2",
   1490	.num_nodes = 6,
   1491	.nodes = { &mas_qxm_camnoc_sf,
   1492		   &mas_qxm_rot,
   1493		   &mas_qxm_venus0,
   1494		   &mas_qxm_venus1,
   1495		   &mas_qxm_venus_arm9,
   1496		   &slv_qns2_mem_noc }
   1497};
   1498
   1499static struct qcom_icc_bcm bcm_sh3 = {
   1500	.name = "SH3",
   1501	.keepalive = true,
   1502	.num_nodes = 1,
   1503	.nodes = { &mas_acm_apps }
   1504};
   1505
   1506static struct qcom_icc_bcm bcm_sn0 = {
   1507	.name = "SN0",
   1508	.nodes = { &slv_qns_gemnoc_sf }
   1509};
   1510
   1511static struct qcom_icc_bcm bcm_sn1 = {
   1512	.name = "SN1",
   1513	.nodes = { &slv_qxs_imem }
   1514};
   1515
   1516static struct qcom_icc_bcm bcm_sn2 = {
   1517	.name = "SN2",
   1518	.keepalive = true,
   1519	.nodes = { &slv_qns_gemnoc_gc }
   1520};
   1521
   1522static struct qcom_icc_bcm bcm_co2 = {
   1523	.name = "CO2",
   1524	.nodes = { &mas_qnm_npu }
   1525};
   1526
   1527static struct qcom_icc_bcm bcm_ip0 = {
   1528	.name = "IP0",
   1529	.nodes = { &slv_ipa_core_slave }
   1530};
   1531
   1532static struct qcom_icc_bcm bcm_sn3 = {
   1533	.name = "SN3",
   1534	.keepalive = true,
   1535	.nodes = { &slv_srvc_aggre1_noc,
   1536		  &slv_qns_cnoc }
   1537};
   1538
   1539static struct qcom_icc_bcm bcm_sn4 = {
   1540	.name = "SN4",
   1541	.nodes = { &slv_qxs_pimem }
   1542};
   1543
   1544static struct qcom_icc_bcm bcm_sn8 = {
   1545	.name = "SN8",
   1546	.num_nodes = 4,
   1547	.nodes = { &slv_xs_pcie_0,
   1548		   &slv_xs_pcie_1,
   1549		   &slv_xs_pcie_2,
   1550		   &slv_xs_pcie_3 }
   1551};
   1552
   1553static struct qcom_icc_bcm bcm_sn9 = {
   1554	.name = "SN9",
   1555	.num_nodes = 1,
   1556	.nodes = { &mas_qnm_aggre1_noc }
   1557};
   1558
   1559static struct qcom_icc_bcm bcm_sn11 = {
   1560	.name = "SN11",
   1561	.num_nodes = 1,
   1562	.nodes = { &mas_qnm_aggre2_noc }
   1563};
   1564
   1565static struct qcom_icc_bcm bcm_sn14 = {
   1566	.name = "SN14",
   1567	.num_nodes = 1,
   1568	.nodes = { &slv_qns_pcie_mem_noc }
   1569};
   1570
   1571static struct qcom_icc_bcm bcm_sn15 = {
   1572	.name = "SN15",
   1573	.keepalive = true,
   1574	.num_nodes = 1,
   1575	.nodes = { &mas_qnm_gemnoc }
   1576};
   1577
   1578static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
   1579	&bcm_sn3,
   1580	&bcm_ce0,
   1581};
   1582
   1583static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
   1584	&bcm_sn14,
   1585	&bcm_ce0,
   1586};
   1587
   1588static struct qcom_icc_bcm * const camnoc_virt_bcms[] = {
   1589	&bcm_mm1,
   1590};
   1591
   1592static struct qcom_icc_bcm * const compute_noc_bcms[] = {
   1593	&bcm_co0,
   1594	&bcm_co2,
   1595};
   1596
   1597static struct qcom_icc_bcm * const config_noc_bcms[] = {
   1598	&bcm_cn0,
   1599};
   1600
   1601static struct qcom_icc_bcm * const gem_noc_bcms[] = {
   1602	&bcm_sh0,
   1603	&bcm_sh2,
   1604	&bcm_sh3,
   1605};
   1606
   1607static struct qcom_icc_bcm * const ipa_virt_bcms[] = {
   1608	&bcm_ip0,
   1609};
   1610
   1611static struct qcom_icc_bcm * const mc_virt_bcms[] = {
   1612	&bcm_mc0,
   1613	&bcm_acv,
   1614};
   1615
   1616static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
   1617	&bcm_mm0,
   1618	&bcm_mm1,
   1619	&bcm_mm2,
   1620};
   1621
   1622static struct qcom_icc_bcm * const system_noc_bcms[] = {
   1623	&bcm_sn0,
   1624	&bcm_sn1,
   1625	&bcm_sn2,
   1626	&bcm_sn3,
   1627	&bcm_sn4,
   1628	&bcm_sn8,
   1629	&bcm_sn9,
   1630	&bcm_sn11,
   1631	&bcm_sn15,
   1632};
   1633
   1634static struct qcom_icc_node * const aggre1_noc_nodes[] = {
   1635	[MASTER_A1NOC_CFG] = &mas_qhm_a1noc_cfg,
   1636	[MASTER_UFS_CARD] = &mas_xm_ufs_card,
   1637	[MASTER_UFS_GEN4] = &mas_xm_ufs_g4,
   1638	[MASTER_UFS_MEM] = &mas_xm_ufs_mem,
   1639	[MASTER_USB3] = &mas_xm_usb3_0,
   1640	[MASTER_USB3_1] = &mas_xm_usb3_1,
   1641	[MASTER_USB3_2] = &mas_xm_usb3_2,
   1642	[A1NOC_SNOC_SLV] = &slv_qns_a1noc_snoc,
   1643	[SLAVE_SERVICE_A1NOC] = &slv_srvc_aggre1_noc,
   1644};
   1645
   1646static struct qcom_icc_node * const aggre2_noc_nodes[] = {
   1647	[MASTER_A2NOC_CFG] = &mas_qhm_a2noc_cfg,
   1648	[MASTER_QDSS_BAM] = &mas_qhm_qdss_bam,
   1649	[MASTER_QSPI_0] = &mas_qhm_qspi,
   1650	[MASTER_QSPI_1] = &mas_qhm_qspi1,
   1651	[MASTER_QUP_0] = &mas_qhm_qup0,
   1652	[MASTER_QUP_1] = &mas_qhm_qup1,
   1653	[MASTER_QUP_2] = &mas_qhm_qup2,
   1654	[MASTER_SENSORS_AHB] = &mas_qhm_sensorss_ahb,
   1655	[MASTER_CRYPTO_CORE_0] = &mas_qxm_crypto,
   1656	[MASTER_IPA] = &mas_qxm_ipa,
   1657	[MASTER_EMAC] = &mas_xm_emac,
   1658	[MASTER_PCIE] = &mas_xm_pcie3_0,
   1659	[MASTER_PCIE_1] = &mas_xm_pcie3_1,
   1660	[MASTER_PCIE_2] = &mas_xm_pcie3_2,
   1661	[MASTER_PCIE_3] = &mas_xm_pcie3_3,
   1662	[MASTER_QDSS_ETR] = &mas_xm_qdss_etr,
   1663	[MASTER_SDCC_2] = &mas_xm_sdc2,
   1664	[MASTER_SDCC_4] = &mas_xm_sdc4,
   1665	[A2NOC_SNOC_SLV] = &slv_qns_a2noc_snoc,
   1666	[SLAVE_ANOC_PCIE_GEM_NOC] = &slv_qns_pcie_mem_noc,
   1667	[SLAVE_SERVICE_A2NOC] = &slv_srvc_aggre2_noc,
   1668};
   1669
   1670static struct qcom_icc_node * const camnoc_virt_nodes[] = {
   1671	[MASTER_CAMNOC_HF0_UNCOMP] = &mas_qxm_camnoc_hf0_uncomp,
   1672	[MASTER_CAMNOC_HF1_UNCOMP] = &mas_qxm_camnoc_hf1_uncomp,
   1673	[MASTER_CAMNOC_SF_UNCOMP] = &mas_qxm_camnoc_sf_uncomp,
   1674	[SLAVE_CAMNOC_UNCOMP] = &slv_qns_camnoc_uncomp,
   1675};
   1676
   1677static struct qcom_icc_node * const compute_noc_nodes[] = {
   1678	[MASTER_NPU] = &mas_qnm_npu,
   1679	[SLAVE_CDSP_MEM_NOC] = &slv_qns_cdsp_mem_noc,
   1680};
   1681
   1682static struct qcom_icc_node * const config_noc_nodes[] = {
   1683	[SNOC_CNOC_MAS] = &mas_qnm_snoc,
   1684	[SLAVE_A1NOC_CFG] = &slv_qhs_a1_noc_cfg,
   1685	[SLAVE_A2NOC_CFG] = &slv_qhs_a2_noc_cfg,
   1686	[SLAVE_AHB2PHY_CENTER] = &slv_qhs_ahb2phy_refgen_center,
   1687	[SLAVE_AHB2PHY_EAST] = &slv_qhs_ahb2phy_refgen_east,
   1688	[SLAVE_AHB2PHY_WEST] = &slv_qhs_ahb2phy_refgen_west,
   1689	[SLAVE_AHB2PHY_SOUTH] = &slv_qhs_ahb2phy_south,
   1690	[SLAVE_AOP] = &slv_qhs_aop,
   1691	[SLAVE_AOSS] = &slv_qhs_aoss,
   1692	[SLAVE_CAMERA_CFG] = &slv_qhs_camera_cfg,
   1693	[SLAVE_CLK_CTL] = &slv_qhs_clk_ctl,
   1694	[SLAVE_CDSP_CFG] = &slv_qhs_compute_dsp,
   1695	[SLAVE_RBCPR_CX_CFG] = &slv_qhs_cpr_cx,
   1696	[SLAVE_RBCPR_MMCX_CFG] = &slv_qhs_cpr_mmcx,
   1697	[SLAVE_RBCPR_MX_CFG] = &slv_qhs_cpr_mx,
   1698	[SLAVE_CRYPTO_0_CFG] = &slv_qhs_crypto0_cfg,
   1699	[SLAVE_CNOC_DDRSS] = &slv_qhs_ddrss_cfg,
   1700	[SLAVE_DISPLAY_CFG] = &slv_qhs_display_cfg,
   1701	[SLAVE_EMAC_CFG] = &slv_qhs_emac_cfg,
   1702	[SLAVE_GLM] = &slv_qhs_glm,
   1703	[SLAVE_GRAPHICS_3D_CFG] = &slv_qhs_gpuss_cfg,
   1704	[SLAVE_IMEM_CFG] = &slv_qhs_imem_cfg,
   1705	[SLAVE_IPA_CFG] = &slv_qhs_ipa,
   1706	[SLAVE_CNOC_MNOC_CFG] = &slv_qhs_mnoc_cfg,
   1707	[SLAVE_NPU_CFG] = &slv_qhs_npu_cfg,
   1708	[SLAVE_PCIE_0_CFG] = &slv_qhs_pcie0_cfg,
   1709	[SLAVE_PCIE_1_CFG] = &slv_qhs_pcie1_cfg,
   1710	[SLAVE_PCIE_2_CFG] = &slv_qhs_pcie2_cfg,
   1711	[SLAVE_PCIE_3_CFG] = &slv_qhs_pcie3_cfg,
   1712	[SLAVE_PDM] = &slv_qhs_pdm,
   1713	[SLAVE_PIMEM_CFG] = &slv_qhs_pimem_cfg,
   1714	[SLAVE_PRNG] = &slv_qhs_prng,
   1715	[SLAVE_QDSS_CFG] = &slv_qhs_qdss_cfg,
   1716	[SLAVE_QSPI_0] = &slv_qhs_qspi_0,
   1717	[SLAVE_QSPI_1] = &slv_qhs_qspi_1,
   1718	[SLAVE_QUP_1] = &slv_qhs_qupv3_east0,
   1719	[SLAVE_QUP_2] = &slv_qhs_qupv3_east1,
   1720	[SLAVE_QUP_0] = &slv_qhs_qupv3_west,
   1721	[SLAVE_SDCC_2] = &slv_qhs_sdc2,
   1722	[SLAVE_SDCC_4] = &slv_qhs_sdc4,
   1723	[SLAVE_SECURITY] = &slv_qhs_security,
   1724	[SLAVE_SNOC_CFG] = &slv_qhs_snoc_cfg,
   1725	[SLAVE_SPSS_CFG] = &slv_qhs_spss_cfg,
   1726	[SLAVE_TCSR] = &slv_qhs_tcsr,
   1727	[SLAVE_TLMM_EAST] = &slv_qhs_tlmm_east,
   1728	[SLAVE_TLMM_SOUTH] = &slv_qhs_tlmm_south,
   1729	[SLAVE_TLMM_WEST] = &slv_qhs_tlmm_west,
   1730	[SLAVE_TSIF] = &slv_qhs_tsif,
   1731	[SLAVE_UFS_CARD_CFG] = &slv_qhs_ufs_card_cfg,
   1732	[SLAVE_UFS_MEM_0_CFG] = &slv_qhs_ufs_mem0_cfg,
   1733	[SLAVE_UFS_MEM_1_CFG] = &slv_qhs_ufs_mem1_cfg,
   1734	[SLAVE_USB3] = &slv_qhs_usb3_0,
   1735	[SLAVE_USB3_1] = &slv_qhs_usb3_1,
   1736	[SLAVE_USB3_2] = &slv_qhs_usb3_2,
   1737	[SLAVE_VENUS_CFG] = &slv_qhs_venus_cfg,
   1738	[SLAVE_VSENSE_CTRL_CFG] = &slv_qhs_vsense_ctrl_cfg,
   1739	[SLAVE_SERVICE_CNOC] = &slv_srvc_cnoc,
   1740};
   1741
   1742static struct qcom_icc_node * const dc_noc_nodes[] = {
   1743	[MASTER_CNOC_DC_NOC] = &mas_qhm_cnoc_dc_noc,
   1744	[SLAVE_GEM_NOC_CFG] = &slv_qhs_gemnoc,
   1745	[SLAVE_LLCC_CFG] = &slv_qhs_llcc,
   1746};
   1747
   1748static struct qcom_icc_node * const gem_noc_nodes[] = {
   1749	[MASTER_AMPSS_M0] = &mas_acm_apps,
   1750	[MASTER_GPU_TCU] = &mas_acm_gpu_tcu,
   1751	[MASTER_SYS_TCU] = &mas_acm_sys_tcu,
   1752	[MASTER_GEM_NOC_CFG] = &mas_qhm_gemnoc_cfg,
   1753	[MASTER_COMPUTE_NOC] = &mas_qnm_cmpnoc,
   1754	[MASTER_GRAPHICS_3D] = &mas_qnm_gpu,
   1755	[MASTER_MNOC_HF_MEM_NOC] = &mas_qnm_mnoc_hf,
   1756	[MASTER_MNOC_SF_MEM_NOC] = &mas_qnm_mnoc_sf,
   1757	[MASTER_GEM_NOC_PCIE_SNOC] = &mas_qnm_pcie,
   1758	[MASTER_SNOC_GC_MEM_NOC] = &mas_qnm_snoc_gc,
   1759	[MASTER_SNOC_SF_MEM_NOC] = &mas_qnm_snoc_sf,
   1760	[MASTER_ECC] = &mas_qxm_ecc,
   1761	[SLAVE_MSS_PROC_MS_MPU_CFG] = &slv_qhs_mdsp_ms_mpu_cfg,
   1762	[SLAVE_ECC] = &slv_qns_ecc,
   1763	[SLAVE_GEM_NOC_SNOC] = &slv_qns_gem_noc_snoc,
   1764	[SLAVE_LLCC] = &slv_qns_llcc,
   1765	[SLAVE_SERVICE_GEM_NOC] = &slv_srvc_gemnoc,
   1766	[SLAVE_SERVICE_GEM_NOC_1] = &slv_srvc_gemnoc1,
   1767};
   1768
   1769static struct qcom_icc_node * const ipa_virt_nodes[] = {
   1770	[MASTER_IPA_CORE] = &mas_ipa_core_master,
   1771	[SLAVE_IPA_CORE] = &slv_ipa_core_slave,
   1772};
   1773
   1774static struct qcom_icc_node * const mc_virt_nodes[] = {
   1775	[MASTER_LLCC] = &mas_llcc_mc,
   1776	[SLAVE_EBI_CH0] = &slv_ebi,
   1777};
   1778
   1779static struct qcom_icc_node * const mmss_noc_nodes[] = {
   1780	[MASTER_CNOC_MNOC_CFG] = &mas_qhm_mnoc_cfg,
   1781	[MASTER_CAMNOC_HF0] = &mas_qxm_camnoc_hf0,
   1782	[MASTER_CAMNOC_HF1] = &mas_qxm_camnoc_hf1,
   1783	[MASTER_CAMNOC_SF] = &mas_qxm_camnoc_sf,
   1784	[MASTER_MDP_PORT0] = &mas_qxm_mdp0,
   1785	[MASTER_MDP_PORT1] = &mas_qxm_mdp1,
   1786	[MASTER_ROTATOR] = &mas_qxm_rot,
   1787	[MASTER_VIDEO_P0] = &mas_qxm_venus0,
   1788	[MASTER_VIDEO_P1] = &mas_qxm_venus1,
   1789	[MASTER_VIDEO_PROC] = &mas_qxm_venus_arm9,
   1790	[SLAVE_MNOC_SF_MEM_NOC] = &slv_qns2_mem_noc,
   1791	[SLAVE_MNOC_HF_MEM_NOC] = &slv_qns_mem_noc_hf,
   1792	[SLAVE_SERVICE_MNOC] = &slv_srvc_mnoc,
   1793};
   1794
   1795static struct qcom_icc_node * const system_noc_nodes[] = {
   1796	[MASTER_SNOC_CFG] = &mas_qhm_snoc_cfg,
   1797	[A1NOC_SNOC_MAS] = &mas_qnm_aggre1_noc,
   1798	[A2NOC_SNOC_MAS] = &mas_qnm_aggre2_noc,
   1799	[MASTER_GEM_NOC_SNOC] = &mas_qnm_gemnoc,
   1800	[MASTER_PIMEM] = &mas_qxm_pimem,
   1801	[MASTER_GIC] = &mas_xm_gic,
   1802	[SLAVE_APPSS] = &slv_qhs_apss,
   1803	[SNOC_CNOC_SLV] = &slv_qns_cnoc,
   1804	[SLAVE_SNOC_GEM_NOC_GC] = &slv_qns_gemnoc_gc,
   1805	[SLAVE_SNOC_GEM_NOC_SF] = &slv_qns_gemnoc_sf,
   1806	[SLAVE_OCIMEM] = &slv_qxs_imem,
   1807	[SLAVE_PIMEM] = &slv_qxs_pimem,
   1808	[SLAVE_SERVICE_SNOC] = &slv_srvc_snoc,
   1809	[SLAVE_QDSS_STM] = &slv_xs_qdss_stm,
   1810	[SLAVE_TCU] = &slv_xs_sys_tcu_cfg,
   1811};
   1812
   1813static const struct qcom_icc_desc sc8180x_aggre1_noc = {
   1814	.nodes = aggre1_noc_nodes,
   1815	.num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
   1816	.bcms = aggre1_noc_bcms,
   1817	.num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
   1818};
   1819
   1820static const struct qcom_icc_desc sc8180x_aggre2_noc = {
   1821	.nodes = aggre2_noc_nodes,
   1822	.num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
   1823	.bcms = aggre2_noc_bcms,
   1824	.num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
   1825};
   1826
   1827static const struct qcom_icc_desc sc8180x_camnoc_virt = {
   1828	.nodes = camnoc_virt_nodes,
   1829	.num_nodes = ARRAY_SIZE(camnoc_virt_nodes),
   1830	.bcms = camnoc_virt_bcms,
   1831	.num_bcms = ARRAY_SIZE(camnoc_virt_bcms),
   1832};
   1833
   1834static const struct qcom_icc_desc sc8180x_compute_noc = {
   1835	.nodes = compute_noc_nodes,
   1836	.num_nodes = ARRAY_SIZE(compute_noc_nodes),
   1837	.bcms = compute_noc_bcms,
   1838	.num_bcms = ARRAY_SIZE(compute_noc_bcms),
   1839};
   1840
   1841static const struct qcom_icc_desc sc8180x_config_noc = {
   1842	.nodes = config_noc_nodes,
   1843	.num_nodes = ARRAY_SIZE(config_noc_nodes),
   1844	.bcms = config_noc_bcms,
   1845	.num_bcms = ARRAY_SIZE(config_noc_bcms),
   1846};
   1847
   1848static const struct qcom_icc_desc sc8180x_dc_noc = {
   1849	.nodes = dc_noc_nodes,
   1850	.num_nodes = ARRAY_SIZE(dc_noc_nodes),
   1851};
   1852
   1853static const struct qcom_icc_desc sc8180x_gem_noc  = {
   1854	.nodes = gem_noc_nodes,
   1855	.num_nodes = ARRAY_SIZE(gem_noc_nodes),
   1856	.bcms = gem_noc_bcms,
   1857	.num_bcms = ARRAY_SIZE(gem_noc_bcms),
   1858};
   1859
   1860static const struct qcom_icc_desc sc8180x_ipa_virt  = {
   1861	.nodes = ipa_virt_nodes,
   1862	.num_nodes = ARRAY_SIZE(ipa_virt_nodes),
   1863	.bcms = ipa_virt_bcms,
   1864	.num_bcms = ARRAY_SIZE(ipa_virt_bcms),
   1865};
   1866
   1867static const struct qcom_icc_desc sc8180x_mc_virt  = {
   1868	.nodes = mc_virt_nodes,
   1869	.num_nodes = ARRAY_SIZE(mc_virt_nodes),
   1870	.bcms = mc_virt_bcms,
   1871	.num_bcms = ARRAY_SIZE(mc_virt_bcms),
   1872};
   1873
   1874static const struct qcom_icc_desc sc8180x_mmss_noc  = {
   1875	.nodes = mmss_noc_nodes,
   1876	.num_nodes = ARRAY_SIZE(mmss_noc_nodes),
   1877	.bcms = mmss_noc_bcms,
   1878	.num_bcms = ARRAY_SIZE(mmss_noc_bcms),
   1879};
   1880
   1881static const struct qcom_icc_desc sc8180x_system_noc  = {
   1882	.nodes = system_noc_nodes,
   1883	.num_nodes = ARRAY_SIZE(system_noc_nodes),
   1884	.bcms = system_noc_bcms,
   1885	.num_bcms = ARRAY_SIZE(system_noc_bcms),
   1886};
   1887
   1888static struct qcom_icc_bcm * const qup_virt_bcms[] = {
   1889	&bcm_qup0,
   1890};
   1891
   1892static struct qcom_icc_node *qup_virt_nodes[] = {
   1893	[MASTER_QUP_CORE_0] = &mas_qup_core_0,
   1894	[MASTER_QUP_CORE_1] = &mas_qup_core_1,
   1895	[MASTER_QUP_CORE_2] = &mas_qup_core_2,
   1896	[SLAVE_QUP_CORE_0] = &slv_qup_core_0,
   1897	[SLAVE_QUP_CORE_1] = &slv_qup_core_1,
   1898	[SLAVE_QUP_CORE_2] = &slv_qup_core_2,
   1899};
   1900
   1901static const struct qcom_icc_desc sc8180x_qup_virt = {
   1902	.nodes = qup_virt_nodes,
   1903	.num_nodes = ARRAY_SIZE(qup_virt_nodes),
   1904	.bcms = qup_virt_bcms,
   1905	.num_bcms = ARRAY_SIZE(qup_virt_bcms),
   1906};
   1907
   1908static const struct of_device_id qnoc_of_match[] = {
   1909	{ .compatible = "qcom,sc8180x-aggre1-noc", .data = &sc8180x_aggre1_noc },
   1910	{ .compatible = "qcom,sc8180x-aggre2-noc", .data = &sc8180x_aggre2_noc },
   1911	{ .compatible = "qcom,sc8180x-camnoc-virt", .data = &sc8180x_camnoc_virt },
   1912	{ .compatible = "qcom,sc8180x-compute-noc", .data = &sc8180x_compute_noc, },
   1913	{ .compatible = "qcom,sc8180x-config-noc", .data = &sc8180x_config_noc },
   1914	{ .compatible = "qcom,sc8180x-dc-noc", .data = &sc8180x_dc_noc },
   1915	{ .compatible = "qcom,sc8180x-gem-noc", .data = &sc8180x_gem_noc },
   1916	{ .compatible = "qcom,sc8180x-ipa-virt", .data = &sc8180x_ipa_virt },
   1917	{ .compatible = "qcom,sc8180x-mc-virt", .data = &sc8180x_mc_virt },
   1918	{ .compatible = "qcom,sc8180x-mmss-noc", .data = &sc8180x_mmss_noc },
   1919	{ .compatible = "qcom,sc8180x-qup-virt", .data = &sc8180x_qup_virt },
   1920	{ .compatible = "qcom,sc8180x-system-noc", .data = &sc8180x_system_noc },
   1921	{ }
   1922};
   1923MODULE_DEVICE_TABLE(of, qnoc_of_match);
   1924
   1925static struct platform_driver qnoc_driver = {
   1926	.probe = qcom_icc_rpmh_probe,
   1927	.remove = qcom_icc_rpmh_remove,
   1928	.driver = {
   1929		.name = "qnoc-sc8180x",
   1930		.of_match_table = qnoc_of_match,
   1931		.sync_state = icc_sync_state,
   1932	},
   1933};
   1934module_platform_driver(qnoc_driver);
   1935
   1936MODULE_DESCRIPTION("Qualcomm sc8180x NoC driver");
   1937MODULE_LICENSE("GPL v2");