1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 * Copyright (c) 2023, Linaro Limited
8 #include <linux/device.h>
9 #include <linux/interconnect.h>
10 #include <linux/interconnect-provider.h>
11 #include <linux/module.h>
12 #include <linux/of_platform.h>
13 #include <dt-bindings/interconnect/qcom,x1e80100-rpmh.h>
15 #include "bcm-voter.h"
16 #include "icc-common.h"
20 static struct qcom_icc_node qhm_qspi
= {
22 .id
= X1E80100_MASTER_QSPI_0
,
26 .links
= { X1E80100_SLAVE_A1NOC_SNOC
},
29 static struct qcom_icc_node qhm_qup1
= {
31 .id
= X1E80100_MASTER_QUP_1
,
35 .links
= { X1E80100_SLAVE_A1NOC_SNOC
},
38 static struct qcom_icc_node xm_sdc4
= {
40 .id
= X1E80100_MASTER_SDCC_4
,
44 .links
= { X1E80100_SLAVE_A1NOC_SNOC
},
47 static struct qcom_icc_node xm_ufs_mem
= {
49 .id
= X1E80100_MASTER_UFS_MEM
,
53 .links
= { X1E80100_SLAVE_A1NOC_SNOC
},
56 static struct qcom_icc_node qhm_qup0
= {
58 .id
= X1E80100_MASTER_QUP_0
,
62 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
65 static struct qcom_icc_node qhm_qup2
= {
67 .id
= X1E80100_MASTER_QUP_2
,
71 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
74 static struct qcom_icc_node qxm_crypto
= {
76 .id
= X1E80100_MASTER_CRYPTO
,
80 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
83 static struct qcom_icc_node qxm_sp
= {
85 .id
= X1E80100_MASTER_SP
,
89 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
92 static struct qcom_icc_node xm_qdss_etr_0
= {
93 .name
= "xm_qdss_etr_0",
94 .id
= X1E80100_MASTER_QDSS_ETR
,
98 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
101 static struct qcom_icc_node xm_qdss_etr_1
= {
102 .name
= "xm_qdss_etr_1",
103 .id
= X1E80100_MASTER_QDSS_ETR_1
,
107 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
110 static struct qcom_icc_node xm_sdc2
= {
112 .id
= X1E80100_MASTER_SDCC_2
,
116 .links
= { X1E80100_SLAVE_A2NOC_SNOC
},
119 static struct qcom_icc_node qup0_core_master
= {
120 .name
= "qup0_core_master",
121 .id
= X1E80100_MASTER_QUP_CORE_0
,
125 .links
= { X1E80100_SLAVE_QUP_CORE_0
},
128 static struct qcom_icc_node qup1_core_master
= {
129 .name
= "qup1_core_master",
130 .id
= X1E80100_MASTER_QUP_CORE_1
,
134 .links
= { X1E80100_SLAVE_QUP_CORE_1
},
137 static struct qcom_icc_node qup2_core_master
= {
138 .name
= "qup2_core_master",
139 .id
= X1E80100_MASTER_QUP_CORE_2
,
143 .links
= { X1E80100_SLAVE_QUP_CORE_2
},
146 static struct qcom_icc_node qsm_cfg
= {
148 .id
= X1E80100_MASTER_CNOC_CFG
,
152 .links
= { X1E80100_SLAVE_AHB2PHY_SOUTH
, X1E80100_SLAVE_AHB2PHY_NORTH
,
153 X1E80100_SLAVE_AHB2PHY_2
, X1E80100_SLAVE_AV1_ENC_CFG
,
154 X1E80100_SLAVE_CAMERA_CFG
, X1E80100_SLAVE_CLK_CTL
,
155 X1E80100_SLAVE_CRYPTO_0_CFG
, X1E80100_SLAVE_DISPLAY_CFG
,
156 X1E80100_SLAVE_GFX3D_CFG
, X1E80100_SLAVE_IMEM_CFG
,
157 X1E80100_SLAVE_IPC_ROUTER_CFG
, X1E80100_SLAVE_PCIE_0_CFG
,
158 X1E80100_SLAVE_PCIE_1_CFG
, X1E80100_SLAVE_PCIE_2_CFG
,
159 X1E80100_SLAVE_PCIE_3_CFG
, X1E80100_SLAVE_PCIE_4_CFG
,
160 X1E80100_SLAVE_PCIE_5_CFG
, X1E80100_SLAVE_PCIE_6A_CFG
,
161 X1E80100_SLAVE_PCIE_6B_CFG
, X1E80100_SLAVE_PCIE_RSC_CFG
,
162 X1E80100_SLAVE_PDM
, X1E80100_SLAVE_PRNG
,
163 X1E80100_SLAVE_QDSS_CFG
, X1E80100_SLAVE_QSPI_0
,
164 X1E80100_SLAVE_QUP_0
, X1E80100_SLAVE_QUP_1
,
165 X1E80100_SLAVE_QUP_2
, X1E80100_SLAVE_SDCC_2
,
166 X1E80100_SLAVE_SDCC_4
, X1E80100_SLAVE_SMMUV3_CFG
,
167 X1E80100_SLAVE_TCSR
, X1E80100_SLAVE_TLMM
,
168 X1E80100_SLAVE_UFS_MEM_CFG
, X1E80100_SLAVE_USB2
,
169 X1E80100_SLAVE_USB3_0
, X1E80100_SLAVE_USB3_1
,
170 X1E80100_SLAVE_USB3_2
, X1E80100_SLAVE_USB3_MP
,
171 X1E80100_SLAVE_USB4_0
, X1E80100_SLAVE_USB4_1
,
172 X1E80100_SLAVE_USB4_2
, X1E80100_SLAVE_VENUS_CFG
,
173 X1E80100_SLAVE_LPASS_QTB_CFG
, X1E80100_SLAVE_CNOC_MNOC_CFG
,
174 X1E80100_SLAVE_NSP_QTB_CFG
, X1E80100_SLAVE_QDSS_STM
,
175 X1E80100_SLAVE_TCU
},
178 static struct qcom_icc_node qnm_gemnoc_cnoc
= {
179 .name
= "qnm_gemnoc_cnoc",
180 .id
= X1E80100_MASTER_GEM_NOC_CNOC
,
184 .links
= { X1E80100_SLAVE_AOSS
, X1E80100_SLAVE_TME_CFG
,
185 X1E80100_SLAVE_APPSS
, X1E80100_SLAVE_CNOC_CFG
,
186 X1E80100_SLAVE_BOOT_IMEM
, X1E80100_SLAVE_IMEM
},
189 static struct qcom_icc_node qnm_gemnoc_pcie
= {
190 .name
= "qnm_gemnoc_pcie",
191 .id
= X1E80100_MASTER_GEM_NOC_PCIE_SNOC
,
195 .links
= { X1E80100_SLAVE_PCIE_0
, X1E80100_SLAVE_PCIE_1
,
196 X1E80100_SLAVE_PCIE_2
, X1E80100_SLAVE_PCIE_3
,
197 X1E80100_SLAVE_PCIE_4
, X1E80100_SLAVE_PCIE_5
,
198 X1E80100_SLAVE_PCIE_6A
, X1E80100_SLAVE_PCIE_6B
},
201 static struct qcom_icc_node alm_gpu_tcu
= {
202 .name
= "alm_gpu_tcu",
203 .id
= X1E80100_MASTER_GPU_TCU
,
207 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
210 static struct qcom_icc_node alm_pcie_tcu
= {
211 .name
= "alm_pcie_tcu",
212 .id
= X1E80100_MASTER_PCIE_TCU
,
216 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
219 static struct qcom_icc_node alm_sys_tcu
= {
220 .name
= "alm_sys_tcu",
221 .id
= X1E80100_MASTER_SYS_TCU
,
225 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
228 static struct qcom_icc_node chm_apps
= {
230 .id
= X1E80100_MASTER_APPSS_PROC
,
234 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
,
235 X1E80100_SLAVE_MEM_NOC_PCIE_SNOC
},
238 static struct qcom_icc_node qnm_gpu
= {
240 .id
= X1E80100_MASTER_GFX3D
,
244 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
247 static struct qcom_icc_node qnm_lpass
= {
249 .id
= X1E80100_MASTER_LPASS_GEM_NOC
,
253 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
,
254 X1E80100_SLAVE_MEM_NOC_PCIE_SNOC
},
257 static struct qcom_icc_node qnm_mnoc_hf
= {
258 .name
= "qnm_mnoc_hf",
259 .id
= X1E80100_MASTER_MNOC_HF_MEM_NOC
,
263 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
266 static struct qcom_icc_node qnm_mnoc_sf
= {
267 .name
= "qnm_mnoc_sf",
268 .id
= X1E80100_MASTER_MNOC_SF_MEM_NOC
,
272 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
275 static struct qcom_icc_node qnm_nsp_noc
= {
276 .name
= "qnm_nsp_noc",
277 .id
= X1E80100_MASTER_COMPUTE_NOC
,
281 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
,
282 X1E80100_SLAVE_MEM_NOC_PCIE_SNOC
},
285 static struct qcom_icc_node qnm_pcie
= {
287 .id
= X1E80100_MASTER_ANOC_PCIE_GEM_NOC
,
291 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
},
294 static struct qcom_icc_node qnm_snoc_sf
= {
295 .name
= "qnm_snoc_sf",
296 .id
= X1E80100_MASTER_SNOC_SF_MEM_NOC
,
300 .links
= { X1E80100_SLAVE_GEM_NOC_CNOC
, X1E80100_SLAVE_LLCC
,
301 X1E80100_SLAVE_MEM_NOC_PCIE_SNOC
},
304 static struct qcom_icc_node xm_gic
= {
306 .id
= X1E80100_MASTER_GIC2
,
310 .links
= { X1E80100_SLAVE_LLCC
},
313 static struct qcom_icc_node qnm_lpiaon_noc
= {
314 .name
= "qnm_lpiaon_noc",
315 .id
= X1E80100_MASTER_LPIAON_NOC
,
319 .links
= { X1E80100_SLAVE_LPASS_GEM_NOC
},
322 static struct qcom_icc_node qnm_lpass_lpinoc
= {
323 .name
= "qnm_lpass_lpinoc",
324 .id
= X1E80100_MASTER_LPASS_LPINOC
,
328 .links
= { X1E80100_SLAVE_LPIAON_NOC_LPASS_AG_NOC
},
331 static struct qcom_icc_node qxm_lpinoc_dsp_axim
= {
332 .name
= "qxm_lpinoc_dsp_axim",
333 .id
= X1E80100_MASTER_LPASS_PROC
,
337 .links
= { X1E80100_SLAVE_LPICX_NOC_LPIAON_NOC
},
340 static struct qcom_icc_node llcc_mc
= {
342 .id
= X1E80100_MASTER_LLCC
,
346 .links
= { X1E80100_SLAVE_EBI1
},
349 static struct qcom_icc_node qnm_av1_enc
= {
350 .name
= "qnm_av1_enc",
351 .id
= X1E80100_MASTER_AV1_ENC
,
355 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
358 static struct qcom_icc_node qnm_camnoc_hf
= {
359 .name
= "qnm_camnoc_hf",
360 .id
= X1E80100_MASTER_CAMNOC_HF
,
364 .links
= { X1E80100_SLAVE_MNOC_HF_MEM_NOC
},
367 static struct qcom_icc_node qnm_camnoc_icp
= {
368 .name
= "qnm_camnoc_icp",
369 .id
= X1E80100_MASTER_CAMNOC_ICP
,
373 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
376 static struct qcom_icc_node qnm_camnoc_sf
= {
377 .name
= "qnm_camnoc_sf",
378 .id
= X1E80100_MASTER_CAMNOC_SF
,
382 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
385 static struct qcom_icc_node qnm_eva
= {
387 .id
= X1E80100_MASTER_EVA
,
391 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
394 static struct qcom_icc_node qnm_mdp
= {
396 .id
= X1E80100_MASTER_MDP
,
400 .links
= { X1E80100_SLAVE_MNOC_HF_MEM_NOC
},
403 static struct qcom_icc_node qnm_video
= {
405 .id
= X1E80100_MASTER_VIDEO
,
409 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
412 static struct qcom_icc_node qnm_video_cv_cpu
= {
413 .name
= "qnm_video_cv_cpu",
414 .id
= X1E80100_MASTER_VIDEO_CV_PROC
,
418 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
421 static struct qcom_icc_node qnm_video_v_cpu
= {
422 .name
= "qnm_video_v_cpu",
423 .id
= X1E80100_MASTER_VIDEO_V_PROC
,
427 .links
= { X1E80100_SLAVE_MNOC_SF_MEM_NOC
},
430 static struct qcom_icc_node qsm_mnoc_cfg
= {
431 .name
= "qsm_mnoc_cfg",
432 .id
= X1E80100_MASTER_CNOC_MNOC_CFG
,
436 .links
= { X1E80100_SLAVE_SERVICE_MNOC
},
439 static struct qcom_icc_node qxm_nsp
= {
441 .id
= X1E80100_MASTER_CDSP_PROC
,
445 .links
= { X1E80100_SLAVE_CDSP_MEM_NOC
},
448 static struct qcom_icc_node qnm_pcie_north_gem_noc
= {
449 .name
= "qnm_pcie_north_gem_noc",
450 .id
= X1E80100_MASTER_PCIE_NORTH
,
454 .links
= { X1E80100_SLAVE_ANOC_PCIE_GEM_NOC
},
457 static struct qcom_icc_node qnm_pcie_south_gem_noc
= {
458 .name
= "qnm_pcie_south_gem_noc",
459 .id
= X1E80100_MASTER_PCIE_SOUTH
,
463 .links
= { X1E80100_SLAVE_ANOC_PCIE_GEM_NOC
},
466 static struct qcom_icc_node xm_pcie_3
= {
468 .id
= X1E80100_MASTER_PCIE_3
,
472 .links
= { X1E80100_SLAVE_PCIE_NORTH
},
475 static struct qcom_icc_node xm_pcie_4
= {
477 .id
= X1E80100_MASTER_PCIE_4
,
481 .links
= { X1E80100_SLAVE_PCIE_NORTH
},
484 static struct qcom_icc_node xm_pcie_5
= {
486 .id
= X1E80100_MASTER_PCIE_5
,
490 .links
= { X1E80100_SLAVE_PCIE_NORTH
},
493 static struct qcom_icc_node xm_pcie_0
= {
495 .id
= X1E80100_MASTER_PCIE_0
,
499 .links
= { X1E80100_SLAVE_PCIE_SOUTH
},
502 static struct qcom_icc_node xm_pcie_1
= {
504 .id
= X1E80100_MASTER_PCIE_1
,
508 .links
= { X1E80100_SLAVE_PCIE_SOUTH
},
511 static struct qcom_icc_node xm_pcie_2
= {
513 .id
= X1E80100_MASTER_PCIE_2
,
517 .links
= { X1E80100_SLAVE_PCIE_SOUTH
},
520 static struct qcom_icc_node xm_pcie_6a
= {
521 .name
= "xm_pcie_6a",
522 .id
= X1E80100_MASTER_PCIE_6A
,
526 .links
= { X1E80100_SLAVE_PCIE_SOUTH
},
529 static struct qcom_icc_node xm_pcie_6b
= {
530 .name
= "xm_pcie_6b",
531 .id
= X1E80100_MASTER_PCIE_6B
,
535 .links
= { X1E80100_SLAVE_PCIE_SOUTH
},
538 static struct qcom_icc_node qnm_aggre1_noc
= {
539 .name
= "qnm_aggre1_noc",
540 .id
= X1E80100_MASTER_A1NOC_SNOC
,
544 .links
= { X1E80100_SLAVE_SNOC_GEM_NOC_SF
},
547 static struct qcom_icc_node qnm_aggre2_noc
= {
548 .name
= "qnm_aggre2_noc",
549 .id
= X1E80100_MASTER_A2NOC_SNOC
,
553 .links
= { X1E80100_SLAVE_SNOC_GEM_NOC_SF
},
556 static struct qcom_icc_node qnm_gic
= {
558 .id
= X1E80100_MASTER_GIC1
,
562 .links
= { X1E80100_SLAVE_SNOC_GEM_NOC_SF
},
565 static struct qcom_icc_node qnm_usb_anoc
= {
566 .name
= "qnm_usb_anoc",
567 .id
= X1E80100_MASTER_USB_NOC_SNOC
,
571 .links
= { X1E80100_SLAVE_SNOC_GEM_NOC_SF
},
574 static struct qcom_icc_node qnm_aggre_usb_north_snoc
= {
575 .name
= "qnm_aggre_usb_north_snoc",
576 .id
= X1E80100_MASTER_AGGRE_USB_NORTH
,
580 .links
= { X1E80100_SLAVE_USB_NOC_SNOC
},
583 static struct qcom_icc_node qnm_aggre_usb_south_snoc
= {
584 .name
= "qnm_aggre_usb_south_snoc",
585 .id
= X1E80100_MASTER_AGGRE_USB_SOUTH
,
589 .links
= { X1E80100_SLAVE_USB_NOC_SNOC
},
592 static struct qcom_icc_node xm_usb2_0
= {
594 .id
= X1E80100_MASTER_USB2
,
598 .links
= { X1E80100_SLAVE_AGGRE_USB_NORTH
},
601 static struct qcom_icc_node xm_usb3_mp
= {
602 .name
= "xm_usb3_mp",
603 .id
= X1E80100_MASTER_USB3_MP
,
607 .links
= { X1E80100_SLAVE_AGGRE_USB_NORTH
},
610 static struct qcom_icc_node xm_usb3_0
= {
612 .id
= X1E80100_MASTER_USB3_0
,
616 .links
= { X1E80100_SLAVE_AGGRE_USB_SOUTH
},
619 static struct qcom_icc_node xm_usb3_1
= {
621 .id
= X1E80100_MASTER_USB3_1
,
625 .links
= { X1E80100_SLAVE_AGGRE_USB_SOUTH
},
628 static struct qcom_icc_node xm_usb3_2
= {
630 .id
= X1E80100_MASTER_USB3_2
,
634 .links
= { X1E80100_SLAVE_AGGRE_USB_SOUTH
},
637 static struct qcom_icc_node xm_usb4_0
= {
639 .id
= X1E80100_MASTER_USB4_0
,
643 .links
= { X1E80100_SLAVE_AGGRE_USB_SOUTH
},
646 static struct qcom_icc_node xm_usb4_1
= {
648 .id
= X1E80100_MASTER_USB4_1
,
652 .links
= { X1E80100_SLAVE_AGGRE_USB_SOUTH
},
655 static struct qcom_icc_node xm_usb4_2
= {
657 .id
= X1E80100_MASTER_USB4_2
,
661 .links
= { X1E80100_SLAVE_AGGRE_USB_SOUTH
},
664 static struct qcom_icc_node qns_a1noc_snoc
= {
665 .name
= "qns_a1noc_snoc",
666 .id
= X1E80100_SLAVE_A1NOC_SNOC
,
670 .links
= { X1E80100_MASTER_A1NOC_SNOC
},
673 static struct qcom_icc_node qns_a2noc_snoc
= {
674 .name
= "qns_a2noc_snoc",
675 .id
= X1E80100_SLAVE_A2NOC_SNOC
,
679 .links
= { X1E80100_MASTER_A2NOC_SNOC
},
682 static struct qcom_icc_node qup0_core_slave
= {
683 .name
= "qup0_core_slave",
684 .id
= X1E80100_SLAVE_QUP_CORE_0
,
690 static struct qcom_icc_node qup1_core_slave
= {
691 .name
= "qup1_core_slave",
692 .id
= X1E80100_SLAVE_QUP_CORE_1
,
698 static struct qcom_icc_node qup2_core_slave
= {
699 .name
= "qup2_core_slave",
700 .id
= X1E80100_SLAVE_QUP_CORE_2
,
706 static struct qcom_icc_node qhs_ahb2phy0
= {
707 .name
= "qhs_ahb2phy0",
708 .id
= X1E80100_SLAVE_AHB2PHY_SOUTH
,
714 static struct qcom_icc_node qhs_ahb2phy1
= {
715 .name
= "qhs_ahb2phy1",
716 .id
= X1E80100_SLAVE_AHB2PHY_NORTH
,
722 static struct qcom_icc_node qhs_ahb2phy2
= {
723 .name
= "qhs_ahb2phy2",
724 .id
= X1E80100_SLAVE_AHB2PHY_2
,
730 static struct qcom_icc_node qhs_av1_enc_cfg
= {
731 .name
= "qhs_av1_enc_cfg",
732 .id
= X1E80100_SLAVE_AV1_ENC_CFG
,
738 static struct qcom_icc_node qhs_camera_cfg
= {
739 .name
= "qhs_camera_cfg",
740 .id
= X1E80100_SLAVE_CAMERA_CFG
,
746 static struct qcom_icc_node qhs_clk_ctl
= {
747 .name
= "qhs_clk_ctl",
748 .id
= X1E80100_SLAVE_CLK_CTL
,
754 static struct qcom_icc_node qhs_crypto0_cfg
= {
755 .name
= "qhs_crypto0_cfg",
756 .id
= X1E80100_SLAVE_CRYPTO_0_CFG
,
762 static struct qcom_icc_node qhs_display_cfg
= {
763 .name
= "qhs_display_cfg",
764 .id
= X1E80100_SLAVE_DISPLAY_CFG
,
770 static struct qcom_icc_node qhs_gpuss_cfg
= {
771 .name
= "qhs_gpuss_cfg",
772 .id
= X1E80100_SLAVE_GFX3D_CFG
,
778 static struct qcom_icc_node qhs_imem_cfg
= {
779 .name
= "qhs_imem_cfg",
780 .id
= X1E80100_SLAVE_IMEM_CFG
,
786 static struct qcom_icc_node qhs_ipc_router
= {
787 .name
= "qhs_ipc_router",
788 .id
= X1E80100_SLAVE_IPC_ROUTER_CFG
,
794 static struct qcom_icc_node qhs_pcie0_cfg
= {
795 .name
= "qhs_pcie0_cfg",
796 .id
= X1E80100_SLAVE_PCIE_0_CFG
,
802 static struct qcom_icc_node qhs_pcie1_cfg
= {
803 .name
= "qhs_pcie1_cfg",
804 .id
= X1E80100_SLAVE_PCIE_1_CFG
,
810 static struct qcom_icc_node qhs_pcie2_cfg
= {
811 .name
= "qhs_pcie2_cfg",
812 .id
= X1E80100_SLAVE_PCIE_2_CFG
,
818 static struct qcom_icc_node qhs_pcie3_cfg
= {
819 .name
= "qhs_pcie3_cfg",
820 .id
= X1E80100_SLAVE_PCIE_3_CFG
,
826 static struct qcom_icc_node qhs_pcie4_cfg
= {
827 .name
= "qhs_pcie4_cfg",
828 .id
= X1E80100_SLAVE_PCIE_4_CFG
,
834 static struct qcom_icc_node qhs_pcie5_cfg
= {
835 .name
= "qhs_pcie5_cfg",
836 .id
= X1E80100_SLAVE_PCIE_5_CFG
,
842 static struct qcom_icc_node qhs_pcie6a_cfg
= {
843 .name
= "qhs_pcie6a_cfg",
844 .id
= X1E80100_SLAVE_PCIE_6A_CFG
,
850 static struct qcom_icc_node qhs_pcie6b_cfg
= {
851 .name
= "qhs_pcie6b_cfg",
852 .id
= X1E80100_SLAVE_PCIE_6B_CFG
,
858 static struct qcom_icc_node qhs_pcie_rsc_cfg
= {
859 .name
= "qhs_pcie_rsc_cfg",
860 .id
= X1E80100_SLAVE_PCIE_RSC_CFG
,
866 static struct qcom_icc_node qhs_pdm
= {
868 .id
= X1E80100_SLAVE_PDM
,
874 static struct qcom_icc_node qhs_prng
= {
876 .id
= X1E80100_SLAVE_PRNG
,
882 static struct qcom_icc_node qhs_qdss_cfg
= {
883 .name
= "qhs_qdss_cfg",
884 .id
= X1E80100_SLAVE_QDSS_CFG
,
890 static struct qcom_icc_node qhs_qspi
= {
892 .id
= X1E80100_SLAVE_QSPI_0
,
898 static struct qcom_icc_node qhs_qup0
= {
900 .id
= X1E80100_SLAVE_QUP_0
,
906 static struct qcom_icc_node qhs_qup1
= {
908 .id
= X1E80100_SLAVE_QUP_1
,
914 static struct qcom_icc_node qhs_qup2
= {
916 .id
= X1E80100_SLAVE_QUP_2
,
922 static struct qcom_icc_node qhs_sdc2
= {
924 .id
= X1E80100_SLAVE_SDCC_2
,
930 static struct qcom_icc_node qhs_sdc4
= {
932 .id
= X1E80100_SLAVE_SDCC_4
,
938 static struct qcom_icc_node qhs_smmuv3_cfg
= {
939 .name
= "qhs_smmuv3_cfg",
940 .id
= X1E80100_SLAVE_SMMUV3_CFG
,
946 static struct qcom_icc_node qhs_tcsr
= {
948 .id
= X1E80100_SLAVE_TCSR
,
954 static struct qcom_icc_node qhs_tlmm
= {
956 .id
= X1E80100_SLAVE_TLMM
,
962 static struct qcom_icc_node qhs_ufs_mem_cfg
= {
963 .name
= "qhs_ufs_mem_cfg",
964 .id
= X1E80100_SLAVE_UFS_MEM_CFG
,
970 static struct qcom_icc_node qhs_usb2_0_cfg
= {
971 .name
= "qhs_usb2_0_cfg",
972 .id
= X1E80100_SLAVE_USB2
,
978 static struct qcom_icc_node qhs_usb3_0_cfg
= {
979 .name
= "qhs_usb3_0_cfg",
980 .id
= X1E80100_SLAVE_USB3_0
,
986 static struct qcom_icc_node qhs_usb3_1_cfg
= {
987 .name
= "qhs_usb3_1_cfg",
988 .id
= X1E80100_SLAVE_USB3_1
,
994 static struct qcom_icc_node qhs_usb3_2_cfg
= {
995 .name
= "qhs_usb3_2_cfg",
996 .id
= X1E80100_SLAVE_USB3_2
,
1002 static struct qcom_icc_node qhs_usb3_mp_cfg
= {
1003 .name
= "qhs_usb3_mp_cfg",
1004 .id
= X1E80100_SLAVE_USB3_MP
,
1010 static struct qcom_icc_node qhs_usb4_0_cfg
= {
1011 .name
= "qhs_usb4_0_cfg",
1012 .id
= X1E80100_SLAVE_USB4_0
,
1018 static struct qcom_icc_node qhs_usb4_1_cfg
= {
1019 .name
= "qhs_usb4_1_cfg",
1020 .id
= X1E80100_SLAVE_USB4_1
,
1026 static struct qcom_icc_node qhs_usb4_2_cfg
= {
1027 .name
= "qhs_usb4_2_cfg",
1028 .id
= X1E80100_SLAVE_USB4_2
,
1034 static struct qcom_icc_node qhs_venus_cfg
= {
1035 .name
= "qhs_venus_cfg",
1036 .id
= X1E80100_SLAVE_VENUS_CFG
,
1042 static struct qcom_icc_node qss_lpass_qtb_cfg
= {
1043 .name
= "qss_lpass_qtb_cfg",
1044 .id
= X1E80100_SLAVE_LPASS_QTB_CFG
,
1050 static struct qcom_icc_node qss_mnoc_cfg
= {
1051 .name
= "qss_mnoc_cfg",
1052 .id
= X1E80100_SLAVE_CNOC_MNOC_CFG
,
1056 .links
= { X1E80100_MASTER_CNOC_MNOC_CFG
},
1059 static struct qcom_icc_node qss_nsp_qtb_cfg
= {
1060 .name
= "qss_nsp_qtb_cfg",
1061 .id
= X1E80100_SLAVE_NSP_QTB_CFG
,
1067 static struct qcom_icc_node xs_qdss_stm
= {
1068 .name
= "xs_qdss_stm",
1069 .id
= X1E80100_SLAVE_QDSS_STM
,
1075 static struct qcom_icc_node xs_sys_tcu_cfg
= {
1076 .name
= "xs_sys_tcu_cfg",
1077 .id
= X1E80100_SLAVE_TCU
,
1083 static struct qcom_icc_node qhs_aoss
= {
1085 .id
= X1E80100_SLAVE_AOSS
,
1091 static struct qcom_icc_node qhs_tme_cfg
= {
1092 .name
= "qhs_tme_cfg",
1093 .id
= X1E80100_SLAVE_TME_CFG
,
1099 static struct qcom_icc_node qns_apss
= {
1101 .id
= X1E80100_SLAVE_APPSS
,
1107 static struct qcom_icc_node qss_cfg
= {
1109 .id
= X1E80100_SLAVE_CNOC_CFG
,
1113 .links
= { X1E80100_MASTER_CNOC_CFG
},
1116 static struct qcom_icc_node qxs_boot_imem
= {
1117 .name
= "qxs_boot_imem",
1118 .id
= X1E80100_SLAVE_BOOT_IMEM
,
1124 static struct qcom_icc_node qxs_imem
= {
1126 .id
= X1E80100_SLAVE_IMEM
,
1132 static struct qcom_icc_node xs_pcie_0
= {
1133 .name
= "xs_pcie_0",
1134 .id
= X1E80100_SLAVE_PCIE_0
,
1140 static struct qcom_icc_node xs_pcie_1
= {
1141 .name
= "xs_pcie_1",
1142 .id
= X1E80100_SLAVE_PCIE_1
,
1148 static struct qcom_icc_node xs_pcie_2
= {
1149 .name
= "xs_pcie_2",
1150 .id
= X1E80100_SLAVE_PCIE_2
,
1156 static struct qcom_icc_node xs_pcie_3
= {
1157 .name
= "xs_pcie_3",
1158 .id
= X1E80100_SLAVE_PCIE_3
,
1164 static struct qcom_icc_node xs_pcie_4
= {
1165 .name
= "xs_pcie_4",
1166 .id
= X1E80100_SLAVE_PCIE_4
,
1172 static struct qcom_icc_node xs_pcie_5
= {
1173 .name
= "xs_pcie_5",
1174 .id
= X1E80100_SLAVE_PCIE_5
,
1180 static struct qcom_icc_node xs_pcie_6a
= {
1181 .name
= "xs_pcie_6a",
1182 .id
= X1E80100_SLAVE_PCIE_6A
,
1188 static struct qcom_icc_node xs_pcie_6b
= {
1189 .name
= "xs_pcie_6b",
1190 .id
= X1E80100_SLAVE_PCIE_6B
,
1196 static struct qcom_icc_node qns_gem_noc_cnoc
= {
1197 .name
= "qns_gem_noc_cnoc",
1198 .id
= X1E80100_SLAVE_GEM_NOC_CNOC
,
1202 .links
= { X1E80100_MASTER_GEM_NOC_CNOC
},
1205 static struct qcom_icc_node qns_llcc
= {
1207 .id
= X1E80100_SLAVE_LLCC
,
1211 .links
= { X1E80100_MASTER_LLCC
},
1214 static struct qcom_icc_node qns_pcie
= {
1216 .id
= X1E80100_SLAVE_MEM_NOC_PCIE_SNOC
,
1220 .links
= { X1E80100_MASTER_GEM_NOC_PCIE_SNOC
},
1223 static struct qcom_icc_node qns_lpass_ag_noc_gemnoc
= {
1224 .name
= "qns_lpass_ag_noc_gemnoc",
1225 .id
= X1E80100_SLAVE_LPASS_GEM_NOC
,
1229 .links
= { X1E80100_MASTER_LPASS_GEM_NOC
},
1232 static struct qcom_icc_node qns_lpass_aggnoc
= {
1233 .name
= "qns_lpass_aggnoc",
1234 .id
= X1E80100_SLAVE_LPIAON_NOC_LPASS_AG_NOC
,
1238 .links
= { X1E80100_MASTER_LPIAON_NOC
},
1241 static struct qcom_icc_node qns_lpi_aon_noc
= {
1242 .name
= "qns_lpi_aon_noc",
1243 .id
= X1E80100_SLAVE_LPICX_NOC_LPIAON_NOC
,
1247 .links
= { X1E80100_MASTER_LPASS_LPINOC
},
1250 static struct qcom_icc_node ebi
= {
1252 .id
= X1E80100_SLAVE_EBI1
,
1258 static struct qcom_icc_node qns_mem_noc_hf
= {
1259 .name
= "qns_mem_noc_hf",
1260 .id
= X1E80100_SLAVE_MNOC_HF_MEM_NOC
,
1264 .links
= { X1E80100_MASTER_MNOC_HF_MEM_NOC
},
1267 static struct qcom_icc_node qns_mem_noc_sf
= {
1268 .name
= "qns_mem_noc_sf",
1269 .id
= X1E80100_SLAVE_MNOC_SF_MEM_NOC
,
1273 .links
= { X1E80100_MASTER_MNOC_SF_MEM_NOC
},
1276 static struct qcom_icc_node srvc_mnoc
= {
1277 .name
= "srvc_mnoc",
1278 .id
= X1E80100_SLAVE_SERVICE_MNOC
,
1284 static struct qcom_icc_node qns_nsp_gemnoc
= {
1285 .name
= "qns_nsp_gemnoc",
1286 .id
= X1E80100_SLAVE_CDSP_MEM_NOC
,
1290 .links
= { X1E80100_MASTER_COMPUTE_NOC
},
1293 static struct qcom_icc_node qns_pcie_mem_noc
= {
1294 .name
= "qns_pcie_mem_noc",
1295 .id
= X1E80100_SLAVE_ANOC_PCIE_GEM_NOC
,
1299 .links
= { X1E80100_MASTER_ANOC_PCIE_GEM_NOC
},
1302 static struct qcom_icc_node qns_pcie_north_gem_noc
= {
1303 .name
= "qns_pcie_north_gem_noc",
1304 .id
= X1E80100_SLAVE_PCIE_NORTH
,
1308 .links
= { X1E80100_MASTER_PCIE_NORTH
},
1311 static struct qcom_icc_node qns_pcie_south_gem_noc
= {
1312 .name
= "qns_pcie_south_gem_noc",
1313 .id
= X1E80100_SLAVE_PCIE_SOUTH
,
1317 .links
= { X1E80100_MASTER_PCIE_SOUTH
},
1320 static struct qcom_icc_node qns_gemnoc_sf
= {
1321 .name
= "qns_gemnoc_sf",
1322 .id
= X1E80100_SLAVE_SNOC_GEM_NOC_SF
,
1326 .links
= { X1E80100_MASTER_SNOC_SF_MEM_NOC
},
1329 static struct qcom_icc_node qns_aggre_usb_snoc
= {
1330 .name
= "qns_aggre_usb_snoc",
1331 .id
= X1E80100_SLAVE_USB_NOC_SNOC
,
1335 .links
= { X1E80100_MASTER_USB_NOC_SNOC
},
1338 static struct qcom_icc_node qns_aggre_usb_north_snoc
= {
1339 .name
= "qns_aggre_usb_north_snoc",
1340 .id
= X1E80100_SLAVE_AGGRE_USB_NORTH
,
1344 .links
= { X1E80100_MASTER_AGGRE_USB_NORTH
},
1347 static struct qcom_icc_node qns_aggre_usb_south_snoc
= {
1348 .name
= "qns_aggre_usb_south_snoc",
1349 .id
= X1E80100_SLAVE_AGGRE_USB_SOUTH
,
1353 .links
= { X1E80100_MASTER_AGGRE_USB_SOUTH
},
1356 static struct qcom_icc_bcm bcm_acv
= {
1358 .enable_mask
= BIT(3),
1363 static struct qcom_icc_bcm bcm_ce0
= {
1366 .nodes
= { &qxm_crypto
},
1369 static struct qcom_icc_bcm bcm_cn0
= {
1373 .nodes
= { &qsm_cfg
, &qhs_ahb2phy0
,
1374 &qhs_ahb2phy1
, &qhs_ahb2phy2
,
1375 &qhs_av1_enc_cfg
, &qhs_camera_cfg
,
1376 &qhs_clk_ctl
, &qhs_crypto0_cfg
,
1377 &qhs_gpuss_cfg
, &qhs_imem_cfg
,
1378 &qhs_ipc_router
, &qhs_pcie0_cfg
,
1379 &qhs_pcie1_cfg
, &qhs_pcie2_cfg
,
1380 &qhs_pcie3_cfg
, &qhs_pcie4_cfg
,
1381 &qhs_pcie5_cfg
, &qhs_pcie6a_cfg
,
1382 &qhs_pcie6b_cfg
, &qhs_pcie_rsc_cfg
,
1383 &qhs_pdm
, &qhs_prng
,
1384 &qhs_qdss_cfg
, &qhs_qspi
,
1385 &qhs_qup0
, &qhs_qup1
,
1386 &qhs_qup2
, &qhs_sdc2
,
1387 &qhs_sdc4
, &qhs_smmuv3_cfg
,
1388 &qhs_tcsr
, &qhs_tlmm
,
1389 &qhs_ufs_mem_cfg
, &qhs_usb2_0_cfg
,
1390 &qhs_usb3_0_cfg
, &qhs_usb3_1_cfg
,
1391 &qhs_usb3_2_cfg
, &qhs_usb3_mp_cfg
,
1392 &qhs_usb4_0_cfg
, &qhs_usb4_1_cfg
,
1393 &qhs_usb4_2_cfg
, &qhs_venus_cfg
,
1394 &qss_lpass_qtb_cfg
, &qss_mnoc_cfg
,
1395 &qss_nsp_qtb_cfg
, &xs_qdss_stm
,
1396 &xs_sys_tcu_cfg
, &qnm_gemnoc_cnoc
,
1397 &qnm_gemnoc_pcie
, &qhs_aoss
,
1398 &qhs_tme_cfg
, &qns_apss
,
1399 &qss_cfg
, &qxs_boot_imem
,
1400 &qxs_imem
, &xs_pcie_0
,
1401 &xs_pcie_1
, &xs_pcie_2
,
1402 &xs_pcie_3
, &xs_pcie_4
,
1403 &xs_pcie_5
, &xs_pcie_6a
,
1407 static struct qcom_icc_bcm bcm_cn1
= {
1410 .nodes
= { &qhs_display_cfg
},
1413 static struct qcom_icc_bcm bcm_co0
= {
1416 .nodes
= { &qxm_nsp
, &qns_nsp_gemnoc
},
1419 static struct qcom_icc_bcm bcm_lp0
= {
1422 .nodes
= { &qnm_lpass_lpinoc
, &qns_lpass_aggnoc
},
1425 static struct qcom_icc_bcm bcm_mc0
= {
1432 static struct qcom_icc_bcm bcm_mm0
= {
1435 .nodes
= { &qns_mem_noc_hf
},
1438 static struct qcom_icc_bcm bcm_mm1
= {
1441 .nodes
= { &qnm_av1_enc
, &qnm_camnoc_hf
,
1442 &qnm_camnoc_icp
, &qnm_camnoc_sf
,
1444 &qnm_video
, &qnm_video_cv_cpu
,
1445 &qnm_video_v_cpu
, &qns_mem_noc_sf
},
1448 static struct qcom_icc_bcm bcm_pc0
= {
1451 .nodes
= { &qns_pcie_mem_noc
},
1454 static struct qcom_icc_bcm bcm_qup0
= {
1459 .nodes
= { &qup0_core_slave
},
1462 static struct qcom_icc_bcm bcm_qup1
= {
1467 .nodes
= { &qup1_core_slave
},
1470 static struct qcom_icc_bcm bcm_qup2
= {
1475 .nodes
= { &qup2_core_slave
},
1478 static struct qcom_icc_bcm bcm_sh0
= {
1482 .nodes
= { &qns_llcc
},
1485 static struct qcom_icc_bcm bcm_sh1
= {
1488 .nodes
= { &alm_gpu_tcu
, &alm_pcie_tcu
,
1489 &alm_sys_tcu
, &chm_apps
,
1490 &qnm_gpu
, &qnm_lpass
,
1491 &qnm_mnoc_hf
, &qnm_mnoc_sf
,
1492 &qnm_nsp_noc
, &qnm_pcie
,
1493 &xm_gic
, &qns_gem_noc_cnoc
,
1497 static struct qcom_icc_bcm bcm_sn0
= {
1501 .nodes
= { &qns_gemnoc_sf
},
1504 static struct qcom_icc_bcm bcm_sn2
= {
1507 .nodes
= { &qnm_aggre1_noc
},
1510 static struct qcom_icc_bcm bcm_sn3
= {
1513 .nodes
= { &qnm_aggre2_noc
},
1516 static struct qcom_icc_bcm bcm_sn4
= {
1519 .nodes
= { &qnm_usb_anoc
},
1522 static struct qcom_icc_bcm
* const aggre1_noc_bcms
[] = {
1525 static struct qcom_icc_node
* const aggre1_noc_nodes
[] = {
1526 [MASTER_QSPI_0
] = &qhm_qspi
,
1527 [MASTER_QUP_1
] = &qhm_qup1
,
1528 [MASTER_SDCC_4
] = &xm_sdc4
,
1529 [MASTER_UFS_MEM
] = &xm_ufs_mem
,
1530 [SLAVE_A1NOC_SNOC
] = &qns_a1noc_snoc
,
1533 static const struct qcom_icc_desc x1e80100_aggre1_noc
= {
1534 .nodes
= aggre1_noc_nodes
,
1535 .num_nodes
= ARRAY_SIZE(aggre1_noc_nodes
),
1536 .bcms
= aggre1_noc_bcms
,
1537 .num_bcms
= ARRAY_SIZE(aggre1_noc_bcms
),
1540 static struct qcom_icc_bcm
* const aggre2_noc_bcms
[] = {
1544 static struct qcom_icc_node
* const aggre2_noc_nodes
[] = {
1545 [MASTER_QUP_0
] = &qhm_qup0
,
1546 [MASTER_QUP_2
] = &qhm_qup2
,
1547 [MASTER_CRYPTO
] = &qxm_crypto
,
1548 [MASTER_SP
] = &qxm_sp
,
1549 [MASTER_QDSS_ETR
] = &xm_qdss_etr_0
,
1550 [MASTER_QDSS_ETR_1
] = &xm_qdss_etr_1
,
1551 [MASTER_SDCC_2
] = &xm_sdc2
,
1552 [SLAVE_A2NOC_SNOC
] = &qns_a2noc_snoc
,
1555 static const struct qcom_icc_desc x1e80100_aggre2_noc
= {
1556 .nodes
= aggre2_noc_nodes
,
1557 .num_nodes
= ARRAY_SIZE(aggre2_noc_nodes
),
1558 .bcms
= aggre2_noc_bcms
,
1559 .num_bcms
= ARRAY_SIZE(aggre2_noc_bcms
),
1562 static struct qcom_icc_bcm
* const clk_virt_bcms
[] = {
1568 static struct qcom_icc_node
* const clk_virt_nodes
[] = {
1569 [MASTER_QUP_CORE_0
] = &qup0_core_master
,
1570 [MASTER_QUP_CORE_1
] = &qup1_core_master
,
1571 [MASTER_QUP_CORE_2
] = &qup2_core_master
,
1572 [SLAVE_QUP_CORE_0
] = &qup0_core_slave
,
1573 [SLAVE_QUP_CORE_1
] = &qup1_core_slave
,
1574 [SLAVE_QUP_CORE_2
] = &qup2_core_slave
,
1577 static const struct qcom_icc_desc x1e80100_clk_virt
= {
1578 .nodes
= clk_virt_nodes
,
1579 .num_nodes
= ARRAY_SIZE(clk_virt_nodes
),
1580 .bcms
= clk_virt_bcms
,
1581 .num_bcms
= ARRAY_SIZE(clk_virt_bcms
),
1584 static struct qcom_icc_bcm
* const cnoc_cfg_bcms
[] = {
1589 static struct qcom_icc_node
* const cnoc_cfg_nodes
[] = {
1590 [MASTER_CNOC_CFG
] = &qsm_cfg
,
1591 [SLAVE_AHB2PHY_SOUTH
] = &qhs_ahb2phy0
,
1592 [SLAVE_AHB2PHY_NORTH
] = &qhs_ahb2phy1
,
1593 [SLAVE_AHB2PHY_2
] = &qhs_ahb2phy2
,
1594 [SLAVE_AV1_ENC_CFG
] = &qhs_av1_enc_cfg
,
1595 [SLAVE_CAMERA_CFG
] = &qhs_camera_cfg
,
1596 [SLAVE_CLK_CTL
] = &qhs_clk_ctl
,
1597 [SLAVE_CRYPTO_0_CFG
] = &qhs_crypto0_cfg
,
1598 [SLAVE_DISPLAY_CFG
] = &qhs_display_cfg
,
1599 [SLAVE_GFX3D_CFG
] = &qhs_gpuss_cfg
,
1600 [SLAVE_IMEM_CFG
] = &qhs_imem_cfg
,
1601 [SLAVE_IPC_ROUTER_CFG
] = &qhs_ipc_router
,
1602 [SLAVE_PCIE_0_CFG
] = &qhs_pcie0_cfg
,
1603 [SLAVE_PCIE_1_CFG
] = &qhs_pcie1_cfg
,
1604 [SLAVE_PCIE_2_CFG
] = &qhs_pcie2_cfg
,
1605 [SLAVE_PCIE_3_CFG
] = &qhs_pcie3_cfg
,
1606 [SLAVE_PCIE_4_CFG
] = &qhs_pcie4_cfg
,
1607 [SLAVE_PCIE_5_CFG
] = &qhs_pcie5_cfg
,
1608 [SLAVE_PCIE_6A_CFG
] = &qhs_pcie6a_cfg
,
1609 [SLAVE_PCIE_6B_CFG
] = &qhs_pcie6b_cfg
,
1610 [SLAVE_PCIE_RSC_CFG
] = &qhs_pcie_rsc_cfg
,
1611 [SLAVE_PDM
] = &qhs_pdm
,
1612 [SLAVE_PRNG
] = &qhs_prng
,
1613 [SLAVE_QDSS_CFG
] = &qhs_qdss_cfg
,
1614 [SLAVE_QSPI_0
] = &qhs_qspi
,
1615 [SLAVE_QUP_0
] = &qhs_qup0
,
1616 [SLAVE_QUP_1
] = &qhs_qup1
,
1617 [SLAVE_QUP_2
] = &qhs_qup2
,
1618 [SLAVE_SDCC_2
] = &qhs_sdc2
,
1619 [SLAVE_SDCC_4
] = &qhs_sdc4
,
1620 [SLAVE_SMMUV3_CFG
] = &qhs_smmuv3_cfg
,
1621 [SLAVE_TCSR
] = &qhs_tcsr
,
1622 [SLAVE_TLMM
] = &qhs_tlmm
,
1623 [SLAVE_UFS_MEM_CFG
] = &qhs_ufs_mem_cfg
,
1624 [SLAVE_USB2
] = &qhs_usb2_0_cfg
,
1625 [SLAVE_USB3_0
] = &qhs_usb3_0_cfg
,
1626 [SLAVE_USB3_1
] = &qhs_usb3_1_cfg
,
1627 [SLAVE_USB3_2
] = &qhs_usb3_2_cfg
,
1628 [SLAVE_USB3_MP
] = &qhs_usb3_mp_cfg
,
1629 [SLAVE_USB4_0
] = &qhs_usb4_0_cfg
,
1630 [SLAVE_USB4_1
] = &qhs_usb4_1_cfg
,
1631 [SLAVE_USB4_2
] = &qhs_usb4_2_cfg
,
1632 [SLAVE_VENUS_CFG
] = &qhs_venus_cfg
,
1633 [SLAVE_LPASS_QTB_CFG
] = &qss_lpass_qtb_cfg
,
1634 [SLAVE_CNOC_MNOC_CFG
] = &qss_mnoc_cfg
,
1635 [SLAVE_NSP_QTB_CFG
] = &qss_nsp_qtb_cfg
,
1636 [SLAVE_QDSS_STM
] = &xs_qdss_stm
,
1637 [SLAVE_TCU
] = &xs_sys_tcu_cfg
,
1640 static const struct qcom_icc_desc x1e80100_cnoc_cfg
= {
1641 .nodes
= cnoc_cfg_nodes
,
1642 .num_nodes
= ARRAY_SIZE(cnoc_cfg_nodes
),
1643 .bcms
= cnoc_cfg_bcms
,
1644 .num_bcms
= ARRAY_SIZE(cnoc_cfg_bcms
),
1647 static struct qcom_icc_bcm
* const cnoc_main_bcms
[] = {
1651 static struct qcom_icc_node
* const cnoc_main_nodes
[] = {
1652 [MASTER_GEM_NOC_CNOC
] = &qnm_gemnoc_cnoc
,
1653 [MASTER_GEM_NOC_PCIE_SNOC
] = &qnm_gemnoc_pcie
,
1654 [SLAVE_AOSS
] = &qhs_aoss
,
1655 [SLAVE_TME_CFG
] = &qhs_tme_cfg
,
1656 [SLAVE_APPSS
] = &qns_apss
,
1657 [SLAVE_CNOC_CFG
] = &qss_cfg
,
1658 [SLAVE_BOOT_IMEM
] = &qxs_boot_imem
,
1659 [SLAVE_IMEM
] = &qxs_imem
,
1660 [SLAVE_PCIE_0
] = &xs_pcie_0
,
1661 [SLAVE_PCIE_1
] = &xs_pcie_1
,
1662 [SLAVE_PCIE_2
] = &xs_pcie_2
,
1663 [SLAVE_PCIE_3
] = &xs_pcie_3
,
1664 [SLAVE_PCIE_4
] = &xs_pcie_4
,
1665 [SLAVE_PCIE_5
] = &xs_pcie_5
,
1666 [SLAVE_PCIE_6A
] = &xs_pcie_6a
,
1667 [SLAVE_PCIE_6B
] = &xs_pcie_6b
,
1670 static const struct qcom_icc_desc x1e80100_cnoc_main
= {
1671 .nodes
= cnoc_main_nodes
,
1672 .num_nodes
= ARRAY_SIZE(cnoc_main_nodes
),
1673 .bcms
= cnoc_main_bcms
,
1674 .num_bcms
= ARRAY_SIZE(cnoc_main_bcms
),
1677 static struct qcom_icc_bcm
* const gem_noc_bcms
[] = {
1682 static struct qcom_icc_node
* const gem_noc_nodes
[] = {
1683 [MASTER_GPU_TCU
] = &alm_gpu_tcu
,
1684 [MASTER_PCIE_TCU
] = &alm_pcie_tcu
,
1685 [MASTER_SYS_TCU
] = &alm_sys_tcu
,
1686 [MASTER_APPSS_PROC
] = &chm_apps
,
1687 [MASTER_GFX3D
] = &qnm_gpu
,
1688 [MASTER_LPASS_GEM_NOC
] = &qnm_lpass
,
1689 [MASTER_MNOC_HF_MEM_NOC
] = &qnm_mnoc_hf
,
1690 [MASTER_MNOC_SF_MEM_NOC
] = &qnm_mnoc_sf
,
1691 [MASTER_COMPUTE_NOC
] = &qnm_nsp_noc
,
1692 [MASTER_ANOC_PCIE_GEM_NOC
] = &qnm_pcie
,
1693 [MASTER_SNOC_SF_MEM_NOC
] = &qnm_snoc_sf
,
1694 [MASTER_GIC2
] = &xm_gic
,
1695 [SLAVE_GEM_NOC_CNOC
] = &qns_gem_noc_cnoc
,
1696 [SLAVE_LLCC
] = &qns_llcc
,
1697 [SLAVE_MEM_NOC_PCIE_SNOC
] = &qns_pcie
,
1700 static const struct qcom_icc_desc x1e80100_gem_noc
= {
1701 .nodes
= gem_noc_nodes
,
1702 .num_nodes
= ARRAY_SIZE(gem_noc_nodes
),
1703 .bcms
= gem_noc_bcms
,
1704 .num_bcms
= ARRAY_SIZE(gem_noc_bcms
),
1707 static struct qcom_icc_bcm
* const lpass_ag_noc_bcms
[] = {
1710 static struct qcom_icc_node
* const lpass_ag_noc_nodes
[] = {
1711 [MASTER_LPIAON_NOC
] = &qnm_lpiaon_noc
,
1712 [SLAVE_LPASS_GEM_NOC
] = &qns_lpass_ag_noc_gemnoc
,
1715 static const struct qcom_icc_desc x1e80100_lpass_ag_noc
= {
1716 .nodes
= lpass_ag_noc_nodes
,
1717 .num_nodes
= ARRAY_SIZE(lpass_ag_noc_nodes
),
1718 .bcms
= lpass_ag_noc_bcms
,
1719 .num_bcms
= ARRAY_SIZE(lpass_ag_noc_bcms
),
1722 static struct qcom_icc_bcm
* const lpass_lpiaon_noc_bcms
[] = {
1726 static struct qcom_icc_node
* const lpass_lpiaon_noc_nodes
[] = {
1727 [MASTER_LPASS_LPINOC
] = &qnm_lpass_lpinoc
,
1728 [SLAVE_LPIAON_NOC_LPASS_AG_NOC
] = &qns_lpass_aggnoc
,
1731 static const struct qcom_icc_desc x1e80100_lpass_lpiaon_noc
= {
1732 .nodes
= lpass_lpiaon_noc_nodes
,
1733 .num_nodes
= ARRAY_SIZE(lpass_lpiaon_noc_nodes
),
1734 .bcms
= lpass_lpiaon_noc_bcms
,
1735 .num_bcms
= ARRAY_SIZE(lpass_lpiaon_noc_bcms
),
1738 static struct qcom_icc_bcm
* const lpass_lpicx_noc_bcms
[] = {
1741 static struct qcom_icc_node
* const lpass_lpicx_noc_nodes
[] = {
1742 [MASTER_LPASS_PROC
] = &qxm_lpinoc_dsp_axim
,
1743 [SLAVE_LPICX_NOC_LPIAON_NOC
] = &qns_lpi_aon_noc
,
1746 static const struct qcom_icc_desc x1e80100_lpass_lpicx_noc
= {
1747 .nodes
= lpass_lpicx_noc_nodes
,
1748 .num_nodes
= ARRAY_SIZE(lpass_lpicx_noc_nodes
),
1749 .bcms
= lpass_lpicx_noc_bcms
,
1750 .num_bcms
= ARRAY_SIZE(lpass_lpicx_noc_bcms
),
1753 static struct qcom_icc_bcm
* const mc_virt_bcms
[] = {
1758 static struct qcom_icc_node
* const mc_virt_nodes
[] = {
1759 [MASTER_LLCC
] = &llcc_mc
,
1760 [SLAVE_EBI1
] = &ebi
,
1763 static const struct qcom_icc_desc x1e80100_mc_virt
= {
1764 .nodes
= mc_virt_nodes
,
1765 .num_nodes
= ARRAY_SIZE(mc_virt_nodes
),
1766 .bcms
= mc_virt_bcms
,
1767 .num_bcms
= ARRAY_SIZE(mc_virt_bcms
),
1770 static struct qcom_icc_bcm
* const mmss_noc_bcms
[] = {
1775 static struct qcom_icc_node
* const mmss_noc_nodes
[] = {
1776 [MASTER_AV1_ENC
] = &qnm_av1_enc
,
1777 [MASTER_CAMNOC_HF
] = &qnm_camnoc_hf
,
1778 [MASTER_CAMNOC_ICP
] = &qnm_camnoc_icp
,
1779 [MASTER_CAMNOC_SF
] = &qnm_camnoc_sf
,
1780 [MASTER_EVA
] = &qnm_eva
,
1781 [MASTER_MDP
] = &qnm_mdp
,
1782 [MASTER_VIDEO
] = &qnm_video
,
1783 [MASTER_VIDEO_CV_PROC
] = &qnm_video_cv_cpu
,
1784 [MASTER_VIDEO_V_PROC
] = &qnm_video_v_cpu
,
1785 [MASTER_CNOC_MNOC_CFG
] = &qsm_mnoc_cfg
,
1786 [SLAVE_MNOC_HF_MEM_NOC
] = &qns_mem_noc_hf
,
1787 [SLAVE_MNOC_SF_MEM_NOC
] = &qns_mem_noc_sf
,
1788 [SLAVE_SERVICE_MNOC
] = &srvc_mnoc
,
1791 static const struct qcom_icc_desc x1e80100_mmss_noc
= {
1792 .nodes
= mmss_noc_nodes
,
1793 .num_nodes
= ARRAY_SIZE(mmss_noc_nodes
),
1794 .bcms
= mmss_noc_bcms
,
1795 .num_bcms
= ARRAY_SIZE(mmss_noc_bcms
),
1798 static struct qcom_icc_bcm
* const nsp_noc_bcms
[] = {
1802 static struct qcom_icc_node
* const nsp_noc_nodes
[] = {
1803 [MASTER_CDSP_PROC
] = &qxm_nsp
,
1804 [SLAVE_CDSP_MEM_NOC
] = &qns_nsp_gemnoc
,
1807 static const struct qcom_icc_desc x1e80100_nsp_noc
= {
1808 .nodes
= nsp_noc_nodes
,
1809 .num_nodes
= ARRAY_SIZE(nsp_noc_nodes
),
1810 .bcms
= nsp_noc_bcms
,
1811 .num_bcms
= ARRAY_SIZE(nsp_noc_bcms
),
1814 static struct qcom_icc_bcm
* const pcie_center_anoc_bcms
[] = {
1818 static struct qcom_icc_node
* const pcie_center_anoc_nodes
[] = {
1819 [MASTER_PCIE_NORTH
] = &qnm_pcie_north_gem_noc
,
1820 [MASTER_PCIE_SOUTH
] = &qnm_pcie_south_gem_noc
,
1821 [SLAVE_ANOC_PCIE_GEM_NOC
] = &qns_pcie_mem_noc
,
1824 static const struct qcom_icc_desc x1e80100_pcie_center_anoc
= {
1825 .nodes
= pcie_center_anoc_nodes
,
1826 .num_nodes
= ARRAY_SIZE(pcie_center_anoc_nodes
),
1827 .bcms
= pcie_center_anoc_bcms
,
1828 .num_bcms
= ARRAY_SIZE(pcie_center_anoc_bcms
),
1831 static struct qcom_icc_bcm
* const pcie_north_anoc_bcms
[] = {
1834 static struct qcom_icc_node
* const pcie_north_anoc_nodes
[] = {
1835 [MASTER_PCIE_3
] = &xm_pcie_3
,
1836 [MASTER_PCIE_4
] = &xm_pcie_4
,
1837 [MASTER_PCIE_5
] = &xm_pcie_5
,
1838 [SLAVE_PCIE_NORTH
] = &qns_pcie_north_gem_noc
,
1841 static const struct qcom_icc_desc x1e80100_pcie_north_anoc
= {
1842 .nodes
= pcie_north_anoc_nodes
,
1843 .num_nodes
= ARRAY_SIZE(pcie_north_anoc_nodes
),
1844 .bcms
= pcie_north_anoc_bcms
,
1845 .num_bcms
= ARRAY_SIZE(pcie_north_anoc_bcms
),
1848 static struct qcom_icc_bcm
* const pcie_south_anoc_bcms
[] = {
1851 static struct qcom_icc_node
* const pcie_south_anoc_nodes
[] = {
1852 [MASTER_PCIE_0
] = &xm_pcie_0
,
1853 [MASTER_PCIE_1
] = &xm_pcie_1
,
1854 [MASTER_PCIE_2
] = &xm_pcie_2
,
1855 [MASTER_PCIE_6A
] = &xm_pcie_6a
,
1856 [MASTER_PCIE_6B
] = &xm_pcie_6b
,
1857 [SLAVE_PCIE_SOUTH
] = &qns_pcie_south_gem_noc
,
1860 static const struct qcom_icc_desc x1e80100_pcie_south_anoc
= {
1861 .nodes
= pcie_south_anoc_nodes
,
1862 .num_nodes
= ARRAY_SIZE(pcie_south_anoc_nodes
),
1863 .bcms
= pcie_south_anoc_bcms
,
1864 .num_bcms
= ARRAY_SIZE(pcie_south_anoc_bcms
),
1867 static struct qcom_icc_bcm
* const system_noc_bcms
[] = {
1874 static struct qcom_icc_node
* const system_noc_nodes
[] = {
1875 [MASTER_A1NOC_SNOC
] = &qnm_aggre1_noc
,
1876 [MASTER_A2NOC_SNOC
] = &qnm_aggre2_noc
,
1877 [MASTER_GIC1
] = &qnm_gic
,
1878 [MASTER_USB_NOC_SNOC
] = &qnm_usb_anoc
,
1879 [SLAVE_SNOC_GEM_NOC_SF
] = &qns_gemnoc_sf
,
1882 static const struct qcom_icc_desc x1e80100_system_noc
= {
1883 .nodes
= system_noc_nodes
,
1884 .num_nodes
= ARRAY_SIZE(system_noc_nodes
),
1885 .bcms
= system_noc_bcms
,
1886 .num_bcms
= ARRAY_SIZE(system_noc_bcms
),
1889 static struct qcom_icc_bcm
* const usb_center_anoc_bcms
[] = {
1892 static struct qcom_icc_node
* const usb_center_anoc_nodes
[] = {
1893 [MASTER_AGGRE_USB_NORTH
] = &qnm_aggre_usb_north_snoc
,
1894 [MASTER_AGGRE_USB_SOUTH
] = &qnm_aggre_usb_south_snoc
,
1895 [SLAVE_USB_NOC_SNOC
] = &qns_aggre_usb_snoc
,
1898 static const struct qcom_icc_desc x1e80100_usb_center_anoc
= {
1899 .nodes
= usb_center_anoc_nodes
,
1900 .num_nodes
= ARRAY_SIZE(usb_center_anoc_nodes
),
1901 .bcms
= usb_center_anoc_bcms
,
1902 .num_bcms
= ARRAY_SIZE(usb_center_anoc_bcms
),
1905 static struct qcom_icc_bcm
* const usb_north_anoc_bcms
[] = {
1908 static struct qcom_icc_node
* const usb_north_anoc_nodes
[] = {
1909 [MASTER_USB2
] = &xm_usb2_0
,
1910 [MASTER_USB3_MP
] = &xm_usb3_mp
,
1911 [SLAVE_AGGRE_USB_NORTH
] = &qns_aggre_usb_north_snoc
,
1914 static const struct qcom_icc_desc x1e80100_usb_north_anoc
= {
1915 .nodes
= usb_north_anoc_nodes
,
1916 .num_nodes
= ARRAY_SIZE(usb_north_anoc_nodes
),
1917 .bcms
= usb_north_anoc_bcms
,
1918 .num_bcms
= ARRAY_SIZE(usb_north_anoc_bcms
),
1921 static struct qcom_icc_bcm
* const usb_south_anoc_bcms
[] = {
1924 static struct qcom_icc_node
* const usb_south_anoc_nodes
[] = {
1925 [MASTER_USB3_0
] = &xm_usb3_0
,
1926 [MASTER_USB3_1
] = &xm_usb3_1
,
1927 [MASTER_USB3_2
] = &xm_usb3_2
,
1928 [MASTER_USB4_0
] = &xm_usb4_0
,
1929 [MASTER_USB4_1
] = &xm_usb4_1
,
1930 [MASTER_USB4_2
] = &xm_usb4_2
,
1931 [SLAVE_AGGRE_USB_SOUTH
] = &qns_aggre_usb_south_snoc
,
1934 static const struct qcom_icc_desc x1e80100_usb_south_anoc
= {
1935 .nodes
= usb_south_anoc_nodes
,
1936 .num_nodes
= ARRAY_SIZE(usb_south_anoc_nodes
),
1937 .bcms
= usb_south_anoc_bcms
,
1938 .num_bcms
= ARRAY_SIZE(usb_south_anoc_bcms
),
1941 static const struct of_device_id qnoc_of_match
[] = {
1942 { .compatible
= "qcom,x1e80100-aggre1-noc", .data
= &x1e80100_aggre1_noc
},
1943 { .compatible
= "qcom,x1e80100-aggre2-noc", .data
= &x1e80100_aggre2_noc
},
1944 { .compatible
= "qcom,x1e80100-clk-virt", .data
= &x1e80100_clk_virt
},
1945 { .compatible
= "qcom,x1e80100-cnoc-cfg", .data
= &x1e80100_cnoc_cfg
},
1946 { .compatible
= "qcom,x1e80100-cnoc-main", .data
= &x1e80100_cnoc_main
},
1947 { .compatible
= "qcom,x1e80100-gem-noc", .data
= &x1e80100_gem_noc
},
1948 { .compatible
= "qcom,x1e80100-lpass-ag-noc", .data
= &x1e80100_lpass_ag_noc
},
1949 { .compatible
= "qcom,x1e80100-lpass-lpiaon-noc", .data
= &x1e80100_lpass_lpiaon_noc
},
1950 { .compatible
= "qcom,x1e80100-lpass-lpicx-noc", .data
= &x1e80100_lpass_lpicx_noc
},
1951 { .compatible
= "qcom,x1e80100-mc-virt", .data
= &x1e80100_mc_virt
},
1952 { .compatible
= "qcom,x1e80100-mmss-noc", .data
= &x1e80100_mmss_noc
},
1953 { .compatible
= "qcom,x1e80100-nsp-noc", .data
= &x1e80100_nsp_noc
},
1954 { .compatible
= "qcom,x1e80100-pcie-center-anoc", .data
= &x1e80100_pcie_center_anoc
},
1955 { .compatible
= "qcom,x1e80100-pcie-north-anoc", .data
= &x1e80100_pcie_north_anoc
},
1956 { .compatible
= "qcom,x1e80100-pcie-south-anoc", .data
= &x1e80100_pcie_south_anoc
},
1957 { .compatible
= "qcom,x1e80100-system-noc", .data
= &x1e80100_system_noc
},
1958 { .compatible
= "qcom,x1e80100-usb-center-anoc", .data
= &x1e80100_usb_center_anoc
},
1959 { .compatible
= "qcom,x1e80100-usb-north-anoc", .data
= &x1e80100_usb_north_anoc
},
1960 { .compatible
= "qcom,x1e80100-usb-south-anoc", .data
= &x1e80100_usb_south_anoc
},
1963 MODULE_DEVICE_TABLE(of
, qnoc_of_match
);
1965 static struct platform_driver qnoc_driver
= {
1966 .probe
= qcom_icc_rpmh_probe
,
1967 .remove
= qcom_icc_rpmh_remove
,
1969 .name
= "qnoc-x1e80100",
1970 .of_match_table
= qnoc_of_match
,
1971 .sync_state
= icc_sync_state
,
1975 static int __init
qnoc_driver_init(void)
1977 return platform_driver_register(&qnoc_driver
);
1979 core_initcall(qnoc_driver_init
);
1981 static void __exit
qnoc_driver_exit(void)
1983 platform_driver_unregister(&qnoc_driver
);
1985 module_exit(qnoc_driver_exit
);
1987 MODULE_DESCRIPTION("x1e80100 NoC driver");
1988 MODULE_LICENSE("GPL");