1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
4 * Copyright (c) 2021, Linaro Ltd.
7 #include <linux/device.h>
8 #include <linux/interconnect-provider.h>
9 #include <linux/module.h>
10 #include <linux/mod_devicetable.h>
11 #include <linux/platform_device.h>
13 #include <dt-bindings/interconnect/qcom,sc8180x.h>
15 #include "bcm-voter.h"
19 static struct qcom_icc_node mas_qhm_a1noc_cfg
= {
20 .name
= "mas_qhm_a1noc_cfg",
21 .id
= SC8180X_MASTER_A1NOC_CFG
,
25 .links
= { SC8180X_SLAVE_SERVICE_A1NOC
}
28 static struct qcom_icc_node mas_xm_ufs_card
= {
29 .name
= "mas_xm_ufs_card",
30 .id
= SC8180X_MASTER_UFS_CARD
,
34 .links
= { SC8180X_A1NOC_SNOC_SLV
}
37 static struct qcom_icc_node mas_xm_ufs_g4
= {
38 .name
= "mas_xm_ufs_g4",
39 .id
= SC8180X_MASTER_UFS_GEN4
,
43 .links
= { SC8180X_A1NOC_SNOC_SLV
}
46 static struct qcom_icc_node mas_xm_ufs_mem
= {
47 .name
= "mas_xm_ufs_mem",
48 .id
= SC8180X_MASTER_UFS_MEM
,
52 .links
= { SC8180X_A1NOC_SNOC_SLV
}
55 static struct qcom_icc_node mas_xm_usb3_0
= {
56 .name
= "mas_xm_usb3_0",
57 .id
= SC8180X_MASTER_USB3
,
61 .links
= { SC8180X_A1NOC_SNOC_SLV
}
64 static struct qcom_icc_node mas_xm_usb3_1
= {
65 .name
= "mas_xm_usb3_1",
66 .id
= SC8180X_MASTER_USB3_1
,
70 .links
= { SC8180X_A1NOC_SNOC_SLV
}
73 static struct qcom_icc_node mas_xm_usb3_2
= {
74 .name
= "mas_xm_usb3_2",
75 .id
= SC8180X_MASTER_USB3_2
,
79 .links
= { SC8180X_A1NOC_SNOC_SLV
}
82 static struct qcom_icc_node mas_qhm_a2noc_cfg
= {
83 .name
= "mas_qhm_a2noc_cfg",
84 .id
= SC8180X_MASTER_A2NOC_CFG
,
88 .links
= { SC8180X_SLAVE_SERVICE_A2NOC
}
91 static struct qcom_icc_node mas_qhm_qdss_bam
= {
92 .name
= "mas_qhm_qdss_bam",
93 .id
= SC8180X_MASTER_QDSS_BAM
,
97 .links
= { SC8180X_A2NOC_SNOC_SLV
}
100 static struct qcom_icc_node mas_qhm_qspi
= {
101 .name
= "mas_qhm_qspi",
102 .id
= SC8180X_MASTER_QSPI_0
,
106 .links
= { SC8180X_A2NOC_SNOC_SLV
}
109 static struct qcom_icc_node mas_qhm_qspi1
= {
110 .name
= "mas_qhm_qspi1",
111 .id
= SC8180X_MASTER_QSPI_1
,
115 .links
= { SC8180X_A2NOC_SNOC_SLV
}
118 static struct qcom_icc_node mas_qhm_qup0
= {
119 .name
= "mas_qhm_qup0",
120 .id
= SC8180X_MASTER_QUP_0
,
124 .links
= { SC8180X_A2NOC_SNOC_SLV
}
127 static struct qcom_icc_node mas_qhm_qup1
= {
128 .name
= "mas_qhm_qup1",
129 .id
= SC8180X_MASTER_QUP_1
,
133 .links
= { SC8180X_A2NOC_SNOC_SLV
}
136 static struct qcom_icc_node mas_qhm_qup2
= {
137 .name
= "mas_qhm_qup2",
138 .id
= SC8180X_MASTER_QUP_2
,
142 .links
= { SC8180X_A2NOC_SNOC_SLV
}
145 static struct qcom_icc_node mas_qhm_sensorss_ahb
= {
146 .name
= "mas_qhm_sensorss_ahb",
147 .id
= SC8180X_MASTER_SENSORS_AHB
,
151 .links
= { SC8180X_A2NOC_SNOC_SLV
}
154 static struct qcom_icc_node mas_qxm_crypto
= {
155 .name
= "mas_qxm_crypto",
156 .id
= SC8180X_MASTER_CRYPTO_CORE_0
,
160 .links
= { SC8180X_A2NOC_SNOC_SLV
}
163 static struct qcom_icc_node mas_qxm_ipa
= {
164 .name
= "mas_qxm_ipa",
165 .id
= SC8180X_MASTER_IPA
,
169 .links
= { SC8180X_A2NOC_SNOC_SLV
}
172 static struct qcom_icc_node mas_xm_emac
= {
173 .name
= "mas_xm_emac",
174 .id
= SC8180X_MASTER_EMAC
,
178 .links
= { SC8180X_A2NOC_SNOC_SLV
}
181 static struct qcom_icc_node mas_xm_pcie3_0
= {
182 .name
= "mas_xm_pcie3_0",
183 .id
= SC8180X_MASTER_PCIE
,
187 .links
= { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC
}
190 static struct qcom_icc_node mas_xm_pcie3_1
= {
191 .name
= "mas_xm_pcie3_1",
192 .id
= SC8180X_MASTER_PCIE_1
,
196 .links
= { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC
}
199 static struct qcom_icc_node mas_xm_pcie3_2
= {
200 .name
= "mas_xm_pcie3_2",
201 .id
= SC8180X_MASTER_PCIE_2
,
205 .links
= { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC
}
208 static struct qcom_icc_node mas_xm_pcie3_3
= {
209 .name
= "mas_xm_pcie3_3",
210 .id
= SC8180X_MASTER_PCIE_3
,
214 .links
= { SC8180X_SLAVE_ANOC_PCIE_GEM_NOC
}
217 static struct qcom_icc_node mas_xm_qdss_etr
= {
218 .name
= "mas_xm_qdss_etr",
219 .id
= SC8180X_MASTER_QDSS_ETR
,
223 .links
= { SC8180X_A2NOC_SNOC_SLV
}
226 static struct qcom_icc_node mas_xm_sdc2
= {
227 .name
= "mas_xm_sdc2",
228 .id
= SC8180X_MASTER_SDCC_2
,
232 .links
= { SC8180X_A2NOC_SNOC_SLV
}
235 static struct qcom_icc_node mas_xm_sdc4
= {
236 .name
= "mas_xm_sdc4",
237 .id
= SC8180X_MASTER_SDCC_4
,
241 .links
= { SC8180X_A2NOC_SNOC_SLV
}
244 static struct qcom_icc_node mas_qxm_camnoc_hf0_uncomp
= {
245 .name
= "mas_qxm_camnoc_hf0_uncomp",
246 .id
= SC8180X_MASTER_CAMNOC_HF0_UNCOMP
,
250 .links
= { SC8180X_SLAVE_CAMNOC_UNCOMP
}
253 static struct qcom_icc_node mas_qxm_camnoc_hf1_uncomp
= {
254 .name
= "mas_qxm_camnoc_hf1_uncomp",
255 .id
= SC8180X_MASTER_CAMNOC_HF1_UNCOMP
,
259 .links
= { SC8180X_SLAVE_CAMNOC_UNCOMP
}
262 static struct qcom_icc_node mas_qxm_camnoc_sf_uncomp
= {
263 .name
= "mas_qxm_camnoc_sf_uncomp",
264 .id
= SC8180X_MASTER_CAMNOC_SF_UNCOMP
,
268 .links
= { SC8180X_SLAVE_CAMNOC_UNCOMP
}
271 static struct qcom_icc_node mas_qnm_npu
= {
272 .name
= "mas_qnm_npu",
273 .id
= SC8180X_MASTER_NPU
,
277 .links
= { SC8180X_SLAVE_CDSP_MEM_NOC
}
280 static struct qcom_icc_node mas_qnm_snoc
= {
281 .name
= "mas_qnm_snoc",
282 .id
= SC8180X_SNOC_CNOC_MAS
,
286 .links
= { SC8180X_SLAVE_TLMM_SOUTH
,
287 SC8180X_SLAVE_CDSP_CFG
,
288 SC8180X_SLAVE_SPSS_CFG
,
289 SC8180X_SLAVE_CAMERA_CFG
,
290 SC8180X_SLAVE_SDCC_4
,
291 SC8180X_SLAVE_AHB2PHY_CENTER
,
292 SC8180X_SLAVE_SDCC_2
,
293 SC8180X_SLAVE_PCIE_2_CFG
,
294 SC8180X_SLAVE_CNOC_MNOC_CFG
,
295 SC8180X_SLAVE_EMAC_CFG
,
296 SC8180X_SLAVE_QSPI_0
,
297 SC8180X_SLAVE_QSPI_1
,
298 SC8180X_SLAVE_TLMM_EAST
,
299 SC8180X_SLAVE_SNOC_CFG
,
300 SC8180X_SLAVE_AHB2PHY_EAST
,
303 SC8180X_SLAVE_PCIE_1_CFG
,
304 SC8180X_SLAVE_A2NOC_CFG
,
305 SC8180X_SLAVE_QDSS_CFG
,
306 SC8180X_SLAVE_DISPLAY_CFG
,
308 SC8180X_SLAVE_UFS_MEM_0_CFG
,
309 SC8180X_SLAVE_CNOC_DDRSS
,
310 SC8180X_SLAVE_PCIE_0_CFG
,
313 SC8180X_SLAVE_NPU_CFG
,
314 SC8180X_SLAVE_CRYPTO_0_CFG
,
315 SC8180X_SLAVE_GRAPHICS_3D_CFG
,
316 SC8180X_SLAVE_VENUS_CFG
,
318 SC8180X_SLAVE_IPA_CFG
,
319 SC8180X_SLAVE_CLK_CTL
,
320 SC8180X_SLAVE_SECURITY
,
322 SC8180X_SLAVE_AHB2PHY_WEST
,
323 SC8180X_SLAVE_AHB2PHY_SOUTH
,
324 SC8180X_SLAVE_SERVICE_CNOC
,
325 SC8180X_SLAVE_UFS_CARD_CFG
,
326 SC8180X_SLAVE_USB3_1
,
327 SC8180X_SLAVE_USB3_2
,
328 SC8180X_SLAVE_PCIE_3_CFG
,
329 SC8180X_SLAVE_RBCPR_CX_CFG
,
330 SC8180X_SLAVE_TLMM_WEST
,
331 SC8180X_SLAVE_A1NOC_CFG
,
334 SC8180X_SLAVE_VSENSE_CTRL_CFG
,
337 SC8180X_SLAVE_RBCPR_MMCX_CFG
,
338 SC8180X_SLAVE_PIMEM_CFG
,
339 SC8180X_SLAVE_UFS_MEM_1_CFG
,
340 SC8180X_SLAVE_RBCPR_MX_CFG
,
341 SC8180X_SLAVE_IMEM_CFG
}
344 static struct qcom_icc_node mas_qhm_cnoc_dc_noc
= {
345 .name
= "mas_qhm_cnoc_dc_noc",
346 .id
= SC8180X_MASTER_CNOC_DC_NOC
,
350 .links
= { SC8180X_SLAVE_LLCC_CFG
,
351 SC8180X_SLAVE_GEM_NOC_CFG
}
354 static struct qcom_icc_node mas_acm_apps
= {
355 .name
= "mas_acm_apps",
356 .id
= SC8180X_MASTER_AMPSS_M0
,
360 .links
= { SC8180X_SLAVE_ECC
,
362 SC8180X_SLAVE_GEM_NOC_SNOC
}
365 static struct qcom_icc_node mas_acm_gpu_tcu
= {
366 .name
= "mas_acm_gpu_tcu",
367 .id
= SC8180X_MASTER_GPU_TCU
,
371 .links
= { SC8180X_SLAVE_LLCC
,
372 SC8180X_SLAVE_GEM_NOC_SNOC
}
375 static struct qcom_icc_node mas_acm_sys_tcu
= {
376 .name
= "mas_acm_sys_tcu",
377 .id
= SC8180X_MASTER_SYS_TCU
,
381 .links
= { SC8180X_SLAVE_LLCC
,
382 SC8180X_SLAVE_GEM_NOC_SNOC
}
385 static struct qcom_icc_node mas_qhm_gemnoc_cfg
= {
386 .name
= "mas_qhm_gemnoc_cfg",
387 .id
= SC8180X_MASTER_GEM_NOC_CFG
,
391 .links
= { SC8180X_SLAVE_SERVICE_GEM_NOC_1
,
392 SC8180X_SLAVE_SERVICE_GEM_NOC
,
393 SC8180X_SLAVE_MSS_PROC_MS_MPU_CFG
}
396 static struct qcom_icc_node mas_qnm_cmpnoc
= {
397 .name
= "mas_qnm_cmpnoc",
398 .id
= SC8180X_MASTER_COMPUTE_NOC
,
402 .links
= { SC8180X_SLAVE_ECC
,
404 SC8180X_SLAVE_GEM_NOC_SNOC
}
407 static struct qcom_icc_node mas_qnm_gpu
= {
408 .name
= "mas_qnm_gpu",
409 .id
= SC8180X_MASTER_GRAPHICS_3D
,
413 .links
= { SC8180X_SLAVE_LLCC
,
414 SC8180X_SLAVE_GEM_NOC_SNOC
}
417 static struct qcom_icc_node mas_qnm_mnoc_hf
= {
418 .name
= "mas_qnm_mnoc_hf",
419 .id
= SC8180X_MASTER_MNOC_HF_MEM_NOC
,
423 .links
= { SC8180X_SLAVE_LLCC
}
426 static struct qcom_icc_node mas_qnm_mnoc_sf
= {
427 .name
= "mas_qnm_mnoc_sf",
428 .id
= SC8180X_MASTER_MNOC_SF_MEM_NOC
,
432 .links
= { SC8180X_SLAVE_LLCC
,
433 SC8180X_SLAVE_GEM_NOC_SNOC
}
436 static struct qcom_icc_node mas_qnm_pcie
= {
437 .name
= "mas_qnm_pcie",
438 .id
= SC8180X_MASTER_GEM_NOC_PCIE_SNOC
,
442 .links
= { SC8180X_SLAVE_LLCC
,
443 SC8180X_SLAVE_GEM_NOC_SNOC
}
446 static struct qcom_icc_node mas_qnm_snoc_gc
= {
447 .name
= "mas_qnm_snoc_gc",
448 .id
= SC8180X_MASTER_SNOC_GC_MEM_NOC
,
452 .links
= { SC8180X_SLAVE_LLCC
}
455 static struct qcom_icc_node mas_qnm_snoc_sf
= {
456 .name
= "mas_qnm_snoc_sf",
457 .id
= SC8180X_MASTER_SNOC_SF_MEM_NOC
,
461 .links
= { SC8180X_SLAVE_LLCC
}
464 static struct qcom_icc_node mas_qxm_ecc
= {
465 .name
= "mas_qxm_ecc",
466 .id
= SC8180X_MASTER_ECC
,
470 .links
= { SC8180X_SLAVE_LLCC
}
473 static struct qcom_icc_node mas_llcc_mc
= {
474 .name
= "mas_llcc_mc",
475 .id
= SC8180X_MASTER_LLCC
,
479 .links
= { SC8180X_SLAVE_EBI_CH0
}
482 static struct qcom_icc_node mas_qhm_mnoc_cfg
= {
483 .name
= "mas_qhm_mnoc_cfg",
484 .id
= SC8180X_MASTER_CNOC_MNOC_CFG
,
488 .links
= { SC8180X_SLAVE_SERVICE_MNOC
}
491 static struct qcom_icc_node mas_qxm_camnoc_hf0
= {
492 .name
= "mas_qxm_camnoc_hf0",
493 .id
= SC8180X_MASTER_CAMNOC_HF0
,
497 .links
= { SC8180X_SLAVE_MNOC_HF_MEM_NOC
}
500 static struct qcom_icc_node mas_qxm_camnoc_hf1
= {
501 .name
= "mas_qxm_camnoc_hf1",
502 .id
= SC8180X_MASTER_CAMNOC_HF1
,
506 .links
= { SC8180X_SLAVE_MNOC_HF_MEM_NOC
}
509 static struct qcom_icc_node mas_qxm_camnoc_sf
= {
510 .name
= "mas_qxm_camnoc_sf",
511 .id
= SC8180X_MASTER_CAMNOC_SF
,
515 .links
= { SC8180X_SLAVE_MNOC_SF_MEM_NOC
}
518 static struct qcom_icc_node mas_qxm_mdp0
= {
519 .name
= "mas_qxm_mdp0",
520 .id
= SC8180X_MASTER_MDP_PORT0
,
524 .links
= { SC8180X_SLAVE_MNOC_HF_MEM_NOC
}
527 static struct qcom_icc_node mas_qxm_mdp1
= {
528 .name
= "mas_qxm_mdp1",
529 .id
= SC8180X_MASTER_MDP_PORT1
,
533 .links
= { SC8180X_SLAVE_MNOC_HF_MEM_NOC
}
536 static struct qcom_icc_node mas_qxm_rot
= {
537 .name
= "mas_qxm_rot",
538 .id
= SC8180X_MASTER_ROTATOR
,
542 .links
= { SC8180X_SLAVE_MNOC_SF_MEM_NOC
}
545 static struct qcom_icc_node mas_qxm_venus0
= {
546 .name
= "mas_qxm_venus0",
547 .id
= SC8180X_MASTER_VIDEO_P0
,
551 .links
= { SC8180X_SLAVE_MNOC_SF_MEM_NOC
}
554 static struct qcom_icc_node mas_qxm_venus1
= {
555 .name
= "mas_qxm_venus1",
556 .id
= SC8180X_MASTER_VIDEO_P1
,
560 .links
= { SC8180X_SLAVE_MNOC_SF_MEM_NOC
}
563 static struct qcom_icc_node mas_qxm_venus_arm9
= {
564 .name
= "mas_qxm_venus_arm9",
565 .id
= SC8180X_MASTER_VIDEO_PROC
,
569 .links
= { SC8180X_SLAVE_MNOC_SF_MEM_NOC
}
572 static struct qcom_icc_node mas_qhm_snoc_cfg
= {
573 .name
= "mas_qhm_snoc_cfg",
574 .id
= SC8180X_MASTER_SNOC_CFG
,
578 .links
= { SC8180X_SLAVE_SERVICE_SNOC
}
581 static struct qcom_icc_node mas_qnm_aggre1_noc
= {
582 .name
= "mas_qnm_aggre1_noc",
583 .id
= SC8180X_A1NOC_SNOC_MAS
,
587 .links
= { SC8180X_SLAVE_SNOC_GEM_NOC_SF
,
589 SC8180X_SLAVE_OCIMEM
,
591 SC8180X_SNOC_CNOC_SLV
,
592 SC8180X_SLAVE_QDSS_STM
}
595 static struct qcom_icc_node mas_qnm_aggre2_noc
= {
596 .name
= "mas_qnm_aggre2_noc",
597 .id
= SC8180X_A2NOC_SNOC_MAS
,
601 .links
= { SC8180X_SLAVE_SNOC_GEM_NOC_SF
,
603 SC8180X_SLAVE_PCIE_3
,
604 SC8180X_SLAVE_OCIMEM
,
606 SC8180X_SLAVE_PCIE_2
,
607 SC8180X_SNOC_CNOC_SLV
,
608 SC8180X_SLAVE_PCIE_0
,
609 SC8180X_SLAVE_PCIE_1
,
611 SC8180X_SLAVE_QDSS_STM
}
614 static struct qcom_icc_node mas_qnm_gemnoc
= {
615 .name
= "mas_qnm_gemnoc",
616 .id
= SC8180X_MASTER_GEM_NOC_SNOC
,
620 .links
= { SC8180X_SLAVE_PIMEM
,
621 SC8180X_SLAVE_OCIMEM
,
623 SC8180X_SNOC_CNOC_SLV
,
625 SC8180X_SLAVE_QDSS_STM
}
628 static struct qcom_icc_node mas_qxm_pimem
= {
629 .name
= "mas_qxm_pimem",
630 .id
= SC8180X_MASTER_PIMEM
,
634 .links
= { SC8180X_SLAVE_SNOC_GEM_NOC_GC
,
635 SC8180X_SLAVE_OCIMEM
}
638 static struct qcom_icc_node mas_xm_gic
= {
639 .name
= "mas_xm_gic",
640 .id
= SC8180X_MASTER_GIC
,
644 .links
= { SC8180X_SLAVE_SNOC_GEM_NOC_GC
,
645 SC8180X_SLAVE_OCIMEM
}
648 static struct qcom_icc_node mas_qup_core_0
= {
649 .name
= "mas_qup_core_0",
650 .id
= SC8180X_MASTER_QUP_CORE_0
,
654 .links
= { SC8180X_SLAVE_QUP_CORE_0
}
657 static struct qcom_icc_node mas_qup_core_1
= {
658 .name
= "mas_qup_core_1",
659 .id
= SC8180X_MASTER_QUP_CORE_1
,
663 .links
= { SC8180X_SLAVE_QUP_CORE_1
}
666 static struct qcom_icc_node mas_qup_core_2
= {
667 .name
= "mas_qup_core_2",
668 .id
= SC8180X_MASTER_QUP_CORE_2
,
672 .links
= { SC8180X_SLAVE_QUP_CORE_2
}
675 static struct qcom_icc_node slv_qns_a1noc_snoc
= {
676 .name
= "slv_qns_a1noc_snoc",
677 .id
= SC8180X_A1NOC_SNOC_SLV
,
681 .links
= { SC8180X_A1NOC_SNOC_MAS
}
684 static struct qcom_icc_node slv_srvc_aggre1_noc
= {
685 .name
= "slv_srvc_aggre1_noc",
686 .id
= SC8180X_SLAVE_SERVICE_A1NOC
,
691 static struct qcom_icc_node slv_qns_a2noc_snoc
= {
692 .name
= "slv_qns_a2noc_snoc",
693 .id
= SC8180X_A2NOC_SNOC_SLV
,
697 .links
= { SC8180X_A2NOC_SNOC_MAS
}
700 static struct qcom_icc_node slv_qns_pcie_mem_noc
= {
701 .name
= "slv_qns_pcie_mem_noc",
702 .id
= SC8180X_SLAVE_ANOC_PCIE_GEM_NOC
,
706 .links
= { SC8180X_MASTER_GEM_NOC_PCIE_SNOC
}
709 static struct qcom_icc_node slv_srvc_aggre2_noc
= {
710 .name
= "slv_srvc_aggre2_noc",
711 .id
= SC8180X_SLAVE_SERVICE_A2NOC
,
716 static struct qcom_icc_node slv_qns_camnoc_uncomp
= {
717 .name
= "slv_qns_camnoc_uncomp",
718 .id
= SC8180X_SLAVE_CAMNOC_UNCOMP
,
723 static struct qcom_icc_node slv_qns_cdsp_mem_noc
= {
724 .name
= "slv_qns_cdsp_mem_noc",
725 .id
= SC8180X_SLAVE_CDSP_MEM_NOC
,
729 .links
= { SC8180X_MASTER_COMPUTE_NOC
}
732 static struct qcom_icc_node slv_qhs_a1_noc_cfg
= {
733 .name
= "slv_qhs_a1_noc_cfg",
734 .id
= SC8180X_SLAVE_A1NOC_CFG
,
738 .links
= { SC8180X_MASTER_A1NOC_CFG
}
741 static struct qcom_icc_node slv_qhs_a2_noc_cfg
= {
742 .name
= "slv_qhs_a2_noc_cfg",
743 .id
= SC8180X_SLAVE_A2NOC_CFG
,
747 .links
= { SC8180X_MASTER_A2NOC_CFG
}
750 static struct qcom_icc_node slv_qhs_ahb2phy_refgen_center
= {
751 .name
= "slv_qhs_ahb2phy_refgen_center",
752 .id
= SC8180X_SLAVE_AHB2PHY_CENTER
,
757 static struct qcom_icc_node slv_qhs_ahb2phy_refgen_east
= {
758 .name
= "slv_qhs_ahb2phy_refgen_east",
759 .id
= SC8180X_SLAVE_AHB2PHY_EAST
,
764 static struct qcom_icc_node slv_qhs_ahb2phy_refgen_west
= {
765 .name
= "slv_qhs_ahb2phy_refgen_west",
766 .id
= SC8180X_SLAVE_AHB2PHY_WEST
,
771 static struct qcom_icc_node slv_qhs_ahb2phy_south
= {
772 .name
= "slv_qhs_ahb2phy_south",
773 .id
= SC8180X_SLAVE_AHB2PHY_SOUTH
,
778 static struct qcom_icc_node slv_qhs_aop
= {
779 .name
= "slv_qhs_aop",
780 .id
= SC8180X_SLAVE_AOP
,
785 static struct qcom_icc_node slv_qhs_aoss
= {
786 .name
= "slv_qhs_aoss",
787 .id
= SC8180X_SLAVE_AOSS
,
792 static struct qcom_icc_node slv_qhs_camera_cfg
= {
793 .name
= "slv_qhs_camera_cfg",
794 .id
= SC8180X_SLAVE_CAMERA_CFG
,
799 static struct qcom_icc_node slv_qhs_clk_ctl
= {
800 .name
= "slv_qhs_clk_ctl",
801 .id
= SC8180X_SLAVE_CLK_CTL
,
806 static struct qcom_icc_node slv_qhs_compute_dsp
= {
807 .name
= "slv_qhs_compute_dsp",
808 .id
= SC8180X_SLAVE_CDSP_CFG
,
813 static struct qcom_icc_node slv_qhs_cpr_cx
= {
814 .name
= "slv_qhs_cpr_cx",
815 .id
= SC8180X_SLAVE_RBCPR_CX_CFG
,
820 static struct qcom_icc_node slv_qhs_cpr_mmcx
= {
821 .name
= "slv_qhs_cpr_mmcx",
822 .id
= SC8180X_SLAVE_RBCPR_MMCX_CFG
,
827 static struct qcom_icc_node slv_qhs_cpr_mx
= {
828 .name
= "slv_qhs_cpr_mx",
829 .id
= SC8180X_SLAVE_RBCPR_MX_CFG
,
834 static struct qcom_icc_node slv_qhs_crypto0_cfg
= {
835 .name
= "slv_qhs_crypto0_cfg",
836 .id
= SC8180X_SLAVE_CRYPTO_0_CFG
,
841 static struct qcom_icc_node slv_qhs_ddrss_cfg
= {
842 .name
= "slv_qhs_ddrss_cfg",
843 .id
= SC8180X_SLAVE_CNOC_DDRSS
,
847 .links
= { SC8180X_MASTER_CNOC_DC_NOC
}
850 static struct qcom_icc_node slv_qhs_display_cfg
= {
851 .name
= "slv_qhs_display_cfg",
852 .id
= SC8180X_SLAVE_DISPLAY_CFG
,
857 static struct qcom_icc_node slv_qhs_emac_cfg
= {
858 .name
= "slv_qhs_emac_cfg",
859 .id
= SC8180X_SLAVE_EMAC_CFG
,
864 static struct qcom_icc_node slv_qhs_glm
= {
865 .name
= "slv_qhs_glm",
866 .id
= SC8180X_SLAVE_GLM
,
871 static struct qcom_icc_node slv_qhs_gpuss_cfg
= {
872 .name
= "slv_qhs_gpuss_cfg",
873 .id
= SC8180X_SLAVE_GRAPHICS_3D_CFG
,
878 static struct qcom_icc_node slv_qhs_imem_cfg
= {
879 .name
= "slv_qhs_imem_cfg",
880 .id
= SC8180X_SLAVE_IMEM_CFG
,
885 static struct qcom_icc_node slv_qhs_ipa
= {
886 .name
= "slv_qhs_ipa",
887 .id
= SC8180X_SLAVE_IPA_CFG
,
892 static struct qcom_icc_node slv_qhs_mnoc_cfg
= {
893 .name
= "slv_qhs_mnoc_cfg",
894 .id
= SC8180X_SLAVE_CNOC_MNOC_CFG
,
898 .links
= { SC8180X_MASTER_CNOC_MNOC_CFG
}
901 static struct qcom_icc_node slv_qhs_npu_cfg
= {
902 .name
= "slv_qhs_npu_cfg",
903 .id
= SC8180X_SLAVE_NPU_CFG
,
908 static struct qcom_icc_node slv_qhs_pcie0_cfg
= {
909 .name
= "slv_qhs_pcie0_cfg",
910 .id
= SC8180X_SLAVE_PCIE_0_CFG
,
915 static struct qcom_icc_node slv_qhs_pcie1_cfg
= {
916 .name
= "slv_qhs_pcie1_cfg",
917 .id
= SC8180X_SLAVE_PCIE_1_CFG
,
922 static struct qcom_icc_node slv_qhs_pcie2_cfg
= {
923 .name
= "slv_qhs_pcie2_cfg",
924 .id
= SC8180X_SLAVE_PCIE_2_CFG
,
929 static struct qcom_icc_node slv_qhs_pcie3_cfg
= {
930 .name
= "slv_qhs_pcie3_cfg",
931 .id
= SC8180X_SLAVE_PCIE_3_CFG
,
936 static struct qcom_icc_node slv_qhs_pdm
= {
937 .name
= "slv_qhs_pdm",
938 .id
= SC8180X_SLAVE_PDM
,
943 static struct qcom_icc_node slv_qhs_pimem_cfg
= {
944 .name
= "slv_qhs_pimem_cfg",
945 .id
= SC8180X_SLAVE_PIMEM_CFG
,
950 static struct qcom_icc_node slv_qhs_prng
= {
951 .name
= "slv_qhs_prng",
952 .id
= SC8180X_SLAVE_PRNG
,
957 static struct qcom_icc_node slv_qhs_qdss_cfg
= {
958 .name
= "slv_qhs_qdss_cfg",
959 .id
= SC8180X_SLAVE_QDSS_CFG
,
964 static struct qcom_icc_node slv_qhs_qspi_0
= {
965 .name
= "slv_qhs_qspi_0",
966 .id
= SC8180X_SLAVE_QSPI_0
,
971 static struct qcom_icc_node slv_qhs_qspi_1
= {
972 .name
= "slv_qhs_qspi_1",
973 .id
= SC8180X_SLAVE_QSPI_1
,
978 static struct qcom_icc_node slv_qhs_qupv3_east0
= {
979 .name
= "slv_qhs_qupv3_east0",
980 .id
= SC8180X_SLAVE_QUP_1
,
985 static struct qcom_icc_node slv_qhs_qupv3_east1
= {
986 .name
= "slv_qhs_qupv3_east1",
987 .id
= SC8180X_SLAVE_QUP_2
,
992 static struct qcom_icc_node slv_qhs_qupv3_west
= {
993 .name
= "slv_qhs_qupv3_west",
994 .id
= SC8180X_SLAVE_QUP_0
,
999 static struct qcom_icc_node slv_qhs_sdc2
= {
1000 .name
= "slv_qhs_sdc2",
1001 .id
= SC8180X_SLAVE_SDCC_2
,
1006 static struct qcom_icc_node slv_qhs_sdc4
= {
1007 .name
= "slv_qhs_sdc4",
1008 .id
= SC8180X_SLAVE_SDCC_4
,
1013 static struct qcom_icc_node slv_qhs_security
= {
1014 .name
= "slv_qhs_security",
1015 .id
= SC8180X_SLAVE_SECURITY
,
1020 static struct qcom_icc_node slv_qhs_snoc_cfg
= {
1021 .name
= "slv_qhs_snoc_cfg",
1022 .id
= SC8180X_SLAVE_SNOC_CFG
,
1026 .links
= { SC8180X_MASTER_SNOC_CFG
}
1029 static struct qcom_icc_node slv_qhs_spss_cfg
= {
1030 .name
= "slv_qhs_spss_cfg",
1031 .id
= SC8180X_SLAVE_SPSS_CFG
,
1036 static struct qcom_icc_node slv_qhs_tcsr
= {
1037 .name
= "slv_qhs_tcsr",
1038 .id
= SC8180X_SLAVE_TCSR
,
1043 static struct qcom_icc_node slv_qhs_tlmm_east
= {
1044 .name
= "slv_qhs_tlmm_east",
1045 .id
= SC8180X_SLAVE_TLMM_EAST
,
1050 static struct qcom_icc_node slv_qhs_tlmm_south
= {
1051 .name
= "slv_qhs_tlmm_south",
1052 .id
= SC8180X_SLAVE_TLMM_SOUTH
,
1057 static struct qcom_icc_node slv_qhs_tlmm_west
= {
1058 .name
= "slv_qhs_tlmm_west",
1059 .id
= SC8180X_SLAVE_TLMM_WEST
,
1064 static struct qcom_icc_node slv_qhs_tsif
= {
1065 .name
= "slv_qhs_tsif",
1066 .id
= SC8180X_SLAVE_TSIF
,
1071 static struct qcom_icc_node slv_qhs_ufs_card_cfg
= {
1072 .name
= "slv_qhs_ufs_card_cfg",
1073 .id
= SC8180X_SLAVE_UFS_CARD_CFG
,
1078 static struct qcom_icc_node slv_qhs_ufs_mem0_cfg
= {
1079 .name
= "slv_qhs_ufs_mem0_cfg",
1080 .id
= SC8180X_SLAVE_UFS_MEM_0_CFG
,
1085 static struct qcom_icc_node slv_qhs_ufs_mem1_cfg
= {
1086 .name
= "slv_qhs_ufs_mem1_cfg",
1087 .id
= SC8180X_SLAVE_UFS_MEM_1_CFG
,
1092 static struct qcom_icc_node slv_qhs_usb3_0
= {
1093 .name
= "slv_qhs_usb3_0",
1094 .id
= SC8180X_SLAVE_USB3
,
1099 static struct qcom_icc_node slv_qhs_usb3_1
= {
1100 .name
= "slv_qhs_usb3_1",
1101 .id
= SC8180X_SLAVE_USB3_1
,
1106 static struct qcom_icc_node slv_qhs_usb3_2
= {
1107 .name
= "slv_qhs_usb3_2",
1108 .id
= SC8180X_SLAVE_USB3_2
,
1113 static struct qcom_icc_node slv_qhs_venus_cfg
= {
1114 .name
= "slv_qhs_venus_cfg",
1115 .id
= SC8180X_SLAVE_VENUS_CFG
,
1120 static struct qcom_icc_node slv_qhs_vsense_ctrl_cfg
= {
1121 .name
= "slv_qhs_vsense_ctrl_cfg",
1122 .id
= SC8180X_SLAVE_VSENSE_CTRL_CFG
,
1127 static struct qcom_icc_node slv_srvc_cnoc
= {
1128 .name
= "slv_srvc_cnoc",
1129 .id
= SC8180X_SLAVE_SERVICE_CNOC
,
1134 static struct qcom_icc_node slv_qhs_gemnoc
= {
1135 .name
= "slv_qhs_gemnoc",
1136 .id
= SC8180X_SLAVE_GEM_NOC_CFG
,
1140 .links
= { SC8180X_MASTER_GEM_NOC_CFG
}
1143 static struct qcom_icc_node slv_qhs_llcc
= {
1144 .name
= "slv_qhs_llcc",
1145 .id
= SC8180X_SLAVE_LLCC_CFG
,
1150 static struct qcom_icc_node slv_qhs_mdsp_ms_mpu_cfg
= {
1151 .name
= "slv_qhs_mdsp_ms_mpu_cfg",
1152 .id
= SC8180X_SLAVE_MSS_PROC_MS_MPU_CFG
,
1157 static struct qcom_icc_node slv_qns_ecc
= {
1158 .name
= "slv_qns_ecc",
1159 .id
= SC8180X_SLAVE_ECC
,
1164 static struct qcom_icc_node slv_qns_gem_noc_snoc
= {
1165 .name
= "slv_qns_gem_noc_snoc",
1166 .id
= SC8180X_SLAVE_GEM_NOC_SNOC
,
1170 .links
= { SC8180X_MASTER_GEM_NOC_SNOC
}
1173 static struct qcom_icc_node slv_qns_llcc
= {
1174 .name
= "slv_qns_llcc",
1175 .id
= SC8180X_SLAVE_LLCC
,
1179 .links
= { SC8180X_MASTER_LLCC
}
1182 static struct qcom_icc_node slv_srvc_gemnoc
= {
1183 .name
= "slv_srvc_gemnoc",
1184 .id
= SC8180X_SLAVE_SERVICE_GEM_NOC
,
1189 static struct qcom_icc_node slv_srvc_gemnoc1
= {
1190 .name
= "slv_srvc_gemnoc1",
1191 .id
= SC8180X_SLAVE_SERVICE_GEM_NOC_1
,
1196 static struct qcom_icc_node slv_ebi
= {
1198 .id
= SC8180X_SLAVE_EBI_CH0
,
1203 static struct qcom_icc_node slv_qns2_mem_noc
= {
1204 .name
= "slv_qns2_mem_noc",
1205 .id
= SC8180X_SLAVE_MNOC_SF_MEM_NOC
,
1209 .links
= { SC8180X_MASTER_MNOC_SF_MEM_NOC
}
1212 static struct qcom_icc_node slv_qns_mem_noc_hf
= {
1213 .name
= "slv_qns_mem_noc_hf",
1214 .id
= SC8180X_SLAVE_MNOC_HF_MEM_NOC
,
1218 .links
= { SC8180X_MASTER_MNOC_HF_MEM_NOC
}
1221 static struct qcom_icc_node slv_srvc_mnoc
= {
1222 .name
= "slv_srvc_mnoc",
1223 .id
= SC8180X_SLAVE_SERVICE_MNOC
,
1228 static struct qcom_icc_node slv_qhs_apss
= {
1229 .name
= "slv_qhs_apss",
1230 .id
= SC8180X_SLAVE_APPSS
,
1235 static struct qcom_icc_node slv_qns_cnoc
= {
1236 .name
= "slv_qns_cnoc",
1237 .id
= SC8180X_SNOC_CNOC_SLV
,
1241 .links
= { SC8180X_SNOC_CNOC_MAS
}
1244 static struct qcom_icc_node slv_qns_gemnoc_gc
= {
1245 .name
= "slv_qns_gemnoc_gc",
1246 .id
= SC8180X_SLAVE_SNOC_GEM_NOC_GC
,
1250 .links
= { SC8180X_MASTER_SNOC_GC_MEM_NOC
}
1253 static struct qcom_icc_node slv_qns_gemnoc_sf
= {
1254 .name
= "slv_qns_gemnoc_sf",
1255 .id
= SC8180X_SLAVE_SNOC_GEM_NOC_SF
,
1259 .links
= { SC8180X_MASTER_SNOC_SF_MEM_NOC
}
1262 static struct qcom_icc_node slv_qxs_imem
= {
1263 .name
= "slv_qxs_imem",
1264 .id
= SC8180X_SLAVE_OCIMEM
,
1269 static struct qcom_icc_node slv_qxs_pimem
= {
1270 .name
= "slv_qxs_pimem",
1271 .id
= SC8180X_SLAVE_PIMEM
,
1276 static struct qcom_icc_node slv_srvc_snoc
= {
1277 .name
= "slv_srvc_snoc",
1278 .id
= SC8180X_SLAVE_SERVICE_SNOC
,
1283 static struct qcom_icc_node slv_xs_pcie_0
= {
1284 .name
= "slv_xs_pcie_0",
1285 .id
= SC8180X_SLAVE_PCIE_0
,
1290 static struct qcom_icc_node slv_xs_pcie_1
= {
1291 .name
= "slv_xs_pcie_1",
1292 .id
= SC8180X_SLAVE_PCIE_1
,
1297 static struct qcom_icc_node slv_xs_pcie_2
= {
1298 .name
= "slv_xs_pcie_2",
1299 .id
= SC8180X_SLAVE_PCIE_2
,
1304 static struct qcom_icc_node slv_xs_pcie_3
= {
1305 .name
= "slv_xs_pcie_3",
1306 .id
= SC8180X_SLAVE_PCIE_3
,
1311 static struct qcom_icc_node slv_xs_qdss_stm
= {
1312 .name
= "slv_xs_qdss_stm",
1313 .id
= SC8180X_SLAVE_QDSS_STM
,
1318 static struct qcom_icc_node slv_xs_sys_tcu_cfg
= {
1319 .name
= "slv_xs_sys_tcu_cfg",
1320 .id
= SC8180X_SLAVE_TCU
,
1325 static struct qcom_icc_node slv_qup_core_0
= {
1326 .name
= "slv_qup_core_0",
1327 .id
= SC8180X_SLAVE_QUP_CORE_0
,
1332 static struct qcom_icc_node slv_qup_core_1
= {
1333 .name
= "slv_qup_core_1",
1334 .id
= SC8180X_SLAVE_QUP_CORE_1
,
1339 static struct qcom_icc_node slv_qup_core_2
= {
1340 .name
= "slv_qup_core_2",
1341 .id
= SC8180X_SLAVE_QUP_CORE_2
,
1346 static struct qcom_icc_bcm bcm_acv
= {
1348 .enable_mask
= BIT(3),
1350 .nodes
= { &slv_ebi
}
1353 static struct qcom_icc_bcm bcm_mc0
= {
1357 .nodes
= { &slv_ebi
}
1360 static struct qcom_icc_bcm bcm_sh0
= {
1364 .nodes
= { &slv_qns_llcc
}
1367 static struct qcom_icc_bcm bcm_mm0
= {
1370 .nodes
= { &slv_qns_mem_noc_hf
}
1373 static struct qcom_icc_bcm bcm_co0
= {
1377 .nodes
= { &slv_qns_cdsp_mem_noc
}
1380 static struct qcom_icc_bcm bcm_ce0
= {
1383 .nodes
= { &mas_qxm_crypto
}
1386 static struct qcom_icc_bcm bcm_cn0
= {
1390 .nodes
= { &mas_qnm_snoc
,
1391 &slv_qhs_a1_noc_cfg
,
1392 &slv_qhs_a2_noc_cfg
,
1393 &slv_qhs_ahb2phy_refgen_center
,
1394 &slv_qhs_ahb2phy_refgen_east
,
1395 &slv_qhs_ahb2phy_refgen_west
,
1396 &slv_qhs_ahb2phy_south
,
1399 &slv_qhs_camera_cfg
,
1401 &slv_qhs_compute_dsp
,
1405 &slv_qhs_crypto0_cfg
,
1407 &slv_qhs_display_cfg
,
1425 &slv_qhs_qupv3_east0
,
1426 &slv_qhs_qupv3_east1
,
1427 &slv_qhs_qupv3_west
,
1435 &slv_qhs_tlmm_south
,
1438 &slv_qhs_ufs_card_cfg
,
1439 &slv_qhs_ufs_mem0_cfg
,
1440 &slv_qhs_ufs_mem1_cfg
,
1445 &slv_qhs_vsense_ctrl_cfg
,
1449 static struct qcom_icc_bcm bcm_mm1
= {
1452 .nodes
= { &mas_qxm_camnoc_hf0_uncomp
,
1453 &mas_qxm_camnoc_hf1_uncomp
,
1454 &mas_qxm_camnoc_sf_uncomp
,
1455 &mas_qxm_camnoc_hf0
,
1456 &mas_qxm_camnoc_hf1
,
1461 static struct qcom_icc_bcm bcm_qup0
= {
1464 .nodes
= { &mas_qup_core_0
,
1469 static struct qcom_icc_bcm bcm_sh2
= {
1472 .nodes
= { &slv_qns_gem_noc_snoc
}
1475 static struct qcom_icc_bcm bcm_mm2
= {
1478 .nodes
= { &mas_qxm_camnoc_sf
,
1482 &mas_qxm_venus_arm9
,
1486 static struct qcom_icc_bcm bcm_sh3
= {
1490 .nodes
= { &mas_acm_apps
}
1493 static struct qcom_icc_bcm bcm_sn0
= {
1495 .nodes
= { &slv_qns_gemnoc_sf
}
1498 static struct qcom_icc_bcm bcm_sn1
= {
1500 .nodes
= { &slv_qxs_imem
}
1503 static struct qcom_icc_bcm bcm_sn2
= {
1506 .nodes
= { &slv_qns_gemnoc_gc
}
1509 static struct qcom_icc_bcm bcm_co2
= {
1511 .nodes
= { &mas_qnm_npu
}
1514 static struct qcom_icc_bcm bcm_sn3
= {
1517 .nodes
= { &slv_srvc_aggre1_noc
,
1521 static struct qcom_icc_bcm bcm_sn4
= {
1523 .nodes
= { &slv_qxs_pimem
}
1526 static struct qcom_icc_bcm bcm_sn8
= {
1529 .nodes
= { &slv_xs_pcie_0
,
1535 static struct qcom_icc_bcm bcm_sn9
= {
1538 .nodes
= { &mas_qnm_aggre1_noc
}
1541 static struct qcom_icc_bcm bcm_sn11
= {
1544 .nodes
= { &mas_qnm_aggre2_noc
}
1547 static struct qcom_icc_bcm bcm_sn14
= {
1550 .nodes
= { &slv_qns_pcie_mem_noc
}
1553 static struct qcom_icc_bcm bcm_sn15
= {
1557 .nodes
= { &mas_qnm_gemnoc
}
1560 static struct qcom_icc_bcm
* const aggre1_noc_bcms
[] = {
1565 static struct qcom_icc_bcm
* const aggre2_noc_bcms
[] = {
1570 static struct qcom_icc_bcm
* const camnoc_virt_bcms
[] = {
1574 static struct qcom_icc_bcm
* const compute_noc_bcms
[] = {
1579 static struct qcom_icc_bcm
* const config_noc_bcms
[] = {
1583 static struct qcom_icc_bcm
* const gem_noc_bcms
[] = {
1589 static struct qcom_icc_bcm
* const mc_virt_bcms
[] = {
1594 static struct qcom_icc_bcm
* const mmss_noc_bcms
[] = {
1600 static struct qcom_icc_bcm
* const system_noc_bcms
[] = {
1612 static struct qcom_icc_node
* const aggre1_noc_nodes
[] = {
1613 [MASTER_A1NOC_CFG
] = &mas_qhm_a1noc_cfg
,
1614 [MASTER_UFS_CARD
] = &mas_xm_ufs_card
,
1615 [MASTER_UFS_GEN4
] = &mas_xm_ufs_g4
,
1616 [MASTER_UFS_MEM
] = &mas_xm_ufs_mem
,
1617 [MASTER_USB3
] = &mas_xm_usb3_0
,
1618 [MASTER_USB3_1
] = &mas_xm_usb3_1
,
1619 [MASTER_USB3_2
] = &mas_xm_usb3_2
,
1620 [A1NOC_SNOC_SLV
] = &slv_qns_a1noc_snoc
,
1621 [SLAVE_SERVICE_A1NOC
] = &slv_srvc_aggre1_noc
,
1624 static struct qcom_icc_node
* const aggre2_noc_nodes
[] = {
1625 [MASTER_A2NOC_CFG
] = &mas_qhm_a2noc_cfg
,
1626 [MASTER_QDSS_BAM
] = &mas_qhm_qdss_bam
,
1627 [MASTER_QSPI_0
] = &mas_qhm_qspi
,
1628 [MASTER_QSPI_1
] = &mas_qhm_qspi1
,
1629 [MASTER_QUP_0
] = &mas_qhm_qup0
,
1630 [MASTER_QUP_1
] = &mas_qhm_qup1
,
1631 [MASTER_QUP_2
] = &mas_qhm_qup2
,
1632 [MASTER_SENSORS_AHB
] = &mas_qhm_sensorss_ahb
,
1633 [MASTER_CRYPTO_CORE_0
] = &mas_qxm_crypto
,
1634 [MASTER_IPA
] = &mas_qxm_ipa
,
1635 [MASTER_EMAC
] = &mas_xm_emac
,
1636 [MASTER_PCIE
] = &mas_xm_pcie3_0
,
1637 [MASTER_PCIE_1
] = &mas_xm_pcie3_1
,
1638 [MASTER_PCIE_2
] = &mas_xm_pcie3_2
,
1639 [MASTER_PCIE_3
] = &mas_xm_pcie3_3
,
1640 [MASTER_QDSS_ETR
] = &mas_xm_qdss_etr
,
1641 [MASTER_SDCC_2
] = &mas_xm_sdc2
,
1642 [MASTER_SDCC_4
] = &mas_xm_sdc4
,
1643 [A2NOC_SNOC_SLV
] = &slv_qns_a2noc_snoc
,
1644 [SLAVE_ANOC_PCIE_GEM_NOC
] = &slv_qns_pcie_mem_noc
,
1645 [SLAVE_SERVICE_A2NOC
] = &slv_srvc_aggre2_noc
,
1648 static struct qcom_icc_node
* const camnoc_virt_nodes
[] = {
1649 [MASTER_CAMNOC_HF0_UNCOMP
] = &mas_qxm_camnoc_hf0_uncomp
,
1650 [MASTER_CAMNOC_HF1_UNCOMP
] = &mas_qxm_camnoc_hf1_uncomp
,
1651 [MASTER_CAMNOC_SF_UNCOMP
] = &mas_qxm_camnoc_sf_uncomp
,
1652 [SLAVE_CAMNOC_UNCOMP
] = &slv_qns_camnoc_uncomp
,
1655 static struct qcom_icc_node
* const compute_noc_nodes
[] = {
1656 [MASTER_NPU
] = &mas_qnm_npu
,
1657 [SLAVE_CDSP_MEM_NOC
] = &slv_qns_cdsp_mem_noc
,
1660 static struct qcom_icc_node
* const config_noc_nodes
[] = {
1661 [SNOC_CNOC_MAS
] = &mas_qnm_snoc
,
1662 [SLAVE_A1NOC_CFG
] = &slv_qhs_a1_noc_cfg
,
1663 [SLAVE_A2NOC_CFG
] = &slv_qhs_a2_noc_cfg
,
1664 [SLAVE_AHB2PHY_CENTER
] = &slv_qhs_ahb2phy_refgen_center
,
1665 [SLAVE_AHB2PHY_EAST
] = &slv_qhs_ahb2phy_refgen_east
,
1666 [SLAVE_AHB2PHY_WEST
] = &slv_qhs_ahb2phy_refgen_west
,
1667 [SLAVE_AHB2PHY_SOUTH
] = &slv_qhs_ahb2phy_south
,
1668 [SLAVE_AOP
] = &slv_qhs_aop
,
1669 [SLAVE_AOSS
] = &slv_qhs_aoss
,
1670 [SLAVE_CAMERA_CFG
] = &slv_qhs_camera_cfg
,
1671 [SLAVE_CLK_CTL
] = &slv_qhs_clk_ctl
,
1672 [SLAVE_CDSP_CFG
] = &slv_qhs_compute_dsp
,
1673 [SLAVE_RBCPR_CX_CFG
] = &slv_qhs_cpr_cx
,
1674 [SLAVE_RBCPR_MMCX_CFG
] = &slv_qhs_cpr_mmcx
,
1675 [SLAVE_RBCPR_MX_CFG
] = &slv_qhs_cpr_mx
,
1676 [SLAVE_CRYPTO_0_CFG
] = &slv_qhs_crypto0_cfg
,
1677 [SLAVE_CNOC_DDRSS
] = &slv_qhs_ddrss_cfg
,
1678 [SLAVE_DISPLAY_CFG
] = &slv_qhs_display_cfg
,
1679 [SLAVE_EMAC_CFG
] = &slv_qhs_emac_cfg
,
1680 [SLAVE_GLM
] = &slv_qhs_glm
,
1681 [SLAVE_GRAPHICS_3D_CFG
] = &slv_qhs_gpuss_cfg
,
1682 [SLAVE_IMEM_CFG
] = &slv_qhs_imem_cfg
,
1683 [SLAVE_IPA_CFG
] = &slv_qhs_ipa
,
1684 [SLAVE_CNOC_MNOC_CFG
] = &slv_qhs_mnoc_cfg
,
1685 [SLAVE_NPU_CFG
] = &slv_qhs_npu_cfg
,
1686 [SLAVE_PCIE_0_CFG
] = &slv_qhs_pcie0_cfg
,
1687 [SLAVE_PCIE_1_CFG
] = &slv_qhs_pcie1_cfg
,
1688 [SLAVE_PCIE_2_CFG
] = &slv_qhs_pcie2_cfg
,
1689 [SLAVE_PCIE_3_CFG
] = &slv_qhs_pcie3_cfg
,
1690 [SLAVE_PDM
] = &slv_qhs_pdm
,
1691 [SLAVE_PIMEM_CFG
] = &slv_qhs_pimem_cfg
,
1692 [SLAVE_PRNG
] = &slv_qhs_prng
,
1693 [SLAVE_QDSS_CFG
] = &slv_qhs_qdss_cfg
,
1694 [SLAVE_QSPI_0
] = &slv_qhs_qspi_0
,
1695 [SLAVE_QSPI_1
] = &slv_qhs_qspi_1
,
1696 [SLAVE_QUP_1
] = &slv_qhs_qupv3_east0
,
1697 [SLAVE_QUP_2
] = &slv_qhs_qupv3_east1
,
1698 [SLAVE_QUP_0
] = &slv_qhs_qupv3_west
,
1699 [SLAVE_SDCC_2
] = &slv_qhs_sdc2
,
1700 [SLAVE_SDCC_4
] = &slv_qhs_sdc4
,
1701 [SLAVE_SECURITY
] = &slv_qhs_security
,
1702 [SLAVE_SNOC_CFG
] = &slv_qhs_snoc_cfg
,
1703 [SLAVE_SPSS_CFG
] = &slv_qhs_spss_cfg
,
1704 [SLAVE_TCSR
] = &slv_qhs_tcsr
,
1705 [SLAVE_TLMM_EAST
] = &slv_qhs_tlmm_east
,
1706 [SLAVE_TLMM_SOUTH
] = &slv_qhs_tlmm_south
,
1707 [SLAVE_TLMM_WEST
] = &slv_qhs_tlmm_west
,
1708 [SLAVE_TSIF
] = &slv_qhs_tsif
,
1709 [SLAVE_UFS_CARD_CFG
] = &slv_qhs_ufs_card_cfg
,
1710 [SLAVE_UFS_MEM_0_CFG
] = &slv_qhs_ufs_mem0_cfg
,
1711 [SLAVE_UFS_MEM_1_CFG
] = &slv_qhs_ufs_mem1_cfg
,
1712 [SLAVE_USB3
] = &slv_qhs_usb3_0
,
1713 [SLAVE_USB3_1
] = &slv_qhs_usb3_1
,
1714 [SLAVE_USB3_2
] = &slv_qhs_usb3_2
,
1715 [SLAVE_VENUS_CFG
] = &slv_qhs_venus_cfg
,
1716 [SLAVE_VSENSE_CTRL_CFG
] = &slv_qhs_vsense_ctrl_cfg
,
1717 [SLAVE_SERVICE_CNOC
] = &slv_srvc_cnoc
,
1720 static struct qcom_icc_node
* const dc_noc_nodes
[] = {
1721 [MASTER_CNOC_DC_NOC
] = &mas_qhm_cnoc_dc_noc
,
1722 [SLAVE_GEM_NOC_CFG
] = &slv_qhs_gemnoc
,
1723 [SLAVE_LLCC_CFG
] = &slv_qhs_llcc
,
1726 static struct qcom_icc_node
* const gem_noc_nodes
[] = {
1727 [MASTER_AMPSS_M0
] = &mas_acm_apps
,
1728 [MASTER_GPU_TCU
] = &mas_acm_gpu_tcu
,
1729 [MASTER_SYS_TCU
] = &mas_acm_sys_tcu
,
1730 [MASTER_GEM_NOC_CFG
] = &mas_qhm_gemnoc_cfg
,
1731 [MASTER_COMPUTE_NOC
] = &mas_qnm_cmpnoc
,
1732 [MASTER_GRAPHICS_3D
] = &mas_qnm_gpu
,
1733 [MASTER_MNOC_HF_MEM_NOC
] = &mas_qnm_mnoc_hf
,
1734 [MASTER_MNOC_SF_MEM_NOC
] = &mas_qnm_mnoc_sf
,
1735 [MASTER_GEM_NOC_PCIE_SNOC
] = &mas_qnm_pcie
,
1736 [MASTER_SNOC_GC_MEM_NOC
] = &mas_qnm_snoc_gc
,
1737 [MASTER_SNOC_SF_MEM_NOC
] = &mas_qnm_snoc_sf
,
1738 [MASTER_ECC
] = &mas_qxm_ecc
,
1739 [SLAVE_MSS_PROC_MS_MPU_CFG
] = &slv_qhs_mdsp_ms_mpu_cfg
,
1740 [SLAVE_ECC
] = &slv_qns_ecc
,
1741 [SLAVE_GEM_NOC_SNOC
] = &slv_qns_gem_noc_snoc
,
1742 [SLAVE_LLCC
] = &slv_qns_llcc
,
1743 [SLAVE_SERVICE_GEM_NOC
] = &slv_srvc_gemnoc
,
1744 [SLAVE_SERVICE_GEM_NOC_1
] = &slv_srvc_gemnoc1
,
1747 static struct qcom_icc_node
* const mc_virt_nodes
[] = {
1748 [MASTER_LLCC
] = &mas_llcc_mc
,
1749 [SLAVE_EBI_CH0
] = &slv_ebi
,
1752 static struct qcom_icc_node
* const mmss_noc_nodes
[] = {
1753 [MASTER_CNOC_MNOC_CFG
] = &mas_qhm_mnoc_cfg
,
1754 [MASTER_CAMNOC_HF0
] = &mas_qxm_camnoc_hf0
,
1755 [MASTER_CAMNOC_HF1
] = &mas_qxm_camnoc_hf1
,
1756 [MASTER_CAMNOC_SF
] = &mas_qxm_camnoc_sf
,
1757 [MASTER_MDP_PORT0
] = &mas_qxm_mdp0
,
1758 [MASTER_MDP_PORT1
] = &mas_qxm_mdp1
,
1759 [MASTER_ROTATOR
] = &mas_qxm_rot
,
1760 [MASTER_VIDEO_P0
] = &mas_qxm_venus0
,
1761 [MASTER_VIDEO_P1
] = &mas_qxm_venus1
,
1762 [MASTER_VIDEO_PROC
] = &mas_qxm_venus_arm9
,
1763 [SLAVE_MNOC_SF_MEM_NOC
] = &slv_qns2_mem_noc
,
1764 [SLAVE_MNOC_HF_MEM_NOC
] = &slv_qns_mem_noc_hf
,
1765 [SLAVE_SERVICE_MNOC
] = &slv_srvc_mnoc
,
1768 static struct qcom_icc_node
* const system_noc_nodes
[] = {
1769 [MASTER_SNOC_CFG
] = &mas_qhm_snoc_cfg
,
1770 [A1NOC_SNOC_MAS
] = &mas_qnm_aggre1_noc
,
1771 [A2NOC_SNOC_MAS
] = &mas_qnm_aggre2_noc
,
1772 [MASTER_GEM_NOC_SNOC
] = &mas_qnm_gemnoc
,
1773 [MASTER_PIMEM
] = &mas_qxm_pimem
,
1774 [MASTER_GIC
] = &mas_xm_gic
,
1775 [SLAVE_APPSS
] = &slv_qhs_apss
,
1776 [SNOC_CNOC_SLV
] = &slv_qns_cnoc
,
1777 [SLAVE_SNOC_GEM_NOC_GC
] = &slv_qns_gemnoc_gc
,
1778 [SLAVE_SNOC_GEM_NOC_SF
] = &slv_qns_gemnoc_sf
,
1779 [SLAVE_OCIMEM
] = &slv_qxs_imem
,
1780 [SLAVE_PIMEM
] = &slv_qxs_pimem
,
1781 [SLAVE_SERVICE_SNOC
] = &slv_srvc_snoc
,
1782 [SLAVE_QDSS_STM
] = &slv_xs_qdss_stm
,
1783 [SLAVE_TCU
] = &slv_xs_sys_tcu_cfg
,
1786 static const struct qcom_icc_desc sc8180x_aggre1_noc
= {
1787 .nodes
= aggre1_noc_nodes
,
1788 .num_nodes
= ARRAY_SIZE(aggre1_noc_nodes
),
1789 .bcms
= aggre1_noc_bcms
,
1790 .num_bcms
= ARRAY_SIZE(aggre1_noc_bcms
),
1793 static const struct qcom_icc_desc sc8180x_aggre2_noc
= {
1794 .nodes
= aggre2_noc_nodes
,
1795 .num_nodes
= ARRAY_SIZE(aggre2_noc_nodes
),
1796 .bcms
= aggre2_noc_bcms
,
1797 .num_bcms
= ARRAY_SIZE(aggre2_noc_bcms
),
1800 static const struct qcom_icc_desc sc8180x_camnoc_virt
= {
1801 .nodes
= camnoc_virt_nodes
,
1802 .num_nodes
= ARRAY_SIZE(camnoc_virt_nodes
),
1803 .bcms
= camnoc_virt_bcms
,
1804 .num_bcms
= ARRAY_SIZE(camnoc_virt_bcms
),
1807 static const struct qcom_icc_desc sc8180x_compute_noc
= {
1808 .nodes
= compute_noc_nodes
,
1809 .num_nodes
= ARRAY_SIZE(compute_noc_nodes
),
1810 .bcms
= compute_noc_bcms
,
1811 .num_bcms
= ARRAY_SIZE(compute_noc_bcms
),
1814 static const struct qcom_icc_desc sc8180x_config_noc
= {
1815 .nodes
= config_noc_nodes
,
1816 .num_nodes
= ARRAY_SIZE(config_noc_nodes
),
1817 .bcms
= config_noc_bcms
,
1818 .num_bcms
= ARRAY_SIZE(config_noc_bcms
),
1821 static const struct qcom_icc_desc sc8180x_dc_noc
= {
1822 .nodes
= dc_noc_nodes
,
1823 .num_nodes
= ARRAY_SIZE(dc_noc_nodes
),
1826 static const struct qcom_icc_desc sc8180x_gem_noc
= {
1827 .nodes
= gem_noc_nodes
,
1828 .num_nodes
= ARRAY_SIZE(gem_noc_nodes
),
1829 .bcms
= gem_noc_bcms
,
1830 .num_bcms
= ARRAY_SIZE(gem_noc_bcms
),
1833 static const struct qcom_icc_desc sc8180x_mc_virt
= {
1834 .nodes
= mc_virt_nodes
,
1835 .num_nodes
= ARRAY_SIZE(mc_virt_nodes
),
1836 .bcms
= mc_virt_bcms
,
1837 .num_bcms
= ARRAY_SIZE(mc_virt_bcms
),
1840 static const struct qcom_icc_desc sc8180x_mmss_noc
= {
1841 .nodes
= mmss_noc_nodes
,
1842 .num_nodes
= ARRAY_SIZE(mmss_noc_nodes
),
1843 .bcms
= mmss_noc_bcms
,
1844 .num_bcms
= ARRAY_SIZE(mmss_noc_bcms
),
1847 static const struct qcom_icc_desc sc8180x_system_noc
= {
1848 .nodes
= system_noc_nodes
,
1849 .num_nodes
= ARRAY_SIZE(system_noc_nodes
),
1850 .bcms
= system_noc_bcms
,
1851 .num_bcms
= ARRAY_SIZE(system_noc_bcms
),
1854 static struct qcom_icc_bcm
* const qup_virt_bcms
[] = {
1858 static struct qcom_icc_node
* const qup_virt_nodes
[] = {
1859 [MASTER_QUP_CORE_0
] = &mas_qup_core_0
,
1860 [MASTER_QUP_CORE_1
] = &mas_qup_core_1
,
1861 [MASTER_QUP_CORE_2
] = &mas_qup_core_2
,
1862 [SLAVE_QUP_CORE_0
] = &slv_qup_core_0
,
1863 [SLAVE_QUP_CORE_1
] = &slv_qup_core_1
,
1864 [SLAVE_QUP_CORE_2
] = &slv_qup_core_2
,
1867 static const struct qcom_icc_desc sc8180x_qup_virt
= {
1868 .nodes
= qup_virt_nodes
,
1869 .num_nodes
= ARRAY_SIZE(qup_virt_nodes
),
1870 .bcms
= qup_virt_bcms
,
1871 .num_bcms
= ARRAY_SIZE(qup_virt_bcms
),
1874 static const struct of_device_id qnoc_of_match
[] = {
1875 { .compatible
= "qcom,sc8180x-aggre1-noc", .data
= &sc8180x_aggre1_noc
},
1876 { .compatible
= "qcom,sc8180x-aggre2-noc", .data
= &sc8180x_aggre2_noc
},
1877 { .compatible
= "qcom,sc8180x-camnoc-virt", .data
= &sc8180x_camnoc_virt
},
1878 { .compatible
= "qcom,sc8180x-compute-noc", .data
= &sc8180x_compute_noc
, },
1879 { .compatible
= "qcom,sc8180x-config-noc", .data
= &sc8180x_config_noc
},
1880 { .compatible
= "qcom,sc8180x-dc-noc", .data
= &sc8180x_dc_noc
},
1881 { .compatible
= "qcom,sc8180x-gem-noc", .data
= &sc8180x_gem_noc
},
1882 { .compatible
= "qcom,sc8180x-mc-virt", .data
= &sc8180x_mc_virt
},
1883 { .compatible
= "qcom,sc8180x-mmss-noc", .data
= &sc8180x_mmss_noc
},
1884 { .compatible
= "qcom,sc8180x-qup-virt", .data
= &sc8180x_qup_virt
},
1885 { .compatible
= "qcom,sc8180x-system-noc", .data
= &sc8180x_system_noc
},
1888 MODULE_DEVICE_TABLE(of
, qnoc_of_match
);
1890 static struct platform_driver qnoc_driver
= {
1891 .probe
= qcom_icc_rpmh_probe
,
1892 .remove
= qcom_icc_rpmh_remove
,
1894 .name
= "qnoc-sc8180x",
1895 .of_match_table
= qnoc_of_match
,
1896 .sync_state
= icc_sync_state
,
1899 module_platform_driver(qnoc_driver
);
1901 MODULE_DESCRIPTION("Qualcomm sc8180x NoC driver");
1902 MODULE_LICENSE("GPL v2");