1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
5 * Copyright (c) 2024, Linaro Ltd.
8 #include <linux/device.h>
9 #include <linux/interconnect.h>
10 #include <linux/interconnect-provider.h>
12 #include <linux/module.h>
13 #include <linux/of_device.h>
14 #include <linux/of_platform.h>
15 #include <linux/platform_device.h>
16 #include <linux/sort.h>
17 #include <dt-bindings/interconnect/qcom,sar2130p-rpmh.h>
19 #include "bcm-voter.h"
20 #include "icc-common.h"
24 SAR2130P_MASTER_QUP_CORE_0,
25 SAR2130P_MASTER_QUP_CORE_1,
26 SAR2130P_MASTER_GEM_NOC_CNOC,
27 SAR2130P_MASTER_GEM_NOC_PCIE_SNOC,
28 SAR2130P_MASTER_QDSS_DAP,
29 SAR2130P_MASTER_GPU_TCU,
30 SAR2130P_MASTER_SYS_TCU,
31 SAR2130P_MASTER_APPSS_PROC,
32 SAR2130P_MASTER_GFX3D,
33 SAR2130P_MASTER_MNOC_HF_MEM_NOC,
34 SAR2130P_MASTER_MNOC_SF_MEM_NOC,
35 SAR2130P_MASTER_COMPUTE_NOC,
36 SAR2130P_MASTER_ANOC_PCIE_GEM_NOC,
37 SAR2130P_MASTER_SNOC_GC_MEM_NOC,
38 SAR2130P_MASTER_SNOC_SF_MEM_NOC,
39 SAR2130P_MASTER_WLAN_Q6,
40 SAR2130P_MASTER_CNOC_LPASS_AG_NOC,
41 SAR2130P_MASTER_LPASS_PROC,
43 SAR2130P_MASTER_CAMNOC_HF,
44 SAR2130P_MASTER_CAMNOC_ICP,
45 SAR2130P_MASTER_CAMNOC_SF,
48 SAR2130P_MASTER_CNOC_MNOC_CFG,
49 SAR2130P_MASTER_VIDEO,
50 SAR2130P_MASTER_VIDEO_CV_PROC,
51 SAR2130P_MASTER_VIDEO_PROC,
52 SAR2130P_MASTER_VIDEO_V_PROC,
53 SAR2130P_MASTER_CDSP_NOC_CFG,
54 SAR2130P_MASTER_CDSP_PROC,
55 SAR2130P_MASTER_PCIE_0,
56 SAR2130P_MASTER_PCIE_1,
57 SAR2130P_MASTER_GIC_AHB,
58 SAR2130P_MASTER_QDSS_BAM,
59 SAR2130P_MASTER_QSPI_0,
60 SAR2130P_MASTER_QUP_0,
61 SAR2130P_MASTER_QUP_1,
62 SAR2130P_MASTER_A2NOC_SNOC,
63 SAR2130P_MASTER_CNOC_DATAPATH,
64 SAR2130P_MASTER_LPASS_ANOC,
65 SAR2130P_MASTER_SNOC_CFG,
66 SAR2130P_MASTER_CRYPTO,
67 SAR2130P_MASTER_PIMEM,
69 SAR2130P_MASTER_QDSS_ETR,
70 SAR2130P_MASTER_QDSS_ETR_1,
71 SAR2130P_MASTER_SDCC_1,
72 SAR2130P_MASTER_USB3_0,
73 SAR2130P_SLAVE_QUP_CORE_0,
74 SAR2130P_SLAVE_QUP_CORE_1,
75 SAR2130P_SLAVE_AHB2PHY_SOUTH,
77 SAR2130P_SLAVE_CAMERA_CFG,
78 SAR2130P_SLAVE_CLK_CTL,
79 SAR2130P_SLAVE_CDSP_CFG,
80 SAR2130P_SLAVE_RBCPR_CX_CFG,
81 SAR2130P_SLAVE_RBCPR_MMCX_CFG,
82 SAR2130P_SLAVE_RBCPR_MXA_CFG,
83 SAR2130P_SLAVE_RBCPR_MXC_CFG,
84 SAR2130P_SLAVE_CPR_NSPCX,
85 SAR2130P_SLAVE_CRYPTO_0_CFG,
86 SAR2130P_SLAVE_CX_RDPM,
87 SAR2130P_SLAVE_DISPLAY_CFG,
88 SAR2130P_SLAVE_GFX3D_CFG,
89 SAR2130P_SLAVE_IMEM_CFG,
90 SAR2130P_SLAVE_IPC_ROUTER_CFG,
92 SAR2130P_SLAVE_MX_RDPM,
93 SAR2130P_SLAVE_PCIE_0_CFG,
94 SAR2130P_SLAVE_PCIE_1_CFG,
96 SAR2130P_SLAVE_PIMEM_CFG,
98 SAR2130P_SLAVE_QDSS_CFG,
99 SAR2130P_SLAVE_QSPI_0,
100 SAR2130P_SLAVE_QUP_0,
101 SAR2130P_SLAVE_QUP_1,
102 SAR2130P_SLAVE_SDCC_1,
105 SAR2130P_SLAVE_TME_CFG,
106 SAR2130P_SLAVE_USB3_0,
107 SAR2130P_SLAVE_VENUS_CFG,
108 SAR2130P_SLAVE_VSENSE_CTRL_CFG,
109 SAR2130P_SLAVE_WLAN_Q6_CFG,
110 SAR2130P_SLAVE_DDRSS_CFG,
111 SAR2130P_SLAVE_CNOC_MNOC_CFG,
112 SAR2130P_SLAVE_SNOC_CFG,
114 SAR2130P_SLAVE_PIMEM,
115 SAR2130P_SLAVE_SERVICE_CNOC,
116 SAR2130P_SLAVE_PCIE_0,
117 SAR2130P_SLAVE_PCIE_1,
118 SAR2130P_SLAVE_QDSS_STM,
120 SAR2130P_SLAVE_GEM_NOC_CNOC,
122 SAR2130P_SLAVE_MEM_NOC_PCIE_SNOC,
123 SAR2130P_SLAVE_LPASS_CORE_CFG,
124 SAR2130P_SLAVE_LPASS_LPI_CFG,
125 SAR2130P_SLAVE_LPASS_MPU_CFG,
126 SAR2130P_SLAVE_LPASS_TOP_CFG,
127 SAR2130P_SLAVE_LPASS_SNOC,
128 SAR2130P_SLAVE_SERVICES_LPASS_AML_NOC,
129 SAR2130P_SLAVE_SERVICE_LPASS_AG_NOC,
131 SAR2130P_SLAVE_MNOC_HF_MEM_NOC,
132 SAR2130P_SLAVE_MNOC_SF_MEM_NOC,
133 SAR2130P_SLAVE_SERVICE_MNOC,
134 SAR2130P_SLAVE_CDSP_MEM_NOC,
135 SAR2130P_SLAVE_SERVICE_NSP_NOC,
136 SAR2130P_SLAVE_ANOC_PCIE_GEM_NOC,
137 SAR2130P_SLAVE_A2NOC_SNOC,
138 SAR2130P_SLAVE_SNOC_GEM_NOC_GC,
139 SAR2130P_SLAVE_SNOC_GEM_NOC_SF,
140 SAR2130P_SLAVE_SERVICE_SNOC,
143 static const struct regmap_config icc_regmap_config = {
150 static struct qcom_icc_node qup0_core_master = {
151 .name = "qup0_core_master",
152 .id = SAR2130P_MASTER_QUP_CORE_0,
156 .links = { SAR2130P_SLAVE_QUP_CORE_0 },
159 static struct qcom_icc_node qup1_core_master = {
160 .name = "qup1_core_master",
161 .id = SAR2130P_MASTER_QUP_CORE_1,
165 .links = { SAR2130P_SLAVE_QUP_CORE_1 },
168 static struct qcom_icc_node qnm_gemnoc_cnoc = {
169 .name = "qnm_gemnoc_cnoc",
170 .id = SAR2130P_MASTER_GEM_NOC_CNOC,
174 .links = { SAR2130P_SLAVE_AHB2PHY_SOUTH, SAR2130P_SLAVE_AOSS,
175 SAR2130P_SLAVE_CAMERA_CFG, SAR2130P_SLAVE_CLK_CTL,
176 SAR2130P_SLAVE_CDSP_CFG, SAR2130P_SLAVE_RBCPR_CX_CFG,
177 SAR2130P_SLAVE_RBCPR_MMCX_CFG, SAR2130P_SLAVE_RBCPR_MXA_CFG,
178 SAR2130P_SLAVE_RBCPR_MXC_CFG, SAR2130P_SLAVE_CPR_NSPCX,
179 SAR2130P_SLAVE_CRYPTO_0_CFG, SAR2130P_SLAVE_CX_RDPM,
180 SAR2130P_SLAVE_DISPLAY_CFG, SAR2130P_SLAVE_GFX3D_CFG,
181 SAR2130P_SLAVE_IMEM_CFG, SAR2130P_SLAVE_IPC_ROUTER_CFG,
182 SAR2130P_SLAVE_LPASS, SAR2130P_SLAVE_MX_RDPM,
183 SAR2130P_SLAVE_PCIE_0_CFG, SAR2130P_SLAVE_PCIE_1_CFG,
184 SAR2130P_SLAVE_PDM, SAR2130P_SLAVE_PIMEM_CFG,
185 SAR2130P_SLAVE_PRNG, SAR2130P_SLAVE_QDSS_CFG,
186 SAR2130P_SLAVE_QSPI_0, SAR2130P_SLAVE_QUP_0,
187 SAR2130P_SLAVE_QUP_1, SAR2130P_SLAVE_SDCC_1,
188 SAR2130P_SLAVE_TCSR, SAR2130P_SLAVE_TLMM,
189 SAR2130P_SLAVE_TME_CFG, SAR2130P_SLAVE_USB3_0,
190 SAR2130P_SLAVE_VENUS_CFG, SAR2130P_SLAVE_VSENSE_CTRL_CFG,
191 SAR2130P_SLAVE_WLAN_Q6_CFG, SAR2130P_SLAVE_DDRSS_CFG,
192 SAR2130P_SLAVE_CNOC_MNOC_CFG, SAR2130P_SLAVE_SNOC_CFG,
193 SAR2130P_SLAVE_IMEM, SAR2130P_SLAVE_PIMEM,
194 SAR2130P_SLAVE_SERVICE_CNOC, SAR2130P_SLAVE_QDSS_STM,
195 SAR2130P_SLAVE_TCU },
198 static struct qcom_icc_node qnm_gemnoc_pcie = {
199 .name = "qnm_gemnoc_pcie",
200 .id = SAR2130P_MASTER_GEM_NOC_PCIE_SNOC,
204 .links = { SAR2130P_SLAVE_PCIE_0, SAR2130P_SLAVE_PCIE_1 },
207 static struct qcom_icc_node xm_qdss_dap = {
208 .name = "xm_qdss_dap",
209 .id = SAR2130P_MASTER_QDSS_DAP,
213 .links = { SAR2130P_SLAVE_AHB2PHY_SOUTH, SAR2130P_SLAVE_AOSS,
214 SAR2130P_SLAVE_CAMERA_CFG, SAR2130P_SLAVE_CLK_CTL,
215 SAR2130P_SLAVE_CDSP_CFG, SAR2130P_SLAVE_RBCPR_CX_CFG,
216 SAR2130P_SLAVE_RBCPR_MMCX_CFG, SAR2130P_SLAVE_RBCPR_MXA_CFG,
217 SAR2130P_SLAVE_RBCPR_MXC_CFG, SAR2130P_SLAVE_CPR_NSPCX,
218 SAR2130P_SLAVE_CRYPTO_0_CFG, SAR2130P_SLAVE_CX_RDPM,
219 SAR2130P_SLAVE_DISPLAY_CFG, SAR2130P_SLAVE_GFX3D_CFG,
220 SAR2130P_SLAVE_IMEM_CFG, SAR2130P_SLAVE_IPC_ROUTER_CFG,
221 SAR2130P_SLAVE_LPASS, SAR2130P_SLAVE_MX_RDPM,
222 SAR2130P_SLAVE_PCIE_0_CFG, SAR2130P_SLAVE_PCIE_1_CFG,
223 SAR2130P_SLAVE_PDM, SAR2130P_SLAVE_PIMEM_CFG,
224 SAR2130P_SLAVE_PRNG, SAR2130P_SLAVE_QDSS_CFG,
225 SAR2130P_SLAVE_QSPI_0, SAR2130P_SLAVE_QUP_0,
226 SAR2130P_SLAVE_QUP_1, SAR2130P_SLAVE_SDCC_1,
227 SAR2130P_SLAVE_TCSR, SAR2130P_SLAVE_TLMM,
228 SAR2130P_SLAVE_TME_CFG, SAR2130P_SLAVE_USB3_0,
229 SAR2130P_SLAVE_VENUS_CFG, SAR2130P_SLAVE_VSENSE_CTRL_CFG,
230 SAR2130P_SLAVE_WLAN_Q6_CFG, SAR2130P_SLAVE_DDRSS_CFG,
231 SAR2130P_SLAVE_CNOC_MNOC_CFG, SAR2130P_SLAVE_SNOC_CFG,
232 SAR2130P_SLAVE_IMEM, SAR2130P_SLAVE_PIMEM,
233 SAR2130P_SLAVE_SERVICE_CNOC, SAR2130P_SLAVE_QDSS_STM,
234 SAR2130P_SLAVE_TCU },
237 static const struct qcom_icc_qosbox alm_gpu_tcu_qos = {
239 .port_offsets = { 0x9e000 },
242 .prio_fwd_disable = 1,
245 static struct qcom_icc_node alm_gpu_tcu = {
246 .name = "alm_gpu_tcu",
247 .id = SAR2130P_MASTER_GPU_TCU,
250 .qosbox = &alm_gpu_tcu_qos,
252 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
255 static const struct qcom_icc_qosbox alm_sys_tcu_qos = {
257 .port_offsets = { 0x9f000 },
260 .prio_fwd_disable = 1,
263 static struct qcom_icc_node alm_sys_tcu = {
264 .name = "alm_sys_tcu",
265 .id = SAR2130P_MASTER_SYS_TCU,
268 .qosbox = &alm_sys_tcu_qos,
270 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
273 static struct qcom_icc_node chm_apps = {
275 .id = SAR2130P_MASTER_APPSS_PROC,
279 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC,
280 SAR2130P_SLAVE_MEM_NOC_PCIE_SNOC },
283 static const struct qcom_icc_qosbox qnm_gpu_qos = {
285 .port_offsets = { 0xe000, 0x4e000 },
288 .prio_fwd_disable = 1,
291 static struct qcom_icc_node qnm_gpu = {
293 .id = SAR2130P_MASTER_GFX3D,
296 .qosbox = &qnm_gpu_qos,
298 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
301 static const struct qcom_icc_qosbox qnm_mnoc_hf_qos = {
303 .port_offsets = { 0xf000, 0x4f000 },
308 static struct qcom_icc_node qnm_mnoc_hf = {
309 .name = "qnm_mnoc_hf",
310 .id = SAR2130P_MASTER_MNOC_HF_MEM_NOC,
313 .qosbox = &qnm_mnoc_hf_qos,
315 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
318 static const struct qcom_icc_qosbox qnm_mnoc_sf_qos = {
320 .port_offsets = { 0x9d000 },
325 static struct qcom_icc_node qnm_mnoc_sf = {
326 .name = "qnm_mnoc_sf",
327 .id = SAR2130P_MASTER_MNOC_SF_MEM_NOC,
330 .qosbox = &qnm_mnoc_sf_qos,
332 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
335 static const struct qcom_icc_qosbox qnm_nsp_gemnoc_qos = {
337 .port_offsets = { 0x10000, 0x50000 },
340 .prio_fwd_disable = 1,
343 static struct qcom_icc_node qnm_nsp_gemnoc = {
344 .name = "qnm_nsp_gemnoc",
345 .id = SAR2130P_MASTER_COMPUTE_NOC,
348 .qosbox = &qnm_nsp_gemnoc_qos,
350 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
353 static const struct qcom_icc_qosbox qnm_pcie_qos = {
355 .port_offsets = { 0xa2000 },
360 static struct qcom_icc_node qnm_pcie = {
362 .id = SAR2130P_MASTER_ANOC_PCIE_GEM_NOC,
365 .qosbox = &qnm_pcie_qos,
367 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC },
370 static const struct qcom_icc_qosbox qnm_snoc_gc_qos = {
372 .port_offsets = { 0xa0000 },
377 static struct qcom_icc_node qnm_snoc_gc = {
378 .name = "qnm_snoc_gc",
379 .id = SAR2130P_MASTER_SNOC_GC_MEM_NOC,
382 .qosbox = &qnm_snoc_gc_qos,
384 .links = { SAR2130P_SLAVE_LLCC },
387 static const struct qcom_icc_qosbox qnm_snoc_sf_qos = {
389 .port_offsets = { 0xa1000 },
394 static struct qcom_icc_node qnm_snoc_sf = {
395 .name = "qnm_snoc_sf",
396 .id = SAR2130P_MASTER_SNOC_SF_MEM_NOC,
399 .qosbox = &qnm_snoc_sf_qos,
401 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC,
402 SAR2130P_SLAVE_MEM_NOC_PCIE_SNOC },
405 static struct qcom_icc_node qxm_wlan_q6 = {
406 .name = "qxm_wlan_q6",
407 .id = SAR2130P_MASTER_WLAN_Q6,
411 .links = { SAR2130P_SLAVE_GEM_NOC_CNOC, SAR2130P_SLAVE_LLCC,
412 SAR2130P_SLAVE_MEM_NOC_PCIE_SNOC },
415 static struct qcom_icc_node qhm_config_noc = {
416 .name = "qhm_config_noc",
417 .id = SAR2130P_MASTER_CNOC_LPASS_AG_NOC,
421 .links = { SAR2130P_SLAVE_LPASS_CORE_CFG, SAR2130P_SLAVE_LPASS_LPI_CFG,
422 SAR2130P_SLAVE_LPASS_MPU_CFG, SAR2130P_SLAVE_LPASS_TOP_CFG,
423 SAR2130P_SLAVE_SERVICES_LPASS_AML_NOC, SAR2130P_SLAVE_SERVICE_LPASS_AG_NOC },
426 static struct qcom_icc_node qxm_lpass_dsp = {
427 .name = "qxm_lpass_dsp",
428 .id = SAR2130P_MASTER_LPASS_PROC,
432 .links = { SAR2130P_SLAVE_LPASS_TOP_CFG, SAR2130P_SLAVE_LPASS_SNOC,
433 SAR2130P_SLAVE_SERVICES_LPASS_AML_NOC, SAR2130P_SLAVE_SERVICE_LPASS_AG_NOC },
436 static struct qcom_icc_node llcc_mc = {
438 .id = SAR2130P_MASTER_LLCC,
442 .links = { SAR2130P_SLAVE_EBI1 },
445 static const struct qcom_icc_qosbox qnm_camnoc_hf_qos = {
447 .port_offsets = { 0x1c000 },
452 static struct qcom_icc_node qnm_camnoc_hf = {
453 .name = "qnm_camnoc_hf",
454 .id = SAR2130P_MASTER_CAMNOC_HF,
457 .qosbox = &qnm_camnoc_hf_qos,
459 .links = { SAR2130P_SLAVE_MNOC_HF_MEM_NOC },
462 static const struct qcom_icc_qosbox qnm_camnoc_icp_qos = {
464 .port_offsets = { 0x1c080 },
469 static struct qcom_icc_node qnm_camnoc_icp = {
470 .name = "qnm_camnoc_icp",
471 .id = SAR2130P_MASTER_CAMNOC_ICP,
474 .qosbox = &qnm_camnoc_icp_qos,
476 .links = { SAR2130P_SLAVE_MNOC_SF_MEM_NOC },
479 static const struct qcom_icc_qosbox qnm_camnoc_sf_qos = {
481 .port_offsets = { 0x1c100 },
486 static struct qcom_icc_node qnm_camnoc_sf = {
487 .name = "qnm_camnoc_sf",
488 .id = SAR2130P_MASTER_CAMNOC_SF,
491 .qosbox = &qnm_camnoc_sf_qos,
493 .links = { SAR2130P_SLAVE_MNOC_SF_MEM_NOC },
496 static const struct qcom_icc_qosbox qnm_lsr_qos = {
498 .port_offsets = { 0x1f000, 0x1f080 },
503 static struct qcom_icc_node qnm_lsr = {
505 .id = SAR2130P_MASTER_LSR,
508 .qosbox = &qnm_lsr_qos,
510 .links = { SAR2130P_SLAVE_MNOC_HF_MEM_NOC },
513 static const struct qcom_icc_qosbox qnm_mdp_qos = {
515 .port_offsets = { 0x1d000, 0x1d080 },
520 static struct qcom_icc_node qnm_mdp = {
522 .id = SAR2130P_MASTER_MDP,
525 .qosbox = &qnm_mdp_qos,
527 .links = { SAR2130P_SLAVE_MNOC_HF_MEM_NOC },
530 static struct qcom_icc_node qnm_mnoc_cfg = {
531 .name = "qnm_mnoc_cfg",
532 .id = SAR2130P_MASTER_CNOC_MNOC_CFG,
536 .links = { SAR2130P_SLAVE_SERVICE_MNOC },
539 static const struct qcom_icc_qosbox qnm_video_qos = {
541 .port_offsets = { 0x1e000, 0x1e080 },
546 static struct qcom_icc_node qnm_video = {
548 .id = SAR2130P_MASTER_VIDEO,
551 .qosbox = &qnm_video_qos,
553 .links = { SAR2130P_SLAVE_MNOC_SF_MEM_NOC },
556 static const struct qcom_icc_qosbox qnm_video_cv_cpu_qos = {
558 .port_offsets = { 0x1e100 },
563 static struct qcom_icc_node qnm_video_cv_cpu = {
564 .name = "qnm_video_cv_cpu",
565 .id = SAR2130P_MASTER_VIDEO_CV_PROC,
568 .qosbox = &qnm_video_cv_cpu_qos,
570 .links = { SAR2130P_SLAVE_MNOC_SF_MEM_NOC },
573 static const struct qcom_icc_qosbox qnm_video_cvp_qos = {
575 .port_offsets = { 0x1e180 },
580 static struct qcom_icc_node qnm_video_cvp = {
581 .name = "qnm_video_cvp",
582 .id = SAR2130P_MASTER_VIDEO_PROC,
585 .qosbox = &qnm_video_cvp_qos,
587 .links = { SAR2130P_SLAVE_MNOC_SF_MEM_NOC },
590 static const struct qcom_icc_qosbox qnm_video_v_cpu_qos = {
592 .port_offsets = { 0x1e200 },
597 static struct qcom_icc_node qnm_video_v_cpu = {
598 .name = "qnm_video_v_cpu",
599 .id = SAR2130P_MASTER_VIDEO_V_PROC,
602 .qosbox = &qnm_video_v_cpu_qos,
604 .links = { SAR2130P_SLAVE_MNOC_SF_MEM_NOC },
607 static struct qcom_icc_node qhm_nsp_noc_config = {
608 .name = "qhm_nsp_noc_config",
609 .id = SAR2130P_MASTER_CDSP_NOC_CFG,
613 .links = { SAR2130P_SLAVE_SERVICE_NSP_NOC },
616 static struct qcom_icc_node qxm_nsp = {
618 .id = SAR2130P_MASTER_CDSP_PROC,
622 .links = { SAR2130P_SLAVE_CDSP_MEM_NOC },
625 static const struct qcom_icc_qosbox xm_pcie3_0_qos = {
627 .port_offsets = { 0x9000 },
630 .prio_fwd_disable = 1,
633 static struct qcom_icc_node xm_pcie3_0 = {
634 .name = "xm_pcie3_0",
635 .id = SAR2130P_MASTER_PCIE_0,
638 .qosbox = &xm_pcie3_0_qos,
640 .links = { SAR2130P_SLAVE_ANOC_PCIE_GEM_NOC },
643 static const struct qcom_icc_qosbox xm_pcie3_1_qos = {
645 .port_offsets = { 0xa000 },
648 .prio_fwd_disable = 1,
651 static struct qcom_icc_node xm_pcie3_1 = {
652 .name = "xm_pcie3_1",
653 .id = SAR2130P_MASTER_PCIE_1,
656 .qosbox = &xm_pcie3_1_qos,
658 .links = { SAR2130P_SLAVE_ANOC_PCIE_GEM_NOC },
661 static const struct qcom_icc_qosbox qhm_gic_qos = {
663 .port_offsets = { 0x1d000 },
666 .prio_fwd_disable = 1,
669 static struct qcom_icc_node qhm_gic = {
671 .id = SAR2130P_MASTER_GIC_AHB,
674 .qosbox = &qhm_gic_qos,
676 .links = { SAR2130P_SLAVE_SNOC_GEM_NOC_SF },
679 static const struct qcom_icc_qosbox qhm_qdss_bam_qos = {
681 .port_offsets = { 0x22000 },
684 .prio_fwd_disable = 1,
687 static struct qcom_icc_node qhm_qdss_bam = {
688 .name = "qhm_qdss_bam",
689 .id = SAR2130P_MASTER_QDSS_BAM,
692 .qosbox = &qhm_qdss_bam_qos,
694 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
697 static const struct qcom_icc_qosbox qhm_qspi_qos = {
699 .port_offsets = { 0x23000 },
702 .prio_fwd_disable = 1,
705 static struct qcom_icc_node qhm_qspi = {
707 .id = SAR2130P_MASTER_QSPI_0,
710 .qosbox = &qhm_qspi_qos,
712 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
715 static const struct qcom_icc_qosbox qhm_qup0_qos = {
717 .port_offsets = { 0x24000 },
720 .prio_fwd_disable = 1,
723 static struct qcom_icc_node qhm_qup0 = {
725 .id = SAR2130P_MASTER_QUP_0,
728 .qosbox = &qhm_qup0_qos,
730 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
733 static const struct qcom_icc_qosbox qhm_qup1_qos = {
735 .port_offsets = { 0x25000 },
738 .prio_fwd_disable = 1,
741 static struct qcom_icc_node qhm_qup1 = {
743 .id = SAR2130P_MASTER_QUP_1,
746 .qosbox = &qhm_qup1_qos,
748 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
751 static struct qcom_icc_node qnm_aggre2_noc = {
752 .name = "qnm_aggre2_noc",
753 .id = SAR2130P_MASTER_A2NOC_SNOC,
757 .links = { SAR2130P_SLAVE_SNOC_GEM_NOC_SF },
760 static const struct qcom_icc_qosbox qnm_cnoc_datapath_qos = {
762 .port_offsets = { 0x26000 },
765 .prio_fwd_disable = 1,
768 static struct qcom_icc_node qnm_cnoc_datapath = {
769 .name = "qnm_cnoc_datapath",
770 .id = SAR2130P_MASTER_CNOC_DATAPATH,
773 .qosbox = &qnm_cnoc_datapath_qos,
775 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
778 static const struct qcom_icc_qosbox qnm_lpass_noc_qos = {
780 .port_offsets = { 0x1e000 },
783 .prio_fwd_disable = 1,
786 static struct qcom_icc_node qnm_lpass_noc = {
787 .name = "qnm_lpass_noc",
788 .id = SAR2130P_MASTER_LPASS_ANOC,
791 .qosbox = &qnm_lpass_noc_qos,
793 .links = { SAR2130P_SLAVE_SNOC_GEM_NOC_SF },
796 static struct qcom_icc_node qnm_snoc_cfg = {
797 .name = "qnm_snoc_cfg",
798 .id = SAR2130P_MASTER_SNOC_CFG,
802 .links = { SAR2130P_SLAVE_SERVICE_SNOC },
805 static const struct qcom_icc_qosbox qxm_crypto_qos = {
807 .port_offsets = { 0x27000 },
810 .prio_fwd_disable = 1,
813 static struct qcom_icc_node qxm_crypto = {
814 .name = "qxm_crypto",
815 .id = SAR2130P_MASTER_CRYPTO,
818 .qosbox = &qxm_crypto_qos,
820 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
823 static const struct qcom_icc_qosbox qxm_pimem_qos = {
825 .port_offsets = { 0x1f000 },
828 .prio_fwd_disable = 1,
831 static struct qcom_icc_node qxm_pimem = {
833 .id = SAR2130P_MASTER_PIMEM,
836 .qosbox = &qxm_pimem_qos,
838 .links = { SAR2130P_SLAVE_SNOC_GEM_NOC_GC },
841 static const struct qcom_icc_qosbox xm_gic_qos = {
843 .port_offsets = { 0x21000 },
846 .prio_fwd_disable = 1,
849 static struct qcom_icc_node xm_gic = {
851 .id = SAR2130P_MASTER_GIC,
854 .qosbox = &xm_gic_qos,
856 .links = { SAR2130P_SLAVE_SNOC_GEM_NOC_GC },
859 static const struct qcom_icc_qosbox xm_qdss_etr_0_qos = {
861 .port_offsets = { 0x1b000 },
864 .prio_fwd_disable = 1,
867 static struct qcom_icc_node xm_qdss_etr_0 = {
868 .name = "xm_qdss_etr_0",
869 .id = SAR2130P_MASTER_QDSS_ETR,
872 .qosbox = &xm_qdss_etr_0_qos,
874 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
877 static const struct qcom_icc_qosbox xm_qdss_etr_1_qos = {
879 .port_offsets = { 0x1c000 },
882 .prio_fwd_disable = 1,
885 static struct qcom_icc_node xm_qdss_etr_1 = {
886 .name = "xm_qdss_etr_1",
887 .id = SAR2130P_MASTER_QDSS_ETR_1,
890 .qosbox = &xm_qdss_etr_1_qos,
892 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
895 static const struct qcom_icc_qosbox xm_sdc1_qos = {
897 .port_offsets = { 0x29000 },
900 .prio_fwd_disable = 1,
903 static struct qcom_icc_node xm_sdc1 = {
905 .id = SAR2130P_MASTER_SDCC_1,
908 .qosbox = &xm_sdc1_qos,
910 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
913 static const struct qcom_icc_qosbox xm_usb3_0_qos = {
915 .port_offsets = { 0x28000 },
918 .prio_fwd_disable = 1,
921 static struct qcom_icc_node xm_usb3_0 = {
923 .id = SAR2130P_MASTER_USB3_0,
926 .qosbox = &xm_usb3_0_qos,
928 .links = { SAR2130P_SLAVE_A2NOC_SNOC },
931 static struct qcom_icc_node qup0_core_slave = {
932 .name = "qup0_core_slave",
933 .id = SAR2130P_SLAVE_QUP_CORE_0,
939 static struct qcom_icc_node qup1_core_slave = {
940 .name = "qup1_core_slave",
941 .id = SAR2130P_SLAVE_QUP_CORE_1,
947 static struct qcom_icc_node qhs_ahb2phy0 = {
948 .name = "qhs_ahb2phy0",
949 .id = SAR2130P_SLAVE_AHB2PHY_SOUTH,
955 static struct qcom_icc_node qhs_aoss = {
957 .id = SAR2130P_SLAVE_AOSS,
963 static struct qcom_icc_node qhs_camera_cfg = {
964 .name = "qhs_camera_cfg",
965 .id = SAR2130P_SLAVE_CAMERA_CFG,
971 static struct qcom_icc_node qhs_clk_ctl = {
972 .name = "qhs_clk_ctl",
973 .id = SAR2130P_SLAVE_CLK_CTL,
979 static struct qcom_icc_node qhs_compute_cfg = {
980 .name = "qhs_compute_cfg",
981 .id = SAR2130P_SLAVE_CDSP_CFG,
985 .links = { SAR2130P_MASTER_CDSP_NOC_CFG },
988 static struct qcom_icc_node qhs_cpr_cx = {
989 .name = "qhs_cpr_cx",
990 .id = SAR2130P_SLAVE_RBCPR_CX_CFG,
996 static struct qcom_icc_node qhs_cpr_mmcx = {
997 .name = "qhs_cpr_mmcx",
998 .id = SAR2130P_SLAVE_RBCPR_MMCX_CFG,
1004 static struct qcom_icc_node qhs_cpr_mxa = {
1005 .name = "qhs_cpr_mxa",
1006 .id = SAR2130P_SLAVE_RBCPR_MXA_CFG,
1012 static struct qcom_icc_node qhs_cpr_mxc = {
1013 .name = "qhs_cpr_mxc",
1014 .id = SAR2130P_SLAVE_RBCPR_MXC_CFG,
1020 static struct qcom_icc_node qhs_cpr_nspcx = {
1021 .name = "qhs_cpr_nspcx",
1022 .id = SAR2130P_SLAVE_CPR_NSPCX,
1028 static struct qcom_icc_node qhs_crypto0_cfg = {
1029 .name = "qhs_crypto0_cfg",
1030 .id = SAR2130P_SLAVE_CRYPTO_0_CFG,
1036 static struct qcom_icc_node qhs_cx_rdpm = {
1037 .name = "qhs_cx_rdpm",
1038 .id = SAR2130P_SLAVE_CX_RDPM,
1044 static struct qcom_icc_node qhs_display_cfg = {
1045 .name = "qhs_display_cfg",
1046 .id = SAR2130P_SLAVE_DISPLAY_CFG,
1052 static struct qcom_icc_node qhs_gpuss_cfg = {
1053 .name = "qhs_gpuss_cfg",
1054 .id = SAR2130P_SLAVE_GFX3D_CFG,
1060 static struct qcom_icc_node qhs_imem_cfg = {
1061 .name = "qhs_imem_cfg",
1062 .id = SAR2130P_SLAVE_IMEM_CFG,
1068 static struct qcom_icc_node qhs_ipc_router = {
1069 .name = "qhs_ipc_router",
1070 .id = SAR2130P_SLAVE_IPC_ROUTER_CFG,
1076 static struct qcom_icc_node qhs_lpass_cfg = {
1077 .name = "qhs_lpass_cfg",
1078 .id = SAR2130P_SLAVE_LPASS,
1082 .links = { SAR2130P_MASTER_CNOC_LPASS_AG_NOC },
1085 static struct qcom_icc_node qhs_mx_rdpm = {
1086 .name = "qhs_mx_rdpm",
1087 .id = SAR2130P_SLAVE_MX_RDPM,
1093 static struct qcom_icc_node qhs_pcie0_cfg = {
1094 .name = "qhs_pcie0_cfg",
1095 .id = SAR2130P_SLAVE_PCIE_0_CFG,
1101 static struct qcom_icc_node qhs_pcie1_cfg = {
1102 .name = "qhs_pcie1_cfg",
1103 .id = SAR2130P_SLAVE_PCIE_1_CFG,
1109 static struct qcom_icc_node qhs_pdm = {
1111 .id = SAR2130P_SLAVE_PDM,
1117 static struct qcom_icc_node qhs_pimem_cfg = {
1118 .name = "qhs_pimem_cfg",
1119 .id = SAR2130P_SLAVE_PIMEM_CFG,
1125 static struct qcom_icc_node qhs_prng = {
1127 .id = SAR2130P_SLAVE_PRNG,
1133 static struct qcom_icc_node qhs_qdss_cfg = {
1134 .name = "qhs_qdss_cfg",
1135 .id = SAR2130P_SLAVE_QDSS_CFG,
1141 static struct qcom_icc_node qhs_qspi = {
1143 .id = SAR2130P_SLAVE_QSPI_0,
1149 static struct qcom_icc_node qhs_qup0 = {
1151 .id = SAR2130P_SLAVE_QUP_0,
1157 static struct qcom_icc_node qhs_qup1 = {
1159 .id = SAR2130P_SLAVE_QUP_1,
1165 static struct qcom_icc_node qhs_sdc1 = {
1167 .id = SAR2130P_SLAVE_SDCC_1,
1173 static struct qcom_icc_node qhs_tcsr = {
1175 .id = SAR2130P_SLAVE_TCSR,
1181 static struct qcom_icc_node qhs_tlmm = {
1183 .id = SAR2130P_SLAVE_TLMM,
1189 static struct qcom_icc_node qhs_tme_cfg = {
1190 .name = "qhs_tme_cfg",
1191 .id = SAR2130P_SLAVE_TME_CFG,
1197 static struct qcom_icc_node qhs_usb3_0 = {
1198 .name = "qhs_usb3_0",
1199 .id = SAR2130P_SLAVE_USB3_0,
1205 static struct qcom_icc_node qhs_venus_cfg = {
1206 .name = "qhs_venus_cfg",
1207 .id = SAR2130P_SLAVE_VENUS_CFG,
1213 static struct qcom_icc_node qhs_vsense_ctrl_cfg = {
1214 .name = "qhs_vsense_ctrl_cfg",
1215 .id = SAR2130P_SLAVE_VSENSE_CTRL_CFG,
1221 static struct qcom_icc_node qhs_wlan_q6 = {
1222 .name = "qhs_wlan_q6",
1223 .id = SAR2130P_SLAVE_WLAN_Q6_CFG,
1229 static struct qcom_icc_node qns_ddrss_cfg = {
1230 .name = "qns_ddrss_cfg",
1231 .id = SAR2130P_SLAVE_DDRSS_CFG,
1237 static struct qcom_icc_node qns_mnoc_cfg = {
1238 .name = "qns_mnoc_cfg",
1239 .id = SAR2130P_SLAVE_CNOC_MNOC_CFG,
1243 .links = { SAR2130P_MASTER_CNOC_MNOC_CFG },
1246 static struct qcom_icc_node qns_snoc_cfg = {
1247 .name = "qns_snoc_cfg",
1248 .id = SAR2130P_SLAVE_SNOC_CFG,
1252 .links = { SAR2130P_MASTER_SNOC_CFG },
1255 static struct qcom_icc_node qxs_imem = {
1257 .id = SAR2130P_SLAVE_IMEM,
1263 static struct qcom_icc_node qxs_pimem = {
1264 .name = "qxs_pimem",
1265 .id = SAR2130P_SLAVE_PIMEM,
1271 static struct qcom_icc_node srvc_cnoc = {
1272 .name = "srvc_cnoc",
1273 .id = SAR2130P_SLAVE_SERVICE_CNOC,
1279 static struct qcom_icc_node xs_pcie_0 = {
1280 .name = "xs_pcie_0",
1281 .id = SAR2130P_SLAVE_PCIE_0,
1287 static struct qcom_icc_node xs_pcie_1 = {
1288 .name = "xs_pcie_1",
1289 .id = SAR2130P_SLAVE_PCIE_1,
1295 static struct qcom_icc_node xs_qdss_stm = {
1296 .name = "xs_qdss_stm",
1297 .id = SAR2130P_SLAVE_QDSS_STM,
1303 static struct qcom_icc_node xs_sys_tcu_cfg = {
1304 .name = "xs_sys_tcu_cfg",
1305 .id = SAR2130P_SLAVE_TCU,
1311 static struct qcom_icc_node qns_gem_noc_cnoc = {
1312 .name = "qns_gem_noc_cnoc",
1313 .id = SAR2130P_SLAVE_GEM_NOC_CNOC,
1317 .links = { SAR2130P_MASTER_GEM_NOC_CNOC },
1320 static struct qcom_icc_node qns_llcc = {
1322 .id = SAR2130P_SLAVE_LLCC,
1326 .links = { SAR2130P_MASTER_LLCC },
1329 static struct qcom_icc_node qns_pcie = {
1331 .id = SAR2130P_SLAVE_MEM_NOC_PCIE_SNOC,
1335 .links = { SAR2130P_MASTER_GEM_NOC_PCIE_SNOC },
1338 static struct qcom_icc_node qhs_lpass_core = {
1339 .name = "qhs_lpass_core",
1340 .id = SAR2130P_SLAVE_LPASS_CORE_CFG,
1346 static struct qcom_icc_node qhs_lpass_lpi = {
1347 .name = "qhs_lpass_lpi",
1348 .id = SAR2130P_SLAVE_LPASS_LPI_CFG,
1354 static struct qcom_icc_node qhs_lpass_mpu = {
1355 .name = "qhs_lpass_mpu",
1356 .id = SAR2130P_SLAVE_LPASS_MPU_CFG,
1362 static struct qcom_icc_node qhs_lpass_top = {
1363 .name = "qhs_lpass_top",
1364 .id = SAR2130P_SLAVE_LPASS_TOP_CFG,
1370 static struct qcom_icc_node qns_sysnoc = {
1371 .name = "qns_sysnoc",
1372 .id = SAR2130P_SLAVE_LPASS_SNOC,
1376 .links = { SAR2130P_MASTER_LPASS_ANOC },
1379 static struct qcom_icc_node srvc_niu_aml_noc = {
1380 .name = "srvc_niu_aml_noc",
1381 .id = SAR2130P_SLAVE_SERVICES_LPASS_AML_NOC,
1387 static struct qcom_icc_node srvc_niu_lpass_agnoc = {
1388 .name = "srvc_niu_lpass_agnoc",
1389 .id = SAR2130P_SLAVE_SERVICE_LPASS_AG_NOC,
1395 static struct qcom_icc_node ebi = {
1397 .id = SAR2130P_SLAVE_EBI1,
1403 static struct qcom_icc_node qns_mem_noc_hf = {
1404 .name = "qns_mem_noc_hf",
1405 .id = SAR2130P_SLAVE_MNOC_HF_MEM_NOC,
1409 .links = { SAR2130P_MASTER_MNOC_HF_MEM_NOC },
1412 static struct qcom_icc_node qns_mem_noc_sf = {
1413 .name = "qns_mem_noc_sf",
1414 .id = SAR2130P_SLAVE_MNOC_SF_MEM_NOC,
1418 .links = { SAR2130P_MASTER_MNOC_SF_MEM_NOC },
1421 static struct qcom_icc_node srvc_mnoc = {
1422 .name = "srvc_mnoc",
1423 .id = SAR2130P_SLAVE_SERVICE_MNOC,
1429 static struct qcom_icc_node qns_nsp_gemnoc = {
1430 .name = "qns_nsp_gemnoc",
1431 .id = SAR2130P_SLAVE_CDSP_MEM_NOC,
1435 .links = { SAR2130P_MASTER_COMPUTE_NOC },
1438 static struct qcom_icc_node service_nsp_noc = {
1439 .name = "service_nsp_noc",
1440 .id = SAR2130P_SLAVE_SERVICE_NSP_NOC,
1446 static struct qcom_icc_node qns_pcie_mem_noc = {
1447 .name = "qns_pcie_mem_noc",
1448 .id = SAR2130P_SLAVE_ANOC_PCIE_GEM_NOC,
1452 .links = { SAR2130P_MASTER_ANOC_PCIE_GEM_NOC },
1455 static struct qcom_icc_node qns_a2noc_snoc = {
1456 .name = "qns_a2noc_snoc",
1457 .id = SAR2130P_SLAVE_A2NOC_SNOC,
1461 .links = { SAR2130P_MASTER_A2NOC_SNOC },
1464 static struct qcom_icc_node qns_gemnoc_gc = {
1465 .name = "qns_gemnoc_gc",
1466 .id = SAR2130P_SLAVE_SNOC_GEM_NOC_GC,
1470 .links = { SAR2130P_MASTER_SNOC_GC_MEM_NOC },
1473 static struct qcom_icc_node qns_gemnoc_sf = {
1474 .name = "qns_gemnoc_sf",
1475 .id = SAR2130P_SLAVE_SNOC_GEM_NOC_SF,
1479 .links = { SAR2130P_MASTER_SNOC_SF_MEM_NOC },
1482 static struct qcom_icc_node srvc_snoc = {
1483 .name = "srvc_snoc",
1484 .id = SAR2130P_SLAVE_SERVICE_SNOC,
1490 static struct qcom_icc_bcm bcm_acv = {
1492 .enable_mask = BIT(3),
1497 static struct qcom_icc_bcm bcm_ce0 = {
1500 .nodes = { &qxm_crypto },
1503 static struct qcom_icc_bcm bcm_cn0 = {
1505 .enable_mask = BIT(0),
1508 .nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie,
1509 &xm_qdss_dap, &qhs_ahb2phy0,
1510 &qhs_aoss, &qhs_camera_cfg,
1511 &qhs_clk_ctl, &qhs_compute_cfg,
1512 &qhs_cpr_cx, &qhs_cpr_mmcx,
1513 &qhs_cpr_mxa, &qhs_cpr_mxc,
1514 &qhs_cpr_nspcx, &qhs_crypto0_cfg,
1515 &qhs_cx_rdpm, &qhs_display_cfg,
1516 &qhs_gpuss_cfg, &qhs_imem_cfg,
1517 &qhs_ipc_router, &qhs_lpass_cfg,
1518 &qhs_mx_rdpm, &qhs_pcie0_cfg,
1519 &qhs_pcie1_cfg, &qhs_pdm,
1520 &qhs_pimem_cfg, &qhs_prng,
1521 &qhs_qdss_cfg, &qhs_qspi,
1522 &qhs_qup0, &qhs_qup1,
1523 &qhs_sdc1, &qhs_tcsr,
1524 &qhs_tlmm, &qhs_tme_cfg,
1525 &qhs_usb3_0, &qhs_venus_cfg,
1526 &qhs_vsense_ctrl_cfg, &qhs_wlan_q6,
1527 &qns_ddrss_cfg, &qns_mnoc_cfg,
1528 &qns_snoc_cfg, &qxs_imem,
1529 &qxs_pimem, &srvc_cnoc,
1530 &xs_pcie_0, &xs_pcie_1,
1531 &xs_qdss_stm, &xs_sys_tcu_cfg },
1534 static struct qcom_icc_bcm bcm_co0 = {
1536 .enable_mask = BIT(0),
1538 .nodes = { &qxm_nsp, &qns_nsp_gemnoc },
1541 static struct qcom_icc_bcm bcm_mc0 = {
1548 static struct qcom_icc_bcm bcm_mm0 = {
1552 .nodes = { &qns_mem_noc_hf },
1555 static struct qcom_icc_bcm bcm_mm1 = {
1557 .enable_mask = BIT(0),
1559 .nodes = { &qnm_camnoc_hf, &qnm_camnoc_icp,
1560 &qnm_camnoc_sf, &qnm_lsr,
1561 &qnm_mdp, &qnm_mnoc_cfg,
1562 &qnm_video, &qnm_video_cv_cpu,
1563 &qnm_video_cvp, &qnm_video_v_cpu,
1567 static struct qcom_icc_bcm bcm_qup0 = {
1572 .nodes = { &qup0_core_slave },
1575 static struct qcom_icc_bcm bcm_qup1 = {
1580 .nodes = { &qup1_core_slave },
1583 static struct qcom_icc_bcm bcm_sh0 = {
1587 .nodes = { &qns_llcc },
1590 static struct qcom_icc_bcm bcm_sh1 = {
1592 .enable_mask = BIT(0),
1594 .nodes = { &alm_gpu_tcu, &alm_sys_tcu,
1595 &chm_apps, &qnm_gpu,
1596 &qnm_mnoc_hf, &qnm_mnoc_sf,
1597 &qnm_nsp_gemnoc, &qnm_pcie,
1598 &qnm_snoc_gc, &qnm_snoc_sf,
1599 &qxm_wlan_q6, &qns_gem_noc_cnoc,
1603 static struct qcom_icc_bcm bcm_sn0 = {
1607 .nodes = { &qns_gemnoc_sf },
1610 static struct qcom_icc_bcm bcm_sn1 = {
1612 .enable_mask = BIT(0),
1614 .nodes = { &qhm_gic, &qxm_pimem,
1615 &xm_gic, &qns_gemnoc_gc },
1618 static struct qcom_icc_bcm bcm_sn3 = {
1621 .nodes = { &qnm_aggre2_noc },
1624 static struct qcom_icc_bcm bcm_sn4 = {
1627 .nodes = { &qnm_lpass_noc },
1630 static struct qcom_icc_bcm bcm_sn7 = {
1633 .nodes = { &qns_pcie_mem_noc },
1636 static struct qcom_icc_bcm * const clk_virt_bcms[] = {
1641 static struct qcom_icc_node * const clk_virt_nodes[] = {
1642 [MASTER_QUP_CORE_0] = &qup0_core_master,
1643 [MASTER_QUP_CORE_1] = &qup1_core_master,
1644 [SLAVE_QUP_CORE_0] = &qup0_core_slave,
1645 [SLAVE_QUP_CORE_1] = &qup1_core_slave,
1648 static const struct qcom_icc_desc sar2130p_clk_virt = {
1649 .nodes = clk_virt_nodes,
1650 .num_nodes = ARRAY_SIZE(clk_virt_nodes),
1651 .bcms = clk_virt_bcms,
1652 .num_bcms = ARRAY_SIZE(clk_virt_bcms),
1655 static struct qcom_icc_bcm * const config_noc_bcms[] = {
1659 static struct qcom_icc_node * const config_noc_nodes[] = {
1660 [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc,
1661 [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie,
1662 [MASTER_QDSS_DAP] = &xm_qdss_dap,
1663 [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0,
1664 [SLAVE_AOSS] = &qhs_aoss,
1665 [SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
1666 [SLAVE_CLK_CTL] = &qhs_clk_ctl,
1667 [SLAVE_CDSP_CFG] = &qhs_compute_cfg,
1668 [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
1669 [SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx,
1670 [SLAVE_RBCPR_MXA_CFG] = &qhs_cpr_mxa,
1671 [SLAVE_RBCPR_MXC_CFG] = &qhs_cpr_mxc,
1672 [SLAVE_CPR_NSPCX] = &qhs_cpr_nspcx,
1673 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
1674 [SLAVE_CX_RDPM] = &qhs_cx_rdpm,
1675 [SLAVE_DISPLAY_CFG] = &qhs_display_cfg,
1676 [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
1677 [SLAVE_IMEM_CFG] = &qhs_imem_cfg,
1678 [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
1679 [SLAVE_LPASS] = &qhs_lpass_cfg,
1680 [SLAVE_MX_RDPM] = &qhs_mx_rdpm,
1681 [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
1682 [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
1683 [SLAVE_PDM] = &qhs_pdm,
1684 [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
1685 [SLAVE_PRNG] = &qhs_prng,
1686 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
1687 [SLAVE_QSPI_0] = &qhs_qspi,
1688 [SLAVE_QUP_0] = &qhs_qup0,
1689 [SLAVE_QUP_1] = &qhs_qup1,
1690 [SLAVE_SDCC_1] = &qhs_sdc1,
1691 [SLAVE_TCSR] = &qhs_tcsr,
1692 [SLAVE_TLMM] = &qhs_tlmm,
1693 [SLAVE_TME_CFG] = &qhs_tme_cfg,
1694 [SLAVE_USB3_0] = &qhs_usb3_0,
1695 [SLAVE_VENUS_CFG] = &qhs_venus_cfg,
1696 [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg,
1697 [SLAVE_WLAN_Q6_CFG] = &qhs_wlan_q6,
1698 [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg,
1699 [SLAVE_CNOC_MNOC_CFG] = &qns_mnoc_cfg,
1700 [SLAVE_SNOC_CFG] = &qns_snoc_cfg,
1701 [SLAVE_IMEM] = &qxs_imem,
1702 [SLAVE_PIMEM] = &qxs_pimem,
1703 [SLAVE_SERVICE_CNOC] = &srvc_cnoc,
1704 [SLAVE_PCIE_0] = &xs_pcie_0,
1705 [SLAVE_PCIE_1] = &xs_pcie_1,
1706 [SLAVE_QDSS_STM] = &xs_qdss_stm,
1707 [SLAVE_TCU] = &xs_sys_tcu_cfg,
1710 static const struct qcom_icc_desc sar2130p_config_noc = {
1711 .config = &icc_regmap_config,
1712 .nodes = config_noc_nodes,
1713 .num_nodes = ARRAY_SIZE(config_noc_nodes),
1714 .bcms = config_noc_bcms,
1715 .num_bcms = ARRAY_SIZE(config_noc_bcms),
1718 static struct qcom_icc_bcm * const gem_noc_bcms[] = {
1723 static struct qcom_icc_node * const gem_noc_nodes[] = {
1724 [MASTER_GPU_TCU] = &alm_gpu_tcu,
1725 [MASTER_SYS_TCU] = &alm_sys_tcu,
1726 [MASTER_APPSS_PROC] = &chm_apps,
1727 [MASTER_GFX3D] = &qnm_gpu,
1728 [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
1729 [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
1730 [MASTER_COMPUTE_NOC] = &qnm_nsp_gemnoc,
1731 [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie,
1732 [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
1733 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
1734 [MASTER_WLAN_Q6] = &qxm_wlan_q6,
1735 [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc,
1736 [SLAVE_LLCC] = &qns_llcc,
1737 [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie,
1740 static const struct qcom_icc_desc sar2130p_gem_noc = {
1741 .config = &icc_regmap_config,
1742 .nodes = gem_noc_nodes,
1743 .num_nodes = ARRAY_SIZE(gem_noc_nodes),
1744 .bcms = gem_noc_bcms,
1745 .num_bcms = ARRAY_SIZE(gem_noc_bcms),
1748 static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = {
1751 static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
1752 [MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc,
1753 [MASTER_LPASS_PROC] = &qxm_lpass_dsp,
1754 [SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core,
1755 [SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi,
1756 [SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu,
1757 [SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top,
1758 [SLAVE_LPASS_SNOC] = &qns_sysnoc,
1759 [SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc,
1760 [SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
1763 static const struct qcom_icc_desc sar2130p_lpass_ag_noc = {
1764 .config = &icc_regmap_config,
1765 .nodes = lpass_ag_noc_nodes,
1766 .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
1767 .bcms = lpass_ag_noc_bcms,
1768 .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms),
1771 static struct qcom_icc_bcm * const mc_virt_bcms[] = {
1776 static struct qcom_icc_node * const mc_virt_nodes[] = {
1777 [MASTER_LLCC] = &llcc_mc,
1778 [SLAVE_EBI1] = &ebi,
1781 static const struct qcom_icc_desc sar2130p_mc_virt = {
1782 .nodes = mc_virt_nodes,
1783 .num_nodes = ARRAY_SIZE(mc_virt_nodes),
1784 .bcms = mc_virt_bcms,
1785 .num_bcms = ARRAY_SIZE(mc_virt_bcms),
1788 static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
1793 static struct qcom_icc_node * const mmss_noc_nodes[] = {
1794 [MASTER_CAMNOC_HF] = &qnm_camnoc_hf,
1795 [MASTER_CAMNOC_ICP] = &qnm_camnoc_icp,
1796 [MASTER_CAMNOC_SF] = &qnm_camnoc_sf,
1797 [MASTER_LSR] = &qnm_lsr,
1798 [MASTER_MDP] = &qnm_mdp,
1799 [MASTER_CNOC_MNOC_CFG] = &qnm_mnoc_cfg,
1800 [MASTER_VIDEO] = &qnm_video,
1801 [MASTER_VIDEO_CV_PROC] = &qnm_video_cv_cpu,
1802 [MASTER_VIDEO_PROC] = &qnm_video_cvp,
1803 [MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu,
1804 [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
1805 [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
1806 [SLAVE_SERVICE_MNOC] = &srvc_mnoc,
1809 static const struct qcom_icc_desc sar2130p_mmss_noc = {
1810 .config = &icc_regmap_config,
1811 .nodes = mmss_noc_nodes,
1812 .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
1813 .bcms = mmss_noc_bcms,
1814 .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
1817 static struct qcom_icc_bcm * const nsp_noc_bcms[] = {
1821 static struct qcom_icc_node * const nsp_noc_nodes[] = {
1822 [MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config,
1823 [MASTER_CDSP_PROC] = &qxm_nsp,
1824 [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
1825 [SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
1828 static const struct qcom_icc_desc sar2130p_nsp_noc = {
1829 .config = &icc_regmap_config,
1830 .nodes = nsp_noc_nodes,
1831 .num_nodes = ARRAY_SIZE(nsp_noc_nodes),
1832 .bcms = nsp_noc_bcms,
1833 .num_bcms = ARRAY_SIZE(nsp_noc_bcms),
1836 static struct qcom_icc_bcm * const pcie_anoc_bcms[] = {
1840 static struct qcom_icc_node * const pcie_anoc_nodes[] = {
1841 [MASTER_PCIE_0] = &xm_pcie3_0,
1842 [MASTER_PCIE_1] = &xm_pcie3_1,
1843 [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc,
1846 static const struct qcom_icc_desc sar2130p_pcie_anoc = {
1847 .config = &icc_regmap_config,
1848 .nodes = pcie_anoc_nodes,
1849 .num_nodes = ARRAY_SIZE(pcie_anoc_nodes),
1850 .bcms = pcie_anoc_bcms,
1851 .num_bcms = ARRAY_SIZE(pcie_anoc_bcms),
1854 static struct qcom_icc_bcm * const system_noc_bcms[] = {
1862 static struct qcom_icc_node * const system_noc_nodes[] = {
1863 [MASTER_GIC_AHB] = &qhm_gic,
1864 [MASTER_QDSS_BAM] = &qhm_qdss_bam,
1865 [MASTER_QSPI_0] = &qhm_qspi,
1866 [MASTER_QUP_0] = &qhm_qup0,
1867 [MASTER_QUP_1] = &qhm_qup1,
1868 [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
1869 [MASTER_CNOC_DATAPATH] = &qnm_cnoc_datapath,
1870 [MASTER_LPASS_ANOC] = &qnm_lpass_noc,
1871 [MASTER_SNOC_CFG] = &qnm_snoc_cfg,
1872 [MASTER_CRYPTO] = &qxm_crypto,
1873 [MASTER_PIMEM] = &qxm_pimem,
1874 [MASTER_GIC] = &xm_gic,
1875 [MASTER_QDSS_ETR] = &xm_qdss_etr_0,
1876 [MASTER_QDSS_ETR_1] = &xm_qdss_etr_1,
1877 [MASTER_SDCC_1] = &xm_sdc1,
1878 [MASTER_USB3_0] = &xm_usb3_0,
1879 [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
1880 [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc,
1881 [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
1882 [SLAVE_SERVICE_SNOC] = &srvc_snoc,
1885 static const struct qcom_icc_desc sar2130p_system_noc = {
1886 .config = &icc_regmap_config,
1887 .nodes = system_noc_nodes,
1888 .num_nodes = ARRAY_SIZE(system_noc_nodes),
1889 .bcms = system_noc_bcms,
1890 .num_bcms = ARRAY_SIZE(system_noc_bcms),
1893 static const struct of_device_id qnoc_of_match[] = {
1894 { .compatible = "qcom,sar2130p-clk-virt", .data = &sar2130p_clk_virt},
1895 { .compatible = "qcom,sar2130p-config-noc", .data = &sar2130p_config_noc},
1896 { .compatible = "qcom,sar2130p-gem-noc", .data = &sar2130p_gem_noc},
1897 { .compatible = "qcom,sar2130p-lpass-ag-noc", .data = &sar2130p_lpass_ag_noc},
1898 { .compatible = "qcom,sar2130p-mc-virt", .data = &sar2130p_mc_virt},
1899 { .compatible = "qcom,sar2130p-mmss-noc", .data = &sar2130p_mmss_noc},
1900 { .compatible = "qcom,sar2130p-nsp-noc", .data = &sar2130p_nsp_noc},
1901 { .compatible = "qcom,sar2130p-pcie-anoc", .data = &sar2130p_pcie_anoc},
1902 { .compatible = "qcom,sar2130p-system-noc", .data = &sar2130p_system_noc},
1905 MODULE_DEVICE_TABLE(of, qnoc_of_match);
1907 static struct platform_driver qnoc_driver = {
1908 .probe = qcom_icc_rpmh_probe,
1909 .remove = qcom_icc_rpmh_remove,
1911 .name = "qnoc-sar2130p",
1912 .of_match_table = qnoc_of_match,
1913 .sync_state = icc_sync_state,
1917 static int __init qnoc_driver_init(void)
1919 return platform_driver_register(&qnoc_driver);
1921 core_initcall(qnoc_driver_init);
1923 static void __exit qnoc_driver_exit(void)
1925 platform_driver_unregister(&qnoc_driver);
1928 module_exit(qnoc_driver_exit);
1929 MODULE_DESCRIPTION("Qualcomm SAR2130P NoC driver");
1930 MODULE_LICENSE("GPL");