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

Merge branch 'icc-sa8775p' into icc-next

Add Epoch Subsystem (EPSS) L3 provider support on SA8775P SoCs.

Current interconnect framework is based on static IDs for creating node
and registering with framework. This becomes a limitation for topologies
where there are multiple instances of same interconnect provider.
Modified interconnect framework APIs to create and link icc node with
dynamic IDs, this will help to overcome the dependency on static IDs.

* icc-sa8775p
dt-bindings: interconnect: Add EPSS L3 compatible for SA8775P
interconnect: core: Add dynamic id allocation support
interconnect: qcom: Add multidev EPSS L3 support
interconnect: qcom: icc-rpmh: Add dynamic icc node id support
interconnect: qcom: sa8775p: Add dynamic icc node id support

Link: https://lore.kernel.org/r/20250415095343.32125-1-quic_rlaggysh@quicinc.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>

+475 -635
+1
Documentation/devicetree/bindings/interconnect/qcom,osm-l3.yaml
··· 28 28 - const: qcom,osm-l3 29 29 - items: 30 30 - enum: 31 + - qcom,sa8775p-epss-l3 31 32 - qcom,sc7280-epss-l3 32 33 - qcom,sc8280xp-epss-l3 33 34 - qcom,sm6375-cpucp-l3
+81 -1
drivers/interconnect/core.c
··· 20 20 21 21 #include "internal.h" 22 22 23 + #define ICC_DYN_ID_START 10000 24 + 23 25 #define CREATE_TRACE_POINTS 24 26 #include "trace.h" 25 27 ··· 828 826 if (!node) 829 827 return ERR_PTR(-ENOMEM); 830 828 831 - id = idr_alloc(&icc_idr, node, id, id + 1, GFP_KERNEL); 829 + /* dynamic id allocation */ 830 + if (id == ICC_ALLOC_DYN_ID) 831 + id = idr_alloc(&icc_idr, node, ICC_DYN_ID_START, 0, GFP_KERNEL); 832 + else 833 + id = idr_alloc(&icc_idr, node, id, id + 1, GFP_KERNEL); 834 + 832 835 if (id < 0) { 833 836 WARN(1, "%s: couldn't get idr\n", __func__); 834 837 kfree(node); ··· 844 837 845 838 return node; 846 839 } 840 + 841 + /** 842 + * icc_node_create_dyn() - create a node with dynamic id 843 + * 844 + * Return: icc_node pointer on success, or ERR_PTR() on error 845 + */ 846 + struct icc_node *icc_node_create_dyn(void) 847 + { 848 + struct icc_node *node; 849 + 850 + mutex_lock(&icc_lock); 851 + 852 + node = icc_node_create_nolock(ICC_ALLOC_DYN_ID); 853 + 854 + mutex_unlock(&icc_lock); 855 + 856 + return node; 857 + } 858 + EXPORT_SYMBOL_GPL(icc_node_create_dyn); 847 859 848 860 /** 849 861 * icc_node_create() - create a node ··· 909 883 kfree(node); 910 884 } 911 885 EXPORT_SYMBOL_GPL(icc_node_destroy); 886 + 887 + /** 888 + * icc_link_nodes() - create link between two nodes 889 + * @src_node: source node 890 + * @dst_node: destination node 891 + * 892 + * Create a link between two nodes. The nodes might belong to different 893 + * interconnect providers and the @dst_node might not exist (if the 894 + * provider driver has not probed yet). So just create the @dst_node 895 + * and when the actual provider driver is probed, the rest of the node 896 + * data is filled. 897 + * 898 + * Return: 0 on success, or an error code otherwise 899 + */ 900 + int icc_link_nodes(struct icc_node *src_node, struct icc_node **dst_node) 901 + { 902 + struct icc_node **new; 903 + int ret = 0; 904 + 905 + if (!src_node->provider) 906 + return -EINVAL; 907 + 908 + mutex_lock(&icc_lock); 909 + 910 + if (!*dst_node) { 911 + *dst_node = icc_node_create_nolock(ICC_ALLOC_DYN_ID); 912 + 913 + if (IS_ERR(*dst_node)) { 914 + ret = PTR_ERR(*dst_node); 915 + goto out; 916 + } 917 + } 918 + 919 + new = krealloc(src_node->links, 920 + (src_node->num_links + 1) * sizeof(*src_node->links), 921 + GFP_KERNEL); 922 + if (!new) { 923 + ret = -ENOMEM; 924 + goto out; 925 + } 926 + 927 + src_node->links = new; 928 + src_node->links[src_node->num_links++] = *dst_node; 929 + 930 + out: 931 + mutex_unlock(&icc_lock); 932 + 933 + return ret; 934 + } 935 + EXPORT_SYMBOL_GPL(icc_link_nodes); 912 936 913 937 /** 914 938 * icc_link_create() - create a link between two nodes ··· 1037 961 } 1038 962 node->avg_bw = node->init_avg; 1039 963 node->peak_bw = node->init_peak; 964 + 965 + if (node->id >= ICC_DYN_ID_START) 966 + node->name = devm_kasprintf(provider->dev, GFP_KERNEL, "%s@%s", 967 + node->name, dev_name(provider->dev)); 1040 968 1041 969 if (node->avg_bw || node->peak_bw) { 1042 970 if (provider->pre_aggregate)
+14 -3
drivers/interconnect/qcom/icc-rpmh.c
··· 280 280 if (!qn) 281 281 continue; 282 282 283 - node = icc_node_create(qn->id); 283 + if (desc->alloc_dyn_id) { 284 + if (!qn->node) 285 + qn->node = icc_node_create_dyn(); 286 + node = qn->node; 287 + } else { 288 + node = icc_node_create(qn->id); 289 + } 290 + 284 291 if (IS_ERR(node)) { 285 292 ret = PTR_ERR(node); 286 293 goto err_remove_nodes; ··· 297 290 node->data = qn; 298 291 icc_node_add(node, provider); 299 292 300 - for (j = 0; j < qn->num_links; j++) 301 - icc_link_create(node, qn->links[j]); 293 + for (j = 0; j < qn->num_links; j++) { 294 + if (desc->alloc_dyn_id) 295 + icc_link_nodes(node, &qn->link_nodes[j]->node); 296 + else 297 + icc_link_create(node, qn->links[j]); 298 + } 302 299 303 300 data->nodes[i] = node; 304 301 }
+5
drivers/interconnect/qcom/icc-rpmh.h
··· 83 83 * @name: the node name used in debugfs 84 84 * @links: an array of nodes where we can go next while traversing 85 85 * @id: a unique node identifier 86 + * @link_nodes: links associated with this node 87 + * @node: icc_node associated with this node 86 88 * @num_links: the total number of @links 87 89 * @channels: num of channels at this node 88 90 * @buswidth: width of the interconnect between a node and the bus ··· 98 96 const char *name; 99 97 u16 links[MAX_LINKS]; 100 98 u16 id; 99 + struct qcom_icc_node **link_nodes; 100 + struct icc_node *node; 101 101 u16 num_links; 102 102 u16 channels; 103 103 u16 buswidth; ··· 158 154 struct qcom_icc_bcm * const *bcms; 159 155 size_t num_bcms; 160 156 bool qos_requires_clocks; 157 + bool alloc_dyn_id; 161 158 }; 162 159 163 160 int qcom_icc_aggregate(struct icc_node *node, u32 tag, u32 avg_bw,
+12 -26
drivers/interconnect/qcom/osm-l3.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 /* 3 3 * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. 4 + * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved. 4 5 */ 5 6 6 7 #include <linux/args.h> ··· 33 32 #define EPSS_REG_FREQ_LUT 0x100 34 33 #define EPSS_REG_PERF_STATE 0x320 35 34 36 - #define OSM_L3_MAX_LINKS 1 37 - 38 35 #define to_osm_l3_provider(_provider) \ 39 36 container_of(_provider, struct qcom_osm_l3_icc_provider, provider) 40 37 ··· 47 48 /** 48 49 * struct qcom_osm_l3_node - Qualcomm specific interconnect nodes 49 50 * @name: the node name used in debugfs 50 - * @links: an array of nodes where we can go next while traversing 51 - * @id: a unique node identifier 52 - * @num_links: the total number of @links 53 51 * @buswidth: width of the interconnect between a node and the bus 54 52 */ 55 53 struct qcom_osm_l3_node { 56 54 const char *name; 57 - u16 links[OSM_L3_MAX_LINKS]; 58 - u16 id; 59 - u16 num_links; 60 55 u16 buswidth; 61 56 }; 62 57 ··· 62 69 unsigned int reg_perf_state; 63 70 }; 64 71 65 - enum { 66 - OSM_L3_MASTER_NODE = 10000, 67 - OSM_L3_SLAVE_NODE, 68 - }; 69 - 70 - #define DEFINE_QNODE(_name, _id, _buswidth, ...) \ 72 + #define DEFINE_QNODE(_name, _buswidth) \ 71 73 static const struct qcom_osm_l3_node _name = { \ 72 74 .name = #_name, \ 73 - .id = _id, \ 74 75 .buswidth = _buswidth, \ 75 - .num_links = COUNT_ARGS(__VA_ARGS__), \ 76 - .links = { __VA_ARGS__ }, \ 77 76 } 78 77 79 - DEFINE_QNODE(osm_l3_master, OSM_L3_MASTER_NODE, 16, OSM_L3_SLAVE_NODE); 80 - DEFINE_QNODE(osm_l3_slave, OSM_L3_SLAVE_NODE, 16); 78 + DEFINE_QNODE(osm_l3_slave, 16); 79 + DEFINE_QNODE(osm_l3_master, 16); 81 80 82 81 static const struct qcom_osm_l3_node * const osm_l3_nodes[] = { 83 82 [MASTER_OSM_L3_APPS] = &osm_l3_master, 84 83 [SLAVE_OSM_L3] = &osm_l3_slave, 85 84 }; 86 85 87 - DEFINE_QNODE(epss_l3_master, OSM_L3_MASTER_NODE, 32, OSM_L3_SLAVE_NODE); 88 - DEFINE_QNODE(epss_l3_slave, OSM_L3_SLAVE_NODE, 32); 86 + DEFINE_QNODE(epss_l3_slave, 32); 87 + DEFINE_QNODE(epss_l3_master, 32); 89 88 90 89 static const struct qcom_osm_l3_node * const epss_l3_nodes[] = { 91 90 [MASTER_EPSS_L3_APPS] = &epss_l3_master, ··· 227 242 228 243 icc_provider_init(provider); 229 244 245 + /* Create nodes */ 230 246 for (i = 0; i < num_nodes; i++) { 231 - size_t j; 247 + node = icc_node_create_dyn(); 232 248 233 - node = icc_node_create(qnodes[i]->id); 234 249 if (IS_ERR(node)) { 235 250 ret = PTR_ERR(node); 236 251 goto err; ··· 241 256 node->data = (void *)qnodes[i]; 242 257 icc_node_add(node, provider); 243 258 244 - for (j = 0; j < qnodes[i]->num_links; j++) 245 - icc_link_create(node, qnodes[i]->links[j]); 246 - 247 259 data->nodes[i] = node; 248 260 } 261 + 262 + /* Create link */ 263 + icc_link_nodes(data->nodes[MASTER_OSM_L3_APPS], &data->nodes[SLAVE_OSM_L3]); 249 264 250 265 ret = icc_provider_register(provider); 251 266 if (ret) ··· 263 278 static const struct of_device_id osm_l3_of_match[] = { 264 279 { .compatible = "qcom,epss-l3", .data = &epss_l3_l3_vote }, 265 280 { .compatible = "qcom,osm-l3", .data = &osm_l3 }, 281 + { .compatible = "qcom,sa8775p-epss-l3", .data = &epss_l3_perf_state }, 266 282 { .compatible = "qcom,sc7180-osm-l3", .data = &osm_l3 }, 267 283 { .compatible = "qcom,sc7280-epss-l3", .data = &epss_l3_perf_state }, 268 284 { .compatible = "qcom,sdm845-osm-l3", .data = &osm_l3 },
+347 -605
drivers/interconnect/qcom/sa8775p.c
··· 15 15 #include "bcm-voter.h" 16 16 #include "icc-rpmh.h" 17 17 18 - #define SA8775P_MASTER_GPU_TCU 0 19 - #define SA8775P_MASTER_PCIE_TCU 1 20 - #define SA8775P_MASTER_SYS_TCU 2 21 - #define SA8775P_MASTER_APPSS_PROC 3 22 - #define SA8775P_MASTER_LLCC 4 23 - #define SA8775P_MASTER_CNOC_LPASS_AG_NOC 5 24 - #define SA8775P_MASTER_GIC_AHB 6 25 - #define SA8775P_MASTER_CDSP_NOC_CFG 7 26 - #define SA8775P_MASTER_CDSPB_NOC_CFG 8 27 - #define SA8775P_MASTER_QDSS_BAM 9 28 - #define SA8775P_MASTER_QUP_0 10 29 - #define SA8775P_MASTER_QUP_1 11 30 - #define SA8775P_MASTER_QUP_2 12 31 - #define SA8775P_MASTER_A1NOC_SNOC 13 32 - #define SA8775P_MASTER_A2NOC_SNOC 14 33 - #define SA8775P_MASTER_CAMNOC_HF 15 34 - #define SA8775P_MASTER_CAMNOC_ICP 16 35 - #define SA8775P_MASTER_CAMNOC_SF 17 36 - #define SA8775P_MASTER_COMPUTE_NOC 18 37 - #define SA8775P_MASTER_COMPUTE_NOC_1 19 38 - #define SA8775P_MASTER_CNOC_A2NOC 20 39 - #define SA8775P_MASTER_CNOC_DC_NOC 21 40 - #define SA8775P_MASTER_GEM_NOC_CFG 22 41 - #define SA8775P_MASTER_GEM_NOC_CNOC 23 42 - #define SA8775P_MASTER_GEM_NOC_PCIE_SNOC 24 43 - #define SA8775P_MASTER_GPDSP_SAIL 25 44 - #define SA8775P_MASTER_GFX3D 26 45 - #define SA8775P_MASTER_LPASS_ANOC 27 46 - #define SA8775P_MASTER_MDP0 28 47 - #define SA8775P_MASTER_MDP1 29 48 - #define SA8775P_MASTER_MDP_CORE1_0 30 49 - #define SA8775P_MASTER_MDP_CORE1_1 31 50 - #define SA8775P_MASTER_MNOC_HF_MEM_NOC 32 51 - #define SA8775P_MASTER_CNOC_MNOC_HF_CFG 33 52 - #define SA8775P_MASTER_MNOC_SF_MEM_NOC 34 53 - #define SA8775P_MASTER_CNOC_MNOC_SF_CFG 35 54 - #define SA8775P_MASTER_ANOC_PCIE_GEM_NOC 36 55 - #define SA8775P_MASTER_SNOC_CFG 37 56 - #define SA8775P_MASTER_SNOC_GC_MEM_NOC 38 57 - #define SA8775P_MASTER_SNOC_SF_MEM_NOC 39 58 - #define SA8775P_MASTER_VIDEO_P0 40 59 - #define SA8775P_MASTER_VIDEO_P1 41 60 - #define SA8775P_MASTER_VIDEO_PROC 42 61 - #define SA8775P_MASTER_VIDEO_V_PROC 43 62 - #define SA8775P_MASTER_QUP_CORE_0 44 63 - #define SA8775P_MASTER_QUP_CORE_1 45 64 - #define SA8775P_MASTER_QUP_CORE_2 46 65 - #define SA8775P_MASTER_QUP_CORE_3 47 66 - #define SA8775P_MASTER_CRYPTO_CORE0 48 67 - #define SA8775P_MASTER_CRYPTO_CORE1 49 68 - #define SA8775P_MASTER_DSP0 50 69 - #define SA8775P_MASTER_DSP1 51 70 - #define SA8775P_MASTER_IPA 52 71 - #define SA8775P_MASTER_LPASS_PROC 53 72 - #define SA8775P_MASTER_CDSP_PROC 54 73 - #define SA8775P_MASTER_CDSP_PROC_B 55 74 - #define SA8775P_MASTER_PIMEM 56 75 - #define SA8775P_MASTER_QUP_3 57 76 - #define SA8775P_MASTER_EMAC 58 77 - #define SA8775P_MASTER_EMAC_1 59 78 - #define SA8775P_MASTER_GIC 60 79 - #define SA8775P_MASTER_PCIE_0 61 80 - #define SA8775P_MASTER_PCIE_1 62 81 - #define SA8775P_MASTER_QDSS_ETR_0 63 82 - #define SA8775P_MASTER_QDSS_ETR_1 64 83 - #define SA8775P_MASTER_SDC 65 84 - #define SA8775P_MASTER_UFS_CARD 66 85 - #define SA8775P_MASTER_UFS_MEM 67 86 - #define SA8775P_MASTER_USB2 68 87 - #define SA8775P_MASTER_USB3_0 69 88 - #define SA8775P_MASTER_USB3_1 70 89 - #define SA8775P_SLAVE_EBI1 512 90 - #define SA8775P_SLAVE_AHB2PHY_0 513 91 - #define SA8775P_SLAVE_AHB2PHY_1 514 92 - #define SA8775P_SLAVE_AHB2PHY_2 515 93 - #define SA8775P_SLAVE_AHB2PHY_3 516 94 - #define SA8775P_SLAVE_ANOC_THROTTLE_CFG 517 95 - #define SA8775P_SLAVE_AOSS 518 96 - #define SA8775P_SLAVE_APPSS 519 97 - #define SA8775P_SLAVE_BOOT_ROM 520 98 - #define SA8775P_SLAVE_CAMERA_CFG 521 99 - #define SA8775P_SLAVE_CAMERA_NRT_THROTTLE_CFG 522 100 - #define SA8775P_SLAVE_CAMERA_RT_THROTTLE_CFG 523 101 - #define SA8775P_SLAVE_CLK_CTL 524 102 - #define SA8775P_SLAVE_CDSP_CFG 525 103 - #define SA8775P_SLAVE_CDSP1_CFG 526 104 - #define SA8775P_SLAVE_RBCPR_CX_CFG 527 105 - #define SA8775P_SLAVE_RBCPR_MMCX_CFG 528 106 - #define SA8775P_SLAVE_RBCPR_MX_CFG 529 107 - #define SA8775P_SLAVE_CPR_NSPCX 530 108 - #define SA8775P_SLAVE_CRYPTO_0_CFG 531 109 - #define SA8775P_SLAVE_CX_RDPM 532 110 - #define SA8775P_SLAVE_DISPLAY_CFG 533 111 - #define SA8775P_SLAVE_DISPLAY_RT_THROTTLE_CFG 534 112 - #define SA8775P_SLAVE_DISPLAY1_CFG 535 113 - #define SA8775P_SLAVE_DISPLAY1_RT_THROTTLE_CFG 536 114 - #define SA8775P_SLAVE_EMAC_CFG 537 115 - #define SA8775P_SLAVE_EMAC1_CFG 538 116 - #define SA8775P_SLAVE_GP_DSP0_CFG 539 117 - #define SA8775P_SLAVE_GP_DSP1_CFG 540 118 - #define SA8775P_SLAVE_GPDSP0_THROTTLE_CFG 541 119 - #define SA8775P_SLAVE_GPDSP1_THROTTLE_CFG 542 120 - #define SA8775P_SLAVE_GPU_TCU_THROTTLE_CFG 543 121 - #define SA8775P_SLAVE_GFX3D_CFG 544 122 - #define SA8775P_SLAVE_HWKM 545 123 - #define SA8775P_SLAVE_IMEM_CFG 546 124 - #define SA8775P_SLAVE_IPA_CFG 547 125 - #define SA8775P_SLAVE_IPC_ROUTER_CFG 548 126 - #define SA8775P_SLAVE_LLCC_CFG 549 127 - #define SA8775P_SLAVE_LPASS 550 128 - #define SA8775P_SLAVE_LPASS_CORE_CFG 551 129 - #define SA8775P_SLAVE_LPASS_LPI_CFG 552 130 - #define SA8775P_SLAVE_LPASS_MPU_CFG 553 131 - #define SA8775P_SLAVE_LPASS_THROTTLE_CFG 554 132 - #define SA8775P_SLAVE_LPASS_TOP_CFG 555 133 - #define SA8775P_SLAVE_MX_RDPM 556 134 - #define SA8775P_SLAVE_MXC_RDPM 557 135 - #define SA8775P_SLAVE_PCIE_0_CFG 558 136 - #define SA8775P_SLAVE_PCIE_1_CFG 559 137 - #define SA8775P_SLAVE_PCIE_RSC_CFG 560 138 - #define SA8775P_SLAVE_PCIE_TCU_THROTTLE_CFG 561 139 - #define SA8775P_SLAVE_PCIE_THROTTLE_CFG 562 140 - #define SA8775P_SLAVE_PDM 563 141 - #define SA8775P_SLAVE_PIMEM_CFG 564 142 - #define SA8775P_SLAVE_PKA_WRAPPER_CFG 565 143 - #define SA8775P_SLAVE_QDSS_CFG 566 144 - #define SA8775P_SLAVE_QM_CFG 567 145 - #define SA8775P_SLAVE_QM_MPU_CFG 568 146 - #define SA8775P_SLAVE_QUP_0 569 147 - #define SA8775P_SLAVE_QUP_1 570 148 - #define SA8775P_SLAVE_QUP_2 571 149 - #define SA8775P_SLAVE_QUP_3 572 150 - #define SA8775P_SLAVE_SAIL_THROTTLE_CFG 573 151 - #define SA8775P_SLAVE_SDC1 574 152 - #define SA8775P_SLAVE_SECURITY 575 153 - #define SA8775P_SLAVE_SNOC_THROTTLE_CFG 576 154 - #define SA8775P_SLAVE_TCSR 577 155 - #define SA8775P_SLAVE_TLMM 578 156 - #define SA8775P_SLAVE_TSC_CFG 579 157 - #define SA8775P_SLAVE_UFS_CARD_CFG 580 158 - #define SA8775P_SLAVE_UFS_MEM_CFG 581 159 - #define SA8775P_SLAVE_USB2 582 160 - #define SA8775P_SLAVE_USB3_0 583 161 - #define SA8775P_SLAVE_USB3_1 584 162 - #define SA8775P_SLAVE_VENUS_CFG 585 163 - #define SA8775P_SLAVE_VENUS_CVP_THROTTLE_CFG 586 164 - #define SA8775P_SLAVE_VENUS_V_CPU_THROTTLE_CFG 587 165 - #define SA8775P_SLAVE_VENUS_VCODEC_THROTTLE_CFG 588 166 - #define SA8775P_SLAVE_A1NOC_SNOC 589 167 - #define SA8775P_SLAVE_A2NOC_SNOC 590 168 - #define SA8775P_SLAVE_DDRSS_CFG 591 169 - #define SA8775P_SLAVE_GEM_NOC_CNOC 592 170 - #define SA8775P_SLAVE_GEM_NOC_CFG 593 171 - #define SA8775P_SLAVE_SNOC_GEM_NOC_GC 594 172 - #define SA8775P_SLAVE_SNOC_GEM_NOC_SF 595 173 - #define SA8775P_SLAVE_GP_DSP_SAIL_NOC 596 174 - #define SA8775P_SLAVE_GPDSP_NOC_CFG 597 175 - #define SA8775P_SLAVE_HCP_A 598 176 - #define SA8775P_SLAVE_LLCC 599 177 - #define SA8775P_SLAVE_MNOC_HF_MEM_NOC 600 178 - #define SA8775P_SLAVE_MNOC_SF_MEM_NOC 601 179 - #define SA8775P_SLAVE_CNOC_MNOC_HF_CFG 602 180 - #define SA8775P_SLAVE_CNOC_MNOC_SF_CFG 603 181 - #define SA8775P_SLAVE_CDSP_MEM_NOC 604 182 - #define SA8775P_SLAVE_CDSPB_MEM_NOC 605 183 - #define SA8775P_SLAVE_HCP_B 606 184 - #define SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 607 185 - #define SA8775P_SLAVE_PCIE_ANOC_CFG 608 186 - #define SA8775P_SLAVE_ANOC_PCIE_GEM_NOC 609 187 - #define SA8775P_SLAVE_SNOC_CFG 610 188 - #define SA8775P_SLAVE_LPASS_SNOC 611 189 - #define SA8775P_SLAVE_QUP_CORE_0 612 190 - #define SA8775P_SLAVE_QUP_CORE_1 613 191 - #define SA8775P_SLAVE_QUP_CORE_2 614 192 - #define SA8775P_SLAVE_QUP_CORE_3 615 193 - #define SA8775P_SLAVE_BOOT_IMEM 616 194 - #define SA8775P_SLAVE_IMEM 617 195 - #define SA8775P_SLAVE_PIMEM 618 196 - #define SA8775P_SLAVE_SERVICE_NSP_NOC 619 197 - #define SA8775P_SLAVE_SERVICE_NSPB_NOC 620 198 - #define SA8775P_SLAVE_SERVICE_GEM_NOC_1 621 199 - #define SA8775P_SLAVE_SERVICE_MNOC_HF 622 200 - #define SA8775P_SLAVE_SERVICE_MNOC_SF 623 201 - #define SA8775P_SLAVE_SERVICES_LPASS_AML_NOC 624 202 - #define SA8775P_SLAVE_SERVICE_LPASS_AG_NOC 625 203 - #define SA8775P_SLAVE_SERVICE_GEM_NOC_2 626 204 - #define SA8775P_SLAVE_SERVICE_SNOC 627 205 - #define SA8775P_SLAVE_SERVICE_GEM_NOC 628 206 - #define SA8775P_SLAVE_SERVICE_GEM_NOC2 629 207 - #define SA8775P_SLAVE_PCIE_0 630 208 - #define SA8775P_SLAVE_PCIE_1 631 209 - #define SA8775P_SLAVE_QDSS_STM 632 210 - #define SA8775P_SLAVE_TCU 633 18 + static struct qcom_icc_node qxm_qup3; 19 + static struct qcom_icc_node xm_emac_0; 20 + static struct qcom_icc_node xm_emac_1; 21 + static struct qcom_icc_node xm_sdc1; 22 + static struct qcom_icc_node xm_ufs_mem; 23 + static struct qcom_icc_node xm_usb2_2; 24 + static struct qcom_icc_node xm_usb3_0; 25 + static struct qcom_icc_node xm_usb3_1; 26 + static struct qcom_icc_node qns_a1noc_snoc; 27 + static struct qcom_icc_node qhm_qdss_bam; 28 + static struct qcom_icc_node qhm_qup0; 29 + static struct qcom_icc_node qhm_qup1; 30 + static struct qcom_icc_node qhm_qup2; 31 + static struct qcom_icc_node qnm_cnoc_datapath; 32 + static struct qcom_icc_node qxm_crypto_0; 33 + static struct qcom_icc_node qxm_crypto_1; 34 + static struct qcom_icc_node qxm_ipa; 35 + static struct qcom_icc_node xm_qdss_etr_0; 36 + static struct qcom_icc_node xm_qdss_etr_1; 37 + static struct qcom_icc_node xm_ufs_card; 38 + static struct qcom_icc_node qns_a2noc_snoc; 39 + static struct qcom_icc_node qup0_core_master; 40 + static struct qcom_icc_node qup1_core_master; 41 + static struct qcom_icc_node qup2_core_master; 42 + static struct qcom_icc_node qup3_core_master; 43 + static struct qcom_icc_node qup0_core_slave; 44 + static struct qcom_icc_node qup1_core_slave; 45 + static struct qcom_icc_node qup2_core_slave; 46 + static struct qcom_icc_node qup3_core_slave; 47 + static struct qcom_icc_node qnm_gemnoc_cnoc; 48 + static struct qcom_icc_node qnm_gemnoc_pcie; 49 + static struct qcom_icc_node qhs_ahb2phy0; 50 + static struct qcom_icc_node qhs_ahb2phy1; 51 + static struct qcom_icc_node qhs_ahb2phy2; 52 + static struct qcom_icc_node qhs_ahb2phy3; 53 + static struct qcom_icc_node qhs_anoc_throttle_cfg; 54 + static struct qcom_icc_node qhs_aoss; 55 + static struct qcom_icc_node qhs_apss; 56 + static struct qcom_icc_node qhs_boot_rom; 57 + static struct qcom_icc_node qhs_camera_cfg; 58 + static struct qcom_icc_node qhs_camera_nrt_throttle_cfg; 59 + static struct qcom_icc_node qhs_camera_rt_throttle_cfg; 60 + static struct qcom_icc_node qhs_clk_ctl; 61 + static struct qcom_icc_node qhs_compute0_cfg; 62 + static struct qcom_icc_node qhs_compute1_cfg; 63 + static struct qcom_icc_node qhs_cpr_cx; 64 + static struct qcom_icc_node qhs_cpr_mmcx; 65 + static struct qcom_icc_node qhs_cpr_mx; 66 + static struct qcom_icc_node qhs_cpr_nspcx; 67 + static struct qcom_icc_node qhs_crypto0_cfg; 68 + static struct qcom_icc_node qhs_cx_rdpm; 69 + static struct qcom_icc_node qhs_display0_cfg; 70 + static struct qcom_icc_node qhs_display0_rt_throttle_cfg; 71 + static struct qcom_icc_node qhs_display1_cfg; 72 + static struct qcom_icc_node qhs_display1_rt_throttle_cfg; 73 + static struct qcom_icc_node qhs_emac0_cfg; 74 + static struct qcom_icc_node qhs_emac1_cfg; 75 + static struct qcom_icc_node qhs_gp_dsp0_cfg; 76 + static struct qcom_icc_node qhs_gp_dsp1_cfg; 77 + static struct qcom_icc_node qhs_gpdsp0_throttle_cfg; 78 + static struct qcom_icc_node qhs_gpdsp1_throttle_cfg; 79 + static struct qcom_icc_node qhs_gpu_tcu_throttle_cfg; 80 + static struct qcom_icc_node qhs_gpuss_cfg; 81 + static struct qcom_icc_node qhs_hwkm; 82 + static struct qcom_icc_node qhs_imem_cfg; 83 + static struct qcom_icc_node qhs_ipa; 84 + static struct qcom_icc_node qhs_ipc_router; 85 + static struct qcom_icc_node qhs_lpass_cfg; 86 + static struct qcom_icc_node qhs_lpass_throttle_cfg; 87 + static struct qcom_icc_node qhs_mx_rdpm; 88 + static struct qcom_icc_node qhs_mxc_rdpm; 89 + static struct qcom_icc_node qhs_pcie0_cfg; 90 + static struct qcom_icc_node qhs_pcie1_cfg; 91 + static struct qcom_icc_node qhs_pcie_rsc_cfg; 92 + static struct qcom_icc_node qhs_pcie_tcu_throttle_cfg; 93 + static struct qcom_icc_node qhs_pcie_throttle_cfg; 94 + static struct qcom_icc_node qhs_pdm; 95 + static struct qcom_icc_node qhs_pimem_cfg; 96 + static struct qcom_icc_node qhs_pke_wrapper_cfg; 97 + static struct qcom_icc_node qhs_qdss_cfg; 98 + static struct qcom_icc_node qhs_qm_cfg; 99 + static struct qcom_icc_node qhs_qm_mpu_cfg; 100 + static struct qcom_icc_node qhs_qup0; 101 + static struct qcom_icc_node qhs_qup1; 102 + static struct qcom_icc_node qhs_qup2; 103 + static struct qcom_icc_node qhs_qup3; 104 + static struct qcom_icc_node qhs_sail_throttle_cfg; 105 + static struct qcom_icc_node qhs_sdc1; 106 + static struct qcom_icc_node qhs_security; 107 + static struct qcom_icc_node qhs_snoc_throttle_cfg; 108 + static struct qcom_icc_node qhs_tcsr; 109 + static struct qcom_icc_node qhs_tlmm; 110 + static struct qcom_icc_node qhs_tsc_cfg; 111 + static struct qcom_icc_node qhs_ufs_card_cfg; 112 + static struct qcom_icc_node qhs_ufs_mem_cfg; 113 + static struct qcom_icc_node qhs_usb2_0; 114 + static struct qcom_icc_node qhs_usb3_0; 115 + static struct qcom_icc_node qhs_usb3_1; 116 + static struct qcom_icc_node qhs_venus_cfg; 117 + static struct qcom_icc_node qhs_venus_cvp_throttle_cfg; 118 + static struct qcom_icc_node qhs_venus_v_cpu_throttle_cfg; 119 + static struct qcom_icc_node qhs_venus_vcodec_throttle_cfg; 120 + static struct qcom_icc_node qns_ddrss_cfg; 121 + static struct qcom_icc_node qns_gpdsp_noc_cfg; 122 + static struct qcom_icc_node qns_mnoc_hf_cfg; 123 + static struct qcom_icc_node qns_mnoc_sf_cfg; 124 + static struct qcom_icc_node qns_pcie_anoc_cfg; 125 + static struct qcom_icc_node qns_snoc_cfg; 126 + static struct qcom_icc_node qxs_boot_imem; 127 + static struct qcom_icc_node qxs_imem; 128 + static struct qcom_icc_node qxs_pimem; 129 + static struct qcom_icc_node xs_pcie_0; 130 + static struct qcom_icc_node xs_pcie_1; 131 + static struct qcom_icc_node xs_qdss_stm; 132 + static struct qcom_icc_node xs_sys_tcu_cfg; 133 + static struct qcom_icc_node qnm_cnoc_dc_noc; 134 + static struct qcom_icc_node qhs_llcc; 135 + static struct qcom_icc_node qns_gemnoc; 136 + static struct qcom_icc_node alm_gpu_tcu; 137 + static struct qcom_icc_node alm_pcie_tcu; 138 + static struct qcom_icc_node alm_sys_tcu; 139 + static struct qcom_icc_node chm_apps; 140 + static struct qcom_icc_node qnm_cmpnoc0; 141 + static struct qcom_icc_node qnm_cmpnoc1; 142 + static struct qcom_icc_node qnm_gemnoc_cfg; 143 + static struct qcom_icc_node qnm_gpdsp_sail; 144 + static struct qcom_icc_node qnm_gpu; 145 + static struct qcom_icc_node qnm_mnoc_hf; 146 + static struct qcom_icc_node qnm_mnoc_sf; 147 + static struct qcom_icc_node qnm_pcie; 148 + static struct qcom_icc_node qnm_snoc_gc; 149 + static struct qcom_icc_node qnm_snoc_sf; 150 + static struct qcom_icc_node qns_gem_noc_cnoc; 151 + static struct qcom_icc_node qns_llcc; 152 + static struct qcom_icc_node qns_pcie; 153 + static struct qcom_icc_node srvc_even_gemnoc; 154 + static struct qcom_icc_node srvc_odd_gemnoc; 155 + static struct qcom_icc_node srvc_sys_gemnoc; 156 + static struct qcom_icc_node srvc_sys_gemnoc_2; 157 + static struct qcom_icc_node qxm_dsp0; 158 + static struct qcom_icc_node qxm_dsp1; 159 + static struct qcom_icc_node qns_gp_dsp_sail_noc; 160 + static struct qcom_icc_node qhm_config_noc; 161 + static struct qcom_icc_node qxm_lpass_dsp; 162 + static struct qcom_icc_node qhs_lpass_core; 163 + static struct qcom_icc_node qhs_lpass_lpi; 164 + static struct qcom_icc_node qhs_lpass_mpu; 165 + static struct qcom_icc_node qhs_lpass_top; 166 + static struct qcom_icc_node qns_sysnoc; 167 + static struct qcom_icc_node srvc_niu_aml_noc; 168 + static struct qcom_icc_node srvc_niu_lpass_agnoc; 169 + static struct qcom_icc_node llcc_mc; 170 + static struct qcom_icc_node ebi; 171 + static struct qcom_icc_node qnm_camnoc_hf; 172 + static struct qcom_icc_node qnm_camnoc_icp; 173 + static struct qcom_icc_node qnm_camnoc_sf; 174 + static struct qcom_icc_node qnm_mdp0_0; 175 + static struct qcom_icc_node qnm_mdp0_1; 176 + static struct qcom_icc_node qnm_mdp1_0; 177 + static struct qcom_icc_node qnm_mdp1_1; 178 + static struct qcom_icc_node qnm_mnoc_hf_cfg; 179 + static struct qcom_icc_node qnm_mnoc_sf_cfg; 180 + static struct qcom_icc_node qnm_video0; 181 + static struct qcom_icc_node qnm_video1; 182 + static struct qcom_icc_node qnm_video_cvp; 183 + static struct qcom_icc_node qnm_video_v_cpu; 184 + static struct qcom_icc_node qns_mem_noc_hf; 185 + static struct qcom_icc_node qns_mem_noc_sf; 186 + static struct qcom_icc_node srvc_mnoc_hf; 187 + static struct qcom_icc_node srvc_mnoc_sf; 188 + static struct qcom_icc_node qhm_nsp_noc_config; 189 + static struct qcom_icc_node qxm_nsp; 190 + static struct qcom_icc_node qns_hcp; 191 + static struct qcom_icc_node qns_nsp_gemnoc; 192 + static struct qcom_icc_node service_nsp_noc; 193 + static struct qcom_icc_node qhm_nspb_noc_config; 194 + static struct qcom_icc_node qxm_nspb; 195 + static struct qcom_icc_node qns_nspb_gemnoc; 196 + static struct qcom_icc_node qns_nspb_hcp; 197 + static struct qcom_icc_node service_nspb_noc; 198 + static struct qcom_icc_node xm_pcie3_0; 199 + static struct qcom_icc_node xm_pcie3_1; 200 + static struct qcom_icc_node qns_pcie_mem_noc; 201 + static struct qcom_icc_node qhm_gic; 202 + static struct qcom_icc_node qnm_aggre1_noc; 203 + static struct qcom_icc_node qnm_aggre2_noc; 204 + static struct qcom_icc_node qnm_lpass_noc; 205 + static struct qcom_icc_node qnm_snoc_cfg; 206 + static struct qcom_icc_node qxm_pimem; 207 + static struct qcom_icc_node xm_gic; 208 + static struct qcom_icc_node qns_gemnoc_gc; 209 + static struct qcom_icc_node qns_gemnoc_sf; 210 + static struct qcom_icc_node srvc_snoc; 211 211 212 212 static struct qcom_icc_node qxm_qup3 = { 213 213 .name = "qxm_qup3", 214 - .id = SA8775P_MASTER_QUP_3, 215 214 .channels = 1, 216 215 .buswidth = 8, 217 216 .num_links = 1, 218 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 217 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 219 218 }; 220 219 221 220 static struct qcom_icc_node xm_emac_0 = { 222 221 .name = "xm_emac_0", 223 - .id = SA8775P_MASTER_EMAC, 224 222 .channels = 1, 225 223 .buswidth = 8, 226 224 .num_links = 1, 227 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 225 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 228 226 }; 229 227 230 228 static struct qcom_icc_node xm_emac_1 = { 231 229 .name = "xm_emac_1", 232 - .id = SA8775P_MASTER_EMAC_1, 233 230 .channels = 1, 234 231 .buswidth = 8, 235 232 .num_links = 1, 236 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 233 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 237 234 }; 238 235 239 236 static struct qcom_icc_node xm_sdc1 = { 240 237 .name = "xm_sdc1", 241 - .id = SA8775P_MASTER_SDC, 242 238 .channels = 1, 243 239 .buswidth = 8, 244 240 .num_links = 1, 245 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 241 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 246 242 }; 247 243 248 244 static struct qcom_icc_node xm_ufs_mem = { 249 245 .name = "xm_ufs_mem", 250 - .id = SA8775P_MASTER_UFS_MEM, 251 246 .channels = 1, 252 247 .buswidth = 8, 253 248 .num_links = 1, 254 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 249 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 255 250 }; 256 251 257 252 static struct qcom_icc_node xm_usb2_2 = { 258 253 .name = "xm_usb2_2", 259 - .id = SA8775P_MASTER_USB2, 260 254 .channels = 1, 261 255 .buswidth = 8, 262 256 .num_links = 1, 263 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 257 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 264 258 }; 265 259 266 260 static struct qcom_icc_node xm_usb3_0 = { 267 261 .name = "xm_usb3_0", 268 - .id = SA8775P_MASTER_USB3_0, 269 262 .channels = 1, 270 263 .buswidth = 8, 271 264 .num_links = 1, 272 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 265 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 273 266 }; 274 267 275 268 static struct qcom_icc_node xm_usb3_1 = { 276 269 .name = "xm_usb3_1", 277 - .id = SA8775P_MASTER_USB3_1, 278 270 .channels = 1, 279 271 .buswidth = 8, 280 272 .num_links = 1, 281 - .links = { SA8775P_SLAVE_A1NOC_SNOC }, 273 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a1noc_snoc }, 282 274 }; 283 275 284 276 static struct qcom_icc_node qhm_qdss_bam = { 285 277 .name = "qhm_qdss_bam", 286 - .id = SA8775P_MASTER_QDSS_BAM, 287 278 .channels = 1, 288 279 .buswidth = 4, 289 280 .num_links = 1, 290 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 281 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 291 282 }; 292 283 293 284 static struct qcom_icc_node qhm_qup0 = { 294 285 .name = "qhm_qup0", 295 - .id = SA8775P_MASTER_QUP_0, 296 286 .channels = 1, 297 287 .buswidth = 4, 298 288 .num_links = 1, 299 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 289 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 300 290 }; 301 291 302 292 static struct qcom_icc_node qhm_qup1 = { 303 293 .name = "qhm_qup1", 304 - .id = SA8775P_MASTER_QUP_1, 305 294 .channels = 1, 306 295 .buswidth = 4, 307 296 .num_links = 1, 308 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 297 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 309 298 }; 310 299 311 300 static struct qcom_icc_node qhm_qup2 = { 312 301 .name = "qhm_qup2", 313 - .id = SA8775P_MASTER_QUP_2, 314 302 .channels = 1, 315 303 .buswidth = 4, 316 304 .num_links = 1, 317 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 305 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 318 306 }; 319 307 320 308 static struct qcom_icc_node qnm_cnoc_datapath = { 321 309 .name = "qnm_cnoc_datapath", 322 - .id = SA8775P_MASTER_CNOC_A2NOC, 323 310 .channels = 1, 324 311 .buswidth = 8, 325 312 .num_links = 1, 326 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 313 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 327 314 }; 328 315 329 316 static struct qcom_icc_node qxm_crypto_0 = { 330 317 .name = "qxm_crypto_0", 331 - .id = SA8775P_MASTER_CRYPTO_CORE0, 332 318 .channels = 1, 333 319 .buswidth = 8, 334 320 .num_links = 1, 335 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 321 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 336 322 }; 337 323 338 324 static struct qcom_icc_node qxm_crypto_1 = { 339 325 .name = "qxm_crypto_1", 340 - .id = SA8775P_MASTER_CRYPTO_CORE1, 341 326 .channels = 1, 342 327 .buswidth = 8, 343 328 .num_links = 1, 344 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 329 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 345 330 }; 346 331 347 332 static struct qcom_icc_node qxm_ipa = { 348 333 .name = "qxm_ipa", 349 - .id = SA8775P_MASTER_IPA, 350 334 .channels = 1, 351 335 .buswidth = 8, 352 336 .num_links = 1, 353 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 337 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 354 338 }; 355 339 356 340 static struct qcom_icc_node xm_qdss_etr_0 = { 357 341 .name = "xm_qdss_etr_0", 358 - .id = SA8775P_MASTER_QDSS_ETR_0, 359 342 .channels = 1, 360 343 .buswidth = 8, 361 344 .num_links = 1, 362 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 345 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 363 346 }; 364 347 365 348 static struct qcom_icc_node xm_qdss_etr_1 = { 366 349 .name = "xm_qdss_etr_1", 367 - .id = SA8775P_MASTER_QDSS_ETR_1, 368 350 .channels = 1, 369 351 .buswidth = 8, 370 352 .num_links = 1, 371 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 353 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 372 354 }; 373 355 374 356 static struct qcom_icc_node xm_ufs_card = { 375 357 .name = "xm_ufs_card", 376 - .id = SA8775P_MASTER_UFS_CARD, 377 358 .channels = 1, 378 359 .buswidth = 8, 379 360 .num_links = 1, 380 - .links = { SA8775P_SLAVE_A2NOC_SNOC }, 361 + .link_nodes = (struct qcom_icc_node *[]) { &qns_a2noc_snoc }, 381 362 }; 382 363 383 364 static struct qcom_icc_node qup0_core_master = { 384 365 .name = "qup0_core_master", 385 - .id = SA8775P_MASTER_QUP_CORE_0, 386 366 .channels = 1, 387 367 .buswidth = 4, 388 368 .num_links = 1, 389 - .links = { SA8775P_SLAVE_QUP_CORE_0 }, 369 + .link_nodes = (struct qcom_icc_node *[]) { &qup0_core_slave }, 390 370 }; 391 371 392 372 static struct qcom_icc_node qup1_core_master = { 393 373 .name = "qup1_core_master", 394 - .id = SA8775P_MASTER_QUP_CORE_1, 395 374 .channels = 1, 396 375 .buswidth = 4, 397 376 .num_links = 1, 398 - .links = { SA8775P_SLAVE_QUP_CORE_1 }, 377 + .link_nodes = (struct qcom_icc_node *[]) { &qup1_core_slave }, 399 378 }; 400 379 401 380 static struct qcom_icc_node qup2_core_master = { 402 381 .name = "qup2_core_master", 403 - .id = SA8775P_MASTER_QUP_CORE_2, 404 382 .channels = 1, 405 383 .buswidth = 4, 406 384 .num_links = 1, 407 - .links = { SA8775P_SLAVE_QUP_CORE_2 }, 385 + .link_nodes = (struct qcom_icc_node *[]) { &qup2_core_slave }, 408 386 }; 409 387 410 388 static struct qcom_icc_node qup3_core_master = { 411 389 .name = "qup3_core_master", 412 - .id = SA8775P_MASTER_QUP_CORE_3, 413 390 .channels = 1, 414 391 .buswidth = 4, 415 392 .num_links = 1, 416 - .links = { SA8775P_SLAVE_QUP_CORE_3 }, 393 + .link_nodes = (struct qcom_icc_node *[]) { &qup3_core_slave }, 417 394 }; 418 395 419 396 static struct qcom_icc_node qnm_gemnoc_cnoc = { 420 397 .name = "qnm_gemnoc_cnoc", 421 - .id = SA8775P_MASTER_GEM_NOC_CNOC, 422 398 .channels = 1, 423 399 .buswidth = 16, 424 400 .num_links = 82, 425 - .links = { SA8775P_SLAVE_AHB2PHY_0, 426 - SA8775P_SLAVE_AHB2PHY_1, 427 - SA8775P_SLAVE_AHB2PHY_2, 428 - SA8775P_SLAVE_AHB2PHY_3, 429 - SA8775P_SLAVE_ANOC_THROTTLE_CFG, 430 - SA8775P_SLAVE_AOSS, 431 - SA8775P_SLAVE_APPSS, 432 - SA8775P_SLAVE_BOOT_ROM, 433 - SA8775P_SLAVE_CAMERA_CFG, 434 - SA8775P_SLAVE_CAMERA_NRT_THROTTLE_CFG, 435 - SA8775P_SLAVE_CAMERA_RT_THROTTLE_CFG, 436 - SA8775P_SLAVE_CLK_CTL, 437 - SA8775P_SLAVE_CDSP_CFG, 438 - SA8775P_SLAVE_CDSP1_CFG, 439 - SA8775P_SLAVE_RBCPR_CX_CFG, 440 - SA8775P_SLAVE_RBCPR_MMCX_CFG, 441 - SA8775P_SLAVE_RBCPR_MX_CFG, 442 - SA8775P_SLAVE_CPR_NSPCX, 443 - SA8775P_SLAVE_CRYPTO_0_CFG, 444 - SA8775P_SLAVE_CX_RDPM, 445 - SA8775P_SLAVE_DISPLAY_CFG, 446 - SA8775P_SLAVE_DISPLAY_RT_THROTTLE_CFG, 447 - SA8775P_SLAVE_DISPLAY1_CFG, 448 - SA8775P_SLAVE_DISPLAY1_RT_THROTTLE_CFG, 449 - SA8775P_SLAVE_EMAC_CFG, 450 - SA8775P_SLAVE_EMAC1_CFG, 451 - SA8775P_SLAVE_GP_DSP0_CFG, 452 - SA8775P_SLAVE_GP_DSP1_CFG, 453 - SA8775P_SLAVE_GPDSP0_THROTTLE_CFG, 454 - SA8775P_SLAVE_GPDSP1_THROTTLE_CFG, 455 - SA8775P_SLAVE_GPU_TCU_THROTTLE_CFG, 456 - SA8775P_SLAVE_GFX3D_CFG, 457 - SA8775P_SLAVE_HWKM, 458 - SA8775P_SLAVE_IMEM_CFG, 459 - SA8775P_SLAVE_IPA_CFG, 460 - SA8775P_SLAVE_IPC_ROUTER_CFG, 461 - SA8775P_SLAVE_LPASS, 462 - SA8775P_SLAVE_LPASS_THROTTLE_CFG, 463 - SA8775P_SLAVE_MX_RDPM, 464 - SA8775P_SLAVE_MXC_RDPM, 465 - SA8775P_SLAVE_PCIE_0_CFG, 466 - SA8775P_SLAVE_PCIE_1_CFG, 467 - SA8775P_SLAVE_PCIE_RSC_CFG, 468 - SA8775P_SLAVE_PCIE_TCU_THROTTLE_CFG, 469 - SA8775P_SLAVE_PCIE_THROTTLE_CFG, 470 - SA8775P_SLAVE_PDM, 471 - SA8775P_SLAVE_PIMEM_CFG, 472 - SA8775P_SLAVE_PKA_WRAPPER_CFG, 473 - SA8775P_SLAVE_QDSS_CFG, 474 - SA8775P_SLAVE_QM_CFG, 475 - SA8775P_SLAVE_QM_MPU_CFG, 476 - SA8775P_SLAVE_QUP_0, 477 - SA8775P_SLAVE_QUP_1, 478 - SA8775P_SLAVE_QUP_2, 479 - SA8775P_SLAVE_QUP_3, 480 - SA8775P_SLAVE_SAIL_THROTTLE_CFG, 481 - SA8775P_SLAVE_SDC1, 482 - SA8775P_SLAVE_SECURITY, 483 - SA8775P_SLAVE_SNOC_THROTTLE_CFG, 484 - SA8775P_SLAVE_TCSR, 485 - SA8775P_SLAVE_TLMM, 486 - SA8775P_SLAVE_TSC_CFG, 487 - SA8775P_SLAVE_UFS_CARD_CFG, 488 - SA8775P_SLAVE_UFS_MEM_CFG, 489 - SA8775P_SLAVE_USB2, 490 - SA8775P_SLAVE_USB3_0, 491 - SA8775P_SLAVE_USB3_1, 492 - SA8775P_SLAVE_VENUS_CFG, 493 - SA8775P_SLAVE_VENUS_CVP_THROTTLE_CFG, 494 - SA8775P_SLAVE_VENUS_V_CPU_THROTTLE_CFG, 495 - SA8775P_SLAVE_VENUS_VCODEC_THROTTLE_CFG, 496 - SA8775P_SLAVE_DDRSS_CFG, 497 - SA8775P_SLAVE_GPDSP_NOC_CFG, 498 - SA8775P_SLAVE_CNOC_MNOC_HF_CFG, 499 - SA8775P_SLAVE_CNOC_MNOC_SF_CFG, 500 - SA8775P_SLAVE_PCIE_ANOC_CFG, 501 - SA8775P_SLAVE_SNOC_CFG, 502 - SA8775P_SLAVE_BOOT_IMEM, 503 - SA8775P_SLAVE_IMEM, 504 - SA8775P_SLAVE_PIMEM, 505 - SA8775P_SLAVE_QDSS_STM, 506 - SA8775P_SLAVE_TCU 507 - }, 401 + .link_nodes = (struct qcom_icc_node *[]) { &qhs_ahb2phy0, &qhs_ahb2phy1, 402 + &qhs_ahb2phy2, &qhs_ahb2phy3, 403 + &qhs_anoc_throttle_cfg, &qhs_aoss, 404 + &qhs_apss, &qhs_boot_rom, 405 + &qhs_camera_cfg, &qhs_camera_nrt_throttle_cfg, 406 + &qhs_camera_rt_throttle_cfg, &qhs_clk_ctl, 407 + &qhs_compute0_cfg, &qhs_compute1_cfg, 408 + &qhs_cpr_cx, &qhs_cpr_mmcx, 409 + &qhs_cpr_mx, &qhs_cpr_nspcx, 410 + &qhs_crypto0_cfg, &qhs_cx_rdpm, 411 + &qhs_display0_cfg, &qhs_display0_rt_throttle_cfg, 412 + &qhs_display1_cfg, &qhs_display1_rt_throttle_cfg, 413 + &qhs_emac0_cfg, &qhs_emac1_cfg, 414 + &qhs_gp_dsp0_cfg, &qhs_gp_dsp1_cfg, 415 + &qhs_gpdsp0_throttle_cfg, &qhs_gpdsp1_throttle_cfg, 416 + &qhs_gpu_tcu_throttle_cfg, &qhs_gpuss_cfg, 417 + &qhs_hwkm, &qhs_imem_cfg, 418 + &qhs_ipa, &qhs_ipc_router, 419 + &qhs_lpass_cfg, &qhs_lpass_throttle_cfg, 420 + &qhs_mx_rdpm, &qhs_mxc_rdpm, 421 + &qhs_pcie0_cfg, &qhs_pcie1_cfg, 422 + &qhs_pcie_rsc_cfg, &qhs_pcie_tcu_throttle_cfg, 423 + &qhs_pcie_throttle_cfg, &qhs_pdm, 424 + &qhs_pimem_cfg, &qhs_pke_wrapper_cfg, 425 + &qhs_qdss_cfg, &qhs_qm_cfg, 426 + &qhs_qm_mpu_cfg, &qhs_qup0, 427 + &qhs_qup1, &qhs_qup2, 428 + &qhs_qup3, &qhs_sail_throttle_cfg, 429 + &qhs_sdc1, &qhs_security, 430 + &qhs_snoc_throttle_cfg, &qhs_tcsr, 431 + &qhs_tlmm, &qhs_tsc_cfg, 432 + &qhs_ufs_card_cfg, &qhs_ufs_mem_cfg, 433 + &qhs_usb2_0, &qhs_usb3_0, 434 + &qhs_usb3_1, &qhs_venus_cfg, 435 + &qhs_venus_cvp_throttle_cfg, &qhs_venus_v_cpu_throttle_cfg, 436 + &qhs_venus_vcodec_throttle_cfg, &qns_ddrss_cfg, 437 + &qns_gpdsp_noc_cfg, &qns_mnoc_hf_cfg, 438 + &qns_mnoc_sf_cfg, &qns_pcie_anoc_cfg, 439 + &qns_snoc_cfg, &qxs_boot_imem, 440 + &qxs_imem, &qxs_pimem, 441 + &xs_qdss_stm, &xs_sys_tcu_cfg }, 508 442 }; 509 443 510 444 static struct qcom_icc_node qnm_gemnoc_pcie = { 511 445 .name = "qnm_gemnoc_pcie", 512 - .id = SA8775P_MASTER_GEM_NOC_PCIE_SNOC, 513 446 .channels = 1, 514 447 .buswidth = 16, 515 448 .num_links = 2, 516 - .links = { SA8775P_SLAVE_PCIE_0, 517 - SA8775P_SLAVE_PCIE_1 518 - }, 449 + .link_nodes = (struct qcom_icc_node *[]) { &xs_pcie_0, &xs_pcie_1 }, 519 450 }; 520 451 521 452 static struct qcom_icc_node qnm_cnoc_dc_noc = { 522 453 .name = "qnm_cnoc_dc_noc", 523 - .id = SA8775P_MASTER_CNOC_DC_NOC, 524 454 .channels = 1, 525 455 .buswidth = 4, 526 456 .num_links = 2, 527 - .links = { SA8775P_SLAVE_LLCC_CFG, 528 - SA8775P_SLAVE_GEM_NOC_CFG 529 - }, 457 + .link_nodes = (struct qcom_icc_node *[]) { &qhs_llcc, &qns_gemnoc }, 530 458 }; 531 459 532 460 static struct qcom_icc_node alm_gpu_tcu = { 533 461 .name = "alm_gpu_tcu", 534 - .id = SA8775P_MASTER_GPU_TCU, 535 462 .channels = 1, 536 463 .buswidth = 8, 537 464 .num_links = 2, 538 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 539 - SA8775P_SLAVE_LLCC 540 - }, 465 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 541 466 }; 542 467 543 468 static struct qcom_icc_node alm_pcie_tcu = { 544 469 .name = "alm_pcie_tcu", 545 - .id = SA8775P_MASTER_PCIE_TCU, 546 470 .channels = 1, 547 471 .buswidth = 8, 548 472 .num_links = 2, 549 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 550 - SA8775P_SLAVE_LLCC 551 - }, 473 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 552 474 }; 553 475 554 476 static struct qcom_icc_node alm_sys_tcu = { 555 477 .name = "alm_sys_tcu", 556 - .id = SA8775P_MASTER_SYS_TCU, 557 478 .channels = 1, 558 479 .buswidth = 8, 559 480 .num_links = 2, 560 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 561 - SA8775P_SLAVE_LLCC 562 - }, 481 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 563 482 }; 564 483 565 484 static struct qcom_icc_node chm_apps = { 566 485 .name = "chm_apps", 567 - .id = SA8775P_MASTER_APPSS_PROC, 568 486 .channels = 4, 569 487 .buswidth = 32, 570 488 .num_links = 3, 571 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 572 - SA8775P_SLAVE_LLCC, 573 - SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 574 - }, 489 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc, 490 + &qns_pcie }, 575 491 }; 576 492 577 493 static struct qcom_icc_node qnm_cmpnoc0 = { 578 494 .name = "qnm_cmpnoc0", 579 - .id = SA8775P_MASTER_COMPUTE_NOC, 580 495 .channels = 2, 581 496 .buswidth = 32, 582 497 .num_links = 2, 583 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 584 - SA8775P_SLAVE_LLCC 585 - }, 498 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 586 499 }; 587 500 588 501 static struct qcom_icc_node qnm_cmpnoc1 = { 589 502 .name = "qnm_cmpnoc1", 590 - .id = SA8775P_MASTER_COMPUTE_NOC_1, 591 503 .channels = 2, 592 504 .buswidth = 32, 593 505 .num_links = 2, 594 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 595 - SA8775P_SLAVE_LLCC 596 - }, 506 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 597 507 }; 598 508 599 509 static struct qcom_icc_node qnm_gemnoc_cfg = { 600 510 .name = "qnm_gemnoc_cfg", 601 - .id = SA8775P_MASTER_GEM_NOC_CFG, 602 511 .channels = 1, 603 512 .buswidth = 4, 604 513 .num_links = 4, 605 - .links = { SA8775P_SLAVE_SERVICE_GEM_NOC_1, 606 - SA8775P_SLAVE_SERVICE_GEM_NOC_2, 607 - SA8775P_SLAVE_SERVICE_GEM_NOC, 608 - SA8775P_SLAVE_SERVICE_GEM_NOC2 609 - }, 514 + .link_nodes = (struct qcom_icc_node *[]) { &srvc_even_gemnoc, &srvc_odd_gemnoc, 515 + &srvc_sys_gemnoc, &srvc_sys_gemnoc_2 }, 610 516 }; 611 517 612 518 static struct qcom_icc_node qnm_gpdsp_sail = { 613 519 .name = "qnm_gpdsp_sail", 614 - .id = SA8775P_MASTER_GPDSP_SAIL, 615 520 .channels = 1, 616 521 .buswidth = 16, 617 522 .num_links = 2, 618 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 619 - SA8775P_SLAVE_LLCC 620 - }, 523 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 621 524 }; 622 525 623 526 static struct qcom_icc_node qnm_gpu = { 624 527 .name = "qnm_gpu", 625 - .id = SA8775P_MASTER_GFX3D, 626 528 .channels = 2, 627 529 .buswidth = 32, 628 530 .num_links = 2, 629 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 630 - SA8775P_SLAVE_LLCC 631 - }, 531 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 632 532 }; 633 533 634 534 static struct qcom_icc_node qnm_mnoc_hf = { 635 535 .name = "qnm_mnoc_hf", 636 - .id = SA8775P_MASTER_MNOC_HF_MEM_NOC, 637 536 .channels = 2, 638 537 .buswidth = 32, 639 538 .num_links = 2, 640 - .links = { SA8775P_SLAVE_LLCC, 641 - SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 642 - }, 539 + .link_nodes = (struct qcom_icc_node *[]) { &qns_llcc, &qns_pcie }, 643 540 }; 644 541 645 542 static struct qcom_icc_node qnm_mnoc_sf = { 646 543 .name = "qnm_mnoc_sf", 647 - .id = SA8775P_MASTER_MNOC_SF_MEM_NOC, 648 544 .channels = 2, 649 545 .buswidth = 32, 650 546 .num_links = 3, 651 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 652 - SA8775P_SLAVE_LLCC, 653 - SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 654 - }, 547 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc, 548 + &qns_pcie }, 655 549 }; 656 550 657 551 static struct qcom_icc_node qnm_pcie = { 658 552 .name = "qnm_pcie", 659 - .id = SA8775P_MASTER_ANOC_PCIE_GEM_NOC, 660 553 .channels = 1, 661 554 .buswidth = 32, 662 555 .num_links = 2, 663 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 664 - SA8775P_SLAVE_LLCC 665 - }, 556 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc }, 666 557 }; 667 558 668 559 static struct qcom_icc_node qnm_snoc_gc = { 669 560 .name = "qnm_snoc_gc", 670 - .id = SA8775P_MASTER_SNOC_GC_MEM_NOC, 671 561 .channels = 1, 672 562 .buswidth = 8, 673 563 .num_links = 1, 674 - .links = { SA8775P_SLAVE_LLCC }, 564 + .link_nodes = (struct qcom_icc_node *[]) { &qns_llcc }, 675 565 }; 676 566 677 567 static struct qcom_icc_node qnm_snoc_sf = { 678 568 .name = "qnm_snoc_sf", 679 - .id = SA8775P_MASTER_SNOC_SF_MEM_NOC, 680 569 .channels = 1, 681 570 .buswidth = 16, 682 571 .num_links = 3, 683 - .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 684 - SA8775P_SLAVE_LLCC, 685 - SA8775P_SLAVE_GEM_NOC_PCIE_CNOC }, 572 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gem_noc_cnoc, &qns_llcc, 573 + &qns_pcie }, 686 574 }; 687 575 688 576 static struct qcom_icc_node qxm_dsp0 = { 689 577 .name = "qxm_dsp0", 690 - .id = SA8775P_MASTER_DSP0, 691 578 .channels = 1, 692 579 .buswidth = 16, 693 580 .num_links = 1, 694 - .links = { SA8775P_SLAVE_GP_DSP_SAIL_NOC }, 581 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gp_dsp_sail_noc }, 695 582 }; 696 583 697 584 static struct qcom_icc_node qxm_dsp1 = { 698 585 .name = "qxm_dsp1", 699 - .id = SA8775P_MASTER_DSP1, 700 586 .channels = 1, 701 587 .buswidth = 16, 702 588 .num_links = 1, 703 - .links = { SA8775P_SLAVE_GP_DSP_SAIL_NOC }, 589 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gp_dsp_sail_noc }, 704 590 }; 705 591 706 592 static struct qcom_icc_node qhm_config_noc = { 707 593 .name = "qhm_config_noc", 708 - .id = SA8775P_MASTER_CNOC_LPASS_AG_NOC, 709 594 .channels = 1, 710 595 .buswidth = 4, 711 596 .num_links = 6, 712 - .links = { SA8775P_SLAVE_LPASS_CORE_CFG, 713 - SA8775P_SLAVE_LPASS_LPI_CFG, 714 - SA8775P_SLAVE_LPASS_MPU_CFG, 715 - SA8775P_SLAVE_LPASS_TOP_CFG, 716 - SA8775P_SLAVE_SERVICES_LPASS_AML_NOC, 717 - SA8775P_SLAVE_SERVICE_LPASS_AG_NOC 718 - }, 597 + .link_nodes = (struct qcom_icc_node *[]) { &qhs_lpass_core, &qhs_lpass_lpi, 598 + &qhs_lpass_mpu, &qhs_lpass_top, 599 + &srvc_niu_aml_noc, &srvc_niu_lpass_agnoc }, 719 600 }; 720 601 721 602 static struct qcom_icc_node qxm_lpass_dsp = { 722 603 .name = "qxm_lpass_dsp", 723 - .id = SA8775P_MASTER_LPASS_PROC, 724 604 .channels = 1, 725 605 .buswidth = 8, 726 606 .num_links = 4, 727 - .links = { SA8775P_SLAVE_LPASS_TOP_CFG, 728 - SA8775P_SLAVE_LPASS_SNOC, 729 - SA8775P_SLAVE_SERVICES_LPASS_AML_NOC, 730 - SA8775P_SLAVE_SERVICE_LPASS_AG_NOC 731 - }, 607 + .link_nodes = (struct qcom_icc_node *[]) { &qhs_lpass_top, &qns_sysnoc, 608 + &srvc_niu_aml_noc, &srvc_niu_lpass_agnoc }, 732 609 }; 733 610 734 611 static struct qcom_icc_node llcc_mc = { 735 612 .name = "llcc_mc", 736 - .id = SA8775P_MASTER_LLCC, 737 613 .channels = 8, 738 614 .buswidth = 4, 739 615 .num_links = 1, 740 - .links = { SA8775P_SLAVE_EBI1 }, 616 + .link_nodes = (struct qcom_icc_node *[]) { &ebi }, 741 617 }; 742 618 743 619 static struct qcom_icc_node qnm_camnoc_hf = { 744 620 .name = "qnm_camnoc_hf", 745 - .id = SA8775P_MASTER_CAMNOC_HF, 746 621 .channels = 1, 747 622 .buswidth = 32, 748 623 .num_links = 1, 749 - .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 624 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_hf }, 750 625 }; 751 626 752 627 static struct qcom_icc_node qnm_camnoc_icp = { 753 628 .name = "qnm_camnoc_icp", 754 - .id = SA8775P_MASTER_CAMNOC_ICP, 755 629 .channels = 1, 756 630 .buswidth = 8, 757 631 .num_links = 1, 758 - .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 632 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_sf }, 759 633 }; 760 634 761 635 static struct qcom_icc_node qnm_camnoc_sf = { 762 636 .name = "qnm_camnoc_sf", 763 - .id = SA8775P_MASTER_CAMNOC_SF, 764 637 .channels = 1, 765 638 .buswidth = 32, 766 639 .num_links = 1, 767 - .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 640 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_sf }, 768 641 }; 769 642 770 643 static struct qcom_icc_node qnm_mdp0_0 = { 771 644 .name = "qnm_mdp0_0", 772 - .id = SA8775P_MASTER_MDP0, 773 645 .channels = 1, 774 646 .buswidth = 32, 775 647 .num_links = 1, 776 - .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 648 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_hf }, 777 649 }; 778 650 779 651 static struct qcom_icc_node qnm_mdp0_1 = { 780 652 .name = "qnm_mdp0_1", 781 - .id = SA8775P_MASTER_MDP1, 782 653 .channels = 1, 783 654 .buswidth = 32, 784 655 .num_links = 1, 785 - .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 656 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_hf }, 786 657 }; 787 658 788 659 static struct qcom_icc_node qnm_mdp1_0 = { 789 660 .name = "qnm_mdp1_0", 790 - .id = SA8775P_MASTER_MDP_CORE1_0, 791 661 .channels = 1, 792 662 .buswidth = 32, 793 663 .num_links = 1, 794 - .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 664 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_hf }, 795 665 }; 796 666 797 667 static struct qcom_icc_node qnm_mdp1_1 = { 798 668 .name = "qnm_mdp1_1", 799 - .id = SA8775P_MASTER_MDP_CORE1_1, 800 669 .channels = 1, 801 670 .buswidth = 32, 802 671 .num_links = 1, 803 - .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 672 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_hf }, 804 673 }; 805 674 806 675 static struct qcom_icc_node qnm_mnoc_hf_cfg = { 807 676 .name = "qnm_mnoc_hf_cfg", 808 - .id = SA8775P_MASTER_CNOC_MNOC_HF_CFG, 809 677 .channels = 1, 810 678 .buswidth = 4, 811 679 .num_links = 1, 812 - .links = { SA8775P_SLAVE_SERVICE_MNOC_HF }, 680 + .link_nodes = (struct qcom_icc_node *[]) { &srvc_mnoc_hf }, 813 681 }; 814 682 815 683 static struct qcom_icc_node qnm_mnoc_sf_cfg = { 816 684 .name = "qnm_mnoc_sf_cfg", 817 - .id = SA8775P_MASTER_CNOC_MNOC_SF_CFG, 818 685 .channels = 1, 819 686 .buswidth = 4, 820 687 .num_links = 1, 821 - .links = { SA8775P_SLAVE_SERVICE_MNOC_SF }, 688 + .link_nodes = (struct qcom_icc_node *[]) { &srvc_mnoc_sf }, 822 689 }; 823 690 824 691 static struct qcom_icc_node qnm_video0 = { 825 692 .name = "qnm_video0", 826 - .id = SA8775P_MASTER_VIDEO_P0, 827 693 .channels = 1, 828 694 .buswidth = 32, 829 695 .num_links = 1, 830 - .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 696 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_sf }, 831 697 }; 832 698 833 699 static struct qcom_icc_node qnm_video1 = { 834 700 .name = "qnm_video1", 835 - .id = SA8775P_MASTER_VIDEO_P1, 836 701 .channels = 1, 837 702 .buswidth = 32, 838 703 .num_links = 1, 839 - .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 704 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_sf }, 840 705 }; 841 706 842 707 static struct qcom_icc_node qnm_video_cvp = { 843 708 .name = "qnm_video_cvp", 844 - .id = SA8775P_MASTER_VIDEO_PROC, 845 709 .channels = 1, 846 710 .buswidth = 32, 847 711 .num_links = 1, 848 - .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 712 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_sf }, 849 713 }; 850 714 851 715 static struct qcom_icc_node qnm_video_v_cpu = { 852 716 .name = "qnm_video_v_cpu", 853 - .id = SA8775P_MASTER_VIDEO_V_PROC, 854 717 .channels = 1, 855 718 .buswidth = 8, 856 719 .num_links = 1, 857 - .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 720 + .link_nodes = (struct qcom_icc_node *[]) { &qns_mem_noc_sf }, 858 721 }; 859 722 860 723 static struct qcom_icc_node qhm_nsp_noc_config = { 861 724 .name = "qhm_nsp_noc_config", 862 - .id = SA8775P_MASTER_CDSP_NOC_CFG, 863 725 .channels = 1, 864 726 .buswidth = 4, 865 727 .num_links = 1, 866 - .links = { SA8775P_SLAVE_SERVICE_NSP_NOC }, 728 + .link_nodes = (struct qcom_icc_node *[]) { &service_nsp_noc }, 867 729 }; 868 730 869 731 static struct qcom_icc_node qxm_nsp = { 870 732 .name = "qxm_nsp", 871 - .id = SA8775P_MASTER_CDSP_PROC, 872 733 .channels = 2, 873 734 .buswidth = 32, 874 735 .num_links = 2, 875 - .links = { SA8775P_SLAVE_HCP_A, SLAVE_CDSP_MEM_NOC }, 736 + .link_nodes = (struct qcom_icc_node *[]) { &qns_hcp, &qns_nsp_gemnoc }, 876 737 }; 877 738 878 739 static struct qcom_icc_node qhm_nspb_noc_config = { 879 740 .name = "qhm_nspb_noc_config", 880 - .id = SA8775P_MASTER_CDSPB_NOC_CFG, 881 741 .channels = 1, 882 742 .buswidth = 4, 883 743 .num_links = 1, 884 - .links = { SA8775P_SLAVE_SERVICE_NSPB_NOC }, 744 + .link_nodes = (struct qcom_icc_node *[]) { &service_nspb_noc }, 885 745 }; 886 746 887 747 static struct qcom_icc_node qxm_nspb = { 888 748 .name = "qxm_nspb", 889 - .id = SA8775P_MASTER_CDSP_PROC_B, 890 749 .channels = 2, 891 750 .buswidth = 32, 892 751 .num_links = 2, 893 - .links = { SA8775P_SLAVE_HCP_B, SLAVE_CDSPB_MEM_NOC }, 752 + .link_nodes = (struct qcom_icc_node *[]) { &qns_nspb_hcp, &qns_nspb_gemnoc }, 894 753 }; 895 754 896 755 static struct qcom_icc_node xm_pcie3_0 = { 897 756 .name = "xm_pcie3_0", 898 - .id = SA8775P_MASTER_PCIE_0, 899 757 .channels = 1, 900 758 .buswidth = 16, 901 759 .num_links = 1, 902 - .links = { SA8775P_SLAVE_ANOC_PCIE_GEM_NOC }, 760 + .link_nodes = (struct qcom_icc_node *[]) { &qns_pcie_mem_noc }, 903 761 }; 904 762 905 763 static struct qcom_icc_node xm_pcie3_1 = { 906 764 .name = "xm_pcie3_1", 907 - .id = SA8775P_MASTER_PCIE_1, 908 765 .channels = 1, 909 766 .buswidth = 32, 910 767 .num_links = 1, 911 - .links = { SA8775P_SLAVE_ANOC_PCIE_GEM_NOC }, 768 + .link_nodes = (struct qcom_icc_node *[]) { &qns_pcie_mem_noc }, 912 769 }; 913 770 914 771 static struct qcom_icc_node qhm_gic = { 915 772 .name = "qhm_gic", 916 - .id = SA8775P_MASTER_GIC_AHB, 917 773 .channels = 1, 918 774 .buswidth = 4, 919 775 .num_links = 1, 920 - .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 776 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gemnoc_sf }, 921 777 }; 922 778 923 779 static struct qcom_icc_node qnm_aggre1_noc = { 924 780 .name = "qnm_aggre1_noc", 925 - .id = SA8775P_MASTER_A1NOC_SNOC, 926 781 .channels = 1, 927 782 .buswidth = 32, 928 783 .num_links = 1, 929 - .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 784 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gemnoc_sf }, 930 785 }; 931 786 932 787 static struct qcom_icc_node qnm_aggre2_noc = { 933 788 .name = "qnm_aggre2_noc", 934 - .id = SA8775P_MASTER_A2NOC_SNOC, 935 789 .channels = 1, 936 790 .buswidth = 16, 937 791 .num_links = 1, 938 - .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 792 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gemnoc_sf }, 939 793 }; 940 794 941 795 static struct qcom_icc_node qnm_lpass_noc = { 942 796 .name = "qnm_lpass_noc", 943 - .id = SA8775P_MASTER_LPASS_ANOC, 944 797 .channels = 1, 945 798 .buswidth = 16, 946 799 .num_links = 1, 947 - .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 800 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gemnoc_sf }, 948 801 }; 949 802 950 803 static struct qcom_icc_node qnm_snoc_cfg = { 951 804 .name = "qnm_snoc_cfg", 952 - .id = SA8775P_MASTER_SNOC_CFG, 953 805 .channels = 1, 954 806 .buswidth = 4, 955 807 .num_links = 1, 956 - .links = { SA8775P_SLAVE_SERVICE_SNOC }, 808 + .link_nodes = (struct qcom_icc_node *[]) { &srvc_snoc }, 957 809 }; 958 810 959 811 static struct qcom_icc_node qxm_pimem = { 960 812 .name = "qxm_pimem", 961 - .id = SA8775P_MASTER_PIMEM, 962 813 .channels = 1, 963 814 .buswidth = 8, 964 815 .num_links = 1, 965 - .links = { SA8775P_SLAVE_SNOC_GEM_NOC_GC }, 816 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gemnoc_gc }, 966 817 }; 967 818 968 819 static struct qcom_icc_node xm_gic = { 969 820 .name = "xm_gic", 970 - .id = SA8775P_MASTER_GIC, 971 821 .channels = 1, 972 822 .buswidth = 8, 973 823 .num_links = 1, 974 - .links = { SA8775P_SLAVE_SNOC_GEM_NOC_GC }, 824 + .link_nodes = (struct qcom_icc_node *[]) { &qns_gemnoc_gc }, 975 825 }; 976 826 977 827 static struct qcom_icc_node qns_a1noc_snoc = { 978 828 .name = "qns_a1noc_snoc", 979 - .id = SA8775P_SLAVE_A1NOC_SNOC, 980 829 .channels = 1, 981 830 .buswidth = 32, 982 831 .num_links = 1, 983 - .links = { SA8775P_MASTER_A1NOC_SNOC }, 832 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_aggre1_noc }, 984 833 }; 985 834 986 835 static struct qcom_icc_node qns_a2noc_snoc = { 987 836 .name = "qns_a2noc_snoc", 988 - .id = SA8775P_SLAVE_A2NOC_SNOC, 989 837 .channels = 1, 990 838 .buswidth = 16, 991 839 .num_links = 1, 992 - .links = { SA8775P_MASTER_A2NOC_SNOC }, 840 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_aggre2_noc }, 993 841 }; 994 842 995 843 static struct qcom_icc_node qup0_core_slave = { 996 844 .name = "qup0_core_slave", 997 - .id = SA8775P_SLAVE_QUP_CORE_0, 998 845 .channels = 1, 999 846 .buswidth = 4, 1000 847 }; 1001 848 1002 849 static struct qcom_icc_node qup1_core_slave = { 1003 850 .name = "qup1_core_slave", 1004 - .id = SA8775P_SLAVE_QUP_CORE_1, 1005 851 .channels = 1, 1006 852 .buswidth = 4, 1007 853 }; 1008 854 1009 855 static struct qcom_icc_node qup2_core_slave = { 1010 856 .name = "qup2_core_slave", 1011 - .id = SA8775P_SLAVE_QUP_CORE_2, 1012 857 .channels = 1, 1013 858 .buswidth = 4, 1014 859 }; 1015 860 1016 861 static struct qcom_icc_node qup3_core_slave = { 1017 862 .name = "qup3_core_slave", 1018 - .id = SA8775P_SLAVE_QUP_CORE_3, 1019 863 .channels = 1, 1020 864 .buswidth = 4, 1021 865 }; 1022 866 1023 867 static struct qcom_icc_node qhs_ahb2phy0 = { 1024 868 .name = "qhs_ahb2phy0", 1025 - .id = SA8775P_SLAVE_AHB2PHY_0, 1026 869 .channels = 1, 1027 870 .buswidth = 4, 1028 871 }; 1029 872 1030 873 static struct qcom_icc_node qhs_ahb2phy1 = { 1031 874 .name = "qhs_ahb2phy1", 1032 - .id = SA8775P_SLAVE_AHB2PHY_1, 1033 875 .channels = 1, 1034 876 .buswidth = 4, 1035 877 }; 1036 878 1037 879 static struct qcom_icc_node qhs_ahb2phy2 = { 1038 880 .name = "qhs_ahb2phy2", 1039 - .id = SA8775P_SLAVE_AHB2PHY_2, 1040 881 .channels = 1, 1041 882 .buswidth = 4, 1042 883 }; 1043 884 1044 885 static struct qcom_icc_node qhs_ahb2phy3 = { 1045 886 .name = "qhs_ahb2phy3", 1046 - .id = SA8775P_SLAVE_AHB2PHY_3, 1047 887 .channels = 1, 1048 888 .buswidth = 4, 1049 889 }; 1050 890 1051 891 static struct qcom_icc_node qhs_anoc_throttle_cfg = { 1052 892 .name = "qhs_anoc_throttle_cfg", 1053 - .id = SA8775P_SLAVE_ANOC_THROTTLE_CFG, 1054 893 .channels = 1, 1055 894 .buswidth = 4, 1056 895 }; 1057 896 1058 897 static struct qcom_icc_node qhs_aoss = { 1059 898 .name = "qhs_aoss", 1060 - .id = SA8775P_SLAVE_AOSS, 1061 899 .channels = 1, 1062 900 .buswidth = 4, 1063 901 }; 1064 902 1065 903 static struct qcom_icc_node qhs_apss = { 1066 904 .name = "qhs_apss", 1067 - .id = SA8775P_SLAVE_APPSS, 1068 905 .channels = 1, 1069 906 .buswidth = 8, 1070 907 }; 1071 908 1072 909 static struct qcom_icc_node qhs_boot_rom = { 1073 910 .name = "qhs_boot_rom", 1074 - .id = SA8775P_SLAVE_BOOT_ROM, 1075 911 .channels = 1, 1076 912 .buswidth = 4, 1077 913 }; 1078 914 1079 915 static struct qcom_icc_node qhs_camera_cfg = { 1080 916 .name = "qhs_camera_cfg", 1081 - .id = SA8775P_SLAVE_CAMERA_CFG, 1082 917 .channels = 1, 1083 918 .buswidth = 4, 1084 919 }; 1085 920 1086 921 static struct qcom_icc_node qhs_camera_nrt_throttle_cfg = { 1087 922 .name = "qhs_camera_nrt_throttle_cfg", 1088 - .id = SA8775P_SLAVE_CAMERA_NRT_THROTTLE_CFG, 1089 923 .channels = 1, 1090 924 .buswidth = 4, 1091 925 }; 1092 926 1093 927 static struct qcom_icc_node qhs_camera_rt_throttle_cfg = { 1094 928 .name = "qhs_camera_rt_throttle_cfg", 1095 - .id = SA8775P_SLAVE_CAMERA_RT_THROTTLE_CFG, 1096 929 .channels = 1, 1097 930 .buswidth = 4, 1098 931 }; 1099 932 1100 933 static struct qcom_icc_node qhs_clk_ctl = { 1101 934 .name = "qhs_clk_ctl", 1102 - .id = SA8775P_SLAVE_CLK_CTL, 1103 935 .channels = 1, 1104 936 .buswidth = 4, 1105 937 }; 1106 938 1107 939 static struct qcom_icc_node qhs_compute0_cfg = { 1108 940 .name = "qhs_compute0_cfg", 1109 - .id = SA8775P_SLAVE_CDSP_CFG, 1110 941 .channels = 1, 1111 942 .buswidth = 4, 1112 943 .num_links = 1, 1113 - .links = { SA8775P_MASTER_CDSP_NOC_CFG }, 944 + .link_nodes = (struct qcom_icc_node *[]) { &qhm_nsp_noc_config }, 1114 945 }; 1115 946 1116 947 static struct qcom_icc_node qhs_compute1_cfg = { 1117 948 .name = "qhs_compute1_cfg", 1118 - .id = SA8775P_SLAVE_CDSP1_CFG, 1119 949 .channels = 1, 1120 950 .buswidth = 4, 1121 951 .num_links = 1, 1122 - .links = { SA8775P_MASTER_CDSPB_NOC_CFG }, 952 + .link_nodes = (struct qcom_icc_node *[]) { &qhm_nspb_noc_config }, 1123 953 }; 1124 954 1125 955 static struct qcom_icc_node qhs_cpr_cx = { 1126 956 .name = "qhs_cpr_cx", 1127 - .id = SA8775P_SLAVE_RBCPR_CX_CFG, 1128 957 .channels = 1, 1129 958 .buswidth = 4, 1130 959 }; 1131 960 1132 961 static struct qcom_icc_node qhs_cpr_mmcx = { 1133 962 .name = "qhs_cpr_mmcx", 1134 - .id = SA8775P_SLAVE_RBCPR_MMCX_CFG, 1135 963 .channels = 1, 1136 964 .buswidth = 4, 1137 965 }; 1138 966 1139 967 static struct qcom_icc_node qhs_cpr_mx = { 1140 968 .name = "qhs_cpr_mx", 1141 - .id = SA8775P_SLAVE_RBCPR_MX_CFG, 1142 969 .channels = 1, 1143 970 .buswidth = 4, 1144 971 }; 1145 972 1146 973 static struct qcom_icc_node qhs_cpr_nspcx = { 1147 974 .name = "qhs_cpr_nspcx", 1148 - .id = SA8775P_SLAVE_CPR_NSPCX, 1149 975 .channels = 1, 1150 976 .buswidth = 4, 1151 977 }; 1152 978 1153 979 static struct qcom_icc_node qhs_crypto0_cfg = { 1154 980 .name = "qhs_crypto0_cfg", 1155 - .id = SA8775P_SLAVE_CRYPTO_0_CFG, 1156 981 .channels = 1, 1157 982 .buswidth = 4, 1158 983 }; 1159 984 1160 985 static struct qcom_icc_node qhs_cx_rdpm = { 1161 986 .name = "qhs_cx_rdpm", 1162 - .id = SA8775P_SLAVE_CX_RDPM, 1163 987 .channels = 1, 1164 988 .buswidth = 4, 1165 989 }; 1166 990 1167 991 static struct qcom_icc_node qhs_display0_cfg = { 1168 992 .name = "qhs_display0_cfg", 1169 - .id = SA8775P_SLAVE_DISPLAY_CFG, 1170 993 .channels = 1, 1171 994 .buswidth = 4, 1172 995 }; 1173 996 1174 997 static struct qcom_icc_node qhs_display0_rt_throttle_cfg = { 1175 998 .name = "qhs_display0_rt_throttle_cfg", 1176 - .id = SA8775P_SLAVE_DISPLAY_RT_THROTTLE_CFG, 1177 999 .channels = 1, 1178 1000 .buswidth = 4, 1179 1001 }; 1180 1002 1181 1003 static struct qcom_icc_node qhs_display1_cfg = { 1182 1004 .name = "qhs_display1_cfg", 1183 - .id = SA8775P_SLAVE_DISPLAY1_CFG, 1184 1005 .channels = 1, 1185 1006 .buswidth = 4, 1186 1007 }; 1187 1008 1188 1009 static struct qcom_icc_node qhs_display1_rt_throttle_cfg = { 1189 1010 .name = "qhs_display1_rt_throttle_cfg", 1190 - .id = SA8775P_SLAVE_DISPLAY1_RT_THROTTLE_CFG, 1191 1011 .channels = 1, 1192 1012 .buswidth = 4, 1193 1013 }; 1194 1014 1195 1015 static struct qcom_icc_node qhs_emac0_cfg = { 1196 1016 .name = "qhs_emac0_cfg", 1197 - .id = SA8775P_SLAVE_EMAC_CFG, 1198 1017 .channels = 1, 1199 1018 .buswidth = 4, 1200 1019 }; 1201 1020 1202 1021 static struct qcom_icc_node qhs_emac1_cfg = { 1203 1022 .name = "qhs_emac1_cfg", 1204 - .id = SA8775P_SLAVE_EMAC1_CFG, 1205 1023 .channels = 1, 1206 1024 .buswidth = 4, 1207 1025 }; 1208 1026 1209 1027 static struct qcom_icc_node qhs_gp_dsp0_cfg = { 1210 1028 .name = "qhs_gp_dsp0_cfg", 1211 - .id = SA8775P_SLAVE_GP_DSP0_CFG, 1212 1029 .channels = 1, 1213 1030 .buswidth = 4, 1214 1031 }; 1215 1032 1216 1033 static struct qcom_icc_node qhs_gp_dsp1_cfg = { 1217 1034 .name = "qhs_gp_dsp1_cfg", 1218 - .id = SA8775P_SLAVE_GP_DSP1_CFG, 1219 1035 .channels = 1, 1220 1036 .buswidth = 4, 1221 1037 }; 1222 1038 1223 1039 static struct qcom_icc_node qhs_gpdsp0_throttle_cfg = { 1224 1040 .name = "qhs_gpdsp0_throttle_cfg", 1225 - .id = SA8775P_SLAVE_GPDSP0_THROTTLE_CFG, 1226 1041 .channels = 1, 1227 1042 .buswidth = 4, 1228 1043 }; 1229 1044 1230 1045 static struct qcom_icc_node qhs_gpdsp1_throttle_cfg = { 1231 1046 .name = "qhs_gpdsp1_throttle_cfg", 1232 - .id = SA8775P_SLAVE_GPDSP1_THROTTLE_CFG, 1233 1047 .channels = 1, 1234 1048 .buswidth = 4, 1235 1049 }; 1236 1050 1237 1051 static struct qcom_icc_node qhs_gpu_tcu_throttle_cfg = { 1238 1052 .name = "qhs_gpu_tcu_throttle_cfg", 1239 - .id = SA8775P_SLAVE_GPU_TCU_THROTTLE_CFG, 1240 1053 .channels = 1, 1241 1054 .buswidth = 4, 1242 1055 }; 1243 1056 1244 1057 static struct qcom_icc_node qhs_gpuss_cfg = { 1245 1058 .name = "qhs_gpuss_cfg", 1246 - .id = SA8775P_SLAVE_GFX3D_CFG, 1247 1059 .channels = 1, 1248 1060 .buswidth = 8, 1249 1061 }; 1250 1062 1251 1063 static struct qcom_icc_node qhs_hwkm = { 1252 1064 .name = "qhs_hwkm", 1253 - .id = SA8775P_SLAVE_HWKM, 1254 1065 .channels = 1, 1255 1066 .buswidth = 4, 1256 1067 }; 1257 1068 1258 1069 static struct qcom_icc_node qhs_imem_cfg = { 1259 1070 .name = "qhs_imem_cfg", 1260 - .id = SA8775P_SLAVE_IMEM_CFG, 1261 1071 .channels = 1, 1262 1072 .buswidth = 4, 1263 1073 }; 1264 1074 1265 1075 static struct qcom_icc_node qhs_ipa = { 1266 1076 .name = "qhs_ipa", 1267 - .id = SA8775P_SLAVE_IPA_CFG, 1268 1077 .channels = 1, 1269 1078 .buswidth = 4, 1270 1079 }; 1271 1080 1272 1081 static struct qcom_icc_node qhs_ipc_router = { 1273 1082 .name = "qhs_ipc_router", 1274 - .id = SA8775P_SLAVE_IPC_ROUTER_CFG, 1275 1083 .channels = 1, 1276 1084 .buswidth = 4, 1277 1085 }; 1278 1086 1279 1087 static struct qcom_icc_node qhs_lpass_cfg = { 1280 1088 .name = "qhs_lpass_cfg", 1281 - .id = SA8775P_SLAVE_LPASS, 1282 1089 .channels = 1, 1283 1090 .buswidth = 4, 1284 1091 .num_links = 1, 1285 - .links = { SA8775P_MASTER_CNOC_LPASS_AG_NOC }, 1092 + .link_nodes = (struct qcom_icc_node *[]) { &qhm_config_noc }, 1286 1093 }; 1287 1094 1288 1095 static struct qcom_icc_node qhs_lpass_throttle_cfg = { 1289 1096 .name = "qhs_lpass_throttle_cfg", 1290 - .id = SA8775P_SLAVE_LPASS_THROTTLE_CFG, 1291 1097 .channels = 1, 1292 1098 .buswidth = 4, 1293 1099 }; 1294 1100 1295 1101 static struct qcom_icc_node qhs_mx_rdpm = { 1296 1102 .name = "qhs_mx_rdpm", 1297 - .id = SA8775P_SLAVE_MX_RDPM, 1298 1103 .channels = 1, 1299 1104 .buswidth = 4, 1300 1105 }; 1301 1106 1302 1107 static struct qcom_icc_node qhs_mxc_rdpm = { 1303 1108 .name = "qhs_mxc_rdpm", 1304 - .id = SA8775P_SLAVE_MXC_RDPM, 1305 1109 .channels = 1, 1306 1110 .buswidth = 4, 1307 1111 }; 1308 1112 1309 1113 static struct qcom_icc_node qhs_pcie0_cfg = { 1310 1114 .name = "qhs_pcie0_cfg", 1311 - .id = SA8775P_SLAVE_PCIE_0_CFG, 1312 1115 .channels = 1, 1313 1116 .buswidth = 4, 1314 1117 }; 1315 1118 1316 1119 static struct qcom_icc_node qhs_pcie1_cfg = { 1317 1120 .name = "qhs_pcie1_cfg", 1318 - .id = SA8775P_SLAVE_PCIE_1_CFG, 1319 1121 .channels = 1, 1320 1122 .buswidth = 4, 1321 1123 }; 1322 1124 1323 1125 static struct qcom_icc_node qhs_pcie_rsc_cfg = { 1324 1126 .name = "qhs_pcie_rsc_cfg", 1325 - .id = SA8775P_SLAVE_PCIE_RSC_CFG, 1326 1127 .channels = 1, 1327 1128 .buswidth = 4, 1328 1129 }; 1329 1130 1330 1131 static struct qcom_icc_node qhs_pcie_tcu_throttle_cfg = { 1331 1132 .name = "qhs_pcie_tcu_throttle_cfg", 1332 - .id = SA8775P_SLAVE_PCIE_TCU_THROTTLE_CFG, 1333 1133 .channels = 1, 1334 1134 .buswidth = 4, 1335 1135 }; 1336 1136 1337 1137 static struct qcom_icc_node qhs_pcie_throttle_cfg = { 1338 1138 .name = "qhs_pcie_throttle_cfg", 1339 - .id = SA8775P_SLAVE_PCIE_THROTTLE_CFG, 1340 1139 .channels = 1, 1341 1140 .buswidth = 4, 1342 1141 }; 1343 1142 1344 1143 static struct qcom_icc_node qhs_pdm = { 1345 1144 .name = "qhs_pdm", 1346 - .id = SA8775P_SLAVE_PDM, 1347 1145 .channels = 1, 1348 1146 .buswidth = 4, 1349 1147 }; 1350 1148 1351 1149 static struct qcom_icc_node qhs_pimem_cfg = { 1352 1150 .name = "qhs_pimem_cfg", 1353 - .id = SA8775P_SLAVE_PIMEM_CFG, 1354 1151 .channels = 1, 1355 1152 .buswidth = 4, 1356 1153 }; 1357 1154 1358 1155 static struct qcom_icc_node qhs_pke_wrapper_cfg = { 1359 1156 .name = "qhs_pke_wrapper_cfg", 1360 - .id = SA8775P_SLAVE_PKA_WRAPPER_CFG, 1361 1157 .channels = 1, 1362 1158 .buswidth = 4, 1363 1159 }; 1364 1160 1365 1161 static struct qcom_icc_node qhs_qdss_cfg = { 1366 1162 .name = "qhs_qdss_cfg", 1367 - .id = SA8775P_SLAVE_QDSS_CFG, 1368 1163 .channels = 1, 1369 1164 .buswidth = 4, 1370 1165 }; 1371 1166 1372 1167 static struct qcom_icc_node qhs_qm_cfg = { 1373 1168 .name = "qhs_qm_cfg", 1374 - .id = SA8775P_SLAVE_QM_CFG, 1375 1169 .channels = 1, 1376 1170 .buswidth = 4, 1377 1171 }; 1378 1172 1379 1173 static struct qcom_icc_node qhs_qm_mpu_cfg = { 1380 1174 .name = "qhs_qm_mpu_cfg", 1381 - .id = SA8775P_SLAVE_QM_MPU_CFG, 1382 1175 .channels = 1, 1383 1176 .buswidth = 4, 1384 1177 }; 1385 1178 1386 1179 static struct qcom_icc_node qhs_qup0 = { 1387 1180 .name = "qhs_qup0", 1388 - .id = SA8775P_SLAVE_QUP_0, 1389 1181 .channels = 1, 1390 1182 .buswidth = 4, 1391 1183 }; 1392 1184 1393 1185 static struct qcom_icc_node qhs_qup1 = { 1394 1186 .name = "qhs_qup1", 1395 - .id = SA8775P_SLAVE_QUP_1, 1396 1187 .channels = 1, 1397 1188 .buswidth = 4, 1398 1189 }; 1399 1190 1400 1191 static struct qcom_icc_node qhs_qup2 = { 1401 1192 .name = "qhs_qup2", 1402 - .id = SA8775P_SLAVE_QUP_2, 1403 1193 .channels = 1, 1404 1194 .buswidth = 4, 1405 1195 }; 1406 1196 1407 1197 static struct qcom_icc_node qhs_qup3 = { 1408 1198 .name = "qhs_qup3", 1409 - .id = SA8775P_SLAVE_QUP_3, 1410 1199 .channels = 1, 1411 1200 .buswidth = 4, 1412 1201 }; 1413 1202 1414 1203 static struct qcom_icc_node qhs_sail_throttle_cfg = { 1415 1204 .name = "qhs_sail_throttle_cfg", 1416 - .id = SA8775P_SLAVE_SAIL_THROTTLE_CFG, 1417 1205 .channels = 1, 1418 1206 .buswidth = 4, 1419 1207 }; 1420 1208 1421 1209 static struct qcom_icc_node qhs_sdc1 = { 1422 1210 .name = "qhs_sdc1", 1423 - .id = SA8775P_SLAVE_SDC1, 1424 1211 .channels = 1, 1425 1212 .buswidth = 4, 1426 1213 }; 1427 1214 1428 1215 static struct qcom_icc_node qhs_security = { 1429 1216 .name = "qhs_security", 1430 - .id = SA8775P_SLAVE_SECURITY, 1431 1217 .channels = 1, 1432 1218 .buswidth = 4, 1433 1219 }; 1434 1220 1435 1221 static struct qcom_icc_node qhs_snoc_throttle_cfg = { 1436 1222 .name = "qhs_snoc_throttle_cfg", 1437 - .id = SA8775P_SLAVE_SNOC_THROTTLE_CFG, 1438 1223 .channels = 1, 1439 1224 .buswidth = 4, 1440 1225 }; 1441 1226 1442 1227 static struct qcom_icc_node qhs_tcsr = { 1443 1228 .name = "qhs_tcsr", 1444 - .id = SA8775P_SLAVE_TCSR, 1445 1229 .channels = 1, 1446 1230 .buswidth = 4, 1447 1231 }; 1448 1232 1449 1233 static struct qcom_icc_node qhs_tlmm = { 1450 1234 .name = "qhs_tlmm", 1451 - .id = SA8775P_SLAVE_TLMM, 1452 1235 .channels = 1, 1453 1236 .buswidth = 4, 1454 1237 }; 1455 1238 1456 1239 static struct qcom_icc_node qhs_tsc_cfg = { 1457 1240 .name = "qhs_tsc_cfg", 1458 - .id = SA8775P_SLAVE_TSC_CFG, 1459 1241 .channels = 1, 1460 1242 .buswidth = 4, 1461 1243 }; 1462 1244 1463 1245 static struct qcom_icc_node qhs_ufs_card_cfg = { 1464 1246 .name = "qhs_ufs_card_cfg", 1465 - .id = SA8775P_SLAVE_UFS_CARD_CFG, 1466 1247 .channels = 1, 1467 1248 .buswidth = 4, 1468 1249 }; 1469 1250 1470 1251 static struct qcom_icc_node qhs_ufs_mem_cfg = { 1471 1252 .name = "qhs_ufs_mem_cfg", 1472 - .id = SA8775P_SLAVE_UFS_MEM_CFG, 1473 1253 .channels = 1, 1474 1254 .buswidth = 4, 1475 1255 }; 1476 1256 1477 1257 static struct qcom_icc_node qhs_usb2_0 = { 1478 1258 .name = "qhs_usb2_0", 1479 - .id = SA8775P_SLAVE_USB2, 1480 1259 .channels = 1, 1481 1260 .buswidth = 4, 1482 1261 }; 1483 1262 1484 1263 static struct qcom_icc_node qhs_usb3_0 = { 1485 1264 .name = "qhs_usb3_0", 1486 - .id = SA8775P_SLAVE_USB3_0, 1487 1265 .channels = 1, 1488 1266 .buswidth = 4, 1489 1267 }; 1490 1268 1491 1269 static struct qcom_icc_node qhs_usb3_1 = { 1492 1270 .name = "qhs_usb3_1", 1493 - .id = SA8775P_SLAVE_USB3_1, 1494 1271 .channels = 1, 1495 1272 .buswidth = 4, 1496 1273 }; 1497 1274 1498 1275 static struct qcom_icc_node qhs_venus_cfg = { 1499 1276 .name = "qhs_venus_cfg", 1500 - .id = SA8775P_SLAVE_VENUS_CFG, 1501 1277 .channels = 1, 1502 1278 .buswidth = 4, 1503 1279 }; 1504 1280 1505 1281 static struct qcom_icc_node qhs_venus_cvp_throttle_cfg = { 1506 1282 .name = "qhs_venus_cvp_throttle_cfg", 1507 - .id = SA8775P_SLAVE_VENUS_CVP_THROTTLE_CFG, 1508 1283 .channels = 1, 1509 1284 .buswidth = 4, 1510 1285 }; 1511 1286 1512 1287 static struct qcom_icc_node qhs_venus_v_cpu_throttle_cfg = { 1513 1288 .name = "qhs_venus_v_cpu_throttle_cfg", 1514 - .id = SA8775P_SLAVE_VENUS_V_CPU_THROTTLE_CFG, 1515 1289 .channels = 1, 1516 1290 .buswidth = 4, 1517 1291 }; 1518 1292 1519 1293 static struct qcom_icc_node qhs_venus_vcodec_throttle_cfg = { 1520 1294 .name = "qhs_venus_vcodec_throttle_cfg", 1521 - .id = SA8775P_SLAVE_VENUS_VCODEC_THROTTLE_CFG, 1522 1295 .channels = 1, 1523 1296 .buswidth = 4, 1524 1297 }; 1525 1298 1526 1299 static struct qcom_icc_node qns_ddrss_cfg = { 1527 1300 .name = "qns_ddrss_cfg", 1528 - .id = SA8775P_SLAVE_DDRSS_CFG, 1529 1301 .channels = 1, 1530 1302 .buswidth = 4, 1531 1303 .num_links = 1, 1532 - .links = { SA8775P_MASTER_CNOC_DC_NOC }, 1304 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_cnoc_dc_noc }, 1533 1305 }; 1534 1306 1535 1307 static struct qcom_icc_node qns_gpdsp_noc_cfg = { 1536 1308 .name = "qns_gpdsp_noc_cfg", 1537 - .id = SA8775P_SLAVE_GPDSP_NOC_CFG, 1538 1309 .channels = 1, 1539 1310 .buswidth = 4, 1540 1311 }; 1541 1312 1542 1313 static struct qcom_icc_node qns_mnoc_hf_cfg = { 1543 1314 .name = "qns_mnoc_hf_cfg", 1544 - .id = SA8775P_SLAVE_CNOC_MNOC_HF_CFG, 1545 1315 .channels = 1, 1546 1316 .buswidth = 4, 1547 1317 .num_links = 1, 1548 - .links = { SA8775P_MASTER_CNOC_MNOC_HF_CFG }, 1318 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_mnoc_hf_cfg }, 1549 1319 }; 1550 1320 1551 1321 static struct qcom_icc_node qns_mnoc_sf_cfg = { 1552 1322 .name = "qns_mnoc_sf_cfg", 1553 - .id = SA8775P_SLAVE_CNOC_MNOC_SF_CFG, 1554 1323 .channels = 1, 1555 1324 .buswidth = 4, 1556 1325 .num_links = 1, 1557 - .links = { SA8775P_MASTER_CNOC_MNOC_SF_CFG }, 1326 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_mnoc_sf_cfg }, 1558 1327 }; 1559 1328 1560 1329 static struct qcom_icc_node qns_pcie_anoc_cfg = { 1561 1330 .name = "qns_pcie_anoc_cfg", 1562 - .id = SA8775P_SLAVE_PCIE_ANOC_CFG, 1563 1331 .channels = 1, 1564 1332 .buswidth = 4, 1565 1333 }; 1566 1334 1567 1335 static struct qcom_icc_node qns_snoc_cfg = { 1568 1336 .name = "qns_snoc_cfg", 1569 - .id = SA8775P_SLAVE_SNOC_CFG, 1570 1337 .channels = 1, 1571 1338 .buswidth = 4, 1572 1339 .num_links = 1, 1573 - .links = { SA8775P_MASTER_SNOC_CFG }, 1340 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_snoc_cfg }, 1574 1341 }; 1575 1342 1576 1343 static struct qcom_icc_node qxs_boot_imem = { 1577 1344 .name = "qxs_boot_imem", 1578 - .id = SA8775P_SLAVE_BOOT_IMEM, 1579 1345 .channels = 1, 1580 1346 .buswidth = 16, 1581 1347 }; 1582 1348 1583 1349 static struct qcom_icc_node qxs_imem = { 1584 1350 .name = "qxs_imem", 1585 - .id = SA8775P_SLAVE_IMEM, 1586 1351 .channels = 1, 1587 1352 .buswidth = 8, 1588 1353 }; 1589 1354 1590 1355 static struct qcom_icc_node qxs_pimem = { 1591 1356 .name = "qxs_pimem", 1592 - .id = SA8775P_SLAVE_PIMEM, 1593 1357 .channels = 1, 1594 1358 .buswidth = 8, 1595 1359 }; 1596 1360 1597 1361 static struct qcom_icc_node xs_pcie_0 = { 1598 1362 .name = "xs_pcie_0", 1599 - .id = SA8775P_SLAVE_PCIE_0, 1600 1363 .channels = 1, 1601 1364 .buswidth = 16, 1602 1365 }; 1603 1366 1604 1367 static struct qcom_icc_node xs_pcie_1 = { 1605 1368 .name = "xs_pcie_1", 1606 - .id = SA8775P_SLAVE_PCIE_1, 1607 1369 .channels = 1, 1608 1370 .buswidth = 32, 1609 1371 }; 1610 1372 1611 1373 static struct qcom_icc_node xs_qdss_stm = { 1612 1374 .name = "xs_qdss_stm", 1613 - .id = SA8775P_SLAVE_QDSS_STM, 1614 1375 .channels = 1, 1615 1376 .buswidth = 4, 1616 1377 }; 1617 1378 1618 1379 static struct qcom_icc_node xs_sys_tcu_cfg = { 1619 1380 .name = "xs_sys_tcu_cfg", 1620 - .id = SA8775P_SLAVE_TCU, 1621 1381 .channels = 1, 1622 1382 .buswidth = 8, 1623 1383 }; 1624 1384 1625 1385 static struct qcom_icc_node qhs_llcc = { 1626 1386 .name = "qhs_llcc", 1627 - .id = SA8775P_SLAVE_LLCC_CFG, 1628 1387 .channels = 1, 1629 1388 .buswidth = 4, 1630 1389 }; 1631 1390 1632 1391 static struct qcom_icc_node qns_gemnoc = { 1633 1392 .name = "qns_gemnoc", 1634 - .id = SA8775P_SLAVE_GEM_NOC_CFG, 1635 1393 .channels = 1, 1636 1394 .buswidth = 4, 1637 1395 .num_links = 1, 1638 - .links = { SA8775P_MASTER_GEM_NOC_CFG }, 1396 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_gemnoc_cfg }, 1639 1397 }; 1640 1398 1641 1399 static struct qcom_icc_node qns_gem_noc_cnoc = { 1642 1400 .name = "qns_gem_noc_cnoc", 1643 - .id = SA8775P_SLAVE_GEM_NOC_CNOC, 1644 1401 .channels = 1, 1645 1402 .buswidth = 16, 1646 1403 .num_links = 1, 1647 - .links = { SA8775P_MASTER_GEM_NOC_CNOC }, 1404 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_gemnoc_cnoc }, 1648 1405 }; 1649 1406 1650 1407 static struct qcom_icc_node qns_llcc = { 1651 1408 .name = "qns_llcc", 1652 - .id = SA8775P_SLAVE_LLCC, 1653 1409 .channels = 6, 1654 1410 .buswidth = 16, 1655 1411 .num_links = 1, 1656 - .links = { SA8775P_MASTER_LLCC }, 1412 + .link_nodes = (struct qcom_icc_node *[]) { &llcc_mc }, 1657 1413 }; 1658 1414 1659 1415 static struct qcom_icc_node qns_pcie = { 1660 1416 .name = "qns_pcie", 1661 - .id = SA8775P_SLAVE_GEM_NOC_PCIE_CNOC, 1662 1417 .channels = 1, 1663 1418 .buswidth = 16, 1664 1419 .num_links = 1, 1665 - .links = { SA8775P_MASTER_GEM_NOC_PCIE_SNOC }, 1420 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_gemnoc_pcie }, 1666 1421 }; 1667 1422 1668 1423 static struct qcom_icc_node srvc_even_gemnoc = { 1669 1424 .name = "srvc_even_gemnoc", 1670 - .id = SA8775P_SLAVE_SERVICE_GEM_NOC_1, 1671 1425 .channels = 1, 1672 1426 .buswidth = 4, 1673 1427 }; 1674 1428 1675 1429 static struct qcom_icc_node srvc_odd_gemnoc = { 1676 1430 .name = "srvc_odd_gemnoc", 1677 - .id = SA8775P_SLAVE_SERVICE_GEM_NOC_2, 1678 1431 .channels = 1, 1679 1432 .buswidth = 4, 1680 1433 }; 1681 1434 1682 1435 static struct qcom_icc_node srvc_sys_gemnoc = { 1683 1436 .name = "srvc_sys_gemnoc", 1684 - .id = SA8775P_SLAVE_SERVICE_GEM_NOC, 1685 1437 .channels = 1, 1686 1438 .buswidth = 4, 1687 1439 }; 1688 1440 1689 1441 static struct qcom_icc_node srvc_sys_gemnoc_2 = { 1690 1442 .name = "srvc_sys_gemnoc_2", 1691 - .id = SA8775P_SLAVE_SERVICE_GEM_NOC2, 1692 1443 .channels = 1, 1693 1444 .buswidth = 4, 1694 1445 }; 1695 1446 1696 1447 static struct qcom_icc_node qns_gp_dsp_sail_noc = { 1697 1448 .name = "qns_gp_dsp_sail_noc", 1698 - .id = SA8775P_SLAVE_GP_DSP_SAIL_NOC, 1699 1449 .channels = 1, 1700 1450 .buswidth = 16, 1701 1451 .num_links = 1, 1702 - .links = { SA8775P_MASTER_GPDSP_SAIL }, 1452 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_gpdsp_sail }, 1703 1453 }; 1704 1454 1705 1455 static struct qcom_icc_node qhs_lpass_core = { 1706 1456 .name = "qhs_lpass_core", 1707 - .id = SA8775P_SLAVE_LPASS_CORE_CFG, 1708 1457 .channels = 1, 1709 1458 .buswidth = 4, 1710 1459 }; 1711 1460 1712 1461 static struct qcom_icc_node qhs_lpass_lpi = { 1713 1462 .name = "qhs_lpass_lpi", 1714 - .id = SA8775P_SLAVE_LPASS_LPI_CFG, 1715 1463 .channels = 1, 1716 1464 .buswidth = 4, 1717 1465 }; 1718 1466 1719 1467 static struct qcom_icc_node qhs_lpass_mpu = { 1720 1468 .name = "qhs_lpass_mpu", 1721 - .id = SA8775P_SLAVE_LPASS_MPU_CFG, 1722 1469 .channels = 1, 1723 1470 .buswidth = 4, 1724 1471 }; 1725 1472 1726 1473 static struct qcom_icc_node qhs_lpass_top = { 1727 1474 .name = "qhs_lpass_top", 1728 - .id = SA8775P_SLAVE_LPASS_TOP_CFG, 1729 1475 .channels = 1, 1730 1476 .buswidth = 4, 1731 1477 }; 1732 1478 1733 1479 static struct qcom_icc_node qns_sysnoc = { 1734 1480 .name = "qns_sysnoc", 1735 - .id = SA8775P_SLAVE_LPASS_SNOC, 1736 1481 .channels = 1, 1737 1482 .buswidth = 16, 1738 1483 .num_links = 1, 1739 - .links = { SA8775P_MASTER_LPASS_ANOC }, 1484 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_lpass_noc }, 1740 1485 }; 1741 1486 1742 1487 static struct qcom_icc_node srvc_niu_aml_noc = { 1743 1488 .name = "srvc_niu_aml_noc", 1744 - .id = SA8775P_SLAVE_SERVICES_LPASS_AML_NOC, 1745 1489 .channels = 1, 1746 1490 .buswidth = 4, 1747 1491 }; 1748 1492 1749 1493 static struct qcom_icc_node srvc_niu_lpass_agnoc = { 1750 1494 .name = "srvc_niu_lpass_agnoc", 1751 - .id = SA8775P_SLAVE_SERVICE_LPASS_AG_NOC, 1752 1495 .channels = 1, 1753 1496 .buswidth = 4, 1754 1497 }; 1755 1498 1756 1499 static struct qcom_icc_node ebi = { 1757 1500 .name = "ebi", 1758 - .id = SA8775P_SLAVE_EBI1, 1759 1501 .channels = 8, 1760 1502 .buswidth = 4, 1761 1503 }; 1762 1504 1763 1505 static struct qcom_icc_node qns_mem_noc_hf = { 1764 1506 .name = "qns_mem_noc_hf", 1765 - .id = SA8775P_SLAVE_MNOC_HF_MEM_NOC, 1766 1507 .channels = 2, 1767 1508 .buswidth = 32, 1768 1509 .num_links = 1, 1769 - .links = { SA8775P_MASTER_MNOC_HF_MEM_NOC }, 1510 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_mnoc_hf }, 1770 1511 }; 1771 1512 1772 1513 static struct qcom_icc_node qns_mem_noc_sf = { 1773 1514 .name = "qns_mem_noc_sf", 1774 - .id = SA8775P_SLAVE_MNOC_SF_MEM_NOC, 1775 1515 .channels = 2, 1776 1516 .buswidth = 32, 1777 1517 .num_links = 1, 1778 - .links = { SA8775P_MASTER_MNOC_SF_MEM_NOC }, 1518 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_mnoc_sf }, 1779 1519 }; 1780 1520 1781 1521 static struct qcom_icc_node srvc_mnoc_hf = { 1782 1522 .name = "srvc_mnoc_hf", 1783 - .id = SA8775P_SLAVE_SERVICE_MNOC_HF, 1784 1523 .channels = 1, 1785 1524 .buswidth = 4, 1786 1525 }; 1787 1526 1788 1527 static struct qcom_icc_node srvc_mnoc_sf = { 1789 1528 .name = "srvc_mnoc_sf", 1790 - .id = SA8775P_SLAVE_SERVICE_MNOC_SF, 1791 1529 .channels = 1, 1792 1530 .buswidth = 4, 1793 1531 }; 1794 1532 1795 1533 static struct qcom_icc_node qns_hcp = { 1796 1534 .name = "qns_hcp", 1797 - .id = SA8775P_SLAVE_HCP_A, 1798 1535 .channels = 2, 1799 1536 .buswidth = 32, 1800 1537 }; 1801 1538 1802 1539 static struct qcom_icc_node qns_nsp_gemnoc = { 1803 1540 .name = "qns_nsp_gemnoc", 1804 - .id = SA8775P_SLAVE_CDSP_MEM_NOC, 1805 1541 .channels = 2, 1806 1542 .buswidth = 32, 1807 1543 .num_links = 1, 1808 - .links = { SA8775P_MASTER_COMPUTE_NOC }, 1544 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_cmpnoc0 }, 1809 1545 }; 1810 1546 1811 1547 static struct qcom_icc_node service_nsp_noc = { 1812 1548 .name = "service_nsp_noc", 1813 - .id = SA8775P_SLAVE_SERVICE_NSP_NOC, 1814 1549 .channels = 1, 1815 1550 .buswidth = 4, 1816 1551 }; 1817 1552 1818 1553 static struct qcom_icc_node qns_nspb_gemnoc = { 1819 1554 .name = "qns_nspb_gemnoc", 1820 - .id = SA8775P_SLAVE_CDSPB_MEM_NOC, 1821 1555 .channels = 2, 1822 1556 .buswidth = 32, 1823 1557 .num_links = 1, 1824 - .links = { SA8775P_MASTER_COMPUTE_NOC_1 }, 1558 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_cmpnoc1 }, 1825 1559 }; 1826 1560 1827 1561 static struct qcom_icc_node qns_nspb_hcp = { 1828 1562 .name = "qns_nspb_hcp", 1829 - .id = SA8775P_SLAVE_HCP_B, 1830 1563 .channels = 2, 1831 1564 .buswidth = 32, 1832 1565 }; 1833 1566 1834 1567 static struct qcom_icc_node service_nspb_noc = { 1835 1568 .name = "service_nspb_noc", 1836 - .id = SA8775P_SLAVE_SERVICE_NSPB_NOC, 1837 1569 .channels = 1, 1838 1570 .buswidth = 4, 1839 1571 }; 1840 1572 1841 1573 static struct qcom_icc_node qns_pcie_mem_noc = { 1842 1574 .name = "qns_pcie_mem_noc", 1843 - .id = SA8775P_SLAVE_ANOC_PCIE_GEM_NOC, 1844 1575 .channels = 1, 1845 1576 .buswidth = 32, 1846 1577 .num_links = 1, 1847 - .links = { SA8775P_MASTER_ANOC_PCIE_GEM_NOC }, 1578 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_pcie }, 1848 1579 }; 1849 1580 1850 1581 static struct qcom_icc_node qns_gemnoc_gc = { 1851 1582 .name = "qns_gemnoc_gc", 1852 - .id = SA8775P_SLAVE_SNOC_GEM_NOC_GC, 1853 1583 .channels = 1, 1854 1584 .buswidth = 8, 1855 1585 .num_links = 1, 1856 - .links = { SA8775P_MASTER_SNOC_GC_MEM_NOC }, 1586 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_snoc_gc }, 1857 1587 }; 1858 1588 1859 1589 static struct qcom_icc_node qns_gemnoc_sf = { 1860 1590 .name = "qns_gemnoc_sf", 1861 - .id = SA8775P_SLAVE_SNOC_GEM_NOC_SF, 1862 1591 .channels = 1, 1863 1592 .buswidth = 16, 1864 1593 .num_links = 1, 1865 - .links = { SA8775P_MASTER_SNOC_SF_MEM_NOC }, 1594 + .link_nodes = (struct qcom_icc_node *[]) { &qnm_snoc_sf }, 1866 1595 }; 1867 1596 1868 1597 static struct qcom_icc_node srvc_snoc = { 1869 1598 .name = "srvc_snoc", 1870 - .id = SA8775P_SLAVE_SERVICE_SNOC, 1871 1599 .channels = 1, 1872 1600 .buswidth = 4, 1873 1601 }; ··· 1841 2113 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 1842 2114 .bcms = aggre1_noc_bcms, 1843 2115 .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 2116 + .alloc_dyn_id = true, 1844 2117 }; 1845 2118 1846 2119 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = { ··· 1869 2140 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 1870 2141 .bcms = aggre2_noc_bcms, 1871 2142 .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 2143 + .alloc_dyn_id = true, 1872 2144 }; 1873 2145 1874 2146 static struct qcom_icc_bcm * const clk_virt_bcms[] = { ··· 1894 2164 .num_nodes = ARRAY_SIZE(clk_virt_nodes), 1895 2165 .bcms = clk_virt_bcms, 1896 2166 .num_bcms = ARRAY_SIZE(clk_virt_bcms), 2167 + .alloc_dyn_id = true, 1897 2168 }; 1898 2169 1899 2170 static struct qcom_icc_bcm * const config_noc_bcms[] = { ··· 2000 2269 .num_nodes = ARRAY_SIZE(config_noc_nodes), 2001 2270 .bcms = config_noc_bcms, 2002 2271 .num_bcms = ARRAY_SIZE(config_noc_bcms), 2272 + .alloc_dyn_id = true, 2003 2273 }; 2004 2274 2005 2275 static struct qcom_icc_bcm * const dc_noc_bcms[] = { ··· 2017 2285 .num_nodes = ARRAY_SIZE(dc_noc_nodes), 2018 2286 .bcms = dc_noc_bcms, 2019 2287 .num_bcms = ARRAY_SIZE(dc_noc_bcms), 2288 + .alloc_dyn_id = true, 2020 2289 }; 2021 2290 2022 2291 static struct qcom_icc_bcm * const gem_noc_bcms[] = { ··· 2054 2321 .num_nodes = ARRAY_SIZE(gem_noc_nodes), 2055 2322 .bcms = gem_noc_bcms, 2056 2323 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 2324 + .alloc_dyn_id = true, 2057 2325 }; 2058 2326 2059 2327 static struct qcom_icc_bcm * const gpdsp_anoc_bcms[] = { ··· 2073 2339 .num_nodes = ARRAY_SIZE(gpdsp_anoc_nodes), 2074 2340 .bcms = gpdsp_anoc_bcms, 2075 2341 .num_bcms = ARRAY_SIZE(gpdsp_anoc_bcms), 2342 + .alloc_dyn_id = true, 2076 2343 }; 2077 2344 2078 2345 static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = { ··· 2097 2362 .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes), 2098 2363 .bcms = lpass_ag_noc_bcms, 2099 2364 .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms), 2365 + .alloc_dyn_id = true, 2100 2366 }; 2101 2367 2102 2368 static struct qcom_icc_bcm * const mc_virt_bcms[] = { ··· 2115 2379 .num_nodes = ARRAY_SIZE(mc_virt_nodes), 2116 2380 .bcms = mc_virt_bcms, 2117 2381 .num_bcms = ARRAY_SIZE(mc_virt_bcms), 2382 + .alloc_dyn_id = true, 2118 2383 }; 2119 2384 2120 2385 static struct qcom_icc_bcm * const mmss_noc_bcms[] = { ··· 2148 2411 .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 2149 2412 .bcms = mmss_noc_bcms, 2150 2413 .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 2414 + .alloc_dyn_id = true, 2151 2415 }; 2152 2416 2153 2417 static struct qcom_icc_bcm * const nspa_noc_bcms[] = { ··· 2169 2431 .num_nodes = ARRAY_SIZE(nspa_noc_nodes), 2170 2432 .bcms = nspa_noc_bcms, 2171 2433 .num_bcms = ARRAY_SIZE(nspa_noc_bcms), 2434 + .alloc_dyn_id = true, 2172 2435 }; 2173 2436 2174 2437 static struct qcom_icc_bcm * const nspb_noc_bcms[] = { ··· 2190 2451 .num_nodes = ARRAY_SIZE(nspb_noc_nodes), 2191 2452 .bcms = nspb_noc_bcms, 2192 2453 .num_bcms = ARRAY_SIZE(nspb_noc_bcms), 2454 + .alloc_dyn_id = true, 2193 2455 }; 2194 2456 2195 2457 static struct qcom_icc_bcm * const pcie_anoc_bcms[] = { ··· 2208 2468 .num_nodes = ARRAY_SIZE(pcie_anoc_nodes), 2209 2469 .bcms = pcie_anoc_bcms, 2210 2470 .num_bcms = ARRAY_SIZE(pcie_anoc_bcms), 2471 + .alloc_dyn_id = true, 2211 2472 }; 2212 2473 2213 2474 static struct qcom_icc_bcm * const system_noc_bcms[] = { ··· 2237 2496 .num_nodes = ARRAY_SIZE(system_noc_nodes), 2238 2497 .bcms = system_noc_bcms, 2239 2498 .num_bcms = ARRAY_SIZE(system_noc_bcms), 2499 + .alloc_dyn_id = true, 2240 2500 }; 2241 2501 2242 2502 static const struct of_device_id qnoc_of_match[] = {
+12
include/linux/interconnect-provider.h
··· 116 116 117 117 int icc_std_aggregate(struct icc_node *node, u32 tag, u32 avg_bw, 118 118 u32 peak_bw, u32 *agg_avg, u32 *agg_peak); 119 + struct icc_node *icc_node_create_dyn(void); 119 120 struct icc_node *icc_node_create(int id); 120 121 void icc_node_destroy(int id); 122 + int icc_link_nodes(struct icc_node *src_node, struct icc_node **dst_node); 121 123 int icc_link_create(struct icc_node *node, const int dst_id); 122 124 void icc_node_add(struct icc_node *node, struct icc_provider *provider); 123 125 void icc_node_del(struct icc_node *node); ··· 138 136 return -ENOTSUPP; 139 137 } 140 138 139 + static inline struct icc_node *icc_node_create_dyn(void) 140 + { 141 + return ERR_PTR(-EOPNOTSUPP); 142 + } 143 + 141 144 static inline struct icc_node *icc_node_create(int id) 142 145 { 143 146 return ERR_PTR(-ENOTSUPP); ··· 150 143 151 144 static inline void icc_node_destroy(int id) 152 145 { 146 + } 147 + 148 + static inline int icc_link_nodes(struct icc_node *src_node, struct icc_node **dst_node) 149 + { 150 + return -EOPNOTSUPP; 153 151 } 154 152 155 153 static inline int icc_link_create(struct icc_node *node, const int dst_id)
+3
include/linux/interconnect.h
··· 20 20 #define Mbps_to_icc(x) ((x) * 1000 / 8) 21 21 #define Gbps_to_icc(x) ((x) * 1000 * 1000 / 8) 22 22 23 + /* macro to indicate dynamic id allocation */ 24 + #define ICC_ALLOC_DYN_ID -1 25 + 23 26 struct icc_path; 24 27 struct device; 25 28