1 // SPDX-License-Identifier: GPL-2.0
3 * Qualcomm SDM630/SDM636/SDM660 Network-on-Chip (NoC) QoS driver
7 #include <dt-bindings/interconnect/qcom,sdm660.h>
8 #include <linux/device.h>
9 #include <linux/interconnect-provider.h>
11 #include <linux/mod_devicetable.h>
12 #include <linux/module.h>
13 #include <linux/platform_device.h>
14 #include <linux/regmap.h>
15 #include <linux/slab.h>
20 SDM660_MASTER_IPA = 1,
21 SDM660_MASTER_CNOC_A2NOC,
29 SDM660_MASTER_CRYPTO_C0,
30 SDM660_MASTER_GNOC_BIMC,
32 SDM660_MASTER_MNOC_BIMC,
33 SDM660_MASTER_SNOC_BIMC,
35 SDM660_MASTER_SNOC_CNOC,
36 SDM660_MASTER_QDSS_DAP,
37 SDM660_MASTER_APPS_PROC,
38 SDM660_MASTER_CNOC_MNOC_MMSS_CFG,
39 SDM660_MASTER_CNOC_MNOC_CFG,
46 SDM660_MASTER_QDSS_ETR,
47 SDM660_MASTER_QDSS_BAM,
48 SDM660_MASTER_SNOC_CFG,
49 SDM660_MASTER_BIMC_SNOC,
50 SDM660_MASTER_A2NOC_SNOC,
51 SDM660_MASTER_GNOC_SNOC,
53 SDM660_SLAVE_A2NOC_SNOC,
56 SDM660_SLAVE_BIMC_SNOC,
57 SDM660_SLAVE_CNOC_A2NOC,
59 SDM660_SLAVE_PMIC_ARB,
60 SDM660_SLAVE_TLMM_NORTH,
62 SDM660_SLAVE_PIMEM_CFG,
63 SDM660_SLAVE_IMEM_CFG,
64 SDM660_SLAVE_MESSAGE_RAM,
66 SDM660_SLAVE_BIMC_CFG,
69 SDM660_SLAVE_QDSS_CFG,
70 SDM660_SLAVE_CNOC_MNOC_CFG,
71 SDM660_SLAVE_SNOC_CFG,
75 SDM660_SLAVE_TLMM_SOUTH,
77 SDM660_SLAVE_A2NOC_CFG,
78 SDM660_SLAVE_A2NOC_SMMU_CFG,
79 SDM660_SLAVE_GPUSS_CFG,
84 SDM660_SLAVE_TLMM_CENTER,
87 SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
90 SDM660_SLAVE_SRVC_CNOC,
91 SDM660_SLAVE_GNOC_BIMC,
92 SDM660_SLAVE_GNOC_SNOC,
93 SDM660_SLAVE_CAMERA_CFG,
94 SDM660_SLAVE_CAMERA_THROTTLE_CFG,
95 SDM660_SLAVE_MISC_CFG,
96 SDM660_SLAVE_VENUS_THROTTLE_CFG,
97 SDM660_SLAVE_VENUS_CFG,
98 SDM660_SLAVE_MMSS_CLK_XPU_CFG,
99 SDM660_SLAVE_MMSS_CLK_CFG,
100 SDM660_SLAVE_MNOC_MPU_CFG,
101 SDM660_SLAVE_DISPLAY_CFG,
102 SDM660_SLAVE_CSI_PHY_CFG,
103 SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
104 SDM660_SLAVE_SMMU_CFG,
105 SDM660_SLAVE_MNOC_BIMC,
106 SDM660_SLAVE_SRVC_MNOC,
112 SDM660_SLAVE_SNOC_BIMC,
113 SDM660_SLAVE_SNOC_CNOC,
116 SDM660_SLAVE_QDSS_STM,
117 SDM660_SLAVE_SRVC_SNOC,
127 static const char * const mm_intf_clocks[] = {
131 static const char * const a2noc_intf_clocks[] = {
139 static const u16 mas_ipa_links[] = {
140 SDM660_SLAVE_A2NOC_SNOC
143 static struct qcom_icc_node mas_ipa = {
145 .id = SDM660_MASTER_IPA,
149 .qos.ap_owned = true,
150 .qos.qos_mode = NOC_QOS_MODE_FIXED,
154 .num_links = ARRAY_SIZE(mas_ipa_links),
155 .links = mas_ipa_links,
158 static const u16 mas_cnoc_a2noc_links[] = {
159 SDM660_SLAVE_A2NOC_SNOC
162 static struct qcom_icc_node mas_cnoc_a2noc = {
163 .name = "mas_cnoc_a2noc",
164 .id = SDM660_MASTER_CNOC_A2NOC,
168 .qos.ap_owned = true,
169 .qos.qos_mode = NOC_QOS_MODE_INVALID,
170 .num_links = ARRAY_SIZE(mas_cnoc_a2noc_links),
171 .links = mas_cnoc_a2noc_links,
174 static const u16 mas_sdcc_1_links[] = {
175 SDM660_SLAVE_A2NOC_SNOC
178 static struct qcom_icc_node mas_sdcc_1 = {
179 .name = "mas_sdcc_1",
180 .id = SDM660_MASTER_SDCC_1,
184 .num_links = ARRAY_SIZE(mas_sdcc_1_links),
185 .links = mas_sdcc_1_links,
188 static const u16 mas_sdcc_2_links[] = {
189 SDM660_SLAVE_A2NOC_SNOC
192 static struct qcom_icc_node mas_sdcc_2 = {
193 .name = "mas_sdcc_2",
194 .id = SDM660_MASTER_SDCC_2,
198 .num_links = ARRAY_SIZE(mas_sdcc_2_links),
199 .links = mas_sdcc_2_links,
202 static const u16 mas_blsp_1_links[] = {
203 SDM660_SLAVE_A2NOC_SNOC
206 static struct qcom_icc_node mas_blsp_1 = {
207 .name = "mas_blsp_1",
208 .id = SDM660_MASTER_BLSP_1,
212 .num_links = ARRAY_SIZE(mas_blsp_1_links),
213 .links = mas_blsp_1_links,
216 static const u16 mas_blsp_2_links[] = {
217 SDM660_SLAVE_A2NOC_SNOC
220 static struct qcom_icc_node mas_blsp_2 = {
221 .name = "mas_blsp_2",
222 .id = SDM660_MASTER_BLSP_2,
226 .num_links = ARRAY_SIZE(mas_blsp_2_links),
227 .links = mas_blsp_2_links,
230 static const u16 mas_ufs_links[] = {
231 SDM660_SLAVE_A2NOC_SNOC
234 static struct qcom_icc_node mas_ufs = {
236 .id = SDM660_MASTER_UFS,
240 .qos.ap_owned = true,
241 .qos.qos_mode = NOC_QOS_MODE_FIXED,
245 .num_links = ARRAY_SIZE(mas_ufs_links),
246 .links = mas_ufs_links,
249 static const u16 mas_usb_hs_links[] = {
250 SDM660_SLAVE_A2NOC_SNOC
253 static struct qcom_icc_node mas_usb_hs = {
254 .name = "mas_usb_hs",
255 .id = SDM660_MASTER_USB_HS,
259 .qos.ap_owned = true,
260 .qos.qos_mode = NOC_QOS_MODE_FIXED,
264 .num_links = ARRAY_SIZE(mas_usb_hs_links),
265 .links = mas_usb_hs_links,
268 static const u16 mas_usb3_links[] = {
269 SDM660_SLAVE_A2NOC_SNOC
272 static struct qcom_icc_node mas_usb3 = {
274 .id = SDM660_MASTER_USB3,
278 .qos.ap_owned = true,
279 .qos.qos_mode = NOC_QOS_MODE_FIXED,
283 .num_links = ARRAY_SIZE(mas_usb3_links),
284 .links = mas_usb3_links,
287 static const u16 mas_crypto_links[] = {
288 SDM660_SLAVE_A2NOC_SNOC
291 static struct qcom_icc_node mas_crypto = {
292 .name = "mas_crypto",
293 .id = SDM660_MASTER_CRYPTO_C0,
297 .qos.ap_owned = true,
298 .qos.qos_mode = NOC_QOS_MODE_FIXED,
302 .num_links = ARRAY_SIZE(mas_crypto_links),
303 .links = mas_crypto_links,
306 static const u16 mas_gnoc_bimc_links[] = {
310 static struct qcom_icc_node mas_gnoc_bimc = {
311 .name = "mas_gnoc_bimc",
312 .id = SDM660_MASTER_GNOC_BIMC,
316 .qos.ap_owned = true,
317 .qos.qos_mode = NOC_QOS_MODE_FIXED,
321 .num_links = ARRAY_SIZE(mas_gnoc_bimc_links),
322 .links = mas_gnoc_bimc_links,
325 static const u16 mas_oxili_links[] = {
326 SDM660_SLAVE_HMSS_L3,
328 SDM660_SLAVE_BIMC_SNOC
331 static struct qcom_icc_node mas_oxili = {
333 .id = SDM660_MASTER_OXILI,
337 .qos.ap_owned = true,
338 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
342 .num_links = ARRAY_SIZE(mas_oxili_links),
343 .links = mas_oxili_links,
346 static const u16 mas_mnoc_bimc_links[] = {
347 SDM660_SLAVE_HMSS_L3,
349 SDM660_SLAVE_BIMC_SNOC
352 static struct qcom_icc_node mas_mnoc_bimc = {
353 .name = "mas_mnoc_bimc",
354 .id = SDM660_MASTER_MNOC_BIMC,
358 .qos.ap_owned = true,
359 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
363 .num_links = ARRAY_SIZE(mas_mnoc_bimc_links),
364 .links = mas_mnoc_bimc_links,
367 static const u16 mas_snoc_bimc_links[] = {
368 SDM660_SLAVE_HMSS_L3,
372 static struct qcom_icc_node mas_snoc_bimc = {
373 .name = "mas_snoc_bimc",
374 .id = SDM660_MASTER_SNOC_BIMC,
378 .num_links = ARRAY_SIZE(mas_snoc_bimc_links),
379 .links = mas_snoc_bimc_links,
382 static const u16 mas_pimem_links[] = {
383 SDM660_SLAVE_HMSS_L3,
387 static struct qcom_icc_node mas_pimem = {
389 .id = SDM660_MASTER_PIMEM,
393 .qos.ap_owned = true,
394 .qos.qos_mode = NOC_QOS_MODE_FIXED,
398 .num_links = ARRAY_SIZE(mas_pimem_links),
399 .links = mas_pimem_links,
402 static const u16 mas_snoc_cnoc_links[] = {
403 SDM660_SLAVE_CLK_CTL,
404 SDM660_SLAVE_QDSS_CFG,
406 SDM660_SLAVE_SRVC_CNOC,
407 SDM660_SLAVE_UFS_CFG,
409 SDM660_SLAVE_A2NOC_SMMU_CFG,
410 SDM660_SLAVE_SNOC_CFG,
411 SDM660_SLAVE_TLMM_SOUTH,
413 SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
417 SDM660_SLAVE_PMIC_ARB,
419 SDM660_SLAVE_MSS_CFG,
420 SDM660_SLAVE_GPUSS_CFG,
421 SDM660_SLAVE_IMEM_CFG,
423 SDM660_SLAVE_A2NOC_CFG,
424 SDM660_SLAVE_TLMM_NORTH,
427 SDM660_SLAVE_TLMM_CENTER,
428 SDM660_SLAVE_AHB2PHY,
431 SDM660_SLAVE_PIMEM_CFG,
433 SDM660_SLAVE_MESSAGE_RAM,
434 SDM660_SLAVE_BIMC_CFG,
435 SDM660_SLAVE_CNOC_MNOC_CFG
438 static struct qcom_icc_node mas_snoc_cnoc = {
439 .name = "mas_snoc_cnoc",
440 .id = SDM660_MASTER_SNOC_CNOC,
444 .qos.ap_owned = true,
445 .qos.qos_mode = NOC_QOS_MODE_INVALID,
446 .num_links = ARRAY_SIZE(mas_snoc_cnoc_links),
447 .links = mas_snoc_cnoc_links,
450 static const u16 mas_qdss_dap_links[] = {
451 SDM660_SLAVE_CLK_CTL,
452 SDM660_SLAVE_QDSS_CFG,
454 SDM660_SLAVE_SRVC_CNOC,
455 SDM660_SLAVE_UFS_CFG,
457 SDM660_SLAVE_A2NOC_SMMU_CFG,
458 SDM660_SLAVE_SNOC_CFG,
459 SDM660_SLAVE_TLMM_SOUTH,
461 SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
465 SDM660_SLAVE_PMIC_ARB,
467 SDM660_SLAVE_MSS_CFG,
468 SDM660_SLAVE_GPUSS_CFG,
469 SDM660_SLAVE_IMEM_CFG,
471 SDM660_SLAVE_A2NOC_CFG,
472 SDM660_SLAVE_TLMM_NORTH,
475 SDM660_SLAVE_TLMM_CENTER,
476 SDM660_SLAVE_AHB2PHY,
479 SDM660_SLAVE_PIMEM_CFG,
481 SDM660_SLAVE_MESSAGE_RAM,
482 SDM660_SLAVE_CNOC_A2NOC,
483 SDM660_SLAVE_BIMC_CFG,
484 SDM660_SLAVE_CNOC_MNOC_CFG
487 static struct qcom_icc_node mas_qdss_dap = {
488 .name = "mas_qdss_dap",
489 .id = SDM660_MASTER_QDSS_DAP,
493 .qos.ap_owned = true,
494 .qos.qos_mode = NOC_QOS_MODE_INVALID,
495 .num_links = ARRAY_SIZE(mas_qdss_dap_links),
496 .links = mas_qdss_dap_links,
499 static const u16 mas_apss_proc_links[] = {
500 SDM660_SLAVE_GNOC_SNOC,
501 SDM660_SLAVE_GNOC_BIMC
504 static struct qcom_icc_node mas_apss_proc = {
505 .name = "mas_apss_proc",
506 .id = SDM660_MASTER_APPS_PROC,
510 .qos.ap_owned = true,
511 .qos.qos_mode = NOC_QOS_MODE_INVALID,
512 .num_links = ARRAY_SIZE(mas_apss_proc_links),
513 .links = mas_apss_proc_links,
516 static const u16 mas_cnoc_mnoc_mmss_cfg_links[] = {
517 SDM660_SLAVE_VENUS_THROTTLE_CFG,
518 SDM660_SLAVE_VENUS_CFG,
519 SDM660_SLAVE_CAMERA_THROTTLE_CFG,
520 SDM660_SLAVE_SMMU_CFG,
521 SDM660_SLAVE_CAMERA_CFG,
522 SDM660_SLAVE_CSI_PHY_CFG,
523 SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
524 SDM660_SLAVE_DISPLAY_CFG,
525 SDM660_SLAVE_MMSS_CLK_CFG,
526 SDM660_SLAVE_MNOC_MPU_CFG,
527 SDM660_SLAVE_MISC_CFG,
528 SDM660_SLAVE_MMSS_CLK_XPU_CFG
531 static struct qcom_icc_node mas_cnoc_mnoc_mmss_cfg = {
532 .name = "mas_cnoc_mnoc_mmss_cfg",
533 .id = SDM660_MASTER_CNOC_MNOC_MMSS_CFG,
537 .qos.ap_owned = true,
538 .qos.qos_mode = NOC_QOS_MODE_INVALID,
539 .num_links = ARRAY_SIZE(mas_cnoc_mnoc_mmss_cfg_links),
540 .links = mas_cnoc_mnoc_mmss_cfg_links,
543 static const u16 mas_cnoc_mnoc_cfg_links[] = {
544 SDM660_SLAVE_SRVC_MNOC
547 static struct qcom_icc_node mas_cnoc_mnoc_cfg = {
548 .name = "mas_cnoc_mnoc_cfg",
549 .id = SDM660_MASTER_CNOC_MNOC_CFG,
553 .qos.ap_owned = true,
554 .qos.qos_mode = NOC_QOS_MODE_INVALID,
555 .num_links = ARRAY_SIZE(mas_cnoc_mnoc_cfg_links),
556 .links = mas_cnoc_mnoc_cfg_links,
559 static const u16 mas_cpp_links[] = {
560 SDM660_SLAVE_MNOC_BIMC
563 static struct qcom_icc_node mas_cpp = {
565 .id = SDM660_MASTER_CPP,
569 .qos.ap_owned = true,
570 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
574 .num_links = ARRAY_SIZE(mas_cpp_links),
575 .links = mas_cpp_links,
578 static const u16 mas_jpeg_links[] = {
579 SDM660_SLAVE_MNOC_BIMC
582 static struct qcom_icc_node mas_jpeg = {
584 .id = SDM660_MASTER_JPEG,
588 .qos.ap_owned = true,
589 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
593 .num_links = ARRAY_SIZE(mas_jpeg_links),
594 .links = mas_jpeg_links,
597 static const u16 mas_mdp_p0_links[] = {
598 SDM660_SLAVE_MNOC_BIMC
601 static struct qcom_icc_node mas_mdp_p0 = {
602 .name = "mas_mdp_p0",
603 .id = SDM660_MASTER_MDP_P0,
607 .qos.ap_owned = true,
608 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
612 .num_links = ARRAY_SIZE(mas_mdp_p0_links),
613 .links = mas_mdp_p0_links,
616 static const u16 mas_mdp_p1_links[] = {
617 SDM660_SLAVE_MNOC_BIMC
620 static struct qcom_icc_node mas_mdp_p1 = {
621 .name = "mas_mdp_p1",
622 .id = SDM660_MASTER_MDP_P1,
626 .qos.ap_owned = true,
627 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
631 .num_links = ARRAY_SIZE(mas_mdp_p1_links),
632 .links = mas_mdp_p1_links,
635 static const u16 mas_venus_links[] = {
636 SDM660_SLAVE_MNOC_BIMC
639 static struct qcom_icc_node mas_venus = {
641 .id = SDM660_MASTER_VENUS,
645 .qos.ap_owned = true,
646 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
650 .num_links = ARRAY_SIZE(mas_venus_links),
651 .links = mas_venus_links,
654 static const u16 mas_vfe_links[] = {
655 SDM660_SLAVE_MNOC_BIMC
658 static struct qcom_icc_node mas_vfe = {
660 .id = SDM660_MASTER_VFE,
664 .qos.ap_owned = true,
665 .qos.qos_mode = NOC_QOS_MODE_BYPASS,
669 .num_links = ARRAY_SIZE(mas_vfe_links),
670 .links = mas_vfe_links,
673 static const u16 mas_qdss_etr_links[] = {
676 SDM660_SLAVE_SNOC_CNOC,
677 SDM660_SLAVE_SNOC_BIMC
680 static struct qcom_icc_node mas_qdss_etr = {
681 .name = "mas_qdss_etr",
682 .id = SDM660_MASTER_QDSS_ETR,
686 .qos.ap_owned = true,
687 .qos.qos_mode = NOC_QOS_MODE_FIXED,
691 .num_links = ARRAY_SIZE(mas_qdss_etr_links),
692 .links = mas_qdss_etr_links,
695 static const u16 mas_qdss_bam_links[] = {
698 SDM660_SLAVE_SNOC_CNOC,
699 SDM660_SLAVE_SNOC_BIMC
702 static struct qcom_icc_node mas_qdss_bam = {
703 .name = "mas_qdss_bam",
704 .id = SDM660_MASTER_QDSS_BAM,
708 .qos.ap_owned = true,
709 .qos.qos_mode = NOC_QOS_MODE_FIXED,
713 .num_links = ARRAY_SIZE(mas_qdss_bam_links),
714 .links = mas_qdss_bam_links,
717 static const u16 mas_snoc_cfg_links[] = {
718 SDM660_SLAVE_SRVC_SNOC
721 static struct qcom_icc_node mas_snoc_cfg = {
722 .name = "mas_snoc_cfg",
723 .id = SDM660_MASTER_SNOC_CFG,
727 .num_links = ARRAY_SIZE(mas_snoc_cfg_links),
728 .links = mas_snoc_cfg_links,
731 static const u16 mas_bimc_snoc_links[] = {
734 SDM660_SLAVE_QDSS_STM,
738 SDM660_SLAVE_SNOC_CNOC,
743 static struct qcom_icc_node mas_bimc_snoc = {
744 .name = "mas_bimc_snoc",
745 .id = SDM660_MASTER_BIMC_SNOC,
749 .num_links = ARRAY_SIZE(mas_bimc_snoc_links),
750 .links = mas_bimc_snoc_links,
753 static const u16 mas_gnoc_snoc_links[] = {
756 SDM660_SLAVE_QDSS_STM,
760 SDM660_SLAVE_SNOC_CNOC,
765 static struct qcom_icc_node mas_gnoc_snoc = {
766 .name = "mas_gnoc_snoc",
767 .id = SDM660_MASTER_GNOC_SNOC,
771 .num_links = ARRAY_SIZE(mas_gnoc_snoc_links),
772 .links = mas_gnoc_snoc_links,
775 static const u16 mas_a2noc_snoc_links[] = {
778 SDM660_SLAVE_QDSS_STM,
781 SDM660_SLAVE_SNOC_BIMC,
783 SDM660_SLAVE_SNOC_CNOC,
788 static struct qcom_icc_node mas_a2noc_snoc = {
789 .name = "mas_a2noc_snoc",
790 .id = SDM660_MASTER_A2NOC_SNOC,
794 .num_links = ARRAY_SIZE(mas_a2noc_snoc_links),
795 .links = mas_a2noc_snoc_links,
798 static const u16 slv_a2noc_snoc_links[] = {
799 SDM660_MASTER_A2NOC_SNOC
802 static struct qcom_icc_node slv_a2noc_snoc = {
803 .name = "slv_a2noc_snoc",
804 .id = SDM660_SLAVE_A2NOC_SNOC,
808 .num_links = ARRAY_SIZE(slv_a2noc_snoc_links),
809 .links = slv_a2noc_snoc_links,
812 static struct qcom_icc_node slv_ebi = {
814 .id = SDM660_SLAVE_EBI,
820 static struct qcom_icc_node slv_hmss_l3 = {
821 .name = "slv_hmss_l3",
822 .id = SDM660_SLAVE_HMSS_L3,
828 static const u16 slv_bimc_snoc_links[] = {
829 SDM660_MASTER_BIMC_SNOC
832 static struct qcom_icc_node slv_bimc_snoc = {
833 .name = "slv_bimc_snoc",
834 .id = SDM660_SLAVE_BIMC_SNOC,
838 .num_links = ARRAY_SIZE(slv_bimc_snoc_links),
839 .links = slv_bimc_snoc_links,
842 static const u16 slv_cnoc_a2noc_links[] = {
843 SDM660_MASTER_CNOC_A2NOC
846 static struct qcom_icc_node slv_cnoc_a2noc = {
847 .name = "slv_cnoc_a2noc",
848 .id = SDM660_SLAVE_CNOC_A2NOC,
852 .qos.ap_owned = true,
853 .qos.qos_mode = NOC_QOS_MODE_INVALID,
854 .num_links = ARRAY_SIZE(slv_cnoc_a2noc_links),
855 .links = slv_cnoc_a2noc_links,
858 static struct qcom_icc_node slv_mpm = {
860 .id = SDM660_SLAVE_MPM,
864 .qos.ap_owned = true,
865 .qos.qos_mode = NOC_QOS_MODE_INVALID,
868 static struct qcom_icc_node slv_pmic_arb = {
869 .name = "slv_pmic_arb",
870 .id = SDM660_SLAVE_PMIC_ARB,
874 .qos.ap_owned = true,
875 .qos.qos_mode = NOC_QOS_MODE_INVALID,
878 static struct qcom_icc_node slv_tlmm_north = {
879 .name = "slv_tlmm_north",
880 .id = SDM660_SLAVE_TLMM_NORTH,
884 .qos.ap_owned = true,
885 .qos.qos_mode = NOC_QOS_MODE_INVALID,
888 static struct qcom_icc_node slv_tcsr = {
890 .id = SDM660_SLAVE_TCSR,
894 .qos.ap_owned = true,
895 .qos.qos_mode = NOC_QOS_MODE_INVALID,
898 static struct qcom_icc_node slv_pimem_cfg = {
899 .name = "slv_pimem_cfg",
900 .id = SDM660_SLAVE_PIMEM_CFG,
904 .qos.ap_owned = true,
905 .qos.qos_mode = NOC_QOS_MODE_INVALID,
908 static struct qcom_icc_node slv_imem_cfg = {
909 .name = "slv_imem_cfg",
910 .id = SDM660_SLAVE_IMEM_CFG,
914 .qos.ap_owned = true,
915 .qos.qos_mode = NOC_QOS_MODE_INVALID,
918 static struct qcom_icc_node slv_message_ram = {
919 .name = "slv_message_ram",
920 .id = SDM660_SLAVE_MESSAGE_RAM,
924 .qos.ap_owned = true,
925 .qos.qos_mode = NOC_QOS_MODE_INVALID,
928 static struct qcom_icc_node slv_glm = {
930 .id = SDM660_SLAVE_GLM,
934 .qos.ap_owned = true,
935 .qos.qos_mode = NOC_QOS_MODE_INVALID,
938 static struct qcom_icc_node slv_bimc_cfg = {
939 .name = "slv_bimc_cfg",
940 .id = SDM660_SLAVE_BIMC_CFG,
944 .qos.ap_owned = true,
945 .qos.qos_mode = NOC_QOS_MODE_INVALID,
948 static struct qcom_icc_node slv_prng = {
950 .id = SDM660_SLAVE_PRNG,
954 .qos.ap_owned = true,
955 .qos.qos_mode = NOC_QOS_MODE_INVALID,
958 static struct qcom_icc_node slv_spdm = {
960 .id = SDM660_SLAVE_SPDM,
964 .qos.ap_owned = true,
965 .qos.qos_mode = NOC_QOS_MODE_INVALID,
968 static struct qcom_icc_node slv_qdss_cfg = {
969 .name = "slv_qdss_cfg",
970 .id = SDM660_SLAVE_QDSS_CFG,
974 .qos.ap_owned = true,
975 .qos.qos_mode = NOC_QOS_MODE_INVALID,
978 static const u16 slv_cnoc_mnoc_cfg_links[] = {
979 SDM660_MASTER_CNOC_MNOC_CFG
982 static struct qcom_icc_node slv_cnoc_mnoc_cfg = {
983 .name = "slv_cnoc_mnoc_cfg",
984 .id = SDM660_SLAVE_CNOC_MNOC_CFG,
988 .qos.ap_owned = true,
989 .qos.qos_mode = NOC_QOS_MODE_INVALID,
990 .num_links = ARRAY_SIZE(slv_cnoc_mnoc_cfg_links),
991 .links = slv_cnoc_mnoc_cfg_links,
994 static struct qcom_icc_node slv_snoc_cfg = {
995 .name = "slv_snoc_cfg",
996 .id = SDM660_SLAVE_SNOC_CFG,
1000 .qos.ap_owned = true,
1001 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1004 static struct qcom_icc_node slv_qm_cfg = {
1005 .name = "slv_qm_cfg",
1006 .id = SDM660_SLAVE_QM_CFG,
1010 .qos.ap_owned = true,
1011 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1014 static struct qcom_icc_node slv_clk_ctl = {
1015 .name = "slv_clk_ctl",
1016 .id = SDM660_SLAVE_CLK_CTL,
1020 .qos.ap_owned = true,
1021 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1024 static struct qcom_icc_node slv_mss_cfg = {
1025 .name = "slv_mss_cfg",
1026 .id = SDM660_SLAVE_MSS_CFG,
1030 .qos.ap_owned = true,
1031 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1034 static struct qcom_icc_node slv_tlmm_south = {
1035 .name = "slv_tlmm_south",
1036 .id = SDM660_SLAVE_TLMM_SOUTH,
1040 .qos.ap_owned = true,
1041 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1044 static struct qcom_icc_node slv_ufs_cfg = {
1045 .name = "slv_ufs_cfg",
1046 .id = SDM660_SLAVE_UFS_CFG,
1050 .qos.ap_owned = true,
1051 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1054 static struct qcom_icc_node slv_a2noc_cfg = {
1055 .name = "slv_a2noc_cfg",
1056 .id = SDM660_SLAVE_A2NOC_CFG,
1060 .qos.ap_owned = true,
1061 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1064 static struct qcom_icc_node slv_a2noc_smmu_cfg = {
1065 .name = "slv_a2noc_smmu_cfg",
1066 .id = SDM660_SLAVE_A2NOC_SMMU_CFG,
1070 .qos.ap_owned = true,
1071 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1074 static struct qcom_icc_node slv_gpuss_cfg = {
1075 .name = "slv_gpuss_cfg",
1076 .id = SDM660_SLAVE_GPUSS_CFG,
1080 .qos.ap_owned = true,
1081 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1084 static struct qcom_icc_node slv_ahb2phy = {
1085 .name = "slv_ahb2phy",
1086 .id = SDM660_SLAVE_AHB2PHY,
1090 .qos.ap_owned = true,
1091 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1094 static struct qcom_icc_node slv_blsp_1 = {
1095 .name = "slv_blsp_1",
1096 .id = SDM660_SLAVE_BLSP_1,
1100 .qos.ap_owned = true,
1101 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1104 static struct qcom_icc_node slv_sdcc_1 = {
1105 .name = "slv_sdcc_1",
1106 .id = SDM660_SLAVE_SDCC_1,
1110 .qos.ap_owned = true,
1111 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1114 static struct qcom_icc_node slv_sdcc_2 = {
1115 .name = "slv_sdcc_2",
1116 .id = SDM660_SLAVE_SDCC_2,
1120 .qos.ap_owned = true,
1121 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1124 static struct qcom_icc_node slv_tlmm_center = {
1125 .name = "slv_tlmm_center",
1126 .id = SDM660_SLAVE_TLMM_CENTER,
1130 .qos.ap_owned = true,
1131 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1134 static struct qcom_icc_node slv_blsp_2 = {
1135 .name = "slv_blsp_2",
1136 .id = SDM660_SLAVE_BLSP_2,
1140 .qos.ap_owned = true,
1141 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1144 static struct qcom_icc_node slv_pdm = {
1146 .id = SDM660_SLAVE_PDM,
1150 .qos.ap_owned = true,
1151 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1154 static const u16 slv_cnoc_mnoc_mmss_cfg_links[] = {
1155 SDM660_MASTER_CNOC_MNOC_MMSS_CFG
1158 static struct qcom_icc_node slv_cnoc_mnoc_mmss_cfg = {
1159 .name = "slv_cnoc_mnoc_mmss_cfg",
1160 .id = SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
1164 .qos.ap_owned = true,
1165 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1166 .num_links = ARRAY_SIZE(slv_cnoc_mnoc_mmss_cfg_links),
1167 .links = slv_cnoc_mnoc_mmss_cfg_links,
1170 static struct qcom_icc_node slv_usb_hs = {
1171 .name = "slv_usb_hs",
1172 .id = SDM660_SLAVE_USB_HS,
1176 .qos.ap_owned = true,
1177 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1180 static struct qcom_icc_node slv_usb3_0 = {
1181 .name = "slv_usb3_0",
1182 .id = SDM660_SLAVE_USB3_0,
1186 .qos.ap_owned = true,
1187 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1190 static struct qcom_icc_node slv_srvc_cnoc = {
1191 .name = "slv_srvc_cnoc",
1192 .id = SDM660_SLAVE_SRVC_CNOC,
1196 .qos.ap_owned = true,
1197 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1200 static const u16 slv_gnoc_bimc_links[] = {
1201 SDM660_MASTER_GNOC_BIMC
1204 static struct qcom_icc_node slv_gnoc_bimc = {
1205 .name = "slv_gnoc_bimc",
1206 .id = SDM660_SLAVE_GNOC_BIMC,
1210 .qos.ap_owned = true,
1211 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1212 .num_links = ARRAY_SIZE(slv_gnoc_bimc_links),
1213 .links = slv_gnoc_bimc_links,
1216 static const u16 slv_gnoc_snoc_links[] = {
1217 SDM660_MASTER_GNOC_SNOC
1220 static struct qcom_icc_node slv_gnoc_snoc = {
1221 .name = "slv_gnoc_snoc",
1222 .id = SDM660_SLAVE_GNOC_SNOC,
1226 .qos.ap_owned = true,
1227 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1228 .num_links = ARRAY_SIZE(slv_gnoc_snoc_links),
1229 .links = slv_gnoc_snoc_links,
1232 static struct qcom_icc_node slv_camera_cfg = {
1233 .name = "slv_camera_cfg",
1234 .id = SDM660_SLAVE_CAMERA_CFG,
1238 .qos.ap_owned = true,
1239 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1242 static struct qcom_icc_node slv_camera_throttle_cfg = {
1243 .name = "slv_camera_throttle_cfg",
1244 .id = SDM660_SLAVE_CAMERA_THROTTLE_CFG,
1248 .qos.ap_owned = true,
1249 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1252 static struct qcom_icc_node slv_misc_cfg = {
1253 .name = "slv_misc_cfg",
1254 .id = SDM660_SLAVE_MISC_CFG,
1258 .qos.ap_owned = true,
1259 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1262 static struct qcom_icc_node slv_venus_throttle_cfg = {
1263 .name = "slv_venus_throttle_cfg",
1264 .id = SDM660_SLAVE_VENUS_THROTTLE_CFG,
1268 .qos.ap_owned = true,
1269 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1272 static struct qcom_icc_node slv_venus_cfg = {
1273 .name = "slv_venus_cfg",
1274 .id = SDM660_SLAVE_VENUS_CFG,
1278 .qos.ap_owned = true,
1279 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1282 static struct qcom_icc_node slv_mmss_clk_xpu_cfg = {
1283 .name = "slv_mmss_clk_xpu_cfg",
1284 .id = SDM660_SLAVE_MMSS_CLK_XPU_CFG,
1288 .qos.ap_owned = true,
1289 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1292 static struct qcom_icc_node slv_mmss_clk_cfg = {
1293 .name = "slv_mmss_clk_cfg",
1294 .id = SDM660_SLAVE_MMSS_CLK_CFG,
1298 .qos.ap_owned = true,
1299 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1302 static struct qcom_icc_node slv_mnoc_mpu_cfg = {
1303 .name = "slv_mnoc_mpu_cfg",
1304 .id = SDM660_SLAVE_MNOC_MPU_CFG,
1308 .qos.ap_owned = true,
1309 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1312 static struct qcom_icc_node slv_display_cfg = {
1313 .name = "slv_display_cfg",
1314 .id = SDM660_SLAVE_DISPLAY_CFG,
1318 .qos.ap_owned = true,
1319 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1322 static struct qcom_icc_node slv_csi_phy_cfg = {
1323 .name = "slv_csi_phy_cfg",
1324 .id = SDM660_SLAVE_CSI_PHY_CFG,
1328 .qos.ap_owned = true,
1329 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1332 static struct qcom_icc_node slv_display_throttle_cfg = {
1333 .name = "slv_display_throttle_cfg",
1334 .id = SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
1338 .qos.ap_owned = true,
1339 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1342 static struct qcom_icc_node slv_smmu_cfg = {
1343 .name = "slv_smmu_cfg",
1344 .id = SDM660_SLAVE_SMMU_CFG,
1348 .qos.ap_owned = true,
1349 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1352 static const u16 slv_mnoc_bimc_links[] = {
1353 SDM660_MASTER_MNOC_BIMC
1356 static struct qcom_icc_node slv_mnoc_bimc = {
1357 .name = "slv_mnoc_bimc",
1358 .id = SDM660_SLAVE_MNOC_BIMC,
1362 .qos.ap_owned = true,
1363 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1364 .num_links = ARRAY_SIZE(slv_mnoc_bimc_links),
1365 .links = slv_mnoc_bimc_links,
1368 static struct qcom_icc_node slv_srvc_mnoc = {
1369 .name = "slv_srvc_mnoc",
1370 .id = SDM660_SLAVE_SRVC_MNOC,
1374 .qos.ap_owned = true,
1375 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1378 static struct qcom_icc_node slv_hmss = {
1380 .id = SDM660_SLAVE_HMSS,
1384 .qos.ap_owned = true,
1385 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1388 static struct qcom_icc_node slv_lpass = {
1389 .name = "slv_lpass",
1390 .id = SDM660_SLAVE_LPASS,
1394 .qos.ap_owned = true,
1395 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1398 static struct qcom_icc_node slv_wlan = {
1400 .id = SDM660_SLAVE_WLAN,
1406 static struct qcom_icc_node slv_cdsp = {
1408 .id = SDM660_SLAVE_CDSP,
1412 .qos.ap_owned = true,
1413 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1416 static struct qcom_icc_node slv_ipa = {
1418 .id = SDM660_SLAVE_IPA,
1422 .qos.ap_owned = true,
1423 .qos.qos_mode = NOC_QOS_MODE_INVALID,
1426 static const u16 slv_snoc_bimc_links[] = {
1427 SDM660_MASTER_SNOC_BIMC
1430 static struct qcom_icc_node slv_snoc_bimc = {
1431 .name = "slv_snoc_bimc",
1432 .id = SDM660_SLAVE_SNOC_BIMC,
1436 .num_links = ARRAY_SIZE(slv_snoc_bimc_links),
1437 .links = slv_snoc_bimc_links,
1440 static const u16 slv_snoc_cnoc_links[] = {
1441 SDM660_MASTER_SNOC_CNOC
1444 static struct qcom_icc_node slv_snoc_cnoc = {
1445 .name = "slv_snoc_cnoc",
1446 .id = SDM660_SLAVE_SNOC_CNOC,
1450 .num_links = ARRAY_SIZE(slv_snoc_cnoc_links),
1451 .links = slv_snoc_cnoc_links,
1454 static struct qcom_icc_node slv_imem = {
1456 .id = SDM660_SLAVE_IMEM,
1462 static struct qcom_icc_node slv_pimem = {
1463 .name = "slv_pimem",
1464 .id = SDM660_SLAVE_PIMEM,
1470 static struct qcom_icc_node slv_qdss_stm = {
1471 .name = "slv_qdss_stm",
1472 .id = SDM660_SLAVE_QDSS_STM,
1478 static struct qcom_icc_node slv_srvc_snoc = {
1479 .name = "slv_srvc_snoc",
1480 .id = SDM660_SLAVE_SRVC_SNOC,
1486 static struct qcom_icc_node * const sdm660_a2noc_nodes[] = {
1487 [MASTER_IPA] = &mas_ipa,
1488 [MASTER_CNOC_A2NOC] = &mas_cnoc_a2noc,
1489 [MASTER_SDCC_1] = &mas_sdcc_1,
1490 [MASTER_SDCC_2] = &mas_sdcc_2,
1491 [MASTER_BLSP_1] = &mas_blsp_1,
1492 [MASTER_BLSP_2] = &mas_blsp_2,
1493 [MASTER_UFS] = &mas_ufs,
1494 [MASTER_USB_HS] = &mas_usb_hs,
1495 [MASTER_USB3] = &mas_usb3,
1496 [MASTER_CRYPTO_C0] = &mas_crypto,
1497 [SLAVE_A2NOC_SNOC] = &slv_a2noc_snoc,
1500 static const struct regmap_config sdm660_a2noc_regmap_config = {
1504 .max_register = 0x20000,
1508 static const struct qcom_icc_desc sdm660_a2noc = {
1509 .type = QCOM_ICC_NOC,
1510 .nodes = sdm660_a2noc_nodes,
1511 .num_nodes = ARRAY_SIZE(sdm660_a2noc_nodes),
1512 .bus_clk_desc = &aggre2_clk,
1513 .intf_clocks = a2noc_intf_clocks,
1514 .num_intf_clocks = ARRAY_SIZE(a2noc_intf_clocks),
1515 .regmap_cfg = &sdm660_a2noc_regmap_config,
1518 static struct qcom_icc_node * const sdm660_bimc_nodes[] = {
1519 [MASTER_GNOC_BIMC] = &mas_gnoc_bimc,
1520 [MASTER_OXILI] = &mas_oxili,
1521 [MASTER_MNOC_BIMC] = &mas_mnoc_bimc,
1522 [MASTER_SNOC_BIMC] = &mas_snoc_bimc,
1523 [MASTER_PIMEM] = &mas_pimem,
1524 [SLAVE_EBI] = &slv_ebi,
1525 [SLAVE_HMSS_L3] = &slv_hmss_l3,
1526 [SLAVE_BIMC_SNOC] = &slv_bimc_snoc,
1529 static const struct regmap_config sdm660_bimc_regmap_config = {
1533 .max_register = 0x80000,
1537 static const struct qcom_icc_desc sdm660_bimc = {
1538 .type = QCOM_ICC_BIMC,
1539 .nodes = sdm660_bimc_nodes,
1540 .num_nodes = ARRAY_SIZE(sdm660_bimc_nodes),
1541 .bus_clk_desc = &bimc_clk,
1542 .regmap_cfg = &sdm660_bimc_regmap_config,
1545 static struct qcom_icc_node * const sdm660_cnoc_nodes[] = {
1546 [MASTER_SNOC_CNOC] = &mas_snoc_cnoc,
1547 [MASTER_QDSS_DAP] = &mas_qdss_dap,
1548 [SLAVE_CNOC_A2NOC] = &slv_cnoc_a2noc,
1549 [SLAVE_MPM] = &slv_mpm,
1550 [SLAVE_PMIC_ARB] = &slv_pmic_arb,
1551 [SLAVE_TLMM_NORTH] = &slv_tlmm_north,
1552 [SLAVE_TCSR] = &slv_tcsr,
1553 [SLAVE_PIMEM_CFG] = &slv_pimem_cfg,
1554 [SLAVE_IMEM_CFG] = &slv_imem_cfg,
1555 [SLAVE_MESSAGE_RAM] = &slv_message_ram,
1556 [SLAVE_GLM] = &slv_glm,
1557 [SLAVE_BIMC_CFG] = &slv_bimc_cfg,
1558 [SLAVE_PRNG] = &slv_prng,
1559 [SLAVE_SPDM] = &slv_spdm,
1560 [SLAVE_QDSS_CFG] = &slv_qdss_cfg,
1561 [SLAVE_CNOC_MNOC_CFG] = &slv_cnoc_mnoc_cfg,
1562 [SLAVE_SNOC_CFG] = &slv_snoc_cfg,
1563 [SLAVE_QM_CFG] = &slv_qm_cfg,
1564 [SLAVE_CLK_CTL] = &slv_clk_ctl,
1565 [SLAVE_MSS_CFG] = &slv_mss_cfg,
1566 [SLAVE_TLMM_SOUTH] = &slv_tlmm_south,
1567 [SLAVE_UFS_CFG] = &slv_ufs_cfg,
1568 [SLAVE_A2NOC_CFG] = &slv_a2noc_cfg,
1569 [SLAVE_A2NOC_SMMU_CFG] = &slv_a2noc_smmu_cfg,
1570 [SLAVE_GPUSS_CFG] = &slv_gpuss_cfg,
1571 [SLAVE_AHB2PHY] = &slv_ahb2phy,
1572 [SLAVE_BLSP_1] = &slv_blsp_1,
1573 [SLAVE_SDCC_1] = &slv_sdcc_1,
1574 [SLAVE_SDCC_2] = &slv_sdcc_2,
1575 [SLAVE_TLMM_CENTER] = &slv_tlmm_center,
1576 [SLAVE_BLSP_2] = &slv_blsp_2,
1577 [SLAVE_PDM] = &slv_pdm,
1578 [SLAVE_CNOC_MNOC_MMSS_CFG] = &slv_cnoc_mnoc_mmss_cfg,
1579 [SLAVE_USB_HS] = &slv_usb_hs,
1580 [SLAVE_USB3_0] = &slv_usb3_0,
1581 [SLAVE_SRVC_CNOC] = &slv_srvc_cnoc,
1584 static const struct regmap_config sdm660_cnoc_regmap_config = {
1588 .max_register = 0x10000,
1592 static const struct qcom_icc_desc sdm660_cnoc = {
1593 .type = QCOM_ICC_NOC,
1594 .nodes = sdm660_cnoc_nodes,
1595 .num_nodes = ARRAY_SIZE(sdm660_cnoc_nodes),
1596 .bus_clk_desc = &bus_2_clk,
1597 .regmap_cfg = &sdm660_cnoc_regmap_config,
1600 static struct qcom_icc_node * const sdm660_gnoc_nodes[] = {
1601 [MASTER_APSS_PROC] = &mas_apss_proc,
1602 [SLAVE_GNOC_BIMC] = &slv_gnoc_bimc,
1603 [SLAVE_GNOC_SNOC] = &slv_gnoc_snoc,
1606 static const struct regmap_config sdm660_gnoc_regmap_config = {
1610 .max_register = 0xe000,
1614 static const struct qcom_icc_desc sdm660_gnoc = {
1615 .type = QCOM_ICC_NOC,
1616 .nodes = sdm660_gnoc_nodes,
1617 .num_nodes = ARRAY_SIZE(sdm660_gnoc_nodes),
1618 .regmap_cfg = &sdm660_gnoc_regmap_config,
1621 static struct qcom_icc_node * const sdm660_mnoc_nodes[] = {
1622 [MASTER_CPP] = &mas_cpp,
1623 [MASTER_JPEG] = &mas_jpeg,
1624 [MASTER_MDP_P0] = &mas_mdp_p0,
1625 [MASTER_MDP_P1] = &mas_mdp_p1,
1626 [MASTER_VENUS] = &mas_venus,
1627 [MASTER_VFE] = &mas_vfe,
1628 [MASTER_CNOC_MNOC_MMSS_CFG] = &mas_cnoc_mnoc_mmss_cfg,
1629 [MASTER_CNOC_MNOC_CFG] = &mas_cnoc_mnoc_cfg,
1630 [SLAVE_CAMERA_CFG] = &slv_camera_cfg,
1631 [SLAVE_CAMERA_THROTTLE_CFG] = &slv_camera_throttle_cfg,
1632 [SLAVE_MISC_CFG] = &slv_misc_cfg,
1633 [SLAVE_VENUS_THROTTLE_CFG] = &slv_venus_throttle_cfg,
1634 [SLAVE_VENUS_CFG] = &slv_venus_cfg,
1635 [SLAVE_MMSS_CLK_XPU_CFG] = &slv_mmss_clk_xpu_cfg,
1636 [SLAVE_MMSS_CLK_CFG] = &slv_mmss_clk_cfg,
1637 [SLAVE_MNOC_MPU_CFG] = &slv_mnoc_mpu_cfg,
1638 [SLAVE_DISPLAY_CFG] = &slv_display_cfg,
1639 [SLAVE_CSI_PHY_CFG] = &slv_csi_phy_cfg,
1640 [SLAVE_DISPLAY_THROTTLE_CFG] = &slv_display_throttle_cfg,
1641 [SLAVE_SMMU_CFG] = &slv_smmu_cfg,
1642 [SLAVE_SRVC_MNOC] = &slv_srvc_mnoc,
1643 [SLAVE_MNOC_BIMC] = &slv_mnoc_bimc,
1646 static const struct regmap_config sdm660_mnoc_regmap_config = {
1650 .max_register = 0x10000,
1654 static const struct qcom_icc_desc sdm660_mnoc = {
1655 .type = QCOM_ICC_NOC,
1656 .nodes = sdm660_mnoc_nodes,
1657 .num_nodes = ARRAY_SIZE(sdm660_mnoc_nodes),
1658 .bus_clk_desc = &mmaxi_0_clk,
1659 .intf_clocks = mm_intf_clocks,
1660 .num_intf_clocks = ARRAY_SIZE(mm_intf_clocks),
1661 .regmap_cfg = &sdm660_mnoc_regmap_config,
1664 static struct qcom_icc_node * const sdm660_snoc_nodes[] = {
1665 [MASTER_QDSS_ETR] = &mas_qdss_etr,
1666 [MASTER_QDSS_BAM] = &mas_qdss_bam,
1667 [MASTER_SNOC_CFG] = &mas_snoc_cfg,
1668 [MASTER_BIMC_SNOC] = &mas_bimc_snoc,
1669 [MASTER_A2NOC_SNOC] = &mas_a2noc_snoc,
1670 [MASTER_GNOC_SNOC] = &mas_gnoc_snoc,
1671 [SLAVE_HMSS] = &slv_hmss,
1672 [SLAVE_LPASS] = &slv_lpass,
1673 [SLAVE_WLAN] = &slv_wlan,
1674 [SLAVE_CDSP] = &slv_cdsp,
1675 [SLAVE_IPA] = &slv_ipa,
1676 [SLAVE_SNOC_BIMC] = &slv_snoc_bimc,
1677 [SLAVE_SNOC_CNOC] = &slv_snoc_cnoc,
1678 [SLAVE_IMEM] = &slv_imem,
1679 [SLAVE_PIMEM] = &slv_pimem,
1680 [SLAVE_QDSS_STM] = &slv_qdss_stm,
1681 [SLAVE_SRVC_SNOC] = &slv_srvc_snoc,
1684 static const struct regmap_config sdm660_snoc_regmap_config = {
1688 .max_register = 0x20000,
1692 static const struct qcom_icc_desc sdm660_snoc = {
1693 .type = QCOM_ICC_NOC,
1694 .nodes = sdm660_snoc_nodes,
1695 .num_nodes = ARRAY_SIZE(sdm660_snoc_nodes),
1696 .bus_clk_desc = &bus_1_clk,
1697 .regmap_cfg = &sdm660_snoc_regmap_config,
1700 static const struct of_device_id sdm660_noc_of_match[] = {
1701 { .compatible = "qcom,sdm660-a2noc", .data = &sdm660_a2noc },
1702 { .compatible = "qcom,sdm660-bimc", .data = &sdm660_bimc },
1703 { .compatible = "qcom,sdm660-cnoc", .data = &sdm660_cnoc },
1704 { .compatible = "qcom,sdm660-gnoc", .data = &sdm660_gnoc },
1705 { .compatible = "qcom,sdm660-mnoc", .data = &sdm660_mnoc },
1706 { .compatible = "qcom,sdm660-snoc", .data = &sdm660_snoc },
1709 MODULE_DEVICE_TABLE(of, sdm660_noc_of_match);
1711 static struct platform_driver sdm660_noc_driver = {
1712 .probe = qnoc_probe,
1713 .remove = qnoc_remove,
1715 .name = "qnoc-sdm660",
1716 .of_match_table = sdm660_noc_of_match,
1719 module_platform_driver(sdm660_noc_driver);
1720 MODULE_DESCRIPTION("Qualcomm sdm660 NoC driver");
1721 MODULE_LICENSE("GPL v2");