Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 */
6
7#include <linux/device.h>
8#include <linux/interconnect.h>
9#include <linux/interconnect-provider.h>
10#include <linux/module.h>
11#include <linux/of_platform.h>
12#include <dt-bindings/interconnect/qcom,glymur-rpmh.h>
13
14#include "bcm-voter.h"
15#include "icc-rpmh.h"
16
17static struct qcom_icc_node qup0_core_slave = {
18 .name = "qup0_core_slave",
19 .channels = 1,
20 .buswidth = 4,
21};
22
23static struct qcom_icc_node qup1_core_slave = {
24 .name = "qup1_core_slave",
25 .channels = 1,
26 .buswidth = 4,
27};
28
29static struct qcom_icc_node qup2_core_slave = {
30 .name = "qup2_core_slave",
31 .channels = 1,
32 .buswidth = 4,
33};
34
35static struct qcom_icc_node qhs_ahb2phy0 = {
36 .name = "qhs_ahb2phy0",
37 .channels = 1,
38 .buswidth = 4,
39};
40
41static struct qcom_icc_node qhs_ahb2phy1 = {
42 .name = "qhs_ahb2phy1",
43 .channels = 1,
44 .buswidth = 4,
45};
46
47static struct qcom_icc_node qhs_ahb2phy2 = {
48 .name = "qhs_ahb2phy2",
49 .channels = 1,
50 .buswidth = 4,
51};
52
53static struct qcom_icc_node qhs_ahb2phy3 = {
54 .name = "qhs_ahb2phy3",
55 .channels = 1,
56 .buswidth = 4,
57};
58
59static struct qcom_icc_node qhs_av1_enc_cfg = {
60 .name = "qhs_av1_enc_cfg",
61 .channels = 1,
62 .buswidth = 4,
63};
64
65static struct qcom_icc_node qhs_camera_cfg = {
66 .name = "qhs_camera_cfg",
67 .channels = 1,
68 .buswidth = 4,
69};
70
71static struct qcom_icc_node qhs_clk_ctl = {
72 .name = "qhs_clk_ctl",
73 .channels = 1,
74 .buswidth = 4,
75};
76
77static struct qcom_icc_node qhs_crypto0_cfg = {
78 .name = "qhs_crypto0_cfg",
79 .channels = 1,
80 .buswidth = 4,
81};
82
83static struct qcom_icc_node qhs_display_cfg = {
84 .name = "qhs_display_cfg",
85 .channels = 1,
86 .buswidth = 4,
87};
88
89static struct qcom_icc_node qhs_gpuss_cfg = {
90 .name = "qhs_gpuss_cfg",
91 .channels = 1,
92 .buswidth = 8,
93};
94
95static struct qcom_icc_node qhs_imem_cfg = {
96 .name = "qhs_imem_cfg",
97 .channels = 1,
98 .buswidth = 4,
99};
100
101static struct qcom_icc_node qhs_pcie0_cfg = {
102 .name = "qhs_pcie0_cfg",
103 .channels = 1,
104 .buswidth = 4,
105};
106
107static struct qcom_icc_node qhs_pcie1_cfg = {
108 .name = "qhs_pcie1_cfg",
109 .channels = 1,
110 .buswidth = 4,
111};
112
113static struct qcom_icc_node qhs_pcie2_cfg = {
114 .name = "qhs_pcie2_cfg",
115 .channels = 1,
116 .buswidth = 4,
117};
118
119static struct qcom_icc_node qhs_pcie3a_cfg = {
120 .name = "qhs_pcie3a_cfg",
121 .channels = 1,
122 .buswidth = 4,
123};
124
125static struct qcom_icc_node qhs_pcie3b_cfg = {
126 .name = "qhs_pcie3b_cfg",
127 .channels = 1,
128 .buswidth = 4,
129};
130
131static struct qcom_icc_node qhs_pcie4_cfg = {
132 .name = "qhs_pcie4_cfg",
133 .channels = 1,
134 .buswidth = 4,
135};
136
137static struct qcom_icc_node qhs_pcie5_cfg = {
138 .name = "qhs_pcie5_cfg",
139 .channels = 1,
140 .buswidth = 4,
141};
142
143static struct qcom_icc_node qhs_pcie6_cfg = {
144 .name = "qhs_pcie6_cfg",
145 .channels = 1,
146 .buswidth = 4,
147};
148
149static struct qcom_icc_node qhs_pcie_rscc = {
150 .name = "qhs_pcie_rscc",
151 .channels = 1,
152 .buswidth = 4,
153};
154
155static struct qcom_icc_node qhs_pdm = {
156 .name = "qhs_pdm",
157 .channels = 1,
158 .buswidth = 4,
159};
160
161static struct qcom_icc_node qhs_prng = {
162 .name = "qhs_prng",
163 .channels = 1,
164 .buswidth = 4,
165};
166
167static struct qcom_icc_node qhs_qdss_cfg = {
168 .name = "qhs_qdss_cfg",
169 .channels = 1,
170 .buswidth = 4,
171};
172
173static struct qcom_icc_node qhs_qspi = {
174 .name = "qhs_qspi",
175 .channels = 1,
176 .buswidth = 4,
177};
178
179static struct qcom_icc_node qhs_qup0 = {
180 .name = "qhs_qup0",
181 .channels = 1,
182 .buswidth = 4,
183};
184
185static struct qcom_icc_node qhs_qup1 = {
186 .name = "qhs_qup1",
187 .channels = 1,
188 .buswidth = 4,
189};
190
191static struct qcom_icc_node qhs_qup2 = {
192 .name = "qhs_qup2",
193 .channels = 1,
194 .buswidth = 4,
195};
196
197static struct qcom_icc_node qhs_sdc2 = {
198 .name = "qhs_sdc2",
199 .channels = 1,
200 .buswidth = 4,
201};
202
203static struct qcom_icc_node qhs_sdc4 = {
204 .name = "qhs_sdc4",
205 .channels = 1,
206 .buswidth = 4,
207};
208
209static struct qcom_icc_node qhs_smmuv3_cfg = {
210 .name = "qhs_smmuv3_cfg",
211 .channels = 1,
212 .buswidth = 8,
213};
214
215static struct qcom_icc_node qhs_tcsr = {
216 .name = "qhs_tcsr",
217 .channels = 1,
218 .buswidth = 4,
219};
220
221static struct qcom_icc_node qhs_tlmm = {
222 .name = "qhs_tlmm",
223 .channels = 1,
224 .buswidth = 4,
225};
226
227static struct qcom_icc_node qhs_ufs_mem_cfg = {
228 .name = "qhs_ufs_mem_cfg",
229 .channels = 1,
230 .buswidth = 4,
231};
232
233static struct qcom_icc_node qhs_usb2_0_cfg = {
234 .name = "qhs_usb2_0_cfg",
235 .channels = 1,
236 .buswidth = 4,
237};
238
239static struct qcom_icc_node qhs_usb3_0_cfg = {
240 .name = "qhs_usb3_0_cfg",
241 .channels = 1,
242 .buswidth = 4,
243};
244
245static struct qcom_icc_node qhs_usb3_1_cfg = {
246 .name = "qhs_usb3_1_cfg",
247 .channels = 1,
248 .buswidth = 4,
249};
250
251static struct qcom_icc_node qhs_usb3_2_cfg = {
252 .name = "qhs_usb3_2_cfg",
253 .channels = 1,
254 .buswidth = 4,
255};
256
257static struct qcom_icc_node qhs_usb3_mp_cfg = {
258 .name = "qhs_usb3_mp_cfg",
259 .channels = 1,
260 .buswidth = 4,
261};
262
263static struct qcom_icc_node qhs_usb4_0_cfg = {
264 .name = "qhs_usb4_0_cfg",
265 .channels = 1,
266 .buswidth = 4,
267};
268
269static struct qcom_icc_node qhs_usb4_1_cfg = {
270 .name = "qhs_usb4_1_cfg",
271 .channels = 1,
272 .buswidth = 4,
273};
274
275static struct qcom_icc_node qhs_usb4_2_cfg = {
276 .name = "qhs_usb4_2_cfg",
277 .channels = 1,
278 .buswidth = 4,
279};
280
281static struct qcom_icc_node qhs_venus_cfg = {
282 .name = "qhs_venus_cfg",
283 .channels = 1,
284 .buswidth = 4,
285};
286
287static struct qcom_icc_node qss_lpass_qtb_cfg = {
288 .name = "qss_lpass_qtb_cfg",
289 .channels = 1,
290 .buswidth = 4,
291};
292
293static struct qcom_icc_node qss_nsp_qtb_cfg = {
294 .name = "qss_nsp_qtb_cfg",
295 .channels = 1,
296 .buswidth = 4,
297};
298
299static struct qcom_icc_node xs_qdss_stm = {
300 .name = "xs_qdss_stm",
301 .channels = 1,
302 .buswidth = 4,
303};
304
305static struct qcom_icc_node xs_sys_tcu_cfg = {
306 .name = "xs_sys_tcu_cfg",
307 .channels = 1,
308 .buswidth = 8,
309};
310
311static struct qcom_icc_node qhs_aoss = {
312 .name = "qhs_aoss",
313 .channels = 1,
314 .buswidth = 4,
315};
316
317static struct qcom_icc_node qhs_ipc_router = {
318 .name = "qhs_ipc_router",
319 .channels = 1,
320 .buswidth = 4,
321};
322
323static struct qcom_icc_node qhs_soccp = {
324 .name = "qhs_soccp",
325 .channels = 1,
326 .buswidth = 4,
327};
328
329static struct qcom_icc_node qhs_tme_cfg = {
330 .name = "qhs_tme_cfg",
331 .channels = 1,
332 .buswidth = 4,
333};
334
335static struct qcom_icc_node qns_apss = {
336 .name = "qns_apss",
337 .channels = 1,
338 .buswidth = 8,
339};
340
341static struct qcom_icc_node qxs_boot_imem = {
342 .name = "qxs_boot_imem",
343 .channels = 1,
344 .buswidth = 16,
345};
346
347static struct qcom_icc_node qxs_imem = {
348 .name = "qxs_imem",
349 .channels = 1,
350 .buswidth = 8,
351};
352
353static struct qcom_icc_node ebi = {
354 .name = "ebi",
355 .channels = 12,
356 .buswidth = 4,
357};
358
359static struct qcom_icc_node srvc_mnoc = {
360 .name = "srvc_mnoc",
361 .channels = 1,
362 .buswidth = 4,
363};
364
365static struct qcom_icc_node srvc_nsinoc = {
366 .name = "srvc_nsinoc",
367 .channels = 1,
368 .buswidth = 4,
369};
370
371static struct qcom_icc_node srvc_pcie_east_aggre_noc = {
372 .name = "srvc_pcie_east_aggre_noc",
373 .channels = 1,
374 .buswidth = 4,
375};
376
377static struct qcom_icc_node qhs_hscnoc_pcie_east_ms_mpu_cfg = {
378 .name = "qhs_hscnoc_pcie_east_ms_mpu_cfg",
379 .channels = 1,
380 .buswidth = 4,
381};
382
383static struct qcom_icc_node srvc_pcie_east = {
384 .name = "srvc_pcie_east",
385 .channels = 1,
386 .buswidth = 4,
387};
388
389static struct qcom_icc_node xs_pcie_0 = {
390 .name = "xs_pcie_0",
391 .channels = 1,
392 .buswidth = 16,
393};
394
395static struct qcom_icc_node xs_pcie_1 = {
396 .name = "xs_pcie_1",
397 .channels = 1,
398 .buswidth = 32,
399};
400
401static struct qcom_icc_node xs_pcie_5 = {
402 .name = "xs_pcie_5",
403 .channels = 1,
404 .buswidth = 32,
405};
406
407static struct qcom_icc_node srvc_pcie_west_aggre_noc = {
408 .name = "srvc_pcie_west_aggre_noc",
409 .channels = 1,
410 .buswidth = 4,
411};
412
413static struct qcom_icc_node qhs_hscnoc_pcie_west_ms_mpu_cfg = {
414 .name = "qhs_hscnoc_pcie_west_ms_mpu_cfg",
415 .channels = 1,
416 .buswidth = 4,
417};
418
419static struct qcom_icc_node srvc_pcie_west = {
420 .name = "srvc_pcie_west",
421 .channels = 1,
422 .buswidth = 4,
423};
424
425static struct qcom_icc_node xs_pcie_2 = {
426 .name = "xs_pcie_2",
427 .channels = 1,
428 .buswidth = 16,
429};
430
431static struct qcom_icc_node xs_pcie_3a = {
432 .name = "xs_pcie_3a",
433 .channels = 1,
434 .buswidth = 64,
435};
436
437static struct qcom_icc_node xs_pcie_3b = {
438 .name = "xs_pcie_3b",
439 .channels = 1,
440 .buswidth = 32,
441};
442
443static struct qcom_icc_node xs_pcie_4 = {
444 .name = "xs_pcie_4",
445 .channels = 1,
446 .buswidth = 16,
447};
448
449static struct qcom_icc_node xs_pcie_6 = {
450 .name = "xs_pcie_6",
451 .channels = 1,
452 .buswidth = 16,
453};
454
455static struct qcom_icc_node qup0_core_master = {
456 .name = "qup0_core_master",
457 .channels = 1,
458 .buswidth = 4,
459 .num_links = 1,
460 .link_nodes = { &qup0_core_slave },
461};
462
463static struct qcom_icc_node qup1_core_master = {
464 .name = "qup1_core_master",
465 .channels = 1,
466 .buswidth = 4,
467 .num_links = 1,
468 .link_nodes = { &qup1_core_slave },
469};
470
471static struct qcom_icc_node qup2_core_master = {
472 .name = "qup2_core_master",
473 .channels = 1,
474 .buswidth = 4,
475 .num_links = 1,
476 .link_nodes = { &qup2_core_slave },
477};
478
479static struct qcom_icc_node llcc_mc = {
480 .name = "llcc_mc",
481 .channels = 12,
482 .buswidth = 4,
483 .num_links = 1,
484 .link_nodes = { &ebi },
485};
486
487static struct qcom_icc_node qsm_mnoc_cfg = {
488 .name = "qsm_mnoc_cfg",
489 .channels = 1,
490 .buswidth = 4,
491 .num_links = 1,
492 .link_nodes = { &srvc_mnoc },
493};
494
495static struct qcom_icc_node qsm_pcie_east_anoc_cfg = {
496 .name = "qsm_pcie_east_anoc_cfg",
497 .channels = 1,
498 .buswidth = 4,
499 .num_links = 1,
500 .link_nodes = { &srvc_pcie_east_aggre_noc },
501};
502
503static struct qcom_icc_node qnm_hscnoc_pcie_east = {
504 .name = "qnm_hscnoc_pcie_east",
505 .channels = 1,
506 .buswidth = 32,
507 .num_links = 3,
508 .link_nodes = { &xs_pcie_0, &xs_pcie_1,
509 &xs_pcie_5 },
510};
511
512static struct qcom_icc_node qsm_cnoc_pcie_east_slave_cfg = {
513 .name = "qsm_cnoc_pcie_east_slave_cfg",
514 .channels = 1,
515 .buswidth = 4,
516 .num_links = 2,
517 .link_nodes = { &qhs_hscnoc_pcie_east_ms_mpu_cfg,
518 &srvc_pcie_east },
519};
520
521static struct qcom_icc_node qsm_pcie_west_anoc_cfg = {
522 .name = "qsm_pcie_west_anoc_cfg",
523 .channels = 1,
524 .buswidth = 4,
525 .num_links = 1,
526 .link_nodes = { &srvc_pcie_west_aggre_noc },
527};
528
529static struct qcom_icc_node qnm_hscnoc_pcie_west = {
530 .name = "qnm_hscnoc_pcie_west",
531 .channels = 1,
532 .buswidth = 32,
533 .num_links = 5,
534 .link_nodes = { &xs_pcie_2, &xs_pcie_3a,
535 &xs_pcie_3b, &xs_pcie_4,
536 &xs_pcie_6 },
537};
538
539static struct qcom_icc_node qsm_cnoc_pcie_west_slave_cfg = {
540 .name = "qsm_cnoc_pcie_west_slave_cfg",
541 .channels = 1,
542 .buswidth = 4,
543 .num_links = 2,
544 .link_nodes = { &qhs_hscnoc_pcie_west_ms_mpu_cfg,
545 &srvc_pcie_west },
546};
547
548static struct qcom_icc_node qss_cnoc_pcie_slave_east_cfg = {
549 .name = "qss_cnoc_pcie_slave_east_cfg",
550 .channels = 1,
551 .buswidth = 4,
552 .num_links = 1,
553 .link_nodes = { &qsm_cnoc_pcie_east_slave_cfg },
554};
555
556static struct qcom_icc_node qss_cnoc_pcie_slave_west_cfg = {
557 .name = "qss_cnoc_pcie_slave_west_cfg",
558 .channels = 1,
559 .buswidth = 4,
560 .num_links = 1,
561 .link_nodes = { &qsm_cnoc_pcie_west_slave_cfg },
562};
563
564static struct qcom_icc_node qss_mnoc_cfg = {
565 .name = "qss_mnoc_cfg",
566 .channels = 1,
567 .buswidth = 4,
568 .num_links = 1,
569 .link_nodes = { &qsm_mnoc_cfg },
570};
571
572static struct qcom_icc_node qss_pcie_east_anoc_cfg = {
573 .name = "qss_pcie_east_anoc_cfg",
574 .channels = 1,
575 .buswidth = 4,
576 .num_links = 1,
577 .link_nodes = { &qsm_pcie_east_anoc_cfg },
578};
579
580static struct qcom_icc_node qss_pcie_west_anoc_cfg = {
581 .name = "qss_pcie_west_anoc_cfg",
582 .channels = 1,
583 .buswidth = 4,
584 .num_links = 1,
585 .link_nodes = { &qsm_pcie_west_anoc_cfg },
586};
587
588static struct qcom_icc_node qns_llcc = {
589 .name = "qns_llcc",
590 .channels = 12,
591 .buswidth = 16,
592 .num_links = 1,
593 .link_nodes = { &llcc_mc },
594};
595
596static struct qcom_icc_node qns_pcie_east = {
597 .name = "qns_pcie_east",
598 .channels = 1,
599 .buswidth = 32,
600 .num_links = 1,
601 .link_nodes = { &qnm_hscnoc_pcie_east },
602};
603
604static struct qcom_icc_node qns_pcie_west = {
605 .name = "qns_pcie_west",
606 .channels = 1,
607 .buswidth = 32,
608 .num_links = 1,
609 .link_nodes = { &qnm_hscnoc_pcie_west },
610};
611
612static struct qcom_icc_node qsm_cfg = {
613 .name = "qsm_cfg",
614 .channels = 1,
615 .buswidth = 4,
616 .num_links = 51,
617 .link_nodes = { &qhs_ahb2phy0, &qhs_ahb2phy1,
618 &qhs_ahb2phy2, &qhs_ahb2phy3,
619 &qhs_av1_enc_cfg, &qhs_camera_cfg,
620 &qhs_clk_ctl, &qhs_crypto0_cfg,
621 &qhs_display_cfg, &qhs_gpuss_cfg,
622 &qhs_imem_cfg, &qhs_pcie0_cfg,
623 &qhs_pcie1_cfg, &qhs_pcie2_cfg,
624 &qhs_pcie3a_cfg, &qhs_pcie3b_cfg,
625 &qhs_pcie4_cfg, &qhs_pcie5_cfg,
626 &qhs_pcie6_cfg, &qhs_pcie_rscc,
627 &qhs_pdm, &qhs_prng,
628 &qhs_qdss_cfg, &qhs_qspi,
629 &qhs_qup0, &qhs_qup1,
630 &qhs_qup2, &qhs_sdc2,
631 &qhs_sdc4, &qhs_smmuv3_cfg,
632 &qhs_tcsr, &qhs_tlmm,
633 &qhs_ufs_mem_cfg, &qhs_usb2_0_cfg,
634 &qhs_usb3_0_cfg, &qhs_usb3_1_cfg,
635 &qhs_usb3_2_cfg, &qhs_usb3_mp_cfg,
636 &qhs_usb4_0_cfg, &qhs_usb4_1_cfg,
637 &qhs_usb4_2_cfg, &qhs_venus_cfg,
638 &qss_cnoc_pcie_slave_east_cfg, &qss_cnoc_pcie_slave_west_cfg,
639 &qss_lpass_qtb_cfg, &qss_mnoc_cfg,
640 &qss_nsp_qtb_cfg, &qss_pcie_east_anoc_cfg,
641 &qss_pcie_west_anoc_cfg, &xs_qdss_stm,
642 &xs_sys_tcu_cfg },
643};
644
645static struct qcom_icc_node xm_gic = {
646 .name = "xm_gic",
647 .channels = 1,
648 .buswidth = 8,
649 .qosbox = &(const struct qcom_icc_qosbox) {
650 .num_ports = 1,
651 .port_offsets = { 0x33000 },
652 .prio = 0,
653 .urg_fwd = 1,
654 .prio_fwd_disable = 0,
655 },
656 .num_links = 1,
657 .link_nodes = { &qns_llcc },
658};
659
660static struct qcom_icc_node qss_cfg = {
661 .name = "qss_cfg",
662 .channels = 1,
663 .buswidth = 4,
664 .num_links = 1,
665 .link_nodes = { &qsm_cfg },
666};
667
668static struct qcom_icc_node qnm_hscnoc_cnoc = {
669 .name = "qnm_hscnoc_cnoc",
670 .channels = 1,
671 .buswidth = 16,
672 .num_links = 8,
673 .link_nodes = { &qhs_aoss, &qhs_ipc_router,
674 &qhs_soccp, &qhs_tme_cfg,
675 &qns_apss, &qss_cfg,
676 &qxs_boot_imem, &qxs_imem },
677};
678
679static struct qcom_icc_node qns_hscnoc_cnoc = {
680 .name = "qns_hscnoc_cnoc",
681 .channels = 1,
682 .buswidth = 16,
683 .num_links = 1,
684 .link_nodes = { &qnm_hscnoc_cnoc },
685};
686
687static struct qcom_icc_node alm_gpu_tcu = {
688 .name = "alm_gpu_tcu",
689 .channels = 1,
690 .buswidth = 8,
691 .qosbox = &(const struct qcom_icc_qosbox) {
692 .num_ports = 1,
693 .port_offsets = { 0x933000 },
694 .prio = 1,
695 .urg_fwd = 0,
696 .prio_fwd_disable = 1,
697 },
698 .num_links = 2,
699 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc },
700};
701
702static struct qcom_icc_node alm_pcie_qtc = {
703 .name = "alm_pcie_qtc",
704 .channels = 1,
705 .buswidth = 8,
706 .qosbox = &(const struct qcom_icc_qosbox) {
707 .num_ports = 1,
708 .port_offsets = { 0x51f000 },
709 .prio = 3,
710 .urg_fwd = 0,
711 .prio_fwd_disable = 1,
712 },
713 .num_links = 2,
714 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc },
715};
716
717static struct qcom_icc_node alm_sys_tcu = {
718 .name = "alm_sys_tcu",
719 .channels = 1,
720 .buswidth = 8,
721 .qosbox = &(const struct qcom_icc_qosbox) {
722 .num_ports = 1,
723 .port_offsets = { 0x51f080 },
724 .prio = 6,
725 .urg_fwd = 0,
726 .prio_fwd_disable = 1,
727 },
728 .num_links = 2,
729 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc },
730};
731
732static struct qcom_icc_node chm_apps = {
733 .name = "chm_apps",
734 .channels = 6,
735 .buswidth = 32,
736 .num_links = 4,
737 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
738 &qns_pcie_east, &qns_pcie_west },
739};
740
741static struct qcom_icc_node qnm_aggre_noc_east = {
742 .name = "qnm_aggre_noc_east",
743 .channels = 1,
744 .buswidth = 32,
745 .qosbox = &(const struct qcom_icc_qosbox) {
746 .num_ports = 1,
747 .port_offsets = { 0x934000 },
748 .prio = 2,
749 .urg_fwd = 1,
750 .prio_fwd_disable = 1,
751 },
752 .num_links = 4,
753 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
754 &qns_pcie_east, &qns_pcie_west },
755};
756
757static struct qcom_icc_node qnm_gpu = {
758 .name = "qnm_gpu",
759 .channels = 4,
760 .buswidth = 32,
761 .qosbox = &(const struct qcom_icc_qosbox) {
762 .num_ports = 4,
763 .port_offsets = { 0x935000, 0x936000, 0x937000, 0x938000 },
764 .prio = 0,
765 .urg_fwd = 1,
766 .prio_fwd_disable = 1,
767 },
768 .num_links = 4,
769 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
770 &qns_pcie_east, &qns_pcie_west },
771};
772
773static struct qcom_icc_node qnm_lpass = {
774 .name = "qnm_lpass",
775 .channels = 1,
776 .buswidth = 16,
777 .qosbox = &(const struct qcom_icc_qosbox) {
778 .num_ports = 1,
779 .port_offsets = { 0x939000 },
780 .prio = 0,
781 .urg_fwd = 1,
782 .prio_fwd_disable = 0,
783 },
784 .num_links = 4,
785 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
786 &qns_pcie_east, &qns_pcie_west },
787};
788
789static struct qcom_icc_node qnm_mnoc_hf = {
790 .name = "qnm_mnoc_hf",
791 .channels = 2,
792 .buswidth = 32,
793 .qosbox = &(const struct qcom_icc_qosbox) {
794 .num_ports = 2,
795 .port_offsets = { 0x721000, 0x721080 },
796 .prio = 0,
797 .urg_fwd = 1,
798 .prio_fwd_disable = 0,
799 },
800 .num_links = 4,
801 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
802 &qns_pcie_east, &qns_pcie_west },
803};
804
805static struct qcom_icc_node qnm_mnoc_sf = {
806 .name = "qnm_mnoc_sf",
807 .channels = 2,
808 .buswidth = 32,
809 .qosbox = &(const struct qcom_icc_qosbox) {
810 .num_ports = 2,
811 .port_offsets = { 0x721100, 0x721180 },
812 .prio = 0,
813 .urg_fwd = 1,
814 .prio_fwd_disable = 0,
815 },
816 .num_links = 4,
817 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
818 &qns_pcie_east, &qns_pcie_west },
819};
820
821static struct qcom_icc_node qnm_nsp_noc = {
822 .name = "qnm_nsp_noc",
823 .channels = 4,
824 .buswidth = 32,
825 .qosbox = &(const struct qcom_icc_qosbox) {
826 .num_ports = 4,
827 .port_offsets = { 0x816000, 0x816080, 0x816100, 0x816180 },
828 .prio = 0,
829 .urg_fwd = 1,
830 .prio_fwd_disable = 1,
831 },
832 .num_links = 4,
833 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
834 &qns_pcie_east, &qns_pcie_west },
835};
836
837static struct qcom_icc_node qnm_pcie_east = {
838 .name = "qnm_pcie_east",
839 .channels = 1,
840 .buswidth = 32,
841 .qosbox = &(const struct qcom_icc_qosbox) {
842 .num_ports = 1,
843 .port_offsets = { 0x93a000 },
844 .prio = 2,
845 .urg_fwd = 1,
846 .prio_fwd_disable = 1,
847 },
848 .num_links = 2,
849 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc },
850};
851
852static struct qcom_icc_node qnm_pcie_west = {
853 .name = "qnm_pcie_west",
854 .channels = 1,
855 .buswidth = 64,
856 .qosbox = &(const struct qcom_icc_qosbox) {
857 .num_ports = 1,
858 .port_offsets = { 0x721200 },
859 .prio = 2,
860 .urg_fwd = 1,
861 .prio_fwd_disable = 1,
862 },
863 .num_links = 2,
864 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc },
865};
866
867static struct qcom_icc_node qnm_snoc_sf = {
868 .name = "qnm_snoc_sf",
869 .channels = 1,
870 .buswidth = 64,
871 .qosbox = &(const struct qcom_icc_qosbox) {
872 .num_ports = 1,
873 .port_offsets = { 0x51f100 },
874 .prio = 2,
875 .urg_fwd = 1,
876 .prio_fwd_disable = 1,
877 },
878 .num_links = 4,
879 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
880 &qns_pcie_east, &qns_pcie_west },
881};
882
883static struct qcom_icc_node qxm_wlan_q6 = {
884 .name = "qxm_wlan_q6",
885 .channels = 1,
886 .buswidth = 8,
887 .num_links = 4,
888 .link_nodes = { &qns_hscnoc_cnoc, &qns_llcc,
889 &qns_pcie_east, &qns_pcie_west },
890};
891
892static struct qcom_icc_node qns_a4noc_hscnoc = {
893 .name = "qns_a4noc_hscnoc",
894 .channels = 1,
895 .buswidth = 32,
896 .num_links = 1,
897 .link_nodes = { &qnm_aggre_noc_east },
898};
899
900static struct qcom_icc_node qns_lpass_ag_noc_gemnoc = {
901 .name = "qns_lpass_ag_noc_gemnoc",
902 .channels = 1,
903 .buswidth = 16,
904 .num_links = 1,
905 .link_nodes = { &qnm_lpass },
906};
907
908static struct qcom_icc_node qns_mem_noc_hf = {
909 .name = "qns_mem_noc_hf",
910 .channels = 2,
911 .buswidth = 32,
912 .num_links = 1,
913 .link_nodes = { &qnm_mnoc_hf },
914};
915
916static struct qcom_icc_node qns_mem_noc_sf = {
917 .name = "qns_mem_noc_sf",
918 .channels = 2,
919 .buswidth = 32,
920 .num_links = 1,
921 .link_nodes = { &qnm_mnoc_sf },
922};
923
924static struct qcom_icc_node qns_nsp_hscnoc = {
925 .name = "qns_nsp_hscnoc",
926 .channels = 4,
927 .buswidth = 32,
928 .num_links = 1,
929 .link_nodes = { &qnm_nsp_noc },
930};
931
932static struct qcom_icc_node qns_pcie_east_mem_noc = {
933 .name = "qns_pcie_east_mem_noc",
934 .channels = 1,
935 .buswidth = 32,
936 .num_links = 1,
937 .link_nodes = { &qnm_pcie_east },
938};
939
940static struct qcom_icc_node qns_pcie_west_mem_noc = {
941 .name = "qns_pcie_west_mem_noc",
942 .channels = 1,
943 .buswidth = 64,
944 .num_links = 1,
945 .link_nodes = { &qnm_pcie_west },
946};
947
948static struct qcom_icc_node qns_gemnoc_sf = {
949 .name = "qns_gemnoc_sf",
950 .channels = 1,
951 .buswidth = 64,
952 .num_links = 1,
953 .link_nodes = { &qnm_snoc_sf },
954};
955
956static struct qcom_icc_node xm_usb3_0 = {
957 .name = "xm_usb3_0",
958 .channels = 1,
959 .buswidth = 8,
960 .qosbox = &(const struct qcom_icc_qosbox) {
961 .num_ports = 1,
962 .port_offsets = { 0xa000 },
963 .prio = 0,
964 .urg_fwd = 0,
965 .prio_fwd_disable = 1,
966 },
967 .num_links = 1,
968 .link_nodes = { &qns_a4noc_hscnoc },
969};
970
971static struct qcom_icc_node xm_usb3_1 = {
972 .name = "xm_usb3_1",
973 .channels = 1,
974 .buswidth = 8,
975 .qosbox = &(const struct qcom_icc_qosbox) {
976 .num_ports = 1,
977 .port_offsets = { 0xb000 },
978 .prio = 0,
979 .urg_fwd = 0,
980 .prio_fwd_disable = 1,
981 },
982 .num_links = 1,
983 .link_nodes = { &qns_a4noc_hscnoc },
984};
985
986static struct qcom_icc_node xm_usb4_0 = {
987 .name = "xm_usb4_0",
988 .channels = 1,
989 .buswidth = 16,
990 .qosbox = &(const struct qcom_icc_qosbox) {
991 .num_ports = 1,
992 .port_offsets = { 0xc000 },
993 .prio = 0,
994 .urg_fwd = 0,
995 .prio_fwd_disable = 1,
996 },
997 .num_links = 1,
998 .link_nodes = { &qns_a4noc_hscnoc },
999};
1000
1001static struct qcom_icc_node xm_usb4_1 = {
1002 .name = "xm_usb4_1",
1003 .channels = 1,
1004 .buswidth = 32,
1005 .qosbox = &(const struct qcom_icc_qosbox) {
1006 .num_ports = 1,
1007 .port_offsets = { 0xd000 },
1008 .prio = 0,
1009 .urg_fwd = 0,
1010 .prio_fwd_disable = 1,
1011 },
1012 .num_links = 1,
1013 .link_nodes = { &qns_a4noc_hscnoc },
1014};
1015
1016static struct qcom_icc_node qnm_lpiaon_noc = {
1017 .name = "qnm_lpiaon_noc",
1018 .channels = 1,
1019 .buswidth = 16,
1020 .num_links = 1,
1021 .link_nodes = { &qns_lpass_ag_noc_gemnoc },
1022};
1023
1024static struct qcom_icc_node qnm_av1_enc = {
1025 .name = "qnm_av1_enc",
1026 .channels = 1,
1027 .buswidth = 32,
1028 .qosbox = &(const struct qcom_icc_qosbox) {
1029 .num_ports = 1,
1030 .port_offsets = { 0x30000 },
1031 .prio = 4,
1032 .urg_fwd = 1,
1033 .prio_fwd_disable = 1,
1034 },
1035 .num_links = 1,
1036 .link_nodes = { &qns_mem_noc_sf },
1037};
1038
1039static struct qcom_icc_node qnm_camnoc_hf = {
1040 .name = "qnm_camnoc_hf",
1041 .channels = 2,
1042 .buswidth = 32,
1043 .qosbox = &(const struct qcom_icc_qosbox) {
1044 .num_ports = 2,
1045 .port_offsets = { 0x29000, 0x2a000 },
1046 .prio = 0,
1047 .urg_fwd = 1,
1048 .prio_fwd_disable = 0,
1049 },
1050 .num_links = 1,
1051 .link_nodes = { &qns_mem_noc_hf },
1052};
1053
1054static struct qcom_icc_node qnm_camnoc_icp = {
1055 .name = "qnm_camnoc_icp",
1056 .channels = 1,
1057 .buswidth = 8,
1058 .qosbox = &(const struct qcom_icc_qosbox) {
1059 .num_ports = 1,
1060 .port_offsets = { 0x2b000 },
1061 .prio = 4,
1062 .urg_fwd = 1,
1063 .prio_fwd_disable = 1,
1064 },
1065 .num_links = 1,
1066 .link_nodes = { &qns_mem_noc_sf },
1067};
1068
1069static struct qcom_icc_node qnm_camnoc_sf = {
1070 .name = "qnm_camnoc_sf",
1071 .channels = 2,
1072 .buswidth = 32,
1073 .qosbox = &(const struct qcom_icc_qosbox) {
1074 .num_ports = 2,
1075 .port_offsets = { 0x2c000, 0x2d000 },
1076 .prio = 0,
1077 .urg_fwd = 1,
1078 .prio_fwd_disable = 0,
1079 },
1080 .num_links = 1,
1081 .link_nodes = { &qns_mem_noc_sf },
1082};
1083
1084static struct qcom_icc_node qnm_eva = {
1085 .name = "qnm_eva",
1086 .channels = 1,
1087 .buswidth = 32,
1088 .qosbox = &(const struct qcom_icc_qosbox) {
1089 .num_ports = 1,
1090 .port_offsets = { 0x34000 },
1091 .prio = 0,
1092 .urg_fwd = 1,
1093 .prio_fwd_disable = 0,
1094 },
1095 .num_links = 1,
1096 .link_nodes = { &qns_mem_noc_sf },
1097};
1098
1099static struct qcom_icc_node qnm_mdp = {
1100 .name = "qnm_mdp",
1101 .channels = 2,
1102 .buswidth = 32,
1103 .qosbox = &(const struct qcom_icc_qosbox) {
1104 .num_ports = 2,
1105 .port_offsets = { 0x2e000, 0x2f000 },
1106 .prio = 0,
1107 .urg_fwd = 1,
1108 .prio_fwd_disable = 0,
1109 },
1110 .num_links = 1,
1111 .link_nodes = { &qns_mem_noc_hf },
1112};
1113
1114static struct qcom_icc_node qnm_vapss_hcp = {
1115 .name = "qnm_vapss_hcp",
1116 .channels = 1,
1117 .buswidth = 32,
1118 .num_links = 1,
1119 .link_nodes = { &qns_mem_noc_sf },
1120};
1121
1122static struct qcom_icc_node qnm_video = {
1123 .name = "qnm_video",
1124 .channels = 4,
1125 .buswidth = 32,
1126 .qosbox = &(const struct qcom_icc_qosbox) {
1127 .num_ports = 4,
1128 .port_offsets = { 0x31000, 0x32000, 0x37000, 0x38000 },
1129 .prio = 0,
1130 .urg_fwd = 1,
1131 .prio_fwd_disable = 0,
1132 },
1133 .num_links = 1,
1134 .link_nodes = { &qns_mem_noc_sf },
1135};
1136
1137static struct qcom_icc_node qnm_video_cv_cpu = {
1138 .name = "qnm_video_cv_cpu",
1139 .channels = 1,
1140 .buswidth = 8,
1141 .qosbox = &(const struct qcom_icc_qosbox) {
1142 .num_ports = 1,
1143 .port_offsets = { 0x33000 },
1144 .prio = 4,
1145 .urg_fwd = 1,
1146 .prio_fwd_disable = 1,
1147 },
1148 .num_links = 1,
1149 .link_nodes = { &qns_mem_noc_sf },
1150};
1151
1152static struct qcom_icc_node qnm_video_v_cpu = {
1153 .name = "qnm_video_v_cpu",
1154 .channels = 1,
1155 .buswidth = 8,
1156 .qosbox = &(const struct qcom_icc_qosbox) {
1157 .num_ports = 1,
1158 .port_offsets = { 0x35000 },
1159 .prio = 4,
1160 .urg_fwd = 1,
1161 .prio_fwd_disable = 1,
1162 },
1163 .num_links = 1,
1164 .link_nodes = { &qns_mem_noc_sf },
1165};
1166
1167static struct qcom_icc_node qnm_nsp = {
1168 .name = "qnm_nsp",
1169 .channels = 4,
1170 .buswidth = 32,
1171 .num_links = 1,
1172 .link_nodes = { &qns_nsp_hscnoc },
1173};
1174
1175static struct qcom_icc_node xm_pcie_0 = {
1176 .name = "xm_pcie_0",
1177 .channels = 1,
1178 .buswidth = 16,
1179 .qosbox = &(const struct qcom_icc_qosbox) {
1180 .num_ports = 1,
1181 .port_offsets = { 0xb000 },
1182 .prio = 2,
1183 .urg_fwd = 0,
1184 .prio_fwd_disable = 0,
1185 },
1186 .num_links = 1,
1187 .link_nodes = { &qns_pcie_east_mem_noc },
1188};
1189
1190static struct qcom_icc_node xm_pcie_1 = {
1191 .name = "xm_pcie_1",
1192 .channels = 1,
1193 .buswidth = 32,
1194 .qosbox = &(const struct qcom_icc_qosbox) {
1195 .num_ports = 1,
1196 .port_offsets = { 0xc000 },
1197 .prio = 2,
1198 .urg_fwd = 0,
1199 .prio_fwd_disable = 0,
1200 },
1201 .num_links = 1,
1202 .link_nodes = { &qns_pcie_east_mem_noc },
1203};
1204
1205static struct qcom_icc_node xm_pcie_5 = {
1206 .name = "xm_pcie_5",
1207 .channels = 1,
1208 .buswidth = 32,
1209 .qosbox = &(const struct qcom_icc_qosbox) {
1210 .num_ports = 1,
1211 .port_offsets = { 0xd000 },
1212 .prio = 2,
1213 .urg_fwd = 0,
1214 .prio_fwd_disable = 0,
1215 },
1216 .num_links = 1,
1217 .link_nodes = { &qns_pcie_east_mem_noc },
1218};
1219
1220static struct qcom_icc_node xm_pcie_2 = {
1221 .name = "xm_pcie_2",
1222 .channels = 1,
1223 .buswidth = 16,
1224 .qosbox = &(const struct qcom_icc_qosbox) {
1225 .num_ports = 1,
1226 .port_offsets = { 0xd000 },
1227 .prio = 2,
1228 .urg_fwd = 0,
1229 .prio_fwd_disable = 0,
1230 },
1231 .num_links = 1,
1232 .link_nodes = { &qns_pcie_west_mem_noc },
1233};
1234
1235static struct qcom_icc_node xm_pcie_3a = {
1236 .name = "xm_pcie_3a",
1237 .channels = 1,
1238 .buswidth = 64,
1239 .qosbox = &(const struct qcom_icc_qosbox) {
1240 .num_ports = 1,
1241 .port_offsets = { 0xd200 },
1242 .prio = 2,
1243 .urg_fwd = 0,
1244 .prio_fwd_disable = 0,
1245 },
1246 .num_links = 1,
1247 .link_nodes = { &qns_pcie_west_mem_noc },
1248};
1249
1250static struct qcom_icc_node xm_pcie_3b = {
1251 .name = "xm_pcie_3b",
1252 .channels = 1,
1253 .buswidth = 32,
1254 .qosbox = &(const struct qcom_icc_qosbox) {
1255 .num_ports = 1,
1256 .port_offsets = { 0xd400 },
1257 .prio = 2,
1258 .urg_fwd = 0,
1259 .prio_fwd_disable = 0,
1260 },
1261 .num_links = 1,
1262 .link_nodes = { &qns_pcie_west_mem_noc },
1263};
1264
1265static struct qcom_icc_node xm_pcie_4 = {
1266 .name = "xm_pcie_4",
1267 .channels = 1,
1268 .buswidth = 16,
1269 .qosbox = &(const struct qcom_icc_qosbox) {
1270 .num_ports = 1,
1271 .port_offsets = { 0xd600 },
1272 .prio = 2,
1273 .urg_fwd = 0,
1274 .prio_fwd_disable = 0,
1275 },
1276 .num_links = 1,
1277 .link_nodes = { &qns_pcie_west_mem_noc },
1278};
1279
1280static struct qcom_icc_node xm_pcie_6 = {
1281 .name = "xm_pcie_6",
1282 .channels = 1,
1283 .buswidth = 16,
1284 .qosbox = &(const struct qcom_icc_qosbox) {
1285 .num_ports = 1,
1286 .port_offsets = { 0xd800 },
1287 .prio = 2,
1288 .urg_fwd = 0,
1289 .prio_fwd_disable = 0,
1290 },
1291 .num_links = 1,
1292 .link_nodes = { &qns_pcie_west_mem_noc },
1293};
1294
1295static struct qcom_icc_node qnm_aggre1_noc = {
1296 .name = "qnm_aggre1_noc",
1297 .channels = 1,
1298 .buswidth = 16,
1299 .num_links = 1,
1300 .link_nodes = { &qns_gemnoc_sf },
1301};
1302
1303static struct qcom_icc_node qnm_aggre2_noc = {
1304 .name = "qnm_aggre2_noc",
1305 .channels = 1,
1306 .buswidth = 16,
1307 .num_links = 1,
1308 .link_nodes = { &qns_gemnoc_sf },
1309};
1310
1311static struct qcom_icc_node qnm_aggre3_noc = {
1312 .name = "qnm_aggre3_noc",
1313 .channels = 1,
1314 .buswidth = 32,
1315 .num_links = 1,
1316 .link_nodes = { &qns_gemnoc_sf },
1317};
1318
1319static struct qcom_icc_node qnm_nsi_noc = {
1320 .name = "qnm_nsi_noc",
1321 .channels = 1,
1322 .buswidth = 8,
1323 .qosbox = &(const struct qcom_icc_qosbox) {
1324 .num_ports = 1,
1325 .port_offsets = { 0x1c000 },
1326 .prio = 0,
1327 .urg_fwd = 0,
1328 .prio_fwd_disable = 1,
1329 },
1330 .num_links = 1,
1331 .link_nodes = { &qns_gemnoc_sf },
1332};
1333
1334static struct qcom_icc_node qnm_oobmss = {
1335 .name = "qnm_oobmss",
1336 .channels = 1,
1337 .buswidth = 16,
1338 .qosbox = &(const struct qcom_icc_qosbox) {
1339 .num_ports = 1,
1340 .port_offsets = { 0x1b000 },
1341 .prio = 0,
1342 .urg_fwd = 0,
1343 .prio_fwd_disable = 1,
1344 },
1345 .num_links = 1,
1346 .link_nodes = { &qns_gemnoc_sf },
1347};
1348
1349static struct qcom_icc_node qns_a1noc_snoc = {
1350 .name = "qns_a1noc_snoc",
1351 .channels = 1,
1352 .buswidth = 16,
1353 .num_links = 1,
1354 .link_nodes = { &qnm_aggre1_noc },
1355};
1356
1357static struct qcom_icc_node qns_a2noc_snoc = {
1358 .name = "qns_a2noc_snoc",
1359 .channels = 1,
1360 .buswidth = 16,
1361 .num_links = 1,
1362 .link_nodes = { &qnm_aggre2_noc },
1363};
1364
1365static struct qcom_icc_node qns_a3noc_snoc = {
1366 .name = "qns_a3noc_snoc",
1367 .channels = 1,
1368 .buswidth = 32,
1369 .num_links = 1,
1370 .link_nodes = { &qnm_aggre3_noc },
1371};
1372
1373static struct qcom_icc_node qns_lpass_aggnoc = {
1374 .name = "qns_lpass_aggnoc",
1375 .channels = 1,
1376 .buswidth = 16,
1377 .num_links = 1,
1378 .link_nodes = { &qnm_lpiaon_noc },
1379};
1380
1381static struct qcom_icc_node qns_system_noc = {
1382 .name = "qns_system_noc",
1383 .channels = 1,
1384 .buswidth = 8,
1385 .num_links = 1,
1386 .link_nodes = { &qnm_nsi_noc },
1387};
1388
1389static struct qcom_icc_node qns_oobmss_snoc = {
1390 .name = "qns_oobmss_snoc",
1391 .channels = 1,
1392 .buswidth = 16,
1393 .num_links = 1,
1394 .link_nodes = { &qnm_oobmss },
1395};
1396
1397static struct qcom_icc_node qxm_crypto = {
1398 .name = "qxm_crypto",
1399 .channels = 1,
1400 .buswidth = 8,
1401 .qosbox = &(const struct qcom_icc_qosbox) {
1402 .num_ports = 1,
1403 .port_offsets = { 0xb000 },
1404 .prio = 0,
1405 .urg_fwd = 1,
1406 .prio_fwd_disable = 1,
1407 },
1408 .num_links = 1,
1409 .link_nodes = { &qns_a1noc_snoc },
1410};
1411
1412static struct qcom_icc_node qxm_soccp = {
1413 .name = "qxm_soccp",
1414 .channels = 1,
1415 .buswidth = 8,
1416 .qosbox = &(const struct qcom_icc_qosbox) {
1417 .num_ports = 1,
1418 .port_offsets = { 0xe000 },
1419 .prio = 0,
1420 .urg_fwd = 1,
1421 .prio_fwd_disable = 1,
1422 },
1423 .num_links = 1,
1424 .link_nodes = { &qns_a1noc_snoc },
1425};
1426
1427static struct qcom_icc_node xm_qdss_etr_0 = {
1428 .name = "xm_qdss_etr_0",
1429 .channels = 1,
1430 .buswidth = 8,
1431 .qosbox = &(const struct qcom_icc_qosbox) {
1432 .num_ports = 1,
1433 .port_offsets = { 0xc000 },
1434 .prio = 0,
1435 .urg_fwd = 0,
1436 .prio_fwd_disable = 1,
1437 },
1438 .num_links = 1,
1439 .link_nodes = { &qns_a1noc_snoc },
1440};
1441
1442static struct qcom_icc_node xm_qdss_etr_1 = {
1443 .name = "xm_qdss_etr_1",
1444 .channels = 1,
1445 .buswidth = 8,
1446 .qosbox = &(const struct qcom_icc_qosbox) {
1447 .num_ports = 1,
1448 .port_offsets = { 0xd000 },
1449 .prio = 0,
1450 .urg_fwd = 0,
1451 .prio_fwd_disable = 1,
1452 },
1453 .num_links = 1,
1454 .link_nodes = { &qns_a1noc_snoc },
1455};
1456
1457static struct qcom_icc_node xm_ufs_mem = {
1458 .name = "xm_ufs_mem",
1459 .channels = 1,
1460 .buswidth = 16,
1461 .qosbox = &(const struct qcom_icc_qosbox) {
1462 .num_ports = 1,
1463 .port_offsets = { 0xa000 },
1464 .prio = 0,
1465 .urg_fwd = 0,
1466 .prio_fwd_disable = 1,
1467 },
1468 .num_links = 1,
1469 .link_nodes = { &qns_a2noc_snoc },
1470};
1471
1472static struct qcom_icc_node xm_usb3_2 = {
1473 .name = "xm_usb3_2",
1474 .channels = 1,
1475 .buswidth = 8,
1476 .qosbox = &(const struct qcom_icc_qosbox) {
1477 .num_ports = 1,
1478 .port_offsets = { 0x8000 },
1479 .prio = 0,
1480 .urg_fwd = 0,
1481 .prio_fwd_disable = 1,
1482 },
1483 .num_links = 1,
1484 .link_nodes = { &qns_a2noc_snoc },
1485};
1486
1487static struct qcom_icc_node xm_usb4_2 = {
1488 .name = "xm_usb4_2",
1489 .channels = 1,
1490 .buswidth = 16,
1491 .qosbox = &(const struct qcom_icc_qosbox) {
1492 .num_ports = 1,
1493 .port_offsets = { 0x9000 },
1494 .prio = 0,
1495 .urg_fwd = 0,
1496 .prio_fwd_disable = 1,
1497 },
1498 .num_links = 1,
1499 .link_nodes = { &qns_a2noc_snoc },
1500};
1501
1502static struct qcom_icc_node qhm_qspi = {
1503 .name = "qhm_qspi",
1504 .channels = 1,
1505 .buswidth = 4,
1506 .qosbox = &(const struct qcom_icc_qosbox) {
1507 .num_ports = 1,
1508 .port_offsets = { 0x10000 },
1509 .prio = 0,
1510 .urg_fwd = 0,
1511 .prio_fwd_disable = 1,
1512 },
1513 .num_links = 1,
1514 .link_nodes = { &qns_a3noc_snoc },
1515};
1516
1517static struct qcom_icc_node qhm_qup0 = {
1518 .name = "qhm_qup0",
1519 .channels = 1,
1520 .buswidth = 4,
1521 .qosbox = &(const struct qcom_icc_qosbox) {
1522 .num_ports = 1,
1523 .port_offsets = { 0x11000 },
1524 .prio = 0,
1525 .urg_fwd = 0,
1526 .prio_fwd_disable = 1,
1527 },
1528 .num_links = 1,
1529 .link_nodes = { &qns_a3noc_snoc },
1530};
1531
1532static struct qcom_icc_node qhm_qup1 = {
1533 .name = "qhm_qup1",
1534 .channels = 1,
1535 .buswidth = 4,
1536 .qosbox = &(const struct qcom_icc_qosbox) {
1537 .num_ports = 1,
1538 .port_offsets = { 0x12000 },
1539 .prio = 0,
1540 .urg_fwd = 0,
1541 .prio_fwd_disable = 1,
1542 },
1543 .num_links = 1,
1544 .link_nodes = { &qns_a3noc_snoc },
1545};
1546
1547static struct qcom_icc_node qhm_qup2 = {
1548 .name = "qhm_qup2",
1549 .channels = 1,
1550 .buswidth = 4,
1551 .qosbox = &(const struct qcom_icc_qosbox) {
1552 .num_ports = 1,
1553 .port_offsets = { 0x13000 },
1554 .prio = 0,
1555 .urg_fwd = 0,
1556 .prio_fwd_disable = 1,
1557 },
1558 .num_links = 1,
1559 .link_nodes = { &qns_a3noc_snoc },
1560};
1561
1562static struct qcom_icc_node qxm_sp = {
1563 .name = "qxm_sp",
1564 .channels = 1,
1565 .buswidth = 8,
1566 .num_links = 1,
1567 .link_nodes = { &qns_a3noc_snoc },
1568};
1569
1570static struct qcom_icc_node xm_sdc2 = {
1571 .name = "xm_sdc2",
1572 .channels = 1,
1573 .buswidth = 8,
1574 .qosbox = &(const struct qcom_icc_qosbox) {
1575 .num_ports = 1,
1576 .port_offsets = { 0x18000 },
1577 .prio = 0,
1578 .urg_fwd = 0,
1579 .prio_fwd_disable = 1,
1580 },
1581 .num_links = 1,
1582 .link_nodes = { &qns_a3noc_snoc },
1583};
1584
1585static struct qcom_icc_node xm_sdc4 = {
1586 .name = "xm_sdc4",
1587 .channels = 1,
1588 .buswidth = 8,
1589 .qosbox = &(const struct qcom_icc_qosbox) {
1590 .num_ports = 1,
1591 .port_offsets = { 0x14000 },
1592 .prio = 0,
1593 .urg_fwd = 0,
1594 .prio_fwd_disable = 1,
1595 },
1596 .num_links = 1,
1597 .link_nodes = { &qns_a3noc_snoc },
1598};
1599
1600static struct qcom_icc_node xm_usb2_0 = {
1601 .name = "xm_usb2_0",
1602 .channels = 1,
1603 .buswidth = 8,
1604 .qosbox = &(const struct qcom_icc_qosbox) {
1605 .num_ports = 1,
1606 .port_offsets = { 0x15000 },
1607 .prio = 0,
1608 .urg_fwd = 0,
1609 .prio_fwd_disable = 1,
1610 },
1611 .num_links = 1,
1612 .link_nodes = { &qns_a3noc_snoc },
1613};
1614
1615static struct qcom_icc_node xm_usb3_mp = {
1616 .name = "xm_usb3_mp",
1617 .channels = 1,
1618 .buswidth = 16,
1619 .qosbox = &(const struct qcom_icc_qosbox) {
1620 .num_ports = 1,
1621 .port_offsets = { 0x16000 },
1622 .prio = 0,
1623 .urg_fwd = 0,
1624 .prio_fwd_disable = 1,
1625 },
1626 .num_links = 1,
1627 .link_nodes = { &qns_a3noc_snoc },
1628};
1629
1630static struct qcom_icc_node qnm_lpass_lpinoc = {
1631 .name = "qnm_lpass_lpinoc",
1632 .channels = 1,
1633 .buswidth = 16,
1634 .num_links = 1,
1635 .link_nodes = { &qns_lpass_aggnoc },
1636};
1637
1638static struct qcom_icc_node xm_cpucp = {
1639 .name = "xm_cpucp",
1640 .channels = 1,
1641 .buswidth = 8,
1642 .num_links = 2,
1643 .link_nodes = { &qns_system_noc, &srvc_nsinoc },
1644};
1645
1646static struct qcom_icc_node xm_mem_sp = {
1647 .name = "xm_mem_sp",
1648 .channels = 1,
1649 .buswidth = 8,
1650 .num_links = 1,
1651 .link_nodes = { &qns_oobmss_snoc },
1652};
1653
1654static struct qcom_icc_node qns_lpi_aon_noc = {
1655 .name = "qns_lpi_aon_noc",
1656 .channels = 1,
1657 .buswidth = 16,
1658 .num_links = 1,
1659 .link_nodes = { &qnm_lpass_lpinoc },
1660};
1661
1662static struct qcom_icc_node qnm_lpinoc_dsp_qns4m = {
1663 .name = "qnm_lpinoc_dsp_qns4m",
1664 .channels = 1,
1665 .buswidth = 16,
1666 .num_links = 1,
1667 .link_nodes = { &qns_lpi_aon_noc },
1668};
1669
1670static struct qcom_icc_bcm bcm_acv = {
1671 .name = "ACV",
1672 .enable_mask = BIT(3),
1673 .num_nodes = 1,
1674 .nodes = { &ebi },
1675};
1676
1677static struct qcom_icc_bcm bcm_ce0 = {
1678 .name = "CE0",
1679 .num_nodes = 1,
1680 .nodes = { &qxm_crypto },
1681};
1682
1683static struct qcom_icc_bcm bcm_cn0 = {
1684 .name = "CN0",
1685 .keepalive = true,
1686 .enable_mask = BIT(0),
1687 .num_nodes = 60,
1688 .nodes = { &qsm_cfg, &qhs_ahb2phy0,
1689 &qhs_ahb2phy1, &qhs_ahb2phy2,
1690 &qhs_ahb2phy3, &qhs_av1_enc_cfg,
1691 &qhs_camera_cfg, &qhs_clk_ctl,
1692 &qhs_crypto0_cfg, &qhs_gpuss_cfg,
1693 &qhs_imem_cfg, &qhs_pcie0_cfg,
1694 &qhs_pcie1_cfg, &qhs_pcie2_cfg,
1695 &qhs_pcie3a_cfg, &qhs_pcie3b_cfg,
1696 &qhs_pcie4_cfg, &qhs_pcie5_cfg,
1697 &qhs_pcie6_cfg, &qhs_pcie_rscc,
1698 &qhs_pdm, &qhs_prng,
1699 &qhs_qdss_cfg, &qhs_qspi,
1700 &qhs_qup0, &qhs_qup1,
1701 &qhs_qup2, &qhs_sdc2,
1702 &qhs_sdc4, &qhs_smmuv3_cfg,
1703 &qhs_tcsr, &qhs_tlmm,
1704 &qhs_ufs_mem_cfg, &qhs_usb2_0_cfg,
1705 &qhs_usb3_0_cfg, &qhs_usb3_1_cfg,
1706 &qhs_usb3_2_cfg, &qhs_usb3_mp_cfg,
1707 &qhs_usb4_0_cfg, &qhs_usb4_1_cfg,
1708 &qhs_usb4_2_cfg, &qhs_venus_cfg,
1709 &qss_cnoc_pcie_slave_east_cfg, &qss_cnoc_pcie_slave_west_cfg,
1710 &qss_lpass_qtb_cfg, &qss_mnoc_cfg,
1711 &qss_nsp_qtb_cfg, &qss_pcie_east_anoc_cfg,
1712 &qss_pcie_west_anoc_cfg, &xs_qdss_stm,
1713 &xs_sys_tcu_cfg, &qnm_hscnoc_cnoc,
1714 &qhs_aoss, &qhs_ipc_router,
1715 &qhs_soccp, &qhs_tme_cfg,
1716 &qns_apss, &qss_cfg,
1717 &qxs_boot_imem, &qxs_imem },
1718};
1719
1720static struct qcom_icc_bcm bcm_cn1 = {
1721 .name = "CN1",
1722 .num_nodes = 1,
1723 .nodes = { &qhs_display_cfg },
1724};
1725
1726static struct qcom_icc_bcm bcm_co0 = {
1727 .name = "CO0",
1728 .enable_mask = BIT(0),
1729 .num_nodes = 2,
1730 .nodes = { &qnm_nsp, &qns_nsp_hscnoc },
1731};
1732
1733static struct qcom_icc_bcm bcm_lp0 = {
1734 .name = "LP0",
1735 .num_nodes = 2,
1736 .nodes = { &qnm_lpass_lpinoc, &qns_lpass_aggnoc },
1737};
1738
1739static struct qcom_icc_bcm bcm_mc0 = {
1740 .name = "MC0",
1741 .keepalive = true,
1742 .num_nodes = 1,
1743 .nodes = { &ebi },
1744};
1745
1746static struct qcom_icc_bcm bcm_mm0 = {
1747 .name = "MM0",
1748 .num_nodes = 1,
1749 .nodes = { &qns_mem_noc_hf },
1750};
1751
1752static struct qcom_icc_bcm bcm_mm1 = {
1753 .name = "MM1",
1754 .enable_mask = BIT(0),
1755 .num_nodes = 11,
1756 .nodes = { &qnm_av1_enc, &qnm_camnoc_hf,
1757 &qnm_camnoc_icp, &qnm_camnoc_sf,
1758 &qnm_eva, &qnm_mdp,
1759 &qnm_vapss_hcp, &qnm_video,
1760 &qnm_video_cv_cpu, &qnm_video_v_cpu,
1761 &qns_mem_noc_sf },
1762};
1763
1764static struct qcom_icc_bcm bcm_qup0 = {
1765 .name = "QUP0",
1766 .vote_scale = 1,
1767 .keepalive = true,
1768 .num_nodes = 1,
1769 .nodes = { &qup0_core_slave },
1770};
1771
1772static struct qcom_icc_bcm bcm_qup1 = {
1773 .name = "QUP1",
1774 .vote_scale = 1,
1775 .keepalive = true,
1776 .num_nodes = 1,
1777 .nodes = { &qup1_core_slave },
1778};
1779
1780static struct qcom_icc_bcm bcm_qup2 = {
1781 .name = "QUP2",
1782 .vote_scale = 1,
1783 .keepalive = true,
1784 .num_nodes = 1,
1785 .nodes = { &qup2_core_slave },
1786};
1787
1788static struct qcom_icc_bcm bcm_sh0 = {
1789 .name = "SH0",
1790 .keepalive = true,
1791 .num_nodes = 1,
1792 .nodes = { &qns_llcc },
1793};
1794
1795static struct qcom_icc_bcm bcm_sh1 = {
1796 .name = "SH1",
1797 .enable_mask = BIT(0),
1798 .num_nodes = 18,
1799 .nodes = { &alm_gpu_tcu, &alm_pcie_qtc,
1800 &alm_sys_tcu, &chm_apps,
1801 &qnm_aggre_noc_east, &qnm_gpu,
1802 &qnm_lpass, &qnm_mnoc_hf,
1803 &qnm_mnoc_sf, &qnm_nsp_noc,
1804 &qnm_pcie_east, &qnm_pcie_west,
1805 &qnm_snoc_sf, &qxm_wlan_q6,
1806 &xm_gic, &qns_hscnoc_cnoc,
1807 &qns_pcie_east, &qns_pcie_west },
1808};
1809
1810static struct qcom_icc_bcm bcm_sn0 = {
1811 .name = "SN0",
1812 .keepalive = true,
1813 .num_nodes = 1,
1814 .nodes = { &qns_gemnoc_sf },
1815};
1816
1817static struct qcom_icc_bcm bcm_sn1 = {
1818 .name = "SN1",
1819 .enable_mask = BIT(0),
1820 .num_nodes = 1,
1821 .nodes = { &qnm_oobmss },
1822};
1823
1824static struct qcom_icc_bcm bcm_sn2 = {
1825 .name = "SN2",
1826 .num_nodes = 1,
1827 .nodes = { &qnm_aggre1_noc },
1828};
1829
1830static struct qcom_icc_bcm bcm_sn3 = {
1831 .name = "SN3",
1832 .num_nodes = 1,
1833 .nodes = { &qnm_aggre2_noc },
1834};
1835
1836static struct qcom_icc_bcm bcm_sn4 = {
1837 .name = "SN4",
1838 .num_nodes = 1,
1839 .nodes = { &qnm_aggre3_noc },
1840};
1841
1842static struct qcom_icc_bcm bcm_sn5 = {
1843 .name = "SN5",
1844 .num_nodes = 1,
1845 .nodes = { &qns_a4noc_hscnoc },
1846};
1847
1848static struct qcom_icc_bcm bcm_sn6 = {
1849 .name = "SN6",
1850 .num_nodes = 4,
1851 .nodes = { &qns_pcie_east_mem_noc, &qnm_hscnoc_pcie_east,
1852 &qns_pcie_west_mem_noc, &qnm_hscnoc_pcie_west },
1853};
1854
1855static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
1856 &bcm_ce0,
1857};
1858
1859static struct qcom_icc_node * const aggre1_noc_nodes[] = {
1860 [MASTER_CRYPTO] = &qxm_crypto,
1861 [MASTER_SOCCP_PROC] = &qxm_soccp,
1862 [MASTER_QDSS_ETR] = &xm_qdss_etr_0,
1863 [MASTER_QDSS_ETR_1] = &xm_qdss_etr_1,
1864 [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
1865};
1866
1867static const struct regmap_config glymur_aggre1_noc_regmap_config = {
1868 .reg_bits = 32,
1869 .reg_stride = 4,
1870 .val_bits = 32,
1871 .max_register = 0x14400,
1872 .fast_io = true,
1873};
1874
1875static const struct qcom_icc_desc glymur_aggre1_noc = {
1876 .config = &glymur_aggre1_noc_regmap_config,
1877 .nodes = aggre1_noc_nodes,
1878 .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
1879 .bcms = aggre1_noc_bcms,
1880 .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
1881};
1882
1883static struct qcom_icc_node * const aggre2_noc_nodes[] = {
1884 [MASTER_UFS_MEM] = &xm_ufs_mem,
1885 [MASTER_USB3_2] = &xm_usb3_2,
1886 [MASTER_USB4_2] = &xm_usb4_2,
1887 [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
1888};
1889
1890static const struct regmap_config glymur_aggre2_noc_regmap_config = {
1891 .reg_bits = 32,
1892 .reg_stride = 4,
1893 .val_bits = 32,
1894 .max_register = 0x14400,
1895 .fast_io = true,
1896};
1897
1898static const struct qcom_icc_desc glymur_aggre2_noc = {
1899 .config = &glymur_aggre2_noc_regmap_config,
1900 .nodes = aggre2_noc_nodes,
1901 .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
1902 .qos_requires_clocks = true,
1903};
1904
1905static struct qcom_icc_node * const aggre3_noc_nodes[] = {
1906 [MASTER_QSPI_0] = &qhm_qspi,
1907 [MASTER_QUP_0] = &qhm_qup0,
1908 [MASTER_QUP_1] = &qhm_qup1,
1909 [MASTER_QUP_2] = &qhm_qup2,
1910 [MASTER_SP] = &qxm_sp,
1911 [MASTER_SDCC_2] = &xm_sdc2,
1912 [MASTER_SDCC_4] = &xm_sdc4,
1913 [MASTER_USB2] = &xm_usb2_0,
1914 [MASTER_USB3_MP] = &xm_usb3_mp,
1915 [SLAVE_A3NOC_SNOC] = &qns_a3noc_snoc,
1916};
1917
1918static const struct regmap_config glymur_aggre3_noc_regmap_config = {
1919 .reg_bits = 32,
1920 .reg_stride = 4,
1921 .val_bits = 32,
1922 .max_register = 0x1d400,
1923 .fast_io = true,
1924};
1925
1926static const struct qcom_icc_desc glymur_aggre3_noc = {
1927 .config = &glymur_aggre3_noc_regmap_config,
1928 .nodes = aggre3_noc_nodes,
1929 .num_nodes = ARRAY_SIZE(aggre3_noc_nodes),
1930};
1931
1932static struct qcom_icc_bcm * const aggre4_noc_bcms[] = {
1933 &bcm_sn5,
1934};
1935
1936static struct qcom_icc_node * const aggre4_noc_nodes[] = {
1937 [MASTER_USB3_0] = &xm_usb3_0,
1938 [MASTER_USB3_1] = &xm_usb3_1,
1939 [MASTER_USB4_0] = &xm_usb4_0,
1940 [MASTER_USB4_1] = &xm_usb4_1,
1941 [SLAVE_A4NOC_HSCNOC] = &qns_a4noc_hscnoc,
1942};
1943
1944static const struct regmap_config glymur_aggre4_noc_regmap_config = {
1945 .reg_bits = 32,
1946 .reg_stride = 4,
1947 .val_bits = 32,
1948 .max_register = 0x14400,
1949 .fast_io = true,
1950};
1951
1952static const struct qcom_icc_desc glymur_aggre4_noc = {
1953 .config = &glymur_aggre4_noc_regmap_config,
1954 .nodes = aggre4_noc_nodes,
1955 .num_nodes = ARRAY_SIZE(aggre4_noc_nodes),
1956 .bcms = aggre4_noc_bcms,
1957 .num_bcms = ARRAY_SIZE(aggre4_noc_bcms),
1958 .qos_requires_clocks = true,
1959};
1960
1961static struct qcom_icc_bcm * const clk_virt_bcms[] = {
1962 &bcm_qup0,
1963 &bcm_qup1,
1964 &bcm_qup2,
1965};
1966
1967static struct qcom_icc_node * const clk_virt_nodes[] = {
1968 [MASTER_QUP_CORE_0] = &qup0_core_master,
1969 [MASTER_QUP_CORE_1] = &qup1_core_master,
1970 [MASTER_QUP_CORE_2] = &qup2_core_master,
1971 [SLAVE_QUP_CORE_0] = &qup0_core_slave,
1972 [SLAVE_QUP_CORE_1] = &qup1_core_slave,
1973 [SLAVE_QUP_CORE_2] = &qup2_core_slave,
1974};
1975
1976static const struct qcom_icc_desc glymur_clk_virt = {
1977 .nodes = clk_virt_nodes,
1978 .num_nodes = ARRAY_SIZE(clk_virt_nodes),
1979 .bcms = clk_virt_bcms,
1980 .num_bcms = ARRAY_SIZE(clk_virt_bcms),
1981};
1982
1983static struct qcom_icc_bcm * const cnoc_cfg_bcms[] = {
1984 &bcm_cn0,
1985 &bcm_cn1,
1986};
1987
1988static struct qcom_icc_node * const cnoc_cfg_nodes[] = {
1989 [MASTER_CNOC_CFG] = &qsm_cfg,
1990 [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0,
1991 [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1,
1992 [SLAVE_AHB2PHY_2] = &qhs_ahb2phy2,
1993 [SLAVE_AHB2PHY_3] = &qhs_ahb2phy3,
1994 [SLAVE_AV1_ENC_CFG] = &qhs_av1_enc_cfg,
1995 [SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
1996 [SLAVE_CLK_CTL] = &qhs_clk_ctl,
1997 [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
1998 [SLAVE_DISPLAY_CFG] = &qhs_display_cfg,
1999 [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
2000 [SLAVE_IMEM_CFG] = &qhs_imem_cfg,
2001 [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
2002 [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
2003 [SLAVE_PCIE_2_CFG] = &qhs_pcie2_cfg,
2004 [SLAVE_PCIE_3A_CFG] = &qhs_pcie3a_cfg,
2005 [SLAVE_PCIE_3B_CFG] = &qhs_pcie3b_cfg,
2006 [SLAVE_PCIE_4_CFG] = &qhs_pcie4_cfg,
2007 [SLAVE_PCIE_5_CFG] = &qhs_pcie5_cfg,
2008 [SLAVE_PCIE_6_CFG] = &qhs_pcie6_cfg,
2009 [SLAVE_PCIE_RSCC] = &qhs_pcie_rscc,
2010 [SLAVE_PDM] = &qhs_pdm,
2011 [SLAVE_PRNG] = &qhs_prng,
2012 [SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
2013 [SLAVE_QSPI_0] = &qhs_qspi,
2014 [SLAVE_QUP_0] = &qhs_qup0,
2015 [SLAVE_QUP_1] = &qhs_qup1,
2016 [SLAVE_QUP_2] = &qhs_qup2,
2017 [SLAVE_SDCC_2] = &qhs_sdc2,
2018 [SLAVE_SDCC_4] = &qhs_sdc4,
2019 [SLAVE_SMMUV3_CFG] = &qhs_smmuv3_cfg,
2020 [SLAVE_TCSR] = &qhs_tcsr,
2021 [SLAVE_TLMM] = &qhs_tlmm,
2022 [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
2023 [SLAVE_USB2] = &qhs_usb2_0_cfg,
2024 [SLAVE_USB3_0] = &qhs_usb3_0_cfg,
2025 [SLAVE_USB3_1] = &qhs_usb3_1_cfg,
2026 [SLAVE_USB3_2] = &qhs_usb3_2_cfg,
2027 [SLAVE_USB3_MP] = &qhs_usb3_mp_cfg,
2028 [SLAVE_USB4_0] = &qhs_usb4_0_cfg,
2029 [SLAVE_USB4_1] = &qhs_usb4_1_cfg,
2030 [SLAVE_USB4_2] = &qhs_usb4_2_cfg,
2031 [SLAVE_VENUS_CFG] = &qhs_venus_cfg,
2032 [SLAVE_CNOC_PCIE_SLAVE_EAST_CFG] = &qss_cnoc_pcie_slave_east_cfg,
2033 [SLAVE_CNOC_PCIE_SLAVE_WEST_CFG] = &qss_cnoc_pcie_slave_west_cfg,
2034 [SLAVE_LPASS_QTB_CFG] = &qss_lpass_qtb_cfg,
2035 [SLAVE_CNOC_MNOC_CFG] = &qss_mnoc_cfg,
2036 [SLAVE_NSP_QTB_CFG] = &qss_nsp_qtb_cfg,
2037 [SLAVE_PCIE_EAST_ANOC_CFG] = &qss_pcie_east_anoc_cfg,
2038 [SLAVE_PCIE_WEST_ANOC_CFG] = &qss_pcie_west_anoc_cfg,
2039 [SLAVE_QDSS_STM] = &xs_qdss_stm,
2040 [SLAVE_TCU] = &xs_sys_tcu_cfg,
2041};
2042
2043static const struct regmap_config glymur_cnoc_cfg_regmap_config = {
2044 .reg_bits = 32,
2045 .reg_stride = 4,
2046 .val_bits = 32,
2047 .max_register = 0x6600,
2048 .fast_io = true,
2049};
2050
2051static const struct qcom_icc_desc glymur_cnoc_cfg = {
2052 .config = &glymur_cnoc_cfg_regmap_config,
2053 .nodes = cnoc_cfg_nodes,
2054 .num_nodes = ARRAY_SIZE(cnoc_cfg_nodes),
2055 .bcms = cnoc_cfg_bcms,
2056 .num_bcms = ARRAY_SIZE(cnoc_cfg_bcms),
2057};
2058
2059static struct qcom_icc_bcm * const cnoc_main_bcms[] = {
2060 &bcm_cn0,
2061};
2062
2063static struct qcom_icc_node * const cnoc_main_nodes[] = {
2064 [MASTER_HSCNOC_CNOC] = &qnm_hscnoc_cnoc,
2065 [SLAVE_AOSS] = &qhs_aoss,
2066 [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
2067 [SLAVE_SOCCP] = &qhs_soccp,
2068 [SLAVE_TME_CFG] = &qhs_tme_cfg,
2069 [SLAVE_APPSS] = &qns_apss,
2070 [SLAVE_CNOC_CFG] = &qss_cfg,
2071 [SLAVE_BOOT_IMEM] = &qxs_boot_imem,
2072 [SLAVE_IMEM] = &qxs_imem,
2073};
2074
2075static const struct regmap_config glymur_cnoc_main_regmap_config = {
2076 .reg_bits = 32,
2077 .reg_stride = 4,
2078 .val_bits = 32,
2079 .max_register = 0x17080,
2080 .fast_io = true,
2081};
2082
2083static const struct qcom_icc_desc glymur_cnoc_main = {
2084 .config = &glymur_cnoc_main_regmap_config,
2085 .nodes = cnoc_main_nodes,
2086 .num_nodes = ARRAY_SIZE(cnoc_main_nodes),
2087 .bcms = cnoc_main_bcms,
2088 .num_bcms = ARRAY_SIZE(cnoc_main_bcms),
2089};
2090
2091static struct qcom_icc_bcm * const hscnoc_bcms[] = {
2092 &bcm_sh0,
2093 &bcm_sh1,
2094};
2095
2096static struct qcom_icc_node * const hscnoc_nodes[] = {
2097 [MASTER_GPU_TCU] = &alm_gpu_tcu,
2098 [MASTER_PCIE_TCU] = &alm_pcie_qtc,
2099 [MASTER_SYS_TCU] = &alm_sys_tcu,
2100 [MASTER_APPSS_PROC] = &chm_apps,
2101 [MASTER_AGGRE_NOC_EAST] = &qnm_aggre_noc_east,
2102 [MASTER_GFX3D] = &qnm_gpu,
2103 [MASTER_LPASS_GEM_NOC] = &qnm_lpass,
2104 [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
2105 [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
2106 [MASTER_COMPUTE_NOC] = &qnm_nsp_noc,
2107 [MASTER_PCIE_EAST] = &qnm_pcie_east,
2108 [MASTER_PCIE_WEST] = &qnm_pcie_west,
2109 [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
2110 [MASTER_WLAN_Q6] = &qxm_wlan_q6,
2111 [MASTER_GIC] = &xm_gic,
2112 [SLAVE_HSCNOC_CNOC] = &qns_hscnoc_cnoc,
2113 [SLAVE_LLCC] = &qns_llcc,
2114 [SLAVE_PCIE_EAST] = &qns_pcie_east,
2115 [SLAVE_PCIE_WEST] = &qns_pcie_west,
2116};
2117
2118static const struct regmap_config glymur_hscnoc_regmap_config = {
2119 .reg_bits = 32,
2120 .reg_stride = 4,
2121 .val_bits = 32,
2122 .max_register = 0x93a080,
2123 .fast_io = true,
2124};
2125
2126static const struct qcom_icc_desc glymur_hscnoc = {
2127 .config = &glymur_hscnoc_regmap_config,
2128 .nodes = hscnoc_nodes,
2129 .num_nodes = ARRAY_SIZE(hscnoc_nodes),
2130 .bcms = hscnoc_bcms,
2131 .num_bcms = ARRAY_SIZE(hscnoc_bcms),
2132};
2133
2134static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
2135 [MASTER_LPIAON_NOC] = &qnm_lpiaon_noc,
2136 [SLAVE_LPASS_GEM_NOC] = &qns_lpass_ag_noc_gemnoc,
2137};
2138
2139static const struct regmap_config glymur_lpass_ag_noc_regmap_config = {
2140 .reg_bits = 32,
2141 .reg_stride = 4,
2142 .val_bits = 32,
2143 .max_register = 0xe080,
2144 .fast_io = true,
2145};
2146
2147static const struct qcom_icc_desc glymur_lpass_ag_noc = {
2148 .config = &glymur_lpass_ag_noc_regmap_config,
2149 .nodes = lpass_ag_noc_nodes,
2150 .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
2151};
2152
2153static struct qcom_icc_bcm * const lpass_lpiaon_noc_bcms[] = {
2154 &bcm_lp0,
2155};
2156
2157static struct qcom_icc_node * const lpass_lpiaon_noc_nodes[] = {
2158 [MASTER_LPASS_LPINOC] = &qnm_lpass_lpinoc,
2159 [SLAVE_LPIAON_NOC_LPASS_AG_NOC] = &qns_lpass_aggnoc,
2160};
2161
2162static const struct regmap_config glymur_lpass_lpiaon_noc_regmap_config = {
2163 .reg_bits = 32,
2164 .reg_stride = 4,
2165 .val_bits = 32,
2166 .max_register = 0x19080,
2167 .fast_io = true,
2168};
2169
2170static const struct qcom_icc_desc glymur_lpass_lpiaon_noc = {
2171 .config = &glymur_lpass_lpiaon_noc_regmap_config,
2172 .nodes = lpass_lpiaon_noc_nodes,
2173 .num_nodes = ARRAY_SIZE(lpass_lpiaon_noc_nodes),
2174 .bcms = lpass_lpiaon_noc_bcms,
2175 .num_bcms = ARRAY_SIZE(lpass_lpiaon_noc_bcms),
2176};
2177
2178static struct qcom_icc_node * const lpass_lpicx_noc_nodes[] = {
2179 [MASTER_LPASS_PROC] = &qnm_lpinoc_dsp_qns4m,
2180 [SLAVE_LPICX_NOC_LPIAON_NOC] = &qns_lpi_aon_noc,
2181};
2182
2183static const struct regmap_config glymur_lpass_lpicx_noc_regmap_config = {
2184 .reg_bits = 32,
2185 .reg_stride = 4,
2186 .val_bits = 32,
2187 .max_register = 0x44080,
2188 .fast_io = true,
2189};
2190
2191static const struct qcom_icc_desc glymur_lpass_lpicx_noc = {
2192 .config = &glymur_lpass_lpicx_noc_regmap_config,
2193 .nodes = lpass_lpicx_noc_nodes,
2194 .num_nodes = ARRAY_SIZE(lpass_lpicx_noc_nodes),
2195};
2196
2197static struct qcom_icc_bcm * const mc_virt_bcms[] = {
2198 &bcm_acv,
2199 &bcm_mc0,
2200};
2201
2202static struct qcom_icc_node * const mc_virt_nodes[] = {
2203 [MASTER_LLCC] = &llcc_mc,
2204 [SLAVE_EBI1] = &ebi,
2205};
2206
2207static const struct qcom_icc_desc glymur_mc_virt = {
2208 .nodes = mc_virt_nodes,
2209 .num_nodes = ARRAY_SIZE(mc_virt_nodes),
2210 .bcms = mc_virt_bcms,
2211 .num_bcms = ARRAY_SIZE(mc_virt_bcms),
2212};
2213
2214static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
2215 &bcm_mm0,
2216 &bcm_mm1,
2217};
2218
2219static struct qcom_icc_node * const mmss_noc_nodes[] = {
2220 [MASTER_AV1_ENC] = &qnm_av1_enc,
2221 [MASTER_CAMNOC_HF] = &qnm_camnoc_hf,
2222 [MASTER_CAMNOC_ICP] = &qnm_camnoc_icp,
2223 [MASTER_CAMNOC_SF] = &qnm_camnoc_sf,
2224 [MASTER_EVA] = &qnm_eva,
2225 [MASTER_MDP] = &qnm_mdp,
2226 [MASTER_CDSP_HCP] = &qnm_vapss_hcp,
2227 [MASTER_VIDEO] = &qnm_video,
2228 [MASTER_VIDEO_CV_PROC] = &qnm_video_cv_cpu,
2229 [MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu,
2230 [MASTER_CNOC_MNOC_CFG] = &qsm_mnoc_cfg,
2231 [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
2232 [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
2233 [SLAVE_SERVICE_MNOC] = &srvc_mnoc,
2234};
2235
2236static const struct regmap_config glymur_mmss_noc_regmap_config = {
2237 .reg_bits = 32,
2238 .reg_stride = 4,
2239 .val_bits = 32,
2240 .max_register = 0x5b800,
2241 .fast_io = true,
2242};
2243
2244static const struct qcom_icc_desc glymur_mmss_noc = {
2245 .config = &glymur_mmss_noc_regmap_config,
2246 .nodes = mmss_noc_nodes,
2247 .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
2248 .bcms = mmss_noc_bcms,
2249 .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
2250};
2251
2252static struct qcom_icc_node * const nsinoc_nodes[] = {
2253 [MASTER_CPUCP] = &xm_cpucp,
2254 [SLAVE_NSINOC_SYSTEM_NOC] = &qns_system_noc,
2255 [SLAVE_SERVICE_NSINOC] = &srvc_nsinoc,
2256};
2257
2258static const struct regmap_config glymur_nsinoc_regmap_config = {
2259 .reg_bits = 32,
2260 .reg_stride = 4,
2261 .val_bits = 32,
2262 .max_register = 0x14080,
2263 .fast_io = true,
2264};
2265
2266static const struct qcom_icc_desc glymur_nsinoc = {
2267 .config = &glymur_nsinoc_regmap_config,
2268 .nodes = nsinoc_nodes,
2269 .num_nodes = ARRAY_SIZE(nsinoc_nodes),
2270};
2271
2272static struct qcom_icc_bcm * const nsp_noc_bcms[] = {
2273 &bcm_co0,
2274};
2275
2276static struct qcom_icc_node * const nsp_noc_nodes[] = {
2277 [MASTER_CDSP_PROC] = &qnm_nsp,
2278 [SLAVE_NSP0_HSC_NOC] = &qns_nsp_hscnoc,
2279};
2280
2281static const struct regmap_config glymur_nsp_noc_regmap_config = {
2282 .reg_bits = 32,
2283 .reg_stride = 4,
2284 .val_bits = 32,
2285 .max_register = 0x21280,
2286 .fast_io = true,
2287};
2288
2289static const struct qcom_icc_desc glymur_nsp_noc = {
2290 .config = &glymur_nsp_noc_regmap_config,
2291 .nodes = nsp_noc_nodes,
2292 .num_nodes = ARRAY_SIZE(nsp_noc_nodes),
2293 .bcms = nsp_noc_bcms,
2294 .num_bcms = ARRAY_SIZE(nsp_noc_bcms),
2295};
2296
2297static struct qcom_icc_node * const oobm_ss_noc_nodes[] = {
2298 [MASTER_OOBMSS_SP_PROC] = &xm_mem_sp,
2299 [SLAVE_OOBMSS_SNOC] = &qns_oobmss_snoc,
2300};
2301
2302static const struct regmap_config glymur_oobm_ss_noc_regmap_config = {
2303 .reg_bits = 32,
2304 .reg_stride = 4,
2305 .val_bits = 32,
2306 .max_register = 0x1e080,
2307 .fast_io = true,
2308};
2309
2310static const struct qcom_icc_desc glymur_oobm_ss_noc = {
2311 .config = &glymur_oobm_ss_noc_regmap_config,
2312 .nodes = oobm_ss_noc_nodes,
2313 .num_nodes = ARRAY_SIZE(oobm_ss_noc_nodes),
2314};
2315
2316static struct qcom_icc_bcm * const pcie_east_anoc_bcms[] = {
2317 &bcm_sn6,
2318};
2319
2320static struct qcom_icc_node * const pcie_east_anoc_nodes[] = {
2321 [MASTER_PCIE_EAST_ANOC_CFG] = &qsm_pcie_east_anoc_cfg,
2322 [MASTER_PCIE_0] = &xm_pcie_0,
2323 [MASTER_PCIE_1] = &xm_pcie_1,
2324 [MASTER_PCIE_5] = &xm_pcie_5,
2325 [SLAVE_PCIE_EAST_MEM_NOC] = &qns_pcie_east_mem_noc,
2326 [SLAVE_SERVICE_PCIE_EAST_AGGRE_NOC] = &srvc_pcie_east_aggre_noc,
2327};
2328
2329static const struct regmap_config glymur_pcie_east_anoc_regmap_config = {
2330 .reg_bits = 32,
2331 .reg_stride = 4,
2332 .val_bits = 32,
2333 .max_register = 0xf300,
2334 .fast_io = true,
2335};
2336
2337static const struct qcom_icc_desc glymur_pcie_east_anoc = {
2338 .config = &glymur_pcie_east_anoc_regmap_config,
2339 .nodes = pcie_east_anoc_nodes,
2340 .num_nodes = ARRAY_SIZE(pcie_east_anoc_nodes),
2341 .bcms = pcie_east_anoc_bcms,
2342 .num_bcms = ARRAY_SIZE(pcie_east_anoc_bcms),
2343 .qos_requires_clocks = true,
2344};
2345
2346static struct qcom_icc_bcm * const pcie_east_slv_noc_bcms[] = {
2347 &bcm_sn6,
2348};
2349
2350static struct qcom_icc_node * const pcie_east_slv_noc_nodes[] = {
2351 [MASTER_HSCNOC_PCIE_EAST] = &qnm_hscnoc_pcie_east,
2352 [MASTER_CNOC_PCIE_EAST_SLAVE_CFG] = &qsm_cnoc_pcie_east_slave_cfg,
2353 [SLAVE_HSCNOC_PCIE_EAST_MS_MPU_CFG] = &qhs_hscnoc_pcie_east_ms_mpu_cfg,
2354 [SLAVE_SERVICE_PCIE_EAST] = &srvc_pcie_east,
2355 [SLAVE_PCIE_0] = &xs_pcie_0,
2356 [SLAVE_PCIE_1] = &xs_pcie_1,
2357 [SLAVE_PCIE_5] = &xs_pcie_5,
2358};
2359
2360static const struct regmap_config glymur_pcie_east_slv_noc_regmap_config = {
2361 .reg_bits = 32,
2362 .reg_stride = 4,
2363 .val_bits = 32,
2364 .max_register = 0xe080,
2365 .fast_io = true,
2366};
2367
2368static const struct qcom_icc_desc glymur_pcie_east_slv_noc = {
2369 .config = &glymur_pcie_east_slv_noc_regmap_config,
2370 .nodes = pcie_east_slv_noc_nodes,
2371 .num_nodes = ARRAY_SIZE(pcie_east_slv_noc_nodes),
2372 .bcms = pcie_east_slv_noc_bcms,
2373 .num_bcms = ARRAY_SIZE(pcie_east_slv_noc_bcms),
2374};
2375
2376static struct qcom_icc_bcm * const pcie_west_anoc_bcms[] = {
2377 &bcm_sn6,
2378};
2379
2380static struct qcom_icc_node * const pcie_west_anoc_nodes[] = {
2381 [MASTER_PCIE_WEST_ANOC_CFG] = &qsm_pcie_west_anoc_cfg,
2382 [MASTER_PCIE_2] = &xm_pcie_2,
2383 [MASTER_PCIE_3A] = &xm_pcie_3a,
2384 [MASTER_PCIE_3B] = &xm_pcie_3b,
2385 [MASTER_PCIE_4] = &xm_pcie_4,
2386 [MASTER_PCIE_6] = &xm_pcie_6,
2387 [SLAVE_PCIE_WEST_MEM_NOC] = &qns_pcie_west_mem_noc,
2388 [SLAVE_SERVICE_PCIE_WEST_AGGRE_NOC] = &srvc_pcie_west_aggre_noc,
2389};
2390
2391static const struct regmap_config glymur_pcie_west_anoc_regmap_config = {
2392 .reg_bits = 32,
2393 .reg_stride = 4,
2394 .val_bits = 32,
2395 .max_register = 0xf580,
2396 .fast_io = true,
2397};
2398
2399static const struct qcom_icc_desc glymur_pcie_west_anoc = {
2400 .config = &glymur_pcie_west_anoc_regmap_config,
2401 .nodes = pcie_west_anoc_nodes,
2402 .num_nodes = ARRAY_SIZE(pcie_west_anoc_nodes),
2403 .bcms = pcie_west_anoc_bcms,
2404 .num_bcms = ARRAY_SIZE(pcie_west_anoc_bcms),
2405 .qos_requires_clocks = true,
2406};
2407
2408static struct qcom_icc_bcm * const pcie_west_slv_noc_bcms[] = {
2409 &bcm_sn6,
2410};
2411
2412static struct qcom_icc_node * const pcie_west_slv_noc_nodes[] = {
2413 [MASTER_HSCNOC_PCIE_WEST] = &qnm_hscnoc_pcie_west,
2414 [MASTER_CNOC_PCIE_WEST_SLAVE_CFG] = &qsm_cnoc_pcie_west_slave_cfg,
2415 [SLAVE_HSCNOC_PCIE_WEST_MS_MPU_CFG] = &qhs_hscnoc_pcie_west_ms_mpu_cfg,
2416 [SLAVE_SERVICE_PCIE_WEST] = &srvc_pcie_west,
2417 [SLAVE_PCIE_2] = &xs_pcie_2,
2418 [SLAVE_PCIE_3A] = &xs_pcie_3a,
2419 [SLAVE_PCIE_3B] = &xs_pcie_3b,
2420 [SLAVE_PCIE_4] = &xs_pcie_4,
2421 [SLAVE_PCIE_6] = &xs_pcie_6,
2422};
2423
2424static const struct regmap_config glymur_pcie_west_slv_noc_regmap_config = {
2425 .reg_bits = 32,
2426 .reg_stride = 4,
2427 .val_bits = 32,
2428 .max_register = 0xf180,
2429 .fast_io = true,
2430};
2431
2432static const struct qcom_icc_desc glymur_pcie_west_slv_noc = {
2433 .config = &glymur_pcie_west_slv_noc_regmap_config,
2434 .nodes = pcie_west_slv_noc_nodes,
2435 .num_nodes = ARRAY_SIZE(pcie_west_slv_noc_nodes),
2436 .bcms = pcie_west_slv_noc_bcms,
2437 .num_bcms = ARRAY_SIZE(pcie_west_slv_noc_bcms),
2438};
2439
2440static struct qcom_icc_bcm * const system_noc_bcms[] = {
2441 &bcm_sn0,
2442 &bcm_sn1,
2443 &bcm_sn2,
2444 &bcm_sn3,
2445 &bcm_sn4,
2446};
2447
2448static struct qcom_icc_node * const system_noc_nodes[] = {
2449 [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
2450 [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
2451 [MASTER_A3NOC_SNOC] = &qnm_aggre3_noc,
2452 [MASTER_NSINOC_SNOC] = &qnm_nsi_noc,
2453 [MASTER_OOBMSS] = &qnm_oobmss,
2454 [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
2455};
2456
2457static const struct regmap_config glymur_system_noc_regmap_config = {
2458 .reg_bits = 32,
2459 .reg_stride = 4,
2460 .val_bits = 32,
2461 .max_register = 0x1c080,
2462 .fast_io = true,
2463};
2464
2465static const struct qcom_icc_desc glymur_system_noc = {
2466 .config = &glymur_system_noc_regmap_config,
2467 .nodes = system_noc_nodes,
2468 .num_nodes = ARRAY_SIZE(system_noc_nodes),
2469 .bcms = system_noc_bcms,
2470 .num_bcms = ARRAY_SIZE(system_noc_bcms),
2471};
2472
2473static const struct of_device_id qnoc_of_match[] = {
2474 { .compatible = "qcom,glymur-aggre1-noc", .data = &glymur_aggre1_noc},
2475 { .compatible = "qcom,glymur-aggre2-noc", .data = &glymur_aggre2_noc},
2476 { .compatible = "qcom,glymur-aggre3-noc", .data = &glymur_aggre3_noc},
2477 { .compatible = "qcom,glymur-aggre4-noc", .data = &glymur_aggre4_noc},
2478 { .compatible = "qcom,glymur-clk-virt", .data = &glymur_clk_virt},
2479 { .compatible = "qcom,glymur-cnoc-cfg", .data = &glymur_cnoc_cfg},
2480 { .compatible = "qcom,glymur-cnoc-main", .data = &glymur_cnoc_main},
2481 { .compatible = "qcom,glymur-hscnoc", .data = &glymur_hscnoc},
2482 { .compatible = "qcom,glymur-lpass-ag-noc", .data = &glymur_lpass_ag_noc},
2483 { .compatible = "qcom,glymur-lpass-lpiaon-noc", .data = &glymur_lpass_lpiaon_noc},
2484 { .compatible = "qcom,glymur-lpass-lpicx-noc", .data = &glymur_lpass_lpicx_noc},
2485 { .compatible = "qcom,glymur-mc-virt", .data = &glymur_mc_virt},
2486 { .compatible = "qcom,glymur-mmss-noc", .data = &glymur_mmss_noc},
2487 { .compatible = "qcom,glymur-nsinoc", .data = &glymur_nsinoc},
2488 { .compatible = "qcom,glymur-nsp-noc", .data = &glymur_nsp_noc},
2489 { .compatible = "qcom,glymur-oobm-ss-noc", .data = &glymur_oobm_ss_noc},
2490 { .compatible = "qcom,glymur-pcie-east-anoc", .data = &glymur_pcie_east_anoc},
2491 { .compatible = "qcom,glymur-pcie-east-slv-noc", .data = &glymur_pcie_east_slv_noc},
2492 { .compatible = "qcom,glymur-pcie-west-anoc", .data = &glymur_pcie_west_anoc},
2493 { .compatible = "qcom,glymur-pcie-west-slv-noc", .data = &glymur_pcie_west_slv_noc},
2494 { .compatible = "qcom,glymur-system-noc", .data = &glymur_system_noc},
2495 { }
2496};
2497MODULE_DEVICE_TABLE(of, qnoc_of_match);
2498
2499static struct platform_driver qnoc_driver = {
2500 .probe = qcom_icc_rpmh_probe,
2501 .remove = qcom_icc_rpmh_remove,
2502 .driver = {
2503 .name = "qnoc-glymur",
2504 .of_match_table = qnoc_of_match,
2505 .sync_state = icc_sync_state,
2506 },
2507};
2508
2509static int __init qnoc_driver_init(void)
2510{
2511 return platform_driver_register(&qnoc_driver);
2512}
2513core_initcall(qnoc_driver_init);
2514
2515static void __exit qnoc_driver_exit(void)
2516{
2517 platform_driver_unregister(&qnoc_driver);
2518}
2519module_exit(qnoc_driver_exit);
2520
2521MODULE_DESCRIPTION("GLYMUR NoC driver");
2522MODULE_LICENSE("GPL");