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) 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,sm8650-rpmh.h>
15 #include "bcm-voter.h"
16 #include "icc-common.h"
20 static struct qcom_icc_node qhm_qspi
= {
22 .id
= SM8650_MASTER_QSPI_0
,
26 .links
= { SM8650_SLAVE_A1NOC_SNOC
},
29 static struct qcom_icc_node qhm_qup1
= {
31 .id
= SM8650_MASTER_QUP_1
,
35 .links
= { SM8650_SLAVE_A1NOC_SNOC
},
38 static struct qcom_icc_node qxm_qup02
= {
40 .id
= SM8650_MASTER_QUP_3
,
44 .links
= { SM8650_SLAVE_A1NOC_SNOC
},
47 static struct qcom_icc_node xm_sdc4
= {
49 .id
= SM8650_MASTER_SDCC_4
,
53 .links
= { SM8650_SLAVE_A1NOC_SNOC
},
56 static struct qcom_icc_node xm_ufs_mem
= {
58 .id
= SM8650_MASTER_UFS_MEM
,
62 .links
= { SM8650_SLAVE_A1NOC_SNOC
},
65 static struct qcom_icc_node xm_usb3_0
= {
67 .id
= SM8650_MASTER_USB3_0
,
71 .links
= { SM8650_SLAVE_A1NOC_SNOC
},
74 static struct qcom_icc_node qhm_qdss_bam
= {
75 .name
= "qhm_qdss_bam",
76 .id
= SM8650_MASTER_QDSS_BAM
,
80 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
83 static struct qcom_icc_node qhm_qup2
= {
85 .id
= SM8650_MASTER_QUP_2
,
89 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
92 static struct qcom_icc_node qxm_crypto
= {
94 .id
= SM8650_MASTER_CRYPTO
,
98 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
101 static struct qcom_icc_node qxm_ipa
= {
103 .id
= SM8650_MASTER_IPA
,
107 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
110 static struct qcom_icc_node qxm_sp
= {
112 .id
= SM8650_MASTER_SP
,
116 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
119 static struct qcom_icc_node xm_qdss_etr_0
= {
120 .name
= "xm_qdss_etr_0",
121 .id
= SM8650_MASTER_QDSS_ETR
,
125 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
128 static struct qcom_icc_node xm_qdss_etr_1
= {
129 .name
= "xm_qdss_etr_1",
130 .id
= SM8650_MASTER_QDSS_ETR_1
,
134 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
137 static struct qcom_icc_node xm_sdc2
= {
139 .id
= SM8650_MASTER_SDCC_2
,
143 .links
= { SM8650_SLAVE_A2NOC_SNOC
},
146 static struct qcom_icc_node qup0_core_master
= {
147 .name
= "qup0_core_master",
148 .id
= SM8650_MASTER_QUP_CORE_0
,
152 .links
= { SM8650_SLAVE_QUP_CORE_0
},
155 static struct qcom_icc_node qup1_core_master
= {
156 .name
= "qup1_core_master",
157 .id
= SM8650_MASTER_QUP_CORE_1
,
161 .links
= { SM8650_SLAVE_QUP_CORE_1
},
164 static struct qcom_icc_node qup2_core_master
= {
165 .name
= "qup2_core_master",
166 .id
= SM8650_MASTER_QUP_CORE_2
,
170 .links
= { SM8650_SLAVE_QUP_CORE_2
},
173 static struct qcom_icc_node qsm_cfg
= {
175 .id
= SM8650_MASTER_CNOC_CFG
,
179 .links
= { SM8650_SLAVE_AHB2PHY_SOUTH
, SM8650_SLAVE_AHB2PHY_NORTH
,
180 SM8650_SLAVE_CAMERA_CFG
, SM8650_SLAVE_CLK_CTL
,
181 SM8650_SLAVE_RBCPR_CX_CFG
, SM8650_SLAVE_CPR_HMX
,
182 SM8650_SLAVE_RBCPR_MMCX_CFG
, SM8650_SLAVE_RBCPR_MXA_CFG
,
183 SM8650_SLAVE_RBCPR_MXC_CFG
, SM8650_SLAVE_CPR_NSPCX
,
184 SM8650_SLAVE_CRYPTO_0_CFG
, SM8650_SLAVE_CX_RDPM
,
185 SM8650_SLAVE_DISPLAY_CFG
, SM8650_SLAVE_GFX3D_CFG
,
186 SM8650_SLAVE_I2C
, SM8650_SLAVE_I3C_IBI0_CFG
,
187 SM8650_SLAVE_I3C_IBI1_CFG
, SM8650_SLAVE_IMEM_CFG
,
188 SM8650_SLAVE_CNOC_MSS
, SM8650_SLAVE_MX_2_RDPM
,
189 SM8650_SLAVE_MX_RDPM
, SM8650_SLAVE_PCIE_0_CFG
,
190 SM8650_SLAVE_PCIE_1_CFG
, SM8650_SLAVE_PCIE_RSCC
,
191 SM8650_SLAVE_PDM
, SM8650_SLAVE_PRNG
,
192 SM8650_SLAVE_QDSS_CFG
, SM8650_SLAVE_QSPI_0
,
193 SM8650_SLAVE_QUP_3
, SM8650_SLAVE_QUP_1
,
194 SM8650_SLAVE_QUP_2
, SM8650_SLAVE_SDCC_2
,
195 SM8650_SLAVE_SDCC_4
, SM8650_SLAVE_SPSS_CFG
,
196 SM8650_SLAVE_TCSR
, SM8650_SLAVE_TLMM
,
197 SM8650_SLAVE_UFS_MEM_CFG
, SM8650_SLAVE_USB3_0
,
198 SM8650_SLAVE_VENUS_CFG
, SM8650_SLAVE_VSENSE_CTRL_CFG
,
199 SM8650_SLAVE_CNOC_MNOC_CFG
, SM8650_SLAVE_NSP_QTB_CFG
,
200 SM8650_SLAVE_PCIE_ANOC_CFG
, SM8650_SLAVE_SERVICE_CNOC_CFG
,
201 SM8650_SLAVE_QDSS_STM
, SM8650_SLAVE_TCU
},
204 static struct qcom_icc_node qnm_gemnoc_cnoc
= {
205 .name
= "qnm_gemnoc_cnoc",
206 .id
= SM8650_MASTER_GEM_NOC_CNOC
,
210 .links
= { SM8650_SLAVE_AOSS
, SM8650_SLAVE_IPA_CFG
,
211 SM8650_SLAVE_IPC_ROUTER_CFG
, SM8650_SLAVE_TME_CFG
,
212 SM8650_SLAVE_APPSS
, SM8650_SLAVE_CNOC_CFG
,
213 SM8650_SLAVE_DDRSS_CFG
, SM8650_SLAVE_IMEM
,
214 SM8650_SLAVE_SERVICE_CNOC
},
217 static struct qcom_icc_node qnm_gemnoc_pcie
= {
218 .name
= "qnm_gemnoc_pcie",
219 .id
= SM8650_MASTER_GEM_NOC_PCIE_SNOC
,
223 .links
= { SM8650_SLAVE_PCIE_0
, SM8650_SLAVE_PCIE_1
},
226 static struct qcom_icc_node alm_gpu_tcu
= {
227 .name
= "alm_gpu_tcu",
228 .id
= SM8650_MASTER_GPU_TCU
,
232 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
235 static struct qcom_icc_node alm_sys_tcu
= {
236 .name
= "alm_sys_tcu",
237 .id
= SM8650_MASTER_SYS_TCU
,
241 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
244 static struct qcom_icc_node alm_ubwc_p_tcu
= {
245 .name
= "alm_ubwc_p_tcu",
246 .id
= SM8650_MASTER_UBWC_P_TCU
,
250 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
253 static struct qcom_icc_node chm_apps
= {
255 .id
= SM8650_MASTER_APPSS_PROC
,
259 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
,
260 SM8650_SLAVE_MEM_NOC_PCIE_SNOC
},
263 static struct qcom_icc_node qnm_gpu
= {
265 .id
= SM8650_MASTER_GFX3D
,
269 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
272 static struct qcom_icc_node qnm_lpass_gemnoc
= {
273 .name
= "qnm_lpass_gemnoc",
274 .id
= SM8650_MASTER_LPASS_GEM_NOC
,
278 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
,
279 SM8650_SLAVE_MEM_NOC_PCIE_SNOC
},
282 static struct qcom_icc_node qnm_mdsp
= {
284 .id
= SM8650_MASTER_MSS_PROC
,
288 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
,
289 SM8650_SLAVE_MEM_NOC_PCIE_SNOC
},
292 static struct qcom_icc_node qnm_mnoc_hf
= {
293 .name
= "qnm_mnoc_hf",
294 .id
= SM8650_MASTER_MNOC_HF_MEM_NOC
,
298 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
301 static struct qcom_icc_node qnm_mnoc_sf
= {
302 .name
= "qnm_mnoc_sf",
303 .id
= SM8650_MASTER_MNOC_SF_MEM_NOC
,
307 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
310 static struct qcom_icc_node qnm_nsp_gemnoc
= {
311 .name
= "qnm_nsp_gemnoc",
312 .id
= SM8650_MASTER_COMPUTE_NOC
,
316 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
,
317 SM8650_SLAVE_MEM_NOC_PCIE_SNOC
},
320 static struct qcom_icc_node qnm_pcie
= {
322 .id
= SM8650_MASTER_ANOC_PCIE_GEM_NOC
,
326 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
},
329 static struct qcom_icc_node qnm_snoc_sf
= {
330 .name
= "qnm_snoc_sf",
331 .id
= SM8650_MASTER_SNOC_SF_MEM_NOC
,
335 .links
= { SM8650_SLAVE_GEM_NOC_CNOC
, SM8650_SLAVE_LLCC
,
336 SM8650_SLAVE_MEM_NOC_PCIE_SNOC
},
339 static struct qcom_icc_node qnm_ubwc_p
= {
340 .name
= "qnm_ubwc_p",
341 .id
= SM8650_MASTER_UBWC_P
,
345 .links
= { SM8650_SLAVE_LLCC
},
348 static struct qcom_icc_node xm_gic
= {
350 .id
= SM8650_MASTER_GIC
,
354 .links
= { SM8650_SLAVE_LLCC
},
357 static struct qcom_icc_node qnm_lpiaon_noc
= {
358 .name
= "qnm_lpiaon_noc",
359 .id
= SM8650_MASTER_LPIAON_NOC
,
363 .links
= { SM8650_SLAVE_LPASS_GEM_NOC
},
366 static struct qcom_icc_node qnm_lpass_lpinoc
= {
367 .name
= "qnm_lpass_lpinoc",
368 .id
= SM8650_MASTER_LPASS_LPINOC
,
372 .links
= { SM8650_SLAVE_LPIAON_NOC_LPASS_AG_NOC
},
375 static struct qcom_icc_node qxm_lpinoc_dsp_axim
= {
376 .name
= "qxm_lpinoc_dsp_axim",
377 .id
= SM8650_MASTER_LPASS_PROC
,
381 .links
= { SM8650_SLAVE_LPICX_NOC_LPIAON_NOC
},
384 static struct qcom_icc_node llcc_mc
= {
386 .id
= SM8650_MASTER_LLCC
,
390 .links
= { SM8650_SLAVE_EBI1
},
393 static struct qcom_icc_node qnm_camnoc_hf
= {
394 .name
= "qnm_camnoc_hf",
395 .id
= SM8650_MASTER_CAMNOC_HF
,
399 .links
= { SM8650_SLAVE_MNOC_HF_MEM_NOC
},
402 static struct qcom_icc_node qnm_camnoc_icp
= {
403 .name
= "qnm_camnoc_icp",
404 .id
= SM8650_MASTER_CAMNOC_ICP
,
408 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
411 static struct qcom_icc_node qnm_camnoc_sf
= {
412 .name
= "qnm_camnoc_sf",
413 .id
= SM8650_MASTER_CAMNOC_SF
,
417 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
420 static struct qcom_icc_node qnm_mdp
= {
422 .id
= SM8650_MASTER_MDP
,
426 .links
= { SM8650_SLAVE_MNOC_HF_MEM_NOC
},
429 static struct qcom_icc_node qnm_vapss_hcp
= {
430 .name
= "qnm_vapss_hcp",
431 .id
= SM8650_MASTER_CDSP_HCP
,
435 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
438 static struct qcom_icc_node qnm_video
= {
440 .id
= SM8650_MASTER_VIDEO
,
444 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
447 static struct qcom_icc_node qnm_video_cv_cpu
= {
448 .name
= "qnm_video_cv_cpu",
449 .id
= SM8650_MASTER_VIDEO_CV_PROC
,
453 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
456 static struct qcom_icc_node qnm_video_cvp
= {
457 .name
= "qnm_video_cvp",
458 .id
= SM8650_MASTER_VIDEO_PROC
,
462 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
465 static struct qcom_icc_node qnm_video_v_cpu
= {
466 .name
= "qnm_video_v_cpu",
467 .id
= SM8650_MASTER_VIDEO_V_PROC
,
471 .links
= { SM8650_SLAVE_MNOC_SF_MEM_NOC
},
474 static struct qcom_icc_node qsm_mnoc_cfg
= {
475 .name
= "qsm_mnoc_cfg",
476 .id
= SM8650_MASTER_CNOC_MNOC_CFG
,
480 .links
= { SM8650_SLAVE_SERVICE_MNOC
},
483 static struct qcom_icc_node qnm_nsp
= {
485 .id
= SM8650_MASTER_CDSP_PROC
,
489 .links
= { SM8650_SLAVE_CDSP_MEM_NOC
},
492 static struct qcom_icc_node qsm_pcie_anoc_cfg
= {
493 .name
= "qsm_pcie_anoc_cfg",
494 .id
= SM8650_MASTER_PCIE_ANOC_CFG
,
498 .links
= { SM8650_SLAVE_SERVICE_PCIE_ANOC
},
501 static struct qcom_icc_node xm_pcie3_0
= {
502 .name
= "xm_pcie3_0",
503 .id
= SM8650_MASTER_PCIE_0
,
507 .links
= { SM8650_SLAVE_ANOC_PCIE_GEM_NOC
},
510 static struct qcom_icc_node xm_pcie3_1
= {
511 .name
= "xm_pcie3_1",
512 .id
= SM8650_MASTER_PCIE_1
,
516 .links
= { SM8650_SLAVE_ANOC_PCIE_GEM_NOC
},
519 static struct qcom_icc_node qnm_aggre1_noc
= {
520 .name
= "qnm_aggre1_noc",
521 .id
= SM8650_MASTER_A1NOC_SNOC
,
525 .links
= { SM8650_SLAVE_SNOC_GEM_NOC_SF
},
528 static struct qcom_icc_node qnm_aggre2_noc
= {
529 .name
= "qnm_aggre2_noc",
530 .id
= SM8650_MASTER_A2NOC_SNOC
,
534 .links
= { SM8650_SLAVE_SNOC_GEM_NOC_SF
},
537 static struct qcom_icc_node qns_a1noc_snoc
= {
538 .name
= "qns_a1noc_snoc",
539 .id
= SM8650_SLAVE_A1NOC_SNOC
,
543 .links
= { SM8650_MASTER_A1NOC_SNOC
},
546 static struct qcom_icc_node qns_a2noc_snoc
= {
547 .name
= "qns_a2noc_snoc",
548 .id
= SM8650_SLAVE_A2NOC_SNOC
,
552 .links
= { SM8650_MASTER_A2NOC_SNOC
},
555 static struct qcom_icc_node qup0_core_slave
= {
556 .name
= "qup0_core_slave",
557 .id
= SM8650_SLAVE_QUP_CORE_0
,
563 static struct qcom_icc_node qup1_core_slave
= {
564 .name
= "qup1_core_slave",
565 .id
= SM8650_SLAVE_QUP_CORE_1
,
571 static struct qcom_icc_node qup2_core_slave
= {
572 .name
= "qup2_core_slave",
573 .id
= SM8650_SLAVE_QUP_CORE_2
,
579 static struct qcom_icc_node qhs_ahb2phy0
= {
580 .name
= "qhs_ahb2phy0",
581 .id
= SM8650_SLAVE_AHB2PHY_SOUTH
,
587 static struct qcom_icc_node qhs_ahb2phy1
= {
588 .name
= "qhs_ahb2phy1",
589 .id
= SM8650_SLAVE_AHB2PHY_NORTH
,
595 static struct qcom_icc_node qhs_camera_cfg
= {
596 .name
= "qhs_camera_cfg",
597 .id
= SM8650_SLAVE_CAMERA_CFG
,
603 static struct qcom_icc_node qhs_clk_ctl
= {
604 .name
= "qhs_clk_ctl",
605 .id
= SM8650_SLAVE_CLK_CTL
,
611 static struct qcom_icc_node qhs_cpr_cx
= {
612 .name
= "qhs_cpr_cx",
613 .id
= SM8650_SLAVE_RBCPR_CX_CFG
,
619 static struct qcom_icc_node qhs_cpr_hmx
= {
620 .name
= "qhs_cpr_hmx",
621 .id
= SM8650_SLAVE_CPR_HMX
,
627 static struct qcom_icc_node qhs_cpr_mmcx
= {
628 .name
= "qhs_cpr_mmcx",
629 .id
= SM8650_SLAVE_RBCPR_MMCX_CFG
,
635 static struct qcom_icc_node qhs_cpr_mxa
= {
636 .name
= "qhs_cpr_mxa",
637 .id
= SM8650_SLAVE_RBCPR_MXA_CFG
,
643 static struct qcom_icc_node qhs_cpr_mxc
= {
644 .name
= "qhs_cpr_mxc",
645 .id
= SM8650_SLAVE_RBCPR_MXC_CFG
,
651 static struct qcom_icc_node qhs_cpr_nspcx
= {
652 .name
= "qhs_cpr_nspcx",
653 .id
= SM8650_SLAVE_CPR_NSPCX
,
659 static struct qcom_icc_node qhs_crypto0_cfg
= {
660 .name
= "qhs_crypto0_cfg",
661 .id
= SM8650_SLAVE_CRYPTO_0_CFG
,
667 static struct qcom_icc_node qhs_cx_rdpm
= {
668 .name
= "qhs_cx_rdpm",
669 .id
= SM8650_SLAVE_CX_RDPM
,
675 static struct qcom_icc_node qhs_display_cfg
= {
676 .name
= "qhs_display_cfg",
677 .id
= SM8650_SLAVE_DISPLAY_CFG
,
683 static struct qcom_icc_node qhs_gpuss_cfg
= {
684 .name
= "qhs_gpuss_cfg",
685 .id
= SM8650_SLAVE_GFX3D_CFG
,
691 static struct qcom_icc_node qhs_i2c
= {
693 .id
= SM8650_SLAVE_I2C
,
699 static struct qcom_icc_node qhs_i3c_ibi0_cfg
= {
700 .name
= "qhs_i3c_ibi0_cfg",
701 .id
= SM8650_SLAVE_I3C_IBI0_CFG
,
707 static struct qcom_icc_node qhs_i3c_ibi1_cfg
= {
708 .name
= "qhs_i3c_ibi1_cfg",
709 .id
= SM8650_SLAVE_I3C_IBI1_CFG
,
715 static struct qcom_icc_node qhs_imem_cfg
= {
716 .name
= "qhs_imem_cfg",
717 .id
= SM8650_SLAVE_IMEM_CFG
,
723 static struct qcom_icc_node qhs_mss_cfg
= {
724 .name
= "qhs_mss_cfg",
725 .id
= SM8650_SLAVE_CNOC_MSS
,
731 static struct qcom_icc_node qhs_mx_2_rdpm
= {
732 .name
= "qhs_mx_2_rdpm",
733 .id
= SM8650_SLAVE_MX_2_RDPM
,
739 static struct qcom_icc_node qhs_mx_rdpm
= {
740 .name
= "qhs_mx_rdpm",
741 .id
= SM8650_SLAVE_MX_RDPM
,
747 static struct qcom_icc_node qhs_pcie0_cfg
= {
748 .name
= "qhs_pcie0_cfg",
749 .id
= SM8650_SLAVE_PCIE_0_CFG
,
755 static struct qcom_icc_node qhs_pcie1_cfg
= {
756 .name
= "qhs_pcie1_cfg",
757 .id
= SM8650_SLAVE_PCIE_1_CFG
,
763 static struct qcom_icc_node qhs_pcie_rscc
= {
764 .name
= "qhs_pcie_rscc",
765 .id
= SM8650_SLAVE_PCIE_RSCC
,
771 static struct qcom_icc_node qhs_pdm
= {
773 .id
= SM8650_SLAVE_PDM
,
779 static struct qcom_icc_node qhs_prng
= {
781 .id
= SM8650_SLAVE_PRNG
,
787 static struct qcom_icc_node qhs_qdss_cfg
= {
788 .name
= "qhs_qdss_cfg",
789 .id
= SM8650_SLAVE_QDSS_CFG
,
795 static struct qcom_icc_node qhs_qspi
= {
797 .id
= SM8650_SLAVE_QSPI_0
,
803 static struct qcom_icc_node qhs_qup02
= {
805 .id
= SM8650_SLAVE_QUP_3
,
811 static struct qcom_icc_node qhs_qup1
= {
813 .id
= SM8650_SLAVE_QUP_1
,
819 static struct qcom_icc_node qhs_qup2
= {
821 .id
= SM8650_SLAVE_QUP_2
,
827 static struct qcom_icc_node qhs_sdc2
= {
829 .id
= SM8650_SLAVE_SDCC_2
,
835 static struct qcom_icc_node qhs_sdc4
= {
837 .id
= SM8650_SLAVE_SDCC_4
,
843 static struct qcom_icc_node qhs_spss_cfg
= {
844 .name
= "qhs_spss_cfg",
845 .id
= SM8650_SLAVE_SPSS_CFG
,
851 static struct qcom_icc_node qhs_tcsr
= {
853 .id
= SM8650_SLAVE_TCSR
,
859 static struct qcom_icc_node qhs_tlmm
= {
861 .id
= SM8650_SLAVE_TLMM
,
867 static struct qcom_icc_node qhs_ufs_mem_cfg
= {
868 .name
= "qhs_ufs_mem_cfg",
869 .id
= SM8650_SLAVE_UFS_MEM_CFG
,
875 static struct qcom_icc_node qhs_usb3_0
= {
876 .name
= "qhs_usb3_0",
877 .id
= SM8650_SLAVE_USB3_0
,
883 static struct qcom_icc_node qhs_venus_cfg
= {
884 .name
= "qhs_venus_cfg",
885 .id
= SM8650_SLAVE_VENUS_CFG
,
891 static struct qcom_icc_node qhs_vsense_ctrl_cfg
= {
892 .name
= "qhs_vsense_ctrl_cfg",
893 .id
= SM8650_SLAVE_VSENSE_CTRL_CFG
,
899 static struct qcom_icc_node qss_mnoc_cfg
= {
900 .name
= "qss_mnoc_cfg",
901 .id
= SM8650_SLAVE_CNOC_MNOC_CFG
,
905 .links
= { SM8650_MASTER_CNOC_MNOC_CFG
},
908 static struct qcom_icc_node qss_nsp_qtb_cfg
= {
909 .name
= "qss_nsp_qtb_cfg",
910 .id
= SM8650_SLAVE_NSP_QTB_CFG
,
916 static struct qcom_icc_node qss_pcie_anoc_cfg
= {
917 .name
= "qss_pcie_anoc_cfg",
918 .id
= SM8650_SLAVE_PCIE_ANOC_CFG
,
922 .links
= { SM8650_MASTER_PCIE_ANOC_CFG
},
925 static struct qcom_icc_node srvc_cnoc_cfg
= {
926 .name
= "srvc_cnoc_cfg",
927 .id
= SM8650_SLAVE_SERVICE_CNOC_CFG
,
933 static struct qcom_icc_node xs_qdss_stm
= {
934 .name
= "xs_qdss_stm",
935 .id
= SM8650_SLAVE_QDSS_STM
,
941 static struct qcom_icc_node xs_sys_tcu_cfg
= {
942 .name
= "xs_sys_tcu_cfg",
943 .id
= SM8650_SLAVE_TCU
,
949 static struct qcom_icc_node qhs_aoss
= {
951 .id
= SM8650_SLAVE_AOSS
,
957 static struct qcom_icc_node qhs_ipa
= {
959 .id
= SM8650_SLAVE_IPA_CFG
,
965 static struct qcom_icc_node qhs_ipc_router
= {
966 .name
= "qhs_ipc_router",
967 .id
= SM8650_SLAVE_IPC_ROUTER_CFG
,
973 static struct qcom_icc_node qhs_tme_cfg
= {
974 .name
= "qhs_tme_cfg",
975 .id
= SM8650_SLAVE_TME_CFG
,
981 static struct qcom_icc_node qss_apss
= {
983 .id
= SM8650_SLAVE_APPSS
,
989 static struct qcom_icc_node qss_cfg
= {
991 .id
= SM8650_SLAVE_CNOC_CFG
,
995 .links
= { SM8650_MASTER_CNOC_CFG
},
998 static struct qcom_icc_node qss_ddrss_cfg
= {
999 .name
= "qss_ddrss_cfg",
1000 .id
= SM8650_SLAVE_DDRSS_CFG
,
1006 static struct qcom_icc_node qxs_imem
= {
1008 .id
= SM8650_SLAVE_IMEM
,
1014 static struct qcom_icc_node srvc_cnoc_main
= {
1015 .name
= "srvc_cnoc_main",
1016 .id
= SM8650_SLAVE_SERVICE_CNOC
,
1022 static struct qcom_icc_node xs_pcie_0
= {
1023 .name
= "xs_pcie_0",
1024 .id
= SM8650_SLAVE_PCIE_0
,
1030 static struct qcom_icc_node xs_pcie_1
= {
1031 .name
= "xs_pcie_1",
1032 .id
= SM8650_SLAVE_PCIE_1
,
1038 static struct qcom_icc_node qns_gem_noc_cnoc
= {
1039 .name
= "qns_gem_noc_cnoc",
1040 .id
= SM8650_SLAVE_GEM_NOC_CNOC
,
1044 .links
= { SM8650_MASTER_GEM_NOC_CNOC
},
1047 static struct qcom_icc_node qns_llcc
= {
1049 .id
= SM8650_SLAVE_LLCC
,
1053 .links
= { SM8650_MASTER_LLCC
},
1056 static struct qcom_icc_node qns_pcie
= {
1058 .id
= SM8650_SLAVE_MEM_NOC_PCIE_SNOC
,
1062 .links
= { SM8650_MASTER_GEM_NOC_PCIE_SNOC
},
1065 static struct qcom_icc_node qns_lpass_ag_noc_gemnoc
= {
1066 .name
= "qns_lpass_ag_noc_gemnoc",
1067 .id
= SM8650_SLAVE_LPASS_GEM_NOC
,
1071 .links
= { SM8650_MASTER_LPASS_GEM_NOC
},
1074 static struct qcom_icc_node qns_lpass_aggnoc
= {
1075 .name
= "qns_lpass_aggnoc",
1076 .id
= SM8650_SLAVE_LPIAON_NOC_LPASS_AG_NOC
,
1080 .links
= { SM8650_MASTER_LPIAON_NOC
},
1083 static struct qcom_icc_node qns_lpi_aon_noc
= {
1084 .name
= "qns_lpi_aon_noc",
1085 .id
= SM8650_SLAVE_LPICX_NOC_LPIAON_NOC
,
1089 .links
= { SM8650_MASTER_LPASS_LPINOC
},
1092 static struct qcom_icc_node ebi
= {
1094 .id
= SM8650_SLAVE_EBI1
,
1100 static struct qcom_icc_node qns_mem_noc_hf
= {
1101 .name
= "qns_mem_noc_hf",
1102 .id
= SM8650_SLAVE_MNOC_HF_MEM_NOC
,
1106 .links
= { SM8650_MASTER_MNOC_HF_MEM_NOC
},
1109 static struct qcom_icc_node qns_mem_noc_sf
= {
1110 .name
= "qns_mem_noc_sf",
1111 .id
= SM8650_SLAVE_MNOC_SF_MEM_NOC
,
1115 .links
= { SM8650_MASTER_MNOC_SF_MEM_NOC
},
1118 static struct qcom_icc_node srvc_mnoc
= {
1119 .name
= "srvc_mnoc",
1120 .id
= SM8650_SLAVE_SERVICE_MNOC
,
1126 static struct qcom_icc_node qns_nsp_gemnoc
= {
1127 .name
= "qns_nsp_gemnoc",
1128 .id
= SM8650_SLAVE_CDSP_MEM_NOC
,
1132 .links
= { SM8650_MASTER_COMPUTE_NOC
},
1135 static struct qcom_icc_node qns_pcie_mem_noc
= {
1136 .name
= "qns_pcie_mem_noc",
1137 .id
= SM8650_SLAVE_ANOC_PCIE_GEM_NOC
,
1141 .links
= { SM8650_MASTER_ANOC_PCIE_GEM_NOC
},
1144 static struct qcom_icc_node srvc_pcie_aggre_noc
= {
1145 .name
= "srvc_pcie_aggre_noc",
1146 .id
= SM8650_SLAVE_SERVICE_PCIE_ANOC
,
1152 static struct qcom_icc_node qns_gemnoc_sf
= {
1153 .name
= "qns_gemnoc_sf",
1154 .id
= SM8650_SLAVE_SNOC_GEM_NOC_SF
,
1158 .links
= { SM8650_MASTER_SNOC_SF_MEM_NOC
},
1161 static struct qcom_icc_bcm bcm_acv
= {
1163 .enable_mask
= BIT(0),
1168 static struct qcom_icc_bcm bcm_ce0
= {
1171 .nodes
= { &qxm_crypto
},
1174 static struct qcom_icc_bcm bcm_cn0
= {
1176 .enable_mask
= BIT(0),
1179 .nodes
= { &qsm_cfg
, &qhs_ahb2phy0
,
1180 &qhs_ahb2phy1
, &qhs_camera_cfg
,
1181 &qhs_clk_ctl
, &qhs_cpr_cx
,
1182 &qhs_cpr_hmx
, &qhs_cpr_mmcx
,
1183 &qhs_cpr_mxa
, &qhs_cpr_mxc
,
1184 &qhs_cpr_nspcx
, &qhs_crypto0_cfg
,
1185 &qhs_cx_rdpm
, &qhs_display_cfg
,
1186 &qhs_gpuss_cfg
, &qhs_i2c
,
1187 &qhs_i3c_ibi0_cfg
, &qhs_i3c_ibi1_cfg
,
1188 &qhs_imem_cfg
, &qhs_mss_cfg
,
1189 &qhs_mx_2_rdpm
, &qhs_mx_rdpm
,
1190 &qhs_pcie0_cfg
, &qhs_pcie1_cfg
,
1191 &qhs_pcie_rscc
, &qhs_pdm
,
1192 &qhs_prng
, &qhs_qdss_cfg
,
1193 &qhs_qspi
, &qhs_qup02
,
1194 &qhs_qup1
, &qhs_qup2
,
1195 &qhs_sdc2
, &qhs_sdc4
,
1196 &qhs_spss_cfg
, &qhs_tcsr
,
1197 &qhs_tlmm
, &qhs_ufs_mem_cfg
,
1198 &qhs_usb3_0
, &qhs_venus_cfg
,
1199 &qhs_vsense_ctrl_cfg
, &qss_mnoc_cfg
,
1200 &qss_nsp_qtb_cfg
, &qss_pcie_anoc_cfg
,
1201 &srvc_cnoc_cfg
, &xs_qdss_stm
,
1202 &xs_sys_tcu_cfg
, &qnm_gemnoc_cnoc
,
1203 &qnm_gemnoc_pcie
, &qhs_aoss
,
1204 &qhs_ipa
, &qhs_ipc_router
,
1205 &qhs_tme_cfg
, &qss_apss
,
1206 &qss_cfg
, &qss_ddrss_cfg
,
1207 &qxs_imem
, &srvc_cnoc_main
,
1208 &xs_pcie_0
, &xs_pcie_1
},
1211 static struct qcom_icc_bcm bcm_co0
= {
1213 .enable_mask
= BIT(0),
1215 .nodes
= { &qnm_nsp
, &qns_nsp_gemnoc
},
1218 static struct qcom_icc_bcm bcm_lp0
= {
1221 .nodes
= { &qnm_lpass_lpinoc
, &qns_lpass_aggnoc
},
1224 static struct qcom_icc_bcm bcm_mc0
= {
1231 static struct qcom_icc_bcm bcm_mm0
= {
1234 .nodes
= { &qns_mem_noc_hf
},
1237 static struct qcom_icc_bcm bcm_mm1
= {
1239 .enable_mask
= BIT(0),
1241 .nodes
= { &qnm_camnoc_hf
, &qnm_camnoc_icp
,
1242 &qnm_camnoc_sf
, &qnm_vapss_hcp
,
1243 &qnm_video_cv_cpu
, &qnm_video_cvp
,
1244 &qnm_video_v_cpu
, &qns_mem_noc_sf
},
1247 static struct qcom_icc_bcm bcm_qup0
= {
1252 .nodes
= { &qup0_core_slave
},
1255 static struct qcom_icc_bcm bcm_qup1
= {
1260 .nodes
= { &qup1_core_slave
},
1263 static struct qcom_icc_bcm bcm_qup2
= {
1268 .nodes
= { &qup2_core_slave
},
1271 static struct qcom_icc_bcm bcm_sh0
= {
1275 .nodes
= { &qns_llcc
},
1278 static struct qcom_icc_bcm bcm_sh1
= {
1280 .enable_mask
= BIT(0),
1282 .nodes
= { &alm_gpu_tcu
, &alm_sys_tcu
,
1283 &alm_ubwc_p_tcu
, &chm_apps
,
1284 &qnm_gpu
, &qnm_mdsp
,
1285 &qnm_mnoc_hf
, &qnm_mnoc_sf
,
1286 &qnm_nsp_gemnoc
, &qnm_pcie
,
1287 &qnm_snoc_sf
, &qnm_ubwc_p
,
1288 &xm_gic
, &qns_gem_noc_cnoc
,
1292 static struct qcom_icc_bcm bcm_sn0
= {
1296 .nodes
= { &qns_gemnoc_sf
},
1299 static struct qcom_icc_bcm bcm_sn2
= {
1302 .nodes
= { &qnm_aggre1_noc
},
1305 static struct qcom_icc_bcm bcm_sn3
= {
1308 .nodes
= { &qnm_aggre2_noc
},
1311 static struct qcom_icc_bcm bcm_sn4
= {
1314 .nodes
= { &qns_pcie_mem_noc
},
1317 static struct qcom_icc_node
* const aggre1_noc_nodes
[] = {
1318 [MASTER_QSPI_0
] = &qhm_qspi
,
1319 [MASTER_QUP_1
] = &qhm_qup1
,
1320 [MASTER_QUP_3
] = &qxm_qup02
,
1321 [MASTER_SDCC_4
] = &xm_sdc4
,
1322 [MASTER_UFS_MEM
] = &xm_ufs_mem
,
1323 [MASTER_USB3_0
] = &xm_usb3_0
,
1324 [SLAVE_A1NOC_SNOC
] = &qns_a1noc_snoc
,
1327 static const struct qcom_icc_desc sm8650_aggre1_noc
= {
1328 .nodes
= aggre1_noc_nodes
,
1329 .num_nodes
= ARRAY_SIZE(aggre1_noc_nodes
),
1332 static struct qcom_icc_bcm
* const aggre2_noc_bcms
[] = {
1336 static struct qcom_icc_node
* const aggre2_noc_nodes
[] = {
1337 [MASTER_QDSS_BAM
] = &qhm_qdss_bam
,
1338 [MASTER_QUP_2
] = &qhm_qup2
,
1339 [MASTER_CRYPTO
] = &qxm_crypto
,
1340 [MASTER_IPA
] = &qxm_ipa
,
1341 [MASTER_SP
] = &qxm_sp
,
1342 [MASTER_QDSS_ETR
] = &xm_qdss_etr_0
,
1343 [MASTER_QDSS_ETR_1
] = &xm_qdss_etr_1
,
1344 [MASTER_SDCC_2
] = &xm_sdc2
,
1345 [SLAVE_A2NOC_SNOC
] = &qns_a2noc_snoc
,
1348 static const struct qcom_icc_desc sm8650_aggre2_noc
= {
1349 .nodes
= aggre2_noc_nodes
,
1350 .num_nodes
= ARRAY_SIZE(aggre2_noc_nodes
),
1351 .bcms
= aggre2_noc_bcms
,
1352 .num_bcms
= ARRAY_SIZE(aggre2_noc_bcms
),
1355 static struct qcom_icc_bcm
* const clk_virt_bcms
[] = {
1361 static struct qcom_icc_node
* const clk_virt_nodes
[] = {
1362 [MASTER_QUP_CORE_0
] = &qup0_core_master
,
1363 [MASTER_QUP_CORE_1
] = &qup1_core_master
,
1364 [MASTER_QUP_CORE_2
] = &qup2_core_master
,
1365 [SLAVE_QUP_CORE_0
] = &qup0_core_slave
,
1366 [SLAVE_QUP_CORE_1
] = &qup1_core_slave
,
1367 [SLAVE_QUP_CORE_2
] = &qup2_core_slave
,
1370 static const struct qcom_icc_desc sm8650_clk_virt
= {
1371 .nodes
= clk_virt_nodes
,
1372 .num_nodes
= ARRAY_SIZE(clk_virt_nodes
),
1373 .bcms
= clk_virt_bcms
,
1374 .num_bcms
= ARRAY_SIZE(clk_virt_bcms
),
1377 static struct qcom_icc_bcm
* const config_noc_bcms
[] = {
1381 static struct qcom_icc_node
* const config_noc_nodes
[] = {
1382 [MASTER_CNOC_CFG
] = &qsm_cfg
,
1383 [SLAVE_AHB2PHY_SOUTH
] = &qhs_ahb2phy0
,
1384 [SLAVE_AHB2PHY_NORTH
] = &qhs_ahb2phy1
,
1385 [SLAVE_CAMERA_CFG
] = &qhs_camera_cfg
,
1386 [SLAVE_CLK_CTL
] = &qhs_clk_ctl
,
1387 [SLAVE_RBCPR_CX_CFG
] = &qhs_cpr_cx
,
1388 [SLAVE_CPR_HMX
] = &qhs_cpr_hmx
,
1389 [SLAVE_RBCPR_MMCX_CFG
] = &qhs_cpr_mmcx
,
1390 [SLAVE_RBCPR_MXA_CFG
] = &qhs_cpr_mxa
,
1391 [SLAVE_RBCPR_MXC_CFG
] = &qhs_cpr_mxc
,
1392 [SLAVE_CPR_NSPCX
] = &qhs_cpr_nspcx
,
1393 [SLAVE_CRYPTO_0_CFG
] = &qhs_crypto0_cfg
,
1394 [SLAVE_CX_RDPM
] = &qhs_cx_rdpm
,
1395 [SLAVE_DISPLAY_CFG
] = &qhs_display_cfg
,
1396 [SLAVE_GFX3D_CFG
] = &qhs_gpuss_cfg
,
1397 [SLAVE_I2C
] = &qhs_i2c
,
1398 [SLAVE_I3C_IBI0_CFG
] = &qhs_i3c_ibi0_cfg
,
1399 [SLAVE_I3C_IBI1_CFG
] = &qhs_i3c_ibi1_cfg
,
1400 [SLAVE_IMEM_CFG
] = &qhs_imem_cfg
,
1401 [SLAVE_CNOC_MSS
] = &qhs_mss_cfg
,
1402 [SLAVE_MX_2_RDPM
] = &qhs_mx_2_rdpm
,
1403 [SLAVE_MX_RDPM
] = &qhs_mx_rdpm
,
1404 [SLAVE_PCIE_0_CFG
] = &qhs_pcie0_cfg
,
1405 [SLAVE_PCIE_1_CFG
] = &qhs_pcie1_cfg
,
1406 [SLAVE_PCIE_RSCC
] = &qhs_pcie_rscc
,
1407 [SLAVE_PDM
] = &qhs_pdm
,
1408 [SLAVE_PRNG
] = &qhs_prng
,
1409 [SLAVE_QDSS_CFG
] = &qhs_qdss_cfg
,
1410 [SLAVE_QSPI_0
] = &qhs_qspi
,
1411 [SLAVE_QUP_3
] = &qhs_qup02
,
1412 [SLAVE_QUP_1
] = &qhs_qup1
,
1413 [SLAVE_QUP_2
] = &qhs_qup2
,
1414 [SLAVE_SDCC_2
] = &qhs_sdc2
,
1415 [SLAVE_SDCC_4
] = &qhs_sdc4
,
1416 [SLAVE_SPSS_CFG
] = &qhs_spss_cfg
,
1417 [SLAVE_TCSR
] = &qhs_tcsr
,
1418 [SLAVE_TLMM
] = &qhs_tlmm
,
1419 [SLAVE_UFS_MEM_CFG
] = &qhs_ufs_mem_cfg
,
1420 [SLAVE_USB3_0
] = &qhs_usb3_0
,
1421 [SLAVE_VENUS_CFG
] = &qhs_venus_cfg
,
1422 [SLAVE_VSENSE_CTRL_CFG
] = &qhs_vsense_ctrl_cfg
,
1423 [SLAVE_CNOC_MNOC_CFG
] = &qss_mnoc_cfg
,
1424 [SLAVE_NSP_QTB_CFG
] = &qss_nsp_qtb_cfg
,
1425 [SLAVE_PCIE_ANOC_CFG
] = &qss_pcie_anoc_cfg
,
1426 [SLAVE_SERVICE_CNOC_CFG
] = &srvc_cnoc_cfg
,
1427 [SLAVE_QDSS_STM
] = &xs_qdss_stm
,
1428 [SLAVE_TCU
] = &xs_sys_tcu_cfg
,
1431 static const struct qcom_icc_desc sm8650_config_noc
= {
1432 .nodes
= config_noc_nodes
,
1433 .num_nodes
= ARRAY_SIZE(config_noc_nodes
),
1434 .bcms
= config_noc_bcms
,
1435 .num_bcms
= ARRAY_SIZE(config_noc_bcms
),
1438 static struct qcom_icc_bcm
* const cnoc_main_bcms
[] = {
1442 static struct qcom_icc_node
* const cnoc_main_nodes
[] = {
1443 [MASTER_GEM_NOC_CNOC
] = &qnm_gemnoc_cnoc
,
1444 [MASTER_GEM_NOC_PCIE_SNOC
] = &qnm_gemnoc_pcie
,
1445 [SLAVE_AOSS
] = &qhs_aoss
,
1446 [SLAVE_IPA_CFG
] = &qhs_ipa
,
1447 [SLAVE_IPC_ROUTER_CFG
] = &qhs_ipc_router
,
1448 [SLAVE_TME_CFG
] = &qhs_tme_cfg
,
1449 [SLAVE_APPSS
] = &qss_apss
,
1450 [SLAVE_CNOC_CFG
] = &qss_cfg
,
1451 [SLAVE_DDRSS_CFG
] = &qss_ddrss_cfg
,
1452 [SLAVE_IMEM
] = &qxs_imem
,
1453 [SLAVE_SERVICE_CNOC
] = &srvc_cnoc_main
,
1454 [SLAVE_PCIE_0
] = &xs_pcie_0
,
1455 [SLAVE_PCIE_1
] = &xs_pcie_1
,
1458 static const struct qcom_icc_desc sm8650_cnoc_main
= {
1459 .nodes
= cnoc_main_nodes
,
1460 .num_nodes
= ARRAY_SIZE(cnoc_main_nodes
),
1461 .bcms
= cnoc_main_bcms
,
1462 .num_bcms
= ARRAY_SIZE(cnoc_main_bcms
),
1465 static struct qcom_icc_bcm
* const gem_noc_bcms
[] = {
1470 static struct qcom_icc_node
* const gem_noc_nodes
[] = {
1471 [MASTER_GPU_TCU
] = &alm_gpu_tcu
,
1472 [MASTER_SYS_TCU
] = &alm_sys_tcu
,
1473 [MASTER_UBWC_P_TCU
] = &alm_ubwc_p_tcu
,
1474 [MASTER_APPSS_PROC
] = &chm_apps
,
1475 [MASTER_GFX3D
] = &qnm_gpu
,
1476 [MASTER_LPASS_GEM_NOC
] = &qnm_lpass_gemnoc
,
1477 [MASTER_MSS_PROC
] = &qnm_mdsp
,
1478 [MASTER_MNOC_HF_MEM_NOC
] = &qnm_mnoc_hf
,
1479 [MASTER_MNOC_SF_MEM_NOC
] = &qnm_mnoc_sf
,
1480 [MASTER_COMPUTE_NOC
] = &qnm_nsp_gemnoc
,
1481 [MASTER_ANOC_PCIE_GEM_NOC
] = &qnm_pcie
,
1482 [MASTER_SNOC_SF_MEM_NOC
] = &qnm_snoc_sf
,
1483 [MASTER_UBWC_P
] = &qnm_ubwc_p
,
1484 [MASTER_GIC
] = &xm_gic
,
1485 [SLAVE_GEM_NOC_CNOC
] = &qns_gem_noc_cnoc
,
1486 [SLAVE_LLCC
] = &qns_llcc
,
1487 [SLAVE_MEM_NOC_PCIE_SNOC
] = &qns_pcie
,
1490 static const struct qcom_icc_desc sm8650_gem_noc
= {
1491 .nodes
= gem_noc_nodes
,
1492 .num_nodes
= ARRAY_SIZE(gem_noc_nodes
),
1493 .bcms
= gem_noc_bcms
,
1494 .num_bcms
= ARRAY_SIZE(gem_noc_bcms
),
1497 static struct qcom_icc_node
* const lpass_ag_noc_nodes
[] = {
1498 [MASTER_LPIAON_NOC
] = &qnm_lpiaon_noc
,
1499 [SLAVE_LPASS_GEM_NOC
] = &qns_lpass_ag_noc_gemnoc
,
1502 static const struct qcom_icc_desc sm8650_lpass_ag_noc
= {
1503 .nodes
= lpass_ag_noc_nodes
,
1504 .num_nodes
= ARRAY_SIZE(lpass_ag_noc_nodes
),
1507 static struct qcom_icc_bcm
* const lpass_lpiaon_noc_bcms
[] = {
1511 static struct qcom_icc_node
* const lpass_lpiaon_noc_nodes
[] = {
1512 [MASTER_LPASS_LPINOC
] = &qnm_lpass_lpinoc
,
1513 [SLAVE_LPIAON_NOC_LPASS_AG_NOC
] = &qns_lpass_aggnoc
,
1516 static const struct qcom_icc_desc sm8650_lpass_lpiaon_noc
= {
1517 .nodes
= lpass_lpiaon_noc_nodes
,
1518 .num_nodes
= ARRAY_SIZE(lpass_lpiaon_noc_nodes
),
1519 .bcms
= lpass_lpiaon_noc_bcms
,
1520 .num_bcms
= ARRAY_SIZE(lpass_lpiaon_noc_bcms
),
1523 static struct qcom_icc_node
* const lpass_lpicx_noc_nodes
[] = {
1524 [MASTER_LPASS_PROC
] = &qxm_lpinoc_dsp_axim
,
1525 [SLAVE_LPICX_NOC_LPIAON_NOC
] = &qns_lpi_aon_noc
,
1528 static const struct qcom_icc_desc sm8650_lpass_lpicx_noc
= {
1529 .nodes
= lpass_lpicx_noc_nodes
,
1530 .num_nodes
= ARRAY_SIZE(lpass_lpicx_noc_nodes
),
1533 static struct qcom_icc_bcm
* const mc_virt_bcms
[] = {
1538 static struct qcom_icc_node
* const mc_virt_nodes
[] = {
1539 [MASTER_LLCC
] = &llcc_mc
,
1540 [SLAVE_EBI1
] = &ebi
,
1543 static const struct qcom_icc_desc sm8650_mc_virt
= {
1544 .nodes
= mc_virt_nodes
,
1545 .num_nodes
= ARRAY_SIZE(mc_virt_nodes
),
1546 .bcms
= mc_virt_bcms
,
1547 .num_bcms
= ARRAY_SIZE(mc_virt_bcms
),
1550 static struct qcom_icc_bcm
* const mmss_noc_bcms
[] = {
1555 static struct qcom_icc_node
* const mmss_noc_nodes
[] = {
1556 [MASTER_CAMNOC_HF
] = &qnm_camnoc_hf
,
1557 [MASTER_CAMNOC_ICP
] = &qnm_camnoc_icp
,
1558 [MASTER_CAMNOC_SF
] = &qnm_camnoc_sf
,
1559 [MASTER_MDP
] = &qnm_mdp
,
1560 [MASTER_CDSP_HCP
] = &qnm_vapss_hcp
,
1561 [MASTER_VIDEO
] = &qnm_video
,
1562 [MASTER_VIDEO_CV_PROC
] = &qnm_video_cv_cpu
,
1563 [MASTER_VIDEO_PROC
] = &qnm_video_cvp
,
1564 [MASTER_VIDEO_V_PROC
] = &qnm_video_v_cpu
,
1565 [MASTER_CNOC_MNOC_CFG
] = &qsm_mnoc_cfg
,
1566 [SLAVE_MNOC_HF_MEM_NOC
] = &qns_mem_noc_hf
,
1567 [SLAVE_MNOC_SF_MEM_NOC
] = &qns_mem_noc_sf
,
1568 [SLAVE_SERVICE_MNOC
] = &srvc_mnoc
,
1571 static const struct qcom_icc_desc sm8650_mmss_noc
= {
1572 .nodes
= mmss_noc_nodes
,
1573 .num_nodes
= ARRAY_SIZE(mmss_noc_nodes
),
1574 .bcms
= mmss_noc_bcms
,
1575 .num_bcms
= ARRAY_SIZE(mmss_noc_bcms
),
1578 static struct qcom_icc_bcm
* const nsp_noc_bcms
[] = {
1582 static struct qcom_icc_node
* const nsp_noc_nodes
[] = {
1583 [MASTER_CDSP_PROC
] = &qnm_nsp
,
1584 [SLAVE_CDSP_MEM_NOC
] = &qns_nsp_gemnoc
,
1587 static const struct qcom_icc_desc sm8650_nsp_noc
= {
1588 .nodes
= nsp_noc_nodes
,
1589 .num_nodes
= ARRAY_SIZE(nsp_noc_nodes
),
1590 .bcms
= nsp_noc_bcms
,
1591 .num_bcms
= ARRAY_SIZE(nsp_noc_bcms
),
1594 static struct qcom_icc_bcm
* const pcie_anoc_bcms
[] = {
1598 static struct qcom_icc_node
* const pcie_anoc_nodes
[] = {
1599 [MASTER_PCIE_ANOC_CFG
] = &qsm_pcie_anoc_cfg
,
1600 [MASTER_PCIE_0
] = &xm_pcie3_0
,
1601 [MASTER_PCIE_1
] = &xm_pcie3_1
,
1602 [SLAVE_ANOC_PCIE_GEM_NOC
] = &qns_pcie_mem_noc
,
1603 [SLAVE_SERVICE_PCIE_ANOC
] = &srvc_pcie_aggre_noc
,
1606 static const struct qcom_icc_desc sm8650_pcie_anoc
= {
1607 .nodes
= pcie_anoc_nodes
,
1608 .num_nodes
= ARRAY_SIZE(pcie_anoc_nodes
),
1609 .bcms
= pcie_anoc_bcms
,
1610 .num_bcms
= ARRAY_SIZE(pcie_anoc_bcms
),
1613 static struct qcom_icc_bcm
* const system_noc_bcms
[] = {
1619 static struct qcom_icc_node
* const system_noc_nodes
[] = {
1620 [MASTER_A1NOC_SNOC
] = &qnm_aggre1_noc
,
1621 [MASTER_A2NOC_SNOC
] = &qnm_aggre2_noc
,
1622 [SLAVE_SNOC_GEM_NOC_SF
] = &qns_gemnoc_sf
,
1625 static const struct qcom_icc_desc sm8650_system_noc
= {
1626 .nodes
= system_noc_nodes
,
1627 .num_nodes
= ARRAY_SIZE(system_noc_nodes
),
1628 .bcms
= system_noc_bcms
,
1629 .num_bcms
= ARRAY_SIZE(system_noc_bcms
),
1632 static const struct of_device_id qnoc_of_match
[] = {
1633 { .compatible
= "qcom,sm8650-aggre1-noc", .data
= &sm8650_aggre1_noc
},
1634 { .compatible
= "qcom,sm8650-aggre2-noc", .data
= &sm8650_aggre2_noc
},
1635 { .compatible
= "qcom,sm8650-clk-virt", .data
= &sm8650_clk_virt
},
1636 { .compatible
= "qcom,sm8650-config-noc", .data
= &sm8650_config_noc
},
1637 { .compatible
= "qcom,sm8650-cnoc-main", .data
= &sm8650_cnoc_main
},
1638 { .compatible
= "qcom,sm8650-gem-noc", .data
= &sm8650_gem_noc
},
1639 { .compatible
= "qcom,sm8650-lpass-ag-noc", .data
= &sm8650_lpass_ag_noc
},
1640 { .compatible
= "qcom,sm8650-lpass-lpiaon-noc", .data
= &sm8650_lpass_lpiaon_noc
},
1641 { .compatible
= "qcom,sm8650-lpass-lpicx-noc", .data
= &sm8650_lpass_lpicx_noc
},
1642 { .compatible
= "qcom,sm8650-mc-virt", .data
= &sm8650_mc_virt
},
1643 { .compatible
= "qcom,sm8650-mmss-noc", .data
= &sm8650_mmss_noc
},
1644 { .compatible
= "qcom,sm8650-nsp-noc", .data
= &sm8650_nsp_noc
},
1645 { .compatible
= "qcom,sm8650-pcie-anoc", .data
= &sm8650_pcie_anoc
},
1646 { .compatible
= "qcom,sm8650-system-noc", .data
= &sm8650_system_noc
},
1649 MODULE_DEVICE_TABLE(of
, qnoc_of_match
);
1651 static struct platform_driver qnoc_driver
= {
1652 .probe
= qcom_icc_rpmh_probe
,
1653 .remove_new
= qcom_icc_rpmh_remove
,
1655 .name
= "qnoc-sm8650",
1656 .of_match_table
= qnoc_of_match
,
1657 .sync_state
= icc_sync_state
,
1661 static int __init
qnoc_driver_init(void)
1663 return platform_driver_register(&qnoc_driver
);
1665 core_initcall(qnoc_driver_init
);
1667 static void __exit
qnoc_driver_exit(void)
1669 platform_driver_unregister(&qnoc_driver
);
1671 module_exit(qnoc_driver_exit
);
1673 MODULE_DESCRIPTION("sm8650 NoC driver");
1674 MODULE_LICENSE("GPL");