1 // SPDX-License-Identifier: GPL-2.0-only
3 * Based on data from msm8937-bus.dtsi in Qualcomm's msm-3.18 release:
4 * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
7 #include <linux/device.h>
8 #include <linux/interconnect-provider.h>
9 #include <linux/mod_devicetable.h>
10 #include <linux/module.h>
11 #include <linux/platform_device.h>
12 #include <linux/regmap.h>
14 #include <dt-bindings/interconnect/qcom,msm8937.h>
19 QNOC_MASTER_AMPSS_M0
= 1,
20 QNOC_MASTER_GRAPHICS_3D
,
29 QNOC_MASTER_XM_USB_HS1
,
30 QNOC_MASTER_CRYPTO_CORE0
,
37 QNOC_MASTER_MDP_PORT0
,
65 QNOC_SLAVE_SPDM_WRAPPER
,
70 QNOC_SLAVE_MESSAGE_RAM
,
71 QNOC_SLAVE_CAMERA_CFG
,
72 QNOC_SLAVE_DISPLAY_CFG
,
74 QNOC_SLAVE_GRAPHICS_3D_CFG
,
80 QNOC_SLAVE_CRYPTO_0_CFG
,
97 static const u16 mas_apps_proc_links
[] = {
102 static struct qcom_icc_node mas_apps_proc
= {
103 .name
= "mas_apps_proc",
104 .id
= QNOC_MASTER_AMPSS_M0
,
108 .qos
.ap_owned
= true,
109 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
113 .num_links
= ARRAY_SIZE(mas_apps_proc_links
),
114 .links
= mas_apps_proc_links
,
117 static const u16 mas_oxili_links
[] = {
122 static struct qcom_icc_node mas_oxili
= {
124 .id
= QNOC_MASTER_GRAPHICS_3D
,
128 .qos
.ap_owned
= true,
129 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
133 .num_links
= ARRAY_SIZE(mas_oxili_links
),
134 .links
= mas_oxili_links
,
137 static const u16 mas_snoc_bimc_0_links
[] = {
142 static struct qcom_icc_node mas_snoc_bimc_0
= {
143 .name
= "mas_snoc_bimc_0",
144 .id
= QNOC_SNOC_BIMC_0_MAS
,
148 .qos
.ap_owned
= true,
149 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
153 .num_links
= ARRAY_SIZE(mas_snoc_bimc_0_links
),
154 .links
= mas_snoc_bimc_0_links
,
157 static const u16 mas_snoc_bimc_2_links
[] = {
162 static struct qcom_icc_node mas_snoc_bimc_2
= {
163 .name
= "mas_snoc_bimc_2",
164 .id
= QNOC_SNOC_BIMC_2_MAS
,
168 .qos
.ap_owned
= true,
169 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
173 .num_links
= ARRAY_SIZE(mas_snoc_bimc_2_links
),
174 .links
= mas_snoc_bimc_2_links
,
177 static const u16 mas_snoc_bimc_1_links
[] = {
181 static struct qcom_icc_node mas_snoc_bimc_1
= {
182 .name
= "mas_snoc_bimc_1",
183 .id
= QNOC_SNOC_BIMC_1_MAS
,
187 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
191 .num_links
= ARRAY_SIZE(mas_snoc_bimc_1_links
),
192 .links
= mas_snoc_bimc_1_links
,
195 static const u16 mas_tcu_0_links
[] = {
200 static struct qcom_icc_node mas_tcu_0
= {
202 .id
= QNOC_MASTER_TCU_0
,
206 .qos
.ap_owned
= true,
207 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
211 .num_links
= ARRAY_SIZE(mas_tcu_0_links
),
212 .links
= mas_tcu_0_links
,
215 static const u16 mas_spdm_links
[] = {
219 static struct qcom_icc_node mas_spdm
= {
221 .id
= QNOC_MASTER_SPDM
,
225 .qos
.ap_owned
= true,
226 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
227 .num_links
= ARRAY_SIZE(mas_spdm_links
),
228 .links
= mas_spdm_links
,
231 static const u16 mas_blsp_1_links
[] = {
235 static struct qcom_icc_node mas_blsp_1
= {
236 .name
= "mas_blsp_1",
237 .id
= QNOC_MASTER_BLSP_1
,
241 .num_links
= ARRAY_SIZE(mas_blsp_1_links
),
242 .links
= mas_blsp_1_links
,
245 static const u16 mas_blsp_2_links
[] = {
249 static struct qcom_icc_node mas_blsp_2
= {
250 .name
= "mas_blsp_2",
251 .id
= QNOC_MASTER_BLSP_2
,
255 .num_links
= ARRAY_SIZE(mas_blsp_2_links
),
256 .links
= mas_blsp_2_links
,
259 static const u16 mas_usb_hs1_links
[] = {
263 static struct qcom_icc_node mas_usb_hs1
= {
264 .name
= "mas_usb_hs1",
265 .id
= QNOC_MASTER_USB_HS
,
269 .qos
.ap_owned
= true,
270 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
274 .num_links
= ARRAY_SIZE(mas_usb_hs1_links
),
275 .links
= mas_usb_hs1_links
,
278 static const u16 mas_xi_usb_hs1_links
[] = {
282 static struct qcom_icc_node mas_xi_usb_hs1
= {
283 .name
= "mas_xi_usb_hs1",
284 .id
= QNOC_MASTER_XM_USB_HS1
,
288 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
292 .num_links
= ARRAY_SIZE(mas_xi_usb_hs1_links
),
293 .links
= mas_xi_usb_hs1_links
,
296 static const u16 mas_crypto_links
[] = {
300 static struct qcom_icc_node mas_crypto
= {
301 .name
= "mas_crypto",
302 .id
= QNOC_MASTER_CRYPTO_CORE0
,
306 .qos
.ap_owned
= true,
307 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
311 .num_links
= ARRAY_SIZE(mas_crypto_links
),
312 .links
= mas_crypto_links
,
315 static const u16 mas_sdcc_1_links
[] = {
319 static struct qcom_icc_node mas_sdcc_1
= {
320 .name
= "mas_sdcc_1",
321 .id
= QNOC_MASTER_SDCC_1
,
325 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
329 .num_links
= ARRAY_SIZE(mas_sdcc_1_links
),
330 .links
= mas_sdcc_1_links
,
333 static const u16 mas_sdcc_2_links
[] = {
337 static struct qcom_icc_node mas_sdcc_2
= {
338 .name
= "mas_sdcc_2",
339 .id
= QNOC_MASTER_SDCC_2
,
343 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
347 .num_links
= ARRAY_SIZE(mas_sdcc_2_links
),
348 .links
= mas_sdcc_2_links
,
351 static const u16 mas_snoc_pcnoc_links
[] = {
357 static struct qcom_icc_node mas_snoc_pcnoc
= {
358 .name
= "mas_snoc_pcnoc",
359 .id
= QNOC_SNOC_PNOC_MAS
,
363 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
367 .num_links
= ARRAY_SIZE(mas_snoc_pcnoc_links
),
368 .links
= mas_snoc_pcnoc_links
,
371 static const u16 mas_qdss_bam_links
[] = {
375 static struct qcom_icc_node mas_qdss_bam
= {
376 .name
= "mas_qdss_bam",
377 .id
= QNOC_MASTER_QDSS_BAM
,
381 .qos
.ap_owned
= true,
382 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
386 .num_links
= ARRAY_SIZE(mas_qdss_bam_links
),
387 .links
= mas_qdss_bam_links
,
390 static const u16 mas_bimc_snoc_links
[] = {
396 static struct qcom_icc_node mas_bimc_snoc
= {
397 .name
= "mas_bimc_snoc",
398 .id
= QNOC_BIMC_SNOC_MAS
,
402 .num_links
= ARRAY_SIZE(mas_bimc_snoc_links
),
403 .links
= mas_bimc_snoc_links
,
406 static const u16 mas_jpeg_links
[] = {
410 static struct qcom_icc_node mas_jpeg
= {
412 .id
= QNOC_MASTER_JPEG
,
416 .qos
.ap_owned
= true,
417 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
421 .num_links
= ARRAY_SIZE(mas_jpeg_links
),
422 .links
= mas_jpeg_links
,
425 static const u16 mas_mdp_links
[] = {
429 static struct qcom_icc_node mas_mdp
= {
431 .id
= QNOC_MASTER_MDP_PORT0
,
435 .qos
.ap_owned
= true,
436 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
440 .num_links
= ARRAY_SIZE(mas_mdp_links
),
441 .links
= mas_mdp_links
,
444 static const u16 mas_pcnoc_snoc_links
[] = {
450 static struct qcom_icc_node mas_pcnoc_snoc
= {
451 .name
= "mas_pcnoc_snoc",
452 .id
= QNOC_PNOC_SNOC_MAS
,
456 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
460 .num_links
= ARRAY_SIZE(mas_pcnoc_snoc_links
),
461 .links
= mas_pcnoc_snoc_links
,
464 static const u16 mas_venus_links
[] = {
468 static struct qcom_icc_node mas_venus
= {
470 .id
= QNOC_MASTER_VIDEO_P0
,
474 .qos
.ap_owned
= true,
475 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
479 .num_links
= ARRAY_SIZE(mas_venus_links
),
480 .links
= mas_venus_links
,
483 static const u16 mas_vfe0_links
[] = {
487 static struct qcom_icc_node mas_vfe0
= {
489 .id
= QNOC_MASTER_VFE
,
493 .qos
.ap_owned
= true,
494 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
498 .num_links
= ARRAY_SIZE(mas_vfe0_links
),
499 .links
= mas_vfe0_links
,
502 static const u16 mas_vfe1_links
[] = {
506 static struct qcom_icc_node mas_vfe1
= {
508 .id
= QNOC_MASTER_VFE1
,
512 .qos
.ap_owned
= true,
513 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
517 .num_links
= ARRAY_SIZE(mas_vfe1_links
),
518 .links
= mas_vfe1_links
,
521 static const u16 mas_cpp_links
[] = {
525 static struct qcom_icc_node mas_cpp
= {
527 .id
= QNOC_MASTER_CPP
,
531 .qos
.ap_owned
= true,
532 .qos
.qos_mode
= NOC_QOS_MODE_BYPASS
,
536 .num_links
= ARRAY_SIZE(mas_cpp_links
),
537 .links
= mas_cpp_links
,
540 static const u16 mas_qdss_etr_links
[] = {
544 static struct qcom_icc_node mas_qdss_etr
= {
545 .name
= "mas_qdss_etr",
546 .id
= QNOC_MASTER_QDSS_ETR
,
550 .qos
.ap_owned
= true,
551 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
555 .num_links
= ARRAY_SIZE(mas_qdss_etr_links
),
556 .links
= mas_qdss_etr_links
,
559 static const u16 pcnoc_m_0_links
[] = {
563 static struct qcom_icc_node pcnoc_m_0
= {
569 .qos
.ap_owned
= true,
570 .qos
.qos_mode
= NOC_QOS_MODE_FIXED
,
574 .num_links
= ARRAY_SIZE(pcnoc_m_0_links
),
575 .links
= pcnoc_m_0_links
,
578 static const u16 pcnoc_m_1_links
[] = {
582 static struct qcom_icc_node pcnoc_m_1
= {
588 .num_links
= ARRAY_SIZE(pcnoc_m_1_links
),
589 .links
= pcnoc_m_1_links
,
592 static const u16 pcnoc_int_0_links
[] = {
599 static struct qcom_icc_node pcnoc_int_0
= {
600 .name
= "pcnoc_int_0",
601 .id
= QNOC_PNOC_INT_0
,
605 .num_links
= ARRAY_SIZE(pcnoc_int_0_links
),
606 .links
= pcnoc_int_0_links
,
609 static const u16 pcnoc_int_1_links
[] = {
616 static struct qcom_icc_node pcnoc_int_1
= {
617 .name
= "pcnoc_int_1",
618 .id
= QNOC_PNOC_INT_1
,
622 .num_links
= ARRAY_SIZE(pcnoc_int_1_links
),
623 .links
= pcnoc_int_1_links
,
626 static const u16 pcnoc_int_2_links
[] = {
633 static struct qcom_icc_node pcnoc_int_2
= {
634 .name
= "pcnoc_int_2",
635 .id
= QNOC_PNOC_INT_2
,
639 .num_links
= ARRAY_SIZE(pcnoc_int_2_links
),
640 .links
= pcnoc_int_2_links
,
643 static const u16 pcnoc_int_3_links
[] = {
647 QNOC_SLAVE_GRAPHICS_3D_CFG
,
651 static struct qcom_icc_node pcnoc_int_3
= {
652 .name
= "pcnoc_int_3",
653 .id
= QNOC_PNOC_INT_3
,
657 .num_links
= ARRAY_SIZE(pcnoc_int_3_links
),
658 .links
= pcnoc_int_3_links
,
661 static const u16 pcnoc_s_0_links
[] = {
662 QNOC_SLAVE_SPDM_WRAPPER
,
668 static struct qcom_icc_node pcnoc_s_0
= {
670 .id
= QNOC_PNOC_SLV_0
,
674 .num_links
= ARRAY_SIZE(pcnoc_s_0_links
),
675 .links
= pcnoc_s_0_links
,
678 static const u16 pcnoc_s_1_links
[] = {
682 static struct qcom_icc_node pcnoc_s_1
= {
684 .id
= QNOC_PNOC_SLV_1
,
688 .num_links
= ARRAY_SIZE(pcnoc_s_1_links
),
689 .links
= pcnoc_s_1_links
,
692 static const u16 pcnoc_s_2_links
[] = {
696 static struct qcom_icc_node pcnoc_s_2
= {
698 .id
= QNOC_PNOC_SLV_2
,
702 .num_links
= ARRAY_SIZE(pcnoc_s_2_links
),
703 .links
= pcnoc_s_2_links
,
706 static const u16 pcnoc_s_3_links
[] = {
707 QNOC_SLAVE_MESSAGE_RAM
710 static struct qcom_icc_node pcnoc_s_3
= {
712 .id
= QNOC_PNOC_SLV_3
,
716 .num_links
= ARRAY_SIZE(pcnoc_s_3_links
),
717 .links
= pcnoc_s_3_links
,
720 static const u16 pcnoc_s_4_links
[] = {
721 QNOC_SLAVE_CAMERA_CFG
,
722 QNOC_SLAVE_DISPLAY_CFG
,
726 static struct qcom_icc_node pcnoc_s_4
= {
728 .id
= QNOC_PNOC_SLV_4
,
732 .qos
.ap_owned
= true,
733 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
734 .num_links
= ARRAY_SIZE(pcnoc_s_4_links
),
735 .links
= pcnoc_s_4_links
,
738 static const u16 pcnoc_s_6_links
[] = {
744 static struct qcom_icc_node pcnoc_s_6
= {
746 .id
= QNOC_PNOC_SLV_6
,
750 .num_links
= ARRAY_SIZE(pcnoc_s_6_links
),
751 .links
= pcnoc_s_6_links
,
754 static const u16 pcnoc_s_7_links
[] = {
759 static struct qcom_icc_node pcnoc_s_7
= {
761 .id
= QNOC_PNOC_SLV_7
,
765 .num_links
= ARRAY_SIZE(pcnoc_s_7_links
),
766 .links
= pcnoc_s_7_links
,
769 static const u16 pcnoc_s_8_links
[] = {
771 QNOC_SLAVE_CRYPTO_0_CFG
774 static struct qcom_icc_node pcnoc_s_8
= {
776 .id
= QNOC_PNOC_SLV_8
,
780 .num_links
= ARRAY_SIZE(pcnoc_s_8_links
),
781 .links
= pcnoc_s_8_links
,
784 static const u16 qdss_int_links
[] = {
789 static struct qcom_icc_node qdss_int
= {
791 .id
= QNOC_SNOC_QDSS_INT
,
795 .qos
.ap_owned
= true,
796 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
797 .num_links
= ARRAY_SIZE(qdss_int_links
),
798 .links
= qdss_int_links
,
801 static const u16 snoc_int_0_links
[] = {
807 static struct qcom_icc_node snoc_int_0
= {
808 .name
= "snoc_int_0",
809 .id
= QNOC_SNOC_INT_0
,
813 .qos
.ap_owned
= true,
814 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
815 .num_links
= ARRAY_SIZE(snoc_int_0_links
),
816 .links
= snoc_int_0_links
,
819 static const u16 snoc_int_1_links
[] = {
825 static struct qcom_icc_node snoc_int_1
= {
826 .name
= "snoc_int_1",
827 .id
= QNOC_SNOC_INT_1
,
831 .num_links
= ARRAY_SIZE(snoc_int_1_links
),
832 .links
= snoc_int_1_links
,
835 static const u16 snoc_int_2_links
[] = {
840 static struct qcom_icc_node snoc_int_2
= {
841 .name
= "snoc_int_2",
842 .id
= QNOC_SNOC_INT_2
,
846 .qos
.ap_owned
= true,
847 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
848 .num_links
= ARRAY_SIZE(snoc_int_2_links
),
849 .links
= snoc_int_2_links
,
852 static struct qcom_icc_node slv_ebi
= {
854 .id
= QNOC_SLAVE_EBI_CH0
,
860 static const u16 slv_bimc_snoc_links
[] = {
864 static struct qcom_icc_node slv_bimc_snoc
= {
865 .name
= "slv_bimc_snoc",
866 .id
= QNOC_BIMC_SNOC_SLV
,
870 .num_links
= ARRAY_SIZE(slv_bimc_snoc_links
),
871 .links
= slv_bimc_snoc_links
,
874 static struct qcom_icc_node slv_sdcc_2
= {
875 .name
= "slv_sdcc_2",
876 .id
= QNOC_SLAVE_SDCC_2
,
882 static struct qcom_icc_node slv_spdm
= {
884 .id
= QNOC_SLAVE_SPDM_WRAPPER
,
888 .qos
.ap_owned
= true,
889 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
892 static struct qcom_icc_node slv_pdm
= {
894 .id
= QNOC_SLAVE_PDM
,
900 static struct qcom_icc_node slv_prng
= {
902 .id
= QNOC_SLAVE_PRNG
,
908 static struct qcom_icc_node slv_tcsr
= {
910 .id
= QNOC_SLAVE_TCSR
,
916 static struct qcom_icc_node slv_snoc_cfg
= {
917 .name
= "slv_snoc_cfg",
918 .id
= QNOC_SLAVE_SNOC_CFG
,
924 static struct qcom_icc_node slv_message_ram
= {
925 .name
= "slv_message_ram",
926 .id
= QNOC_SLAVE_MESSAGE_RAM
,
932 static struct qcom_icc_node slv_camera_ss_cfg
= {
933 .name
= "slv_camera_ss_cfg",
934 .id
= QNOC_SLAVE_CAMERA_CFG
,
938 .qos
.ap_owned
= true,
939 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
942 static struct qcom_icc_node slv_disp_ss_cfg
= {
943 .name
= "slv_disp_ss_cfg",
944 .id
= QNOC_SLAVE_DISPLAY_CFG
,
948 .qos
.ap_owned
= true,
949 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
952 static struct qcom_icc_node slv_venus_cfg
= {
953 .name
= "slv_venus_cfg",
954 .id
= QNOC_SLAVE_VENUS_CFG
,
958 .qos
.ap_owned
= true,
959 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
962 static struct qcom_icc_node slv_gpu_cfg
= {
963 .name
= "slv_gpu_cfg",
964 .id
= QNOC_SLAVE_GRAPHICS_3D_CFG
,
968 .qos
.ap_owned
= true,
969 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
972 static struct qcom_icc_node slv_tlmm
= {
974 .id
= QNOC_SLAVE_TLMM
,
980 static struct qcom_icc_node slv_blsp_1
= {
981 .name
= "slv_blsp_1",
982 .id
= QNOC_SLAVE_BLSP_1
,
988 static struct qcom_icc_node slv_blsp_2
= {
989 .name
= "slv_blsp_2",
990 .id
= QNOC_SLAVE_BLSP_2
,
996 static struct qcom_icc_node slv_pmic_arb
= {
997 .name
= "slv_pmic_arb",
998 .id
= QNOC_SLAVE_PMIC_ARB
,
1004 static struct qcom_icc_node slv_sdcc_1
= {
1005 .name
= "slv_sdcc_1",
1006 .id
= QNOC_SLAVE_SDCC_1
,
1012 static struct qcom_icc_node slv_crypto_0_cfg
= {
1013 .name
= "slv_crypto_0_cfg",
1014 .id
= QNOC_SLAVE_CRYPTO_0_CFG
,
1020 static struct qcom_icc_node slv_usb_hs
= {
1021 .name
= "slv_usb_hs",
1022 .id
= QNOC_SLAVE_USB_HS
,
1028 static struct qcom_icc_node slv_tcu
= {
1030 .id
= QNOC_SLAVE_TCU
,
1034 .qos
.ap_owned
= true,
1035 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1038 static const u16 slv_pcnoc_snoc_links
[] = {
1042 static struct qcom_icc_node slv_pcnoc_snoc
= {
1043 .name
= "slv_pcnoc_snoc",
1044 .id
= QNOC_PNOC_SNOC_SLV
,
1048 .num_links
= ARRAY_SIZE(slv_pcnoc_snoc_links
),
1049 .links
= slv_pcnoc_snoc_links
,
1052 static struct qcom_icc_node slv_kpss_ahb
= {
1053 .name
= "slv_kpss_ahb",
1054 .id
= QNOC_SLAVE_APPSS
,
1058 .qos
.ap_owned
= true,
1059 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1062 static struct qcom_icc_node slv_wcss
= {
1064 .id
= QNOC_SLAVE_WCSS
,
1068 .qos
.ap_owned
= true,
1069 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1072 static const u16 slv_snoc_bimc_0_links
[] = {
1073 QNOC_SNOC_BIMC_0_MAS
1076 static struct qcom_icc_node slv_snoc_bimc_0
= {
1077 .name
= "slv_snoc_bimc_0",
1078 .id
= QNOC_SNOC_BIMC_0_SLV
,
1082 .qos
.ap_owned
= true,
1083 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1084 .num_links
= ARRAY_SIZE(slv_snoc_bimc_0_links
),
1085 .links
= slv_snoc_bimc_0_links
,
1088 static const u16 slv_snoc_bimc_1_links
[] = {
1089 QNOC_SNOC_BIMC_1_MAS
1092 static struct qcom_icc_node slv_snoc_bimc_1
= {
1093 .name
= "slv_snoc_bimc_1",
1094 .id
= QNOC_SNOC_BIMC_1_SLV
,
1098 .num_links
= ARRAY_SIZE(slv_snoc_bimc_1_links
),
1099 .links
= slv_snoc_bimc_1_links
,
1102 static const u16 slv_snoc_bimc_2_links
[] = {
1103 QNOC_SNOC_BIMC_2_MAS
1106 static struct qcom_icc_node slv_snoc_bimc_2
= {
1107 .name
= "slv_snoc_bimc_2",
1108 .id
= QNOC_SNOC_BIMC_2_SLV
,
1112 .qos
.ap_owned
= true,
1113 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1114 .num_links
= ARRAY_SIZE(slv_snoc_bimc_2_links
),
1115 .links
= slv_snoc_bimc_2_links
,
1118 static struct qcom_icc_node slv_imem
= {
1120 .id
= QNOC_SLAVE_OCIMEM
,
1126 static const u16 slv_snoc_pcnoc_links
[] = {
1130 static struct qcom_icc_node slv_snoc_pcnoc
= {
1131 .name
= "slv_snoc_pcnoc",
1132 .id
= QNOC_SNOC_PNOC_SLV
,
1136 .num_links
= ARRAY_SIZE(slv_snoc_pcnoc_links
),
1137 .links
= slv_snoc_pcnoc_links
,
1140 static struct qcom_icc_node slv_qdss_stm
= {
1141 .name
= "slv_qdss_stm",
1142 .id
= QNOC_SLAVE_QDSS_STM
,
1148 static struct qcom_icc_node slv_cats_0
= {
1149 .name
= "slv_cats_0",
1150 .id
= QNOC_SLAVE_CATS_128
,
1154 .qos
.ap_owned
= true,
1155 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1158 static struct qcom_icc_node slv_cats_1
= {
1159 .name
= "slv_cats_1",
1160 .id
= QNOC_SLAVE_OCMEM_64
,
1164 .qos
.ap_owned
= true,
1165 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1168 static struct qcom_icc_node slv_lpass
= {
1169 .name
= "slv_lpass",
1170 .id
= QNOC_SLAVE_LPASS
,
1174 .qos
.ap_owned
= true,
1175 .qos
.qos_mode
= NOC_QOS_MODE_INVALID
,
1178 static struct qcom_icc_node
* const msm8937_bimc_nodes
[] = {
1179 [MAS_APPS_PROC
] = &mas_apps_proc
,
1180 [MAS_OXILI
] = &mas_oxili
,
1181 [MAS_SNOC_BIMC_0
] = &mas_snoc_bimc_0
,
1182 [MAS_SNOC_BIMC_2
] = &mas_snoc_bimc_2
,
1183 [MAS_SNOC_BIMC_1
] = &mas_snoc_bimc_1
,
1184 [MAS_TCU_0
] = &mas_tcu_0
,
1185 [SLV_EBI
] = &slv_ebi
,
1186 [SLV_BIMC_SNOC
] = &slv_bimc_snoc
,
1189 static const struct regmap_config msm8937_bimc_regmap_config
= {
1193 .max_register
= 0x5A000,
1197 static const struct qcom_icc_desc msm8937_bimc
= {
1198 .type
= QCOM_ICC_BIMC
,
1199 .nodes
= msm8937_bimc_nodes
,
1200 .num_nodes
= ARRAY_SIZE(msm8937_bimc_nodes
),
1201 .bus_clk_desc
= &bimc_clk
,
1202 .regmap_cfg
= &msm8937_bimc_regmap_config
,
1203 .qos_offset
= 0x8000,
1207 static struct qcom_icc_node
* const msm8937_pcnoc_nodes
[] = {
1208 [MAS_SPDM
] = &mas_spdm
,
1209 [MAS_BLSP_1
] = &mas_blsp_1
,
1210 [MAS_BLSP_2
] = &mas_blsp_2
,
1211 [MAS_USB_HS1
] = &mas_usb_hs1
,
1212 [MAS_XI_USB_HS1
] = &mas_xi_usb_hs1
,
1213 [MAS_CRYPTO
] = &mas_crypto
,
1214 [MAS_SDCC_1
] = &mas_sdcc_1
,
1215 [MAS_SDCC_2
] = &mas_sdcc_2
,
1216 [MAS_SNOC_PCNOC
] = &mas_snoc_pcnoc
,
1217 [PCNOC_M_0
] = &pcnoc_m_0
,
1218 [PCNOC_M_1
] = &pcnoc_m_1
,
1219 [PCNOC_INT_0
] = &pcnoc_int_0
,
1220 [PCNOC_INT_1
] = &pcnoc_int_1
,
1221 [PCNOC_INT_2
] = &pcnoc_int_2
,
1222 [PCNOC_INT_3
] = &pcnoc_int_3
,
1223 [PCNOC_S_0
] = &pcnoc_s_0
,
1224 [PCNOC_S_1
] = &pcnoc_s_1
,
1225 [PCNOC_S_2
] = &pcnoc_s_2
,
1226 [PCNOC_S_3
] = &pcnoc_s_3
,
1227 [PCNOC_S_4
] = &pcnoc_s_4
,
1228 [PCNOC_S_6
] = &pcnoc_s_6
,
1229 [PCNOC_S_7
] = &pcnoc_s_7
,
1230 [PCNOC_S_8
] = &pcnoc_s_8
,
1231 [SLV_SDCC_2
] = &slv_sdcc_2
,
1232 [SLV_SPDM
] = &slv_spdm
,
1233 [SLV_PDM
] = &slv_pdm
,
1234 [SLV_PRNG
] = &slv_prng
,
1235 [SLV_TCSR
] = &slv_tcsr
,
1236 [SLV_SNOC_CFG
] = &slv_snoc_cfg
,
1237 [SLV_MESSAGE_RAM
] = &slv_message_ram
,
1238 [SLV_CAMERA_SS_CFG
] = &slv_camera_ss_cfg
,
1239 [SLV_DISP_SS_CFG
] = &slv_disp_ss_cfg
,
1240 [SLV_VENUS_CFG
] = &slv_venus_cfg
,
1241 [SLV_GPU_CFG
] = &slv_gpu_cfg
,
1242 [SLV_TLMM
] = &slv_tlmm
,
1243 [SLV_BLSP_1
] = &slv_blsp_1
,
1244 [SLV_BLSP_2
] = &slv_blsp_2
,
1245 [SLV_PMIC_ARB
] = &slv_pmic_arb
,
1246 [SLV_SDCC_1
] = &slv_sdcc_1
,
1247 [SLV_CRYPTO_0_CFG
] = &slv_crypto_0_cfg
,
1248 [SLV_USB_HS
] = &slv_usb_hs
,
1249 [SLV_TCU
] = &slv_tcu
,
1250 [SLV_PCNOC_SNOC
] = &slv_pcnoc_snoc
,
1253 static const struct regmap_config msm8937_pcnoc_regmap_config
= {
1257 .max_register
= 0x13080,
1261 static const struct qcom_icc_desc msm8937_pcnoc
= {
1262 .type
= QCOM_ICC_NOC
,
1263 .nodes
= msm8937_pcnoc_nodes
,
1264 .num_nodes
= ARRAY_SIZE(msm8937_pcnoc_nodes
),
1265 .bus_clk_desc
= &bus_0_clk
,
1266 .qos_offset
= 0x7000,
1268 .regmap_cfg
= &msm8937_pcnoc_regmap_config
,
1271 static struct qcom_icc_node
* const msm8937_snoc_nodes
[] = {
1272 [MAS_QDSS_BAM
] = &mas_qdss_bam
,
1273 [MAS_BIMC_SNOC
] = &mas_bimc_snoc
,
1274 [MAS_PCNOC_SNOC
] = &mas_pcnoc_snoc
,
1275 [MAS_QDSS_ETR
] = &mas_qdss_etr
,
1276 [QDSS_INT
] = &qdss_int
,
1277 [SNOC_INT_0
] = &snoc_int_0
,
1278 [SNOC_INT_1
] = &snoc_int_1
,
1279 [SNOC_INT_2
] = &snoc_int_2
,
1280 [SLV_KPSS_AHB
] = &slv_kpss_ahb
,
1281 [SLV_WCSS
] = &slv_wcss
,
1282 [SLV_SNOC_BIMC_1
] = &slv_snoc_bimc_1
,
1283 [SLV_IMEM
] = &slv_imem
,
1284 [SLV_SNOC_PCNOC
] = &slv_snoc_pcnoc
,
1285 [SLV_QDSS_STM
] = &slv_qdss_stm
,
1286 [SLV_CATS_1
] = &slv_cats_1
,
1287 [SLV_LPASS
] = &slv_lpass
,
1290 static const struct regmap_config msm8937_snoc_regmap_config
= {
1294 .max_register
= 0x16080,
1298 static const struct qcom_icc_desc msm8937_snoc
= {
1299 .type
= QCOM_ICC_NOC
,
1300 .nodes
= msm8937_snoc_nodes
,
1301 .num_nodes
= ARRAY_SIZE(msm8937_snoc_nodes
),
1302 .bus_clk_desc
= &bus_1_clk
,
1303 .regmap_cfg
= &msm8937_snoc_regmap_config
,
1304 .qos_offset
= 0x7000,
1307 static struct qcom_icc_node
* const msm8937_snoc_mm_nodes
[] = {
1308 [MAS_JPEG
] = &mas_jpeg
,
1309 [MAS_MDP
] = &mas_mdp
,
1310 [MAS_VENUS
] = &mas_venus
,
1311 [MAS_VFE0
] = &mas_vfe0
,
1312 [MAS_VFE1
] = &mas_vfe1
,
1313 [MAS_CPP
] = &mas_cpp
,
1314 [SLV_SNOC_BIMC_0
] = &slv_snoc_bimc_0
,
1315 [SLV_SNOC_BIMC_2
] = &slv_snoc_bimc_2
,
1316 [SLV_CATS_0
] = &slv_cats_0
,
1319 static const struct qcom_icc_desc msm8937_snoc_mm
= {
1320 .type
= QCOM_ICC_NOC
,
1321 .nodes
= msm8937_snoc_mm_nodes
,
1322 .num_nodes
= ARRAY_SIZE(msm8937_snoc_mm_nodes
),
1323 .bus_clk_desc
= &bus_2_clk
,
1324 .regmap_cfg
= &msm8937_snoc_regmap_config
,
1325 .qos_offset
= 0x7000,
1329 static const struct of_device_id msm8937_noc_of_match
[] = {
1330 { .compatible
= "qcom,msm8937-bimc", .data
= &msm8937_bimc
},
1331 { .compatible
= "qcom,msm8937-pcnoc", .data
= &msm8937_pcnoc
},
1332 { .compatible
= "qcom,msm8937-snoc", .data
= &msm8937_snoc
},
1333 { .compatible
= "qcom,msm8937-snoc-mm", .data
= &msm8937_snoc_mm
},
1336 MODULE_DEVICE_TABLE(of
, msm8937_noc_of_match
);
1338 static struct platform_driver msm8937_noc_driver
= {
1339 .probe
= qnoc_probe
,
1340 .remove
= qnoc_remove
,
1342 .name
= "qnoc-msm8937",
1343 .of_match_table
= msm8937_noc_of_match
,
1344 .sync_state
= icc_sync_state
,
1347 module_platform_driver(msm8937_noc_driver
);
1349 MODULE_DESCRIPTION("Qualcomm MSM8937 NoC driver");
1350 MODULE_LICENSE("GPL");