1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
5 * Copyright (c) 2022, Linaro Limited
9 #include <linux/device.h>
10 #include <linux/interconnect.h>
11 #include <linux/interconnect-provider.h>
12 #include <linux/module.h>
13 #include <linux/mod_devicetable.h>
14 #include <linux/platform_device.h>
15 #include <linux/property.h>
16 #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
18 #include "bcm-voter.h"
19 #include "icc-common.h"
23 static struct qcom_icc_node qhm_qspi
= {
25 .id
= SM8550_MASTER_QSPI_0
,
29 .links
= { SM8550_SLAVE_A1NOC_SNOC
},
32 static struct qcom_icc_node qhm_qup1
= {
34 .id
= SM8550_MASTER_QUP_1
,
38 .links
= { SM8550_SLAVE_A1NOC_SNOC
},
41 static struct qcom_icc_node xm_sdc4
= {
43 .id
= SM8550_MASTER_SDCC_4
,
47 .links
= { SM8550_SLAVE_A1NOC_SNOC
},
50 static struct qcom_icc_node xm_ufs_mem
= {
52 .id
= SM8550_MASTER_UFS_MEM
,
56 .links
= { SM8550_SLAVE_A1NOC_SNOC
},
59 static struct qcom_icc_node xm_usb3_0
= {
61 .id
= SM8550_MASTER_USB3_0
,
65 .links
= { SM8550_SLAVE_A1NOC_SNOC
},
68 static struct qcom_icc_node qhm_qdss_bam
= {
69 .name
= "qhm_qdss_bam",
70 .id
= SM8550_MASTER_QDSS_BAM
,
74 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
77 static struct qcom_icc_node qhm_qup2
= {
79 .id
= SM8550_MASTER_QUP_2
,
83 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
86 static struct qcom_icc_node qxm_crypto
= {
88 .id
= SM8550_MASTER_CRYPTO
,
92 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
95 static struct qcom_icc_node qxm_ipa
= {
97 .id
= SM8550_MASTER_IPA
,
101 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
104 static struct qcom_icc_node qxm_sp
= {
106 .id
= SM8550_MASTER_SP
,
110 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
113 static struct qcom_icc_node xm_qdss_etr_0
= {
114 .name
= "xm_qdss_etr_0",
115 .id
= SM8550_MASTER_QDSS_ETR
,
119 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
122 static struct qcom_icc_node xm_qdss_etr_1
= {
123 .name
= "xm_qdss_etr_1",
124 .id
= SM8550_MASTER_QDSS_ETR_1
,
128 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
131 static struct qcom_icc_node xm_sdc2
= {
133 .id
= SM8550_MASTER_SDCC_2
,
137 .links
= { SM8550_SLAVE_A2NOC_SNOC
},
140 static struct qcom_icc_node qup0_core_master
= {
141 .name
= "qup0_core_master",
142 .id
= SM8550_MASTER_QUP_CORE_0
,
146 .links
= { SM8550_SLAVE_QUP_CORE_0
},
149 static struct qcom_icc_node qup1_core_master
= {
150 .name
= "qup1_core_master",
151 .id
= SM8550_MASTER_QUP_CORE_1
,
155 .links
= { SM8550_SLAVE_QUP_CORE_1
},
158 static struct qcom_icc_node qup2_core_master
= {
159 .name
= "qup2_core_master",
160 .id
= SM8550_MASTER_QUP_CORE_2
,
164 .links
= { SM8550_SLAVE_QUP_CORE_2
},
167 static struct qcom_icc_node qsm_cfg
= {
169 .id
= SM8550_MASTER_CNOC_CFG
,
173 .links
= { SM8550_SLAVE_AHB2PHY_SOUTH
, SM8550_SLAVE_AHB2PHY_NORTH
,
174 SM8550_SLAVE_APPSS
, SM8550_SLAVE_CAMERA_CFG
,
175 SM8550_SLAVE_CLK_CTL
, SM8550_SLAVE_RBCPR_CX_CFG
,
176 SM8550_SLAVE_RBCPR_MMCX_CFG
, SM8550_SLAVE_RBCPR_MXA_CFG
,
177 SM8550_SLAVE_RBCPR_MXC_CFG
, SM8550_SLAVE_CPR_NSPCX
,
178 SM8550_SLAVE_CRYPTO_0_CFG
, SM8550_SLAVE_CX_RDPM
,
179 SM8550_SLAVE_DISPLAY_CFG
, SM8550_SLAVE_GFX3D_CFG
,
180 SM8550_SLAVE_I2C
, SM8550_SLAVE_IMEM_CFG
,
181 SM8550_SLAVE_IPA_CFG
, SM8550_SLAVE_IPC_ROUTER_CFG
,
182 SM8550_SLAVE_CNOC_MSS
, SM8550_SLAVE_MX_RDPM
,
183 SM8550_SLAVE_PCIE_0_CFG
, SM8550_SLAVE_PCIE_1_CFG
,
184 SM8550_SLAVE_PDM
, SM8550_SLAVE_PIMEM_CFG
,
185 SM8550_SLAVE_PRNG
, SM8550_SLAVE_QDSS_CFG
,
186 SM8550_SLAVE_QSPI_0
, SM8550_SLAVE_QUP_1
,
187 SM8550_SLAVE_QUP_2
, SM8550_SLAVE_SDCC_2
,
188 SM8550_SLAVE_SDCC_4
, SM8550_SLAVE_SPSS_CFG
,
189 SM8550_SLAVE_TCSR
, SM8550_SLAVE_TLMM
,
190 SM8550_SLAVE_UFS_MEM_CFG
, SM8550_SLAVE_USB3_0
,
191 SM8550_SLAVE_VENUS_CFG
, SM8550_SLAVE_VSENSE_CTRL_CFG
,
192 SM8550_SLAVE_LPASS_QTB_CFG
, SM8550_SLAVE_CNOC_MNOC_CFG
,
193 SM8550_SLAVE_NSP_QTB_CFG
, SM8550_SLAVE_PCIE_ANOC_CFG
,
194 SM8550_SLAVE_QDSS_STM
, SM8550_SLAVE_TCU
},
197 static struct qcom_icc_node qnm_gemnoc_cnoc
= {
198 .name
= "qnm_gemnoc_cnoc",
199 .id
= SM8550_MASTER_GEM_NOC_CNOC
,
203 .links
= { SM8550_SLAVE_AOSS
, SM8550_SLAVE_TME_CFG
,
204 SM8550_SLAVE_CNOC_CFG
, SM8550_SLAVE_DDRSS_CFG
,
205 SM8550_SLAVE_BOOT_IMEM
, SM8550_SLAVE_IMEM
},
208 static struct qcom_icc_node qnm_gemnoc_pcie
= {
209 .name
= "qnm_gemnoc_pcie",
210 .id
= SM8550_MASTER_GEM_NOC_PCIE_SNOC
,
214 .links
= { SM8550_SLAVE_PCIE_0
, SM8550_SLAVE_PCIE_1
},
217 static struct qcom_icc_node alm_gpu_tcu
= {
218 .name
= "alm_gpu_tcu",
219 .id
= SM8550_MASTER_GPU_TCU
,
223 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
226 static struct qcom_icc_node alm_sys_tcu
= {
227 .name
= "alm_sys_tcu",
228 .id
= SM8550_MASTER_SYS_TCU
,
232 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
235 static struct qcom_icc_node chm_apps
= {
237 .id
= SM8550_MASTER_APPSS_PROC
,
241 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
,
242 SM8550_SLAVE_MEM_NOC_PCIE_SNOC
},
245 static struct qcom_icc_node qnm_gpu
= {
247 .id
= SM8550_MASTER_GFX3D
,
251 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
254 static struct qcom_icc_node qnm_lpass_gemnoc
= {
255 .name
= "qnm_lpass_gemnoc",
256 .id
= SM8550_MASTER_LPASS_GEM_NOC
,
260 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
,
261 SM8550_SLAVE_MEM_NOC_PCIE_SNOC
},
264 static struct qcom_icc_node qnm_mdsp
= {
266 .id
= SM8550_MASTER_MSS_PROC
,
270 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
,
271 SM8550_SLAVE_MEM_NOC_PCIE_SNOC
},
274 static struct qcom_icc_node qnm_mnoc_hf
= {
275 .name
= "qnm_mnoc_hf",
276 .id
= SM8550_MASTER_MNOC_HF_MEM_NOC
,
280 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
283 static struct qcom_icc_node qnm_mnoc_sf
= {
284 .name
= "qnm_mnoc_sf",
285 .id
= SM8550_MASTER_MNOC_SF_MEM_NOC
,
289 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
292 static struct qcom_icc_node qnm_nsp_gemnoc
= {
293 .name
= "qnm_nsp_gemnoc",
294 .id
= SM8550_MASTER_COMPUTE_NOC
,
298 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
301 static struct qcom_icc_node qnm_pcie
= {
303 .id
= SM8550_MASTER_ANOC_PCIE_GEM_NOC
,
307 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
},
310 static struct qcom_icc_node qnm_snoc_gc
= {
311 .name
= "qnm_snoc_gc",
312 .id
= SM8550_MASTER_SNOC_GC_MEM_NOC
,
316 .links
= { SM8550_SLAVE_LLCC
},
319 static struct qcom_icc_node qnm_snoc_sf
= {
320 .name
= "qnm_snoc_sf",
321 .id
= SM8550_MASTER_SNOC_SF_MEM_NOC
,
325 .links
= { SM8550_SLAVE_GEM_NOC_CNOC
, SM8550_SLAVE_LLCC
,
326 SM8550_SLAVE_MEM_NOC_PCIE_SNOC
},
329 static struct qcom_icc_node qnm_lpiaon_noc
= {
330 .name
= "qnm_lpiaon_noc",
331 .id
= SM8550_MASTER_LPIAON_NOC
,
335 .links
= { SM8550_SLAVE_LPASS_GEM_NOC
},
338 static struct qcom_icc_node qnm_lpass_lpinoc
= {
339 .name
= "qnm_lpass_lpinoc",
340 .id
= SM8550_MASTER_LPASS_LPINOC
,
344 .links
= { SM8550_SLAVE_LPIAON_NOC_LPASS_AG_NOC
},
347 static struct qcom_icc_node qxm_lpinoc_dsp_axim
= {
348 .name
= "qxm_lpinoc_dsp_axim",
349 .id
= SM8550_MASTER_LPASS_PROC
,
353 .links
= { SM8550_SLAVE_LPICX_NOC_LPIAON_NOC
},
356 static struct qcom_icc_node llcc_mc
= {
358 .id
= SM8550_MASTER_LLCC
,
362 .links
= { SM8550_SLAVE_EBI1
},
365 static struct qcom_icc_node qnm_camnoc_hf
= {
366 .name
= "qnm_camnoc_hf",
367 .id
= SM8550_MASTER_CAMNOC_HF
,
371 .links
= { SM8550_SLAVE_MNOC_HF_MEM_NOC
},
374 static struct qcom_icc_node qnm_camnoc_icp
= {
375 .name
= "qnm_camnoc_icp",
376 .id
= SM8550_MASTER_CAMNOC_ICP
,
380 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
383 static struct qcom_icc_node qnm_camnoc_sf
= {
384 .name
= "qnm_camnoc_sf",
385 .id
= SM8550_MASTER_CAMNOC_SF
,
389 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
392 static struct qcom_icc_node qnm_mdp
= {
394 .id
= SM8550_MASTER_MDP
,
398 .links
= { SM8550_SLAVE_MNOC_HF_MEM_NOC
},
401 static struct qcom_icc_node qnm_vapss_hcp
= {
402 .name
= "qnm_vapss_hcp",
403 .id
= SM8550_MASTER_CDSP_HCP
,
407 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
410 static struct qcom_icc_node qnm_video
= {
412 .id
= SM8550_MASTER_VIDEO
,
416 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
419 static struct qcom_icc_node qnm_video_cv_cpu
= {
420 .name
= "qnm_video_cv_cpu",
421 .id
= SM8550_MASTER_VIDEO_CV_PROC
,
425 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
428 static struct qcom_icc_node qnm_video_cvp
= {
429 .name
= "qnm_video_cvp",
430 .id
= SM8550_MASTER_VIDEO_PROC
,
434 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
437 static struct qcom_icc_node qnm_video_v_cpu
= {
438 .name
= "qnm_video_v_cpu",
439 .id
= SM8550_MASTER_VIDEO_V_PROC
,
443 .links
= { SM8550_SLAVE_MNOC_SF_MEM_NOC
},
446 static struct qcom_icc_node qsm_mnoc_cfg
= {
447 .name
= "qsm_mnoc_cfg",
448 .id
= SM8550_MASTER_CNOC_MNOC_CFG
,
452 .links
= { SM8550_SLAVE_SERVICE_MNOC
},
455 static struct qcom_icc_node qxm_nsp
= {
457 .id
= SM8550_MASTER_CDSP_PROC
,
461 .links
= { SM8550_SLAVE_CDSP_MEM_NOC
},
464 static struct qcom_icc_node qsm_pcie_anoc_cfg
= {
465 .name
= "qsm_pcie_anoc_cfg",
466 .id
= SM8550_MASTER_PCIE_ANOC_CFG
,
470 .links
= { SM8550_SLAVE_SERVICE_PCIE_ANOC
},
473 static struct qcom_icc_node xm_pcie3_0
= {
474 .name
= "xm_pcie3_0",
475 .id
= SM8550_MASTER_PCIE_0
,
479 .links
= { SM8550_SLAVE_ANOC_PCIE_GEM_NOC
},
482 static struct qcom_icc_node xm_pcie3_1
= {
483 .name
= "xm_pcie3_1",
484 .id
= SM8550_MASTER_PCIE_1
,
488 .links
= { SM8550_SLAVE_ANOC_PCIE_GEM_NOC
},
491 static struct qcom_icc_node qhm_gic
= {
493 .id
= SM8550_MASTER_GIC_AHB
,
497 .links
= { SM8550_SLAVE_SNOC_GEM_NOC_SF
},
500 static struct qcom_icc_node qnm_aggre1_noc
= {
501 .name
= "qnm_aggre1_noc",
502 .id
= SM8550_MASTER_A1NOC_SNOC
,
506 .links
= { SM8550_SLAVE_SNOC_GEM_NOC_SF
},
509 static struct qcom_icc_node qnm_aggre2_noc
= {
510 .name
= "qnm_aggre2_noc",
511 .id
= SM8550_MASTER_A2NOC_SNOC
,
515 .links
= { SM8550_SLAVE_SNOC_GEM_NOC_SF
},
518 static struct qcom_icc_node xm_gic
= {
520 .id
= SM8550_MASTER_GIC
,
524 .links
= { SM8550_SLAVE_SNOC_GEM_NOC_GC
},
527 static struct qcom_icc_node qns_a1noc_snoc
= {
528 .name
= "qns_a1noc_snoc",
529 .id
= SM8550_SLAVE_A1NOC_SNOC
,
533 .links
= { SM8550_MASTER_A1NOC_SNOC
},
536 static struct qcom_icc_node qns_a2noc_snoc
= {
537 .name
= "qns_a2noc_snoc",
538 .id
= SM8550_SLAVE_A2NOC_SNOC
,
542 .links
= { SM8550_MASTER_A2NOC_SNOC
},
545 static struct qcom_icc_node qup0_core_slave
= {
546 .name
= "qup0_core_slave",
547 .id
= SM8550_SLAVE_QUP_CORE_0
,
553 static struct qcom_icc_node qup1_core_slave
= {
554 .name
= "qup1_core_slave",
555 .id
= SM8550_SLAVE_QUP_CORE_1
,
561 static struct qcom_icc_node qup2_core_slave
= {
562 .name
= "qup2_core_slave",
563 .id
= SM8550_SLAVE_QUP_CORE_2
,
569 static struct qcom_icc_node qhs_ahb2phy0
= {
570 .name
= "qhs_ahb2phy0",
571 .id
= SM8550_SLAVE_AHB2PHY_SOUTH
,
577 static struct qcom_icc_node qhs_ahb2phy1
= {
578 .name
= "qhs_ahb2phy1",
579 .id
= SM8550_SLAVE_AHB2PHY_NORTH
,
585 static struct qcom_icc_node qhs_apss
= {
587 .id
= SM8550_SLAVE_APPSS
,
593 static struct qcom_icc_node qhs_camera_cfg
= {
594 .name
= "qhs_camera_cfg",
595 .id
= SM8550_SLAVE_CAMERA_CFG
,
601 static struct qcom_icc_node qhs_clk_ctl
= {
602 .name
= "qhs_clk_ctl",
603 .id
= SM8550_SLAVE_CLK_CTL
,
609 static struct qcom_icc_node qhs_cpr_cx
= {
610 .name
= "qhs_cpr_cx",
611 .id
= SM8550_SLAVE_RBCPR_CX_CFG
,
617 static struct qcom_icc_node qhs_cpr_mmcx
= {
618 .name
= "qhs_cpr_mmcx",
619 .id
= SM8550_SLAVE_RBCPR_MMCX_CFG
,
625 static struct qcom_icc_node qhs_cpr_mxa
= {
626 .name
= "qhs_cpr_mxa",
627 .id
= SM8550_SLAVE_RBCPR_MXA_CFG
,
633 static struct qcom_icc_node qhs_cpr_mxc
= {
634 .name
= "qhs_cpr_mxc",
635 .id
= SM8550_SLAVE_RBCPR_MXC_CFG
,
641 static struct qcom_icc_node qhs_cpr_nspcx
= {
642 .name
= "qhs_cpr_nspcx",
643 .id
= SM8550_SLAVE_CPR_NSPCX
,
649 static struct qcom_icc_node qhs_crypto0_cfg
= {
650 .name
= "qhs_crypto0_cfg",
651 .id
= SM8550_SLAVE_CRYPTO_0_CFG
,
657 static struct qcom_icc_node qhs_cx_rdpm
= {
658 .name
= "qhs_cx_rdpm",
659 .id
= SM8550_SLAVE_CX_RDPM
,
665 static struct qcom_icc_node qhs_display_cfg
= {
666 .name
= "qhs_display_cfg",
667 .id
= SM8550_SLAVE_DISPLAY_CFG
,
673 static struct qcom_icc_node qhs_gpuss_cfg
= {
674 .name
= "qhs_gpuss_cfg",
675 .id
= SM8550_SLAVE_GFX3D_CFG
,
681 static struct qcom_icc_node qhs_i2c
= {
683 .id
= SM8550_SLAVE_I2C
,
689 static struct qcom_icc_node qhs_imem_cfg
= {
690 .name
= "qhs_imem_cfg",
691 .id
= SM8550_SLAVE_IMEM_CFG
,
697 static struct qcom_icc_node qhs_ipa
= {
699 .id
= SM8550_SLAVE_IPA_CFG
,
705 static struct qcom_icc_node qhs_ipc_router
= {
706 .name
= "qhs_ipc_router",
707 .id
= SM8550_SLAVE_IPC_ROUTER_CFG
,
713 static struct qcom_icc_node qhs_mss_cfg
= {
714 .name
= "qhs_mss_cfg",
715 .id
= SM8550_SLAVE_CNOC_MSS
,
721 static struct qcom_icc_node qhs_mx_rdpm
= {
722 .name
= "qhs_mx_rdpm",
723 .id
= SM8550_SLAVE_MX_RDPM
,
729 static struct qcom_icc_node qhs_pcie0_cfg
= {
730 .name
= "qhs_pcie0_cfg",
731 .id
= SM8550_SLAVE_PCIE_0_CFG
,
737 static struct qcom_icc_node qhs_pcie1_cfg
= {
738 .name
= "qhs_pcie1_cfg",
739 .id
= SM8550_SLAVE_PCIE_1_CFG
,
745 static struct qcom_icc_node qhs_pdm
= {
747 .id
= SM8550_SLAVE_PDM
,
753 static struct qcom_icc_node qhs_pimem_cfg
= {
754 .name
= "qhs_pimem_cfg",
755 .id
= SM8550_SLAVE_PIMEM_CFG
,
761 static struct qcom_icc_node qhs_prng
= {
763 .id
= SM8550_SLAVE_PRNG
,
769 static struct qcom_icc_node qhs_qdss_cfg
= {
770 .name
= "qhs_qdss_cfg",
771 .id
= SM8550_SLAVE_QDSS_CFG
,
777 static struct qcom_icc_node qhs_qspi
= {
779 .id
= SM8550_SLAVE_QSPI_0
,
785 static struct qcom_icc_node qhs_qup1
= {
787 .id
= SM8550_SLAVE_QUP_1
,
793 static struct qcom_icc_node qhs_qup2
= {
795 .id
= SM8550_SLAVE_QUP_2
,
801 static struct qcom_icc_node qhs_sdc2
= {
803 .id
= SM8550_SLAVE_SDCC_2
,
809 static struct qcom_icc_node qhs_sdc4
= {
811 .id
= SM8550_SLAVE_SDCC_4
,
817 static struct qcom_icc_node qhs_spss_cfg
= {
818 .name
= "qhs_spss_cfg",
819 .id
= SM8550_SLAVE_SPSS_CFG
,
825 static struct qcom_icc_node qhs_tcsr
= {
827 .id
= SM8550_SLAVE_TCSR
,
833 static struct qcom_icc_node qhs_tlmm
= {
835 .id
= SM8550_SLAVE_TLMM
,
841 static struct qcom_icc_node qhs_ufs_mem_cfg
= {
842 .name
= "qhs_ufs_mem_cfg",
843 .id
= SM8550_SLAVE_UFS_MEM_CFG
,
849 static struct qcom_icc_node qhs_usb3_0
= {
850 .name
= "qhs_usb3_0",
851 .id
= SM8550_SLAVE_USB3_0
,
857 static struct qcom_icc_node qhs_venus_cfg
= {
858 .name
= "qhs_venus_cfg",
859 .id
= SM8550_SLAVE_VENUS_CFG
,
865 static struct qcom_icc_node qhs_vsense_ctrl_cfg
= {
866 .name
= "qhs_vsense_ctrl_cfg",
867 .id
= SM8550_SLAVE_VSENSE_CTRL_CFG
,
873 static struct qcom_icc_node qss_lpass_qtb_cfg
= {
874 .name
= "qss_lpass_qtb_cfg",
875 .id
= SM8550_SLAVE_LPASS_QTB_CFG
,
881 static struct qcom_icc_node qss_mnoc_cfg
= {
882 .name
= "qss_mnoc_cfg",
883 .id
= SM8550_SLAVE_CNOC_MNOC_CFG
,
887 .links
= { SM8550_MASTER_CNOC_MNOC_CFG
},
890 static struct qcom_icc_node qss_nsp_qtb_cfg
= {
891 .name
= "qss_nsp_qtb_cfg",
892 .id
= SM8550_SLAVE_NSP_QTB_CFG
,
898 static struct qcom_icc_node qss_pcie_anoc_cfg
= {
899 .name
= "qss_pcie_anoc_cfg",
900 .id
= SM8550_SLAVE_PCIE_ANOC_CFG
,
904 .links
= { SM8550_MASTER_PCIE_ANOC_CFG
},
907 static struct qcom_icc_node xs_qdss_stm
= {
908 .name
= "xs_qdss_stm",
909 .id
= SM8550_SLAVE_QDSS_STM
,
915 static struct qcom_icc_node xs_sys_tcu_cfg
= {
916 .name
= "xs_sys_tcu_cfg",
917 .id
= SM8550_SLAVE_TCU
,
923 static struct qcom_icc_node qhs_aoss
= {
925 .id
= SM8550_SLAVE_AOSS
,
931 static struct qcom_icc_node qhs_tme_cfg
= {
932 .name
= "qhs_tme_cfg",
933 .id
= SM8550_SLAVE_TME_CFG
,
939 static struct qcom_icc_node qss_cfg
= {
941 .id
= SM8550_SLAVE_CNOC_CFG
,
945 .links
= { SM8550_MASTER_CNOC_CFG
},
948 static struct qcom_icc_node qss_ddrss_cfg
= {
949 .name
= "qss_ddrss_cfg",
950 .id
= SM8550_SLAVE_DDRSS_CFG
,
956 static struct qcom_icc_node qxs_boot_imem
= {
957 .name
= "qxs_boot_imem",
958 .id
= SM8550_SLAVE_BOOT_IMEM
,
964 static struct qcom_icc_node qxs_imem
= {
966 .id
= SM8550_SLAVE_IMEM
,
972 static struct qcom_icc_node xs_pcie_0
= {
974 .id
= SM8550_SLAVE_PCIE_0
,
980 static struct qcom_icc_node xs_pcie_1
= {
982 .id
= SM8550_SLAVE_PCIE_1
,
988 static struct qcom_icc_node qns_gem_noc_cnoc
= {
989 .name
= "qns_gem_noc_cnoc",
990 .id
= SM8550_SLAVE_GEM_NOC_CNOC
,
994 .links
= { SM8550_MASTER_GEM_NOC_CNOC
},
997 static struct qcom_icc_node qns_llcc
= {
999 .id
= SM8550_SLAVE_LLCC
,
1003 .links
= { SM8550_MASTER_LLCC
},
1006 static struct qcom_icc_node qns_pcie
= {
1008 .id
= SM8550_SLAVE_MEM_NOC_PCIE_SNOC
,
1012 .links
= { SM8550_MASTER_GEM_NOC_PCIE_SNOC
},
1015 static struct qcom_icc_node qns_lpass_ag_noc_gemnoc
= {
1016 .name
= "qns_lpass_ag_noc_gemnoc",
1017 .id
= SM8550_SLAVE_LPASS_GEM_NOC
,
1021 .links
= { SM8550_MASTER_LPASS_GEM_NOC
},
1024 static struct qcom_icc_node qns_lpass_aggnoc
= {
1025 .name
= "qns_lpass_aggnoc",
1026 .id
= SM8550_SLAVE_LPIAON_NOC_LPASS_AG_NOC
,
1030 .links
= { SM8550_MASTER_LPIAON_NOC
},
1033 static struct qcom_icc_node qns_lpi_aon_noc
= {
1034 .name
= "qns_lpi_aon_noc",
1035 .id
= SM8550_SLAVE_LPICX_NOC_LPIAON_NOC
,
1039 .links
= { SM8550_MASTER_LPASS_LPINOC
},
1042 static struct qcom_icc_node ebi
= {
1044 .id
= SM8550_SLAVE_EBI1
,
1050 static struct qcom_icc_node qns_mem_noc_hf
= {
1051 .name
= "qns_mem_noc_hf",
1052 .id
= SM8550_SLAVE_MNOC_HF_MEM_NOC
,
1056 .links
= { SM8550_MASTER_MNOC_HF_MEM_NOC
},
1059 static struct qcom_icc_node qns_mem_noc_sf
= {
1060 .name
= "qns_mem_noc_sf",
1061 .id
= SM8550_SLAVE_MNOC_SF_MEM_NOC
,
1065 .links
= { SM8550_MASTER_MNOC_SF_MEM_NOC
},
1068 static struct qcom_icc_node srvc_mnoc
= {
1069 .name
= "srvc_mnoc",
1070 .id
= SM8550_SLAVE_SERVICE_MNOC
,
1076 static struct qcom_icc_node qns_nsp_gemnoc
= {
1077 .name
= "qns_nsp_gemnoc",
1078 .id
= SM8550_SLAVE_CDSP_MEM_NOC
,
1082 .links
= { SM8550_MASTER_COMPUTE_NOC
},
1085 static struct qcom_icc_node qns_pcie_mem_noc
= {
1086 .name
= "qns_pcie_mem_noc",
1087 .id
= SM8550_SLAVE_ANOC_PCIE_GEM_NOC
,
1091 .links
= { SM8550_MASTER_ANOC_PCIE_GEM_NOC
},
1094 static struct qcom_icc_node srvc_pcie_aggre_noc
= {
1095 .name
= "srvc_pcie_aggre_noc",
1096 .id
= SM8550_SLAVE_SERVICE_PCIE_ANOC
,
1102 static struct qcom_icc_node qns_gemnoc_gc
= {
1103 .name
= "qns_gemnoc_gc",
1104 .id
= SM8550_SLAVE_SNOC_GEM_NOC_GC
,
1108 .links
= { SM8550_MASTER_SNOC_GC_MEM_NOC
},
1111 static struct qcom_icc_node qns_gemnoc_sf
= {
1112 .name
= "qns_gemnoc_sf",
1113 .id
= SM8550_SLAVE_SNOC_GEM_NOC_SF
,
1117 .links
= { SM8550_MASTER_SNOC_SF_MEM_NOC
},
1120 static struct qcom_icc_bcm bcm_acv
= {
1127 static struct qcom_icc_bcm bcm_ce0
= {
1130 .nodes
= { &qxm_crypto
},
1133 static struct qcom_icc_bcm bcm_cn0
= {
1138 .nodes
= { &qsm_cfg
, &qhs_ahb2phy0
,
1139 &qhs_ahb2phy1
, &qhs_apss
,
1140 &qhs_camera_cfg
, &qhs_clk_ctl
,
1141 &qhs_cpr_cx
, &qhs_cpr_mmcx
,
1142 &qhs_cpr_mxa
, &qhs_cpr_mxc
,
1143 &qhs_cpr_nspcx
, &qhs_crypto0_cfg
,
1144 &qhs_cx_rdpm
, &qhs_gpuss_cfg
,
1145 &qhs_i2c
, &qhs_imem_cfg
,
1146 &qhs_ipa
, &qhs_ipc_router
,
1147 &qhs_mss_cfg
, &qhs_mx_rdpm
,
1148 &qhs_pcie0_cfg
, &qhs_pcie1_cfg
,
1149 &qhs_pdm
, &qhs_pimem_cfg
,
1150 &qhs_prng
, &qhs_qdss_cfg
,
1151 &qhs_qspi
, &qhs_qup1
,
1152 &qhs_qup2
, &qhs_sdc2
,
1153 &qhs_sdc4
, &qhs_spss_cfg
,
1154 &qhs_tcsr
, &qhs_tlmm
,
1155 &qhs_ufs_mem_cfg
, &qhs_usb3_0
,
1156 &qhs_venus_cfg
, &qhs_vsense_ctrl_cfg
,
1157 &qss_lpass_qtb_cfg
, &qss_mnoc_cfg
,
1158 &qss_nsp_qtb_cfg
, &qss_pcie_anoc_cfg
,
1159 &xs_qdss_stm
, &xs_sys_tcu_cfg
,
1160 &qnm_gemnoc_cnoc
, &qnm_gemnoc_pcie
,
1161 &qhs_aoss
, &qhs_tme_cfg
,
1162 &qss_cfg
, &qss_ddrss_cfg
,
1163 &qxs_boot_imem
, &qxs_imem
,
1164 &xs_pcie_0
, &xs_pcie_1
},
1167 static struct qcom_icc_bcm bcm_cn1
= {
1170 .nodes
= { &qhs_display_cfg
},
1173 static struct qcom_icc_bcm bcm_co0
= {
1177 .nodes
= { &qxm_nsp
, &qns_nsp_gemnoc
},
1180 static struct qcom_icc_bcm bcm_lp0
= {
1183 .nodes
= { &qnm_lpass_lpinoc
, &qns_lpass_aggnoc
},
1186 static struct qcom_icc_bcm bcm_mc0
= {
1193 static struct qcom_icc_bcm bcm_mm0
= {
1196 .nodes
= { &qns_mem_noc_hf
},
1199 static struct qcom_icc_bcm bcm_mm1
= {
1203 .nodes
= { &qnm_camnoc_hf
, &qnm_camnoc_icp
,
1204 &qnm_camnoc_sf
, &qnm_vapss_hcp
,
1205 &qnm_video_cv_cpu
, &qnm_video_cvp
,
1206 &qnm_video_v_cpu
, &qns_mem_noc_sf
},
1209 static struct qcom_icc_bcm bcm_qup0
= {
1214 .nodes
= { &qup0_core_slave
},
1217 static struct qcom_icc_bcm bcm_qup1
= {
1222 .nodes
= { &qup1_core_slave
},
1225 static struct qcom_icc_bcm bcm_qup2
= {
1230 .nodes
= { &qup2_core_slave
},
1233 static struct qcom_icc_bcm bcm_sh0
= {
1237 .nodes
= { &qns_llcc
},
1240 static struct qcom_icc_bcm bcm_sh1
= {
1244 .nodes
= { &alm_gpu_tcu
, &alm_sys_tcu
,
1245 &chm_apps
, &qnm_gpu
,
1246 &qnm_mdsp
, &qnm_mnoc_hf
,
1247 &qnm_mnoc_sf
, &qnm_nsp_gemnoc
,
1248 &qnm_pcie
, &qnm_snoc_gc
,
1249 &qnm_snoc_sf
, &qns_gem_noc_cnoc
,
1253 static struct qcom_icc_bcm bcm_sn0
= {
1257 .nodes
= { &qns_gemnoc_sf
},
1260 static struct qcom_icc_bcm bcm_sn1
= {
1264 .nodes
= { &qhm_gic
, &xm_gic
,
1268 static struct qcom_icc_bcm bcm_sn2
= {
1271 .nodes
= { &qnm_aggre1_noc
},
1274 static struct qcom_icc_bcm bcm_sn3
= {
1277 .nodes
= { &qnm_aggre2_noc
},
1280 static struct qcom_icc_bcm bcm_sn7
= {
1283 .nodes
= { &qns_pcie_mem_noc
},
1286 static struct qcom_icc_bcm
* const aggre1_noc_bcms
[] = {
1289 static struct qcom_icc_node
* const aggre1_noc_nodes
[] = {
1290 [MASTER_QSPI_0
] = &qhm_qspi
,
1291 [MASTER_QUP_1
] = &qhm_qup1
,
1292 [MASTER_SDCC_4
] = &xm_sdc4
,
1293 [MASTER_UFS_MEM
] = &xm_ufs_mem
,
1294 [MASTER_USB3_0
] = &xm_usb3_0
,
1295 [SLAVE_A1NOC_SNOC
] = &qns_a1noc_snoc
,
1298 static const struct qcom_icc_desc sm8550_aggre1_noc
= {
1299 .nodes
= aggre1_noc_nodes
,
1300 .num_nodes
= ARRAY_SIZE(aggre1_noc_nodes
),
1301 .bcms
= aggre1_noc_bcms
,
1302 .num_bcms
= ARRAY_SIZE(aggre1_noc_bcms
),
1305 static struct qcom_icc_bcm
* const aggre2_noc_bcms
[] = {
1309 static struct qcom_icc_node
* const aggre2_noc_nodes
[] = {
1310 [MASTER_QDSS_BAM
] = &qhm_qdss_bam
,
1311 [MASTER_QUP_2
] = &qhm_qup2
,
1312 [MASTER_CRYPTO
] = &qxm_crypto
,
1313 [MASTER_IPA
] = &qxm_ipa
,
1314 [MASTER_SP
] = &qxm_sp
,
1315 [MASTER_QDSS_ETR
] = &xm_qdss_etr_0
,
1316 [MASTER_QDSS_ETR_1
] = &xm_qdss_etr_1
,
1317 [MASTER_SDCC_2
] = &xm_sdc2
,
1318 [SLAVE_A2NOC_SNOC
] = &qns_a2noc_snoc
,
1321 static const struct qcom_icc_desc sm8550_aggre2_noc
= {
1322 .nodes
= aggre2_noc_nodes
,
1323 .num_nodes
= ARRAY_SIZE(aggre2_noc_nodes
),
1324 .bcms
= aggre2_noc_bcms
,
1325 .num_bcms
= ARRAY_SIZE(aggre2_noc_bcms
),
1328 static struct qcom_icc_bcm
* const clk_virt_bcms
[] = {
1334 static struct qcom_icc_node
* const clk_virt_nodes
[] = {
1335 [MASTER_QUP_CORE_0
] = &qup0_core_master
,
1336 [MASTER_QUP_CORE_1
] = &qup1_core_master
,
1337 [MASTER_QUP_CORE_2
] = &qup2_core_master
,
1338 [SLAVE_QUP_CORE_0
] = &qup0_core_slave
,
1339 [SLAVE_QUP_CORE_1
] = &qup1_core_slave
,
1340 [SLAVE_QUP_CORE_2
] = &qup2_core_slave
,
1343 static const struct qcom_icc_desc sm8550_clk_virt
= {
1344 .nodes
= clk_virt_nodes
,
1345 .num_nodes
= ARRAY_SIZE(clk_virt_nodes
),
1346 .bcms
= clk_virt_bcms
,
1347 .num_bcms
= ARRAY_SIZE(clk_virt_bcms
),
1350 static struct qcom_icc_bcm
* const config_noc_bcms
[] = {
1355 static struct qcom_icc_node
* const config_noc_nodes
[] = {
1356 [MASTER_CNOC_CFG
] = &qsm_cfg
,
1357 [SLAVE_AHB2PHY_SOUTH
] = &qhs_ahb2phy0
,
1358 [SLAVE_AHB2PHY_NORTH
] = &qhs_ahb2phy1
,
1359 [SLAVE_APPSS
] = &qhs_apss
,
1360 [SLAVE_CAMERA_CFG
] = &qhs_camera_cfg
,
1361 [SLAVE_CLK_CTL
] = &qhs_clk_ctl
,
1362 [SLAVE_RBCPR_CX_CFG
] = &qhs_cpr_cx
,
1363 [SLAVE_RBCPR_MMCX_CFG
] = &qhs_cpr_mmcx
,
1364 [SLAVE_RBCPR_MXA_CFG
] = &qhs_cpr_mxa
,
1365 [SLAVE_RBCPR_MXC_CFG
] = &qhs_cpr_mxc
,
1366 [SLAVE_CPR_NSPCX
] = &qhs_cpr_nspcx
,
1367 [SLAVE_CRYPTO_0_CFG
] = &qhs_crypto0_cfg
,
1368 [SLAVE_CX_RDPM
] = &qhs_cx_rdpm
,
1369 [SLAVE_DISPLAY_CFG
] = &qhs_display_cfg
,
1370 [SLAVE_GFX3D_CFG
] = &qhs_gpuss_cfg
,
1371 [SLAVE_I2C
] = &qhs_i2c
,
1372 [SLAVE_IMEM_CFG
] = &qhs_imem_cfg
,
1373 [SLAVE_IPA_CFG
] = &qhs_ipa
,
1374 [SLAVE_IPC_ROUTER_CFG
] = &qhs_ipc_router
,
1375 [SLAVE_CNOC_MSS
] = &qhs_mss_cfg
,
1376 [SLAVE_MX_RDPM
] = &qhs_mx_rdpm
,
1377 [SLAVE_PCIE_0_CFG
] = &qhs_pcie0_cfg
,
1378 [SLAVE_PCIE_1_CFG
] = &qhs_pcie1_cfg
,
1379 [SLAVE_PDM
] = &qhs_pdm
,
1380 [SLAVE_PIMEM_CFG
] = &qhs_pimem_cfg
,
1381 [SLAVE_PRNG
] = &qhs_prng
,
1382 [SLAVE_QDSS_CFG
] = &qhs_qdss_cfg
,
1383 [SLAVE_QSPI_0
] = &qhs_qspi
,
1384 [SLAVE_QUP_1
] = &qhs_qup1
,
1385 [SLAVE_QUP_2
] = &qhs_qup2
,
1386 [SLAVE_SDCC_2
] = &qhs_sdc2
,
1387 [SLAVE_SDCC_4
] = &qhs_sdc4
,
1388 [SLAVE_SPSS_CFG
] = &qhs_spss_cfg
,
1389 [SLAVE_TCSR
] = &qhs_tcsr
,
1390 [SLAVE_TLMM
] = &qhs_tlmm
,
1391 [SLAVE_UFS_MEM_CFG
] = &qhs_ufs_mem_cfg
,
1392 [SLAVE_USB3_0
] = &qhs_usb3_0
,
1393 [SLAVE_VENUS_CFG
] = &qhs_venus_cfg
,
1394 [SLAVE_VSENSE_CTRL_CFG
] = &qhs_vsense_ctrl_cfg
,
1395 [SLAVE_LPASS_QTB_CFG
] = &qss_lpass_qtb_cfg
,
1396 [SLAVE_CNOC_MNOC_CFG
] = &qss_mnoc_cfg
,
1397 [SLAVE_NSP_QTB_CFG
] = &qss_nsp_qtb_cfg
,
1398 [SLAVE_PCIE_ANOC_CFG
] = &qss_pcie_anoc_cfg
,
1399 [SLAVE_QDSS_STM
] = &xs_qdss_stm
,
1400 [SLAVE_TCU
] = &xs_sys_tcu_cfg
,
1403 static const struct qcom_icc_desc sm8550_config_noc
= {
1404 .nodes
= config_noc_nodes
,
1405 .num_nodes
= ARRAY_SIZE(config_noc_nodes
),
1406 .bcms
= config_noc_bcms
,
1407 .num_bcms
= ARRAY_SIZE(config_noc_bcms
),
1410 static struct qcom_icc_bcm
* const cnoc_main_bcms
[] = {
1414 static struct qcom_icc_node
* const cnoc_main_nodes
[] = {
1415 [MASTER_GEM_NOC_CNOC
] = &qnm_gemnoc_cnoc
,
1416 [MASTER_GEM_NOC_PCIE_SNOC
] = &qnm_gemnoc_pcie
,
1417 [SLAVE_AOSS
] = &qhs_aoss
,
1418 [SLAVE_TME_CFG
] = &qhs_tme_cfg
,
1419 [SLAVE_CNOC_CFG
] = &qss_cfg
,
1420 [SLAVE_DDRSS_CFG
] = &qss_ddrss_cfg
,
1421 [SLAVE_BOOT_IMEM
] = &qxs_boot_imem
,
1422 [SLAVE_IMEM
] = &qxs_imem
,
1423 [SLAVE_PCIE_0
] = &xs_pcie_0
,
1424 [SLAVE_PCIE_1
] = &xs_pcie_1
,
1427 static const struct qcom_icc_desc sm8550_cnoc_main
= {
1428 .nodes
= cnoc_main_nodes
,
1429 .num_nodes
= ARRAY_SIZE(cnoc_main_nodes
),
1430 .bcms
= cnoc_main_bcms
,
1431 .num_bcms
= ARRAY_SIZE(cnoc_main_bcms
),
1434 static struct qcom_icc_bcm
* const gem_noc_bcms
[] = {
1439 static struct qcom_icc_node
* const gem_noc_nodes
[] = {
1440 [MASTER_GPU_TCU
] = &alm_gpu_tcu
,
1441 [MASTER_SYS_TCU
] = &alm_sys_tcu
,
1442 [MASTER_APPSS_PROC
] = &chm_apps
,
1443 [MASTER_GFX3D
] = &qnm_gpu
,
1444 [MASTER_LPASS_GEM_NOC
] = &qnm_lpass_gemnoc
,
1445 [MASTER_MSS_PROC
] = &qnm_mdsp
,
1446 [MASTER_MNOC_HF_MEM_NOC
] = &qnm_mnoc_hf
,
1447 [MASTER_MNOC_SF_MEM_NOC
] = &qnm_mnoc_sf
,
1448 [MASTER_COMPUTE_NOC
] = &qnm_nsp_gemnoc
,
1449 [MASTER_ANOC_PCIE_GEM_NOC
] = &qnm_pcie
,
1450 [MASTER_SNOC_GC_MEM_NOC
] = &qnm_snoc_gc
,
1451 [MASTER_SNOC_SF_MEM_NOC
] = &qnm_snoc_sf
,
1452 [SLAVE_GEM_NOC_CNOC
] = &qns_gem_noc_cnoc
,
1453 [SLAVE_LLCC
] = &qns_llcc
,
1454 [SLAVE_MEM_NOC_PCIE_SNOC
] = &qns_pcie
,
1457 static const struct qcom_icc_desc sm8550_gem_noc
= {
1458 .nodes
= gem_noc_nodes
,
1459 .num_nodes
= ARRAY_SIZE(gem_noc_nodes
),
1460 .bcms
= gem_noc_bcms
,
1461 .num_bcms
= ARRAY_SIZE(gem_noc_bcms
),
1464 static struct qcom_icc_bcm
* const lpass_ag_noc_bcms
[] = {
1467 static struct qcom_icc_node
* const lpass_ag_noc_nodes
[] = {
1468 [MASTER_LPIAON_NOC
] = &qnm_lpiaon_noc
,
1469 [SLAVE_LPASS_GEM_NOC
] = &qns_lpass_ag_noc_gemnoc
,
1472 static const struct qcom_icc_desc sm8550_lpass_ag_noc
= {
1473 .nodes
= lpass_ag_noc_nodes
,
1474 .num_nodes
= ARRAY_SIZE(lpass_ag_noc_nodes
),
1475 .bcms
= lpass_ag_noc_bcms
,
1476 .num_bcms
= ARRAY_SIZE(lpass_ag_noc_bcms
),
1479 static struct qcom_icc_bcm
* const lpass_lpiaon_noc_bcms
[] = {
1483 static struct qcom_icc_node
* const lpass_lpiaon_noc_nodes
[] = {
1484 [MASTER_LPASS_LPINOC
] = &qnm_lpass_lpinoc
,
1485 [SLAVE_LPIAON_NOC_LPASS_AG_NOC
] = &qns_lpass_aggnoc
,
1488 static const struct qcom_icc_desc sm8550_lpass_lpiaon_noc
= {
1489 .nodes
= lpass_lpiaon_noc_nodes
,
1490 .num_nodes
= ARRAY_SIZE(lpass_lpiaon_noc_nodes
),
1491 .bcms
= lpass_lpiaon_noc_bcms
,
1492 .num_bcms
= ARRAY_SIZE(lpass_lpiaon_noc_bcms
),
1495 static struct qcom_icc_bcm
* const lpass_lpicx_noc_bcms
[] = {
1498 static struct qcom_icc_node
* const lpass_lpicx_noc_nodes
[] = {
1499 [MASTER_LPASS_PROC
] = &qxm_lpinoc_dsp_axim
,
1500 [SLAVE_LPICX_NOC_LPIAON_NOC
] = &qns_lpi_aon_noc
,
1503 static const struct qcom_icc_desc sm8550_lpass_lpicx_noc
= {
1504 .nodes
= lpass_lpicx_noc_nodes
,
1505 .num_nodes
= ARRAY_SIZE(lpass_lpicx_noc_nodes
),
1506 .bcms
= lpass_lpicx_noc_bcms
,
1507 .num_bcms
= ARRAY_SIZE(lpass_lpicx_noc_bcms
),
1510 static struct qcom_icc_bcm
* const mc_virt_bcms
[] = {
1515 static struct qcom_icc_node
* const mc_virt_nodes
[] = {
1516 [MASTER_LLCC
] = &llcc_mc
,
1517 [SLAVE_EBI1
] = &ebi
,
1520 static const struct qcom_icc_desc sm8550_mc_virt
= {
1521 .nodes
= mc_virt_nodes
,
1522 .num_nodes
= ARRAY_SIZE(mc_virt_nodes
),
1523 .bcms
= mc_virt_bcms
,
1524 .num_bcms
= ARRAY_SIZE(mc_virt_bcms
),
1527 static struct qcom_icc_bcm
* const mmss_noc_bcms
[] = {
1532 static struct qcom_icc_node
* const mmss_noc_nodes
[] = {
1533 [MASTER_CAMNOC_HF
] = &qnm_camnoc_hf
,
1534 [MASTER_CAMNOC_ICP
] = &qnm_camnoc_icp
,
1535 [MASTER_CAMNOC_SF
] = &qnm_camnoc_sf
,
1536 [MASTER_MDP
] = &qnm_mdp
,
1537 [MASTER_CDSP_HCP
] = &qnm_vapss_hcp
,
1538 [MASTER_VIDEO
] = &qnm_video
,
1539 [MASTER_VIDEO_CV_PROC
] = &qnm_video_cv_cpu
,
1540 [MASTER_VIDEO_PROC
] = &qnm_video_cvp
,
1541 [MASTER_VIDEO_V_PROC
] = &qnm_video_v_cpu
,
1542 [MASTER_CNOC_MNOC_CFG
] = &qsm_mnoc_cfg
,
1543 [SLAVE_MNOC_HF_MEM_NOC
] = &qns_mem_noc_hf
,
1544 [SLAVE_MNOC_SF_MEM_NOC
] = &qns_mem_noc_sf
,
1545 [SLAVE_SERVICE_MNOC
] = &srvc_mnoc
,
1548 static const struct qcom_icc_desc sm8550_mmss_noc
= {
1549 .nodes
= mmss_noc_nodes
,
1550 .num_nodes
= ARRAY_SIZE(mmss_noc_nodes
),
1551 .bcms
= mmss_noc_bcms
,
1552 .num_bcms
= ARRAY_SIZE(mmss_noc_bcms
),
1555 static struct qcom_icc_bcm
* const nsp_noc_bcms
[] = {
1559 static struct qcom_icc_node
* const nsp_noc_nodes
[] = {
1560 [MASTER_CDSP_PROC
] = &qxm_nsp
,
1561 [SLAVE_CDSP_MEM_NOC
] = &qns_nsp_gemnoc
,
1564 static const struct qcom_icc_desc sm8550_nsp_noc
= {
1565 .nodes
= nsp_noc_nodes
,
1566 .num_nodes
= ARRAY_SIZE(nsp_noc_nodes
),
1567 .bcms
= nsp_noc_bcms
,
1568 .num_bcms
= ARRAY_SIZE(nsp_noc_bcms
),
1571 static struct qcom_icc_bcm
* const pcie_anoc_bcms
[] = {
1575 static struct qcom_icc_node
* const pcie_anoc_nodes
[] = {
1576 [MASTER_PCIE_ANOC_CFG
] = &qsm_pcie_anoc_cfg
,
1577 [MASTER_PCIE_0
] = &xm_pcie3_0
,
1578 [MASTER_PCIE_1
] = &xm_pcie3_1
,
1579 [SLAVE_ANOC_PCIE_GEM_NOC
] = &qns_pcie_mem_noc
,
1580 [SLAVE_SERVICE_PCIE_ANOC
] = &srvc_pcie_aggre_noc
,
1583 static const struct qcom_icc_desc sm8550_pcie_anoc
= {
1584 .nodes
= pcie_anoc_nodes
,
1585 .num_nodes
= ARRAY_SIZE(pcie_anoc_nodes
),
1586 .bcms
= pcie_anoc_bcms
,
1587 .num_bcms
= ARRAY_SIZE(pcie_anoc_bcms
),
1590 static struct qcom_icc_bcm
* const system_noc_bcms
[] = {
1597 static struct qcom_icc_node
* const system_noc_nodes
[] = {
1598 [MASTER_GIC_AHB
] = &qhm_gic
,
1599 [MASTER_A1NOC_SNOC
] = &qnm_aggre1_noc
,
1600 [MASTER_A2NOC_SNOC
] = &qnm_aggre2_noc
,
1601 [MASTER_GIC
] = &xm_gic
,
1602 [SLAVE_SNOC_GEM_NOC_GC
] = &qns_gemnoc_gc
,
1603 [SLAVE_SNOC_GEM_NOC_SF
] = &qns_gemnoc_sf
,
1606 static const struct qcom_icc_desc sm8550_system_noc
= {
1607 .nodes
= system_noc_nodes
,
1608 .num_nodes
= ARRAY_SIZE(system_noc_nodes
),
1609 .bcms
= system_noc_bcms
,
1610 .num_bcms
= ARRAY_SIZE(system_noc_bcms
),
1613 static const struct of_device_id qnoc_of_match
[] = {
1614 { .compatible
= "qcom,sm8550-aggre1-noc",
1615 .data
= &sm8550_aggre1_noc
},
1616 { .compatible
= "qcom,sm8550-aggre2-noc",
1617 .data
= &sm8550_aggre2_noc
},
1618 { .compatible
= "qcom,sm8550-clk-virt",
1619 .data
= &sm8550_clk_virt
},
1620 { .compatible
= "qcom,sm8550-config-noc",
1621 .data
= &sm8550_config_noc
},
1622 { .compatible
= "qcom,sm8550-cnoc-main",
1623 .data
= &sm8550_cnoc_main
},
1624 { .compatible
= "qcom,sm8550-gem-noc",
1625 .data
= &sm8550_gem_noc
},
1626 { .compatible
= "qcom,sm8550-lpass-ag-noc",
1627 .data
= &sm8550_lpass_ag_noc
},
1628 { .compatible
= "qcom,sm8550-lpass-lpiaon-noc",
1629 .data
= &sm8550_lpass_lpiaon_noc
},
1630 { .compatible
= "qcom,sm8550-lpass-lpicx-noc",
1631 .data
= &sm8550_lpass_lpicx_noc
},
1632 { .compatible
= "qcom,sm8550-mc-virt",
1633 .data
= &sm8550_mc_virt
},
1634 { .compatible
= "qcom,sm8550-mmss-noc",
1635 .data
= &sm8550_mmss_noc
},
1636 { .compatible
= "qcom,sm8550-nsp-noc",
1637 .data
= &sm8550_nsp_noc
},
1638 { .compatible
= "qcom,sm8550-pcie-anoc",
1639 .data
= &sm8550_pcie_anoc
},
1640 { .compatible
= "qcom,sm8550-system-noc",
1641 .data
= &sm8550_system_noc
},
1644 MODULE_DEVICE_TABLE(of
, qnoc_of_match
);
1646 static struct platform_driver qnoc_driver
= {
1647 .probe
= qcom_icc_rpmh_probe
,
1648 .remove
= qcom_icc_rpmh_remove
,
1650 .name
= "qnoc-sm8550",
1651 .of_match_table
= qnoc_of_match
,
1652 .sync_state
= icc_sync_state
,
1656 static int __init
qnoc_driver_init(void)
1658 return platform_driver_register(&qnoc_driver
);
1660 core_initcall(qnoc_driver_init
);
1662 static void __exit
qnoc_driver_exit(void)
1664 platform_driver_unregister(&qnoc_driver
);
1666 module_exit(qnoc_driver_exit
);
1668 MODULE_DESCRIPTION("sm8550 NoC driver");
1669 MODULE_LICENSE("GPL");