xref: /linux/drivers/interconnect/qcom/sm8450.c (revision 83bd89291f5cc866f60d32c34e268896c7ba8a3d)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2021, Linaro Limited
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/mod_devicetable.h>
12 #include <linux/platform_device.h>
13 #include <linux/property.h>
14 #include <dt-bindings/interconnect/qcom,sm8450.h>
15 
16 #include "bcm-voter.h"
17 #include "icc-common.h"
18 #include "icc-rpmh.h"
19 
20 static struct qcom_icc_node qhm_qspi;
21 static struct qcom_icc_node qhm_qup1;
22 static struct qcom_icc_node qnm_a1noc_cfg;
23 static struct qcom_icc_node xm_sdc4;
24 static struct qcom_icc_node xm_ufs_mem;
25 static struct qcom_icc_node xm_usb3_0;
26 static struct qcom_icc_node qhm_qdss_bam;
27 static struct qcom_icc_node qhm_qup0;
28 static struct qcom_icc_node qhm_qup2;
29 static struct qcom_icc_node qnm_a2noc_cfg;
30 static struct qcom_icc_node qxm_crypto;
31 static struct qcom_icc_node qxm_ipa;
32 static struct qcom_icc_node qxm_sensorss_q6;
33 static struct qcom_icc_node qxm_sp;
34 static struct qcom_icc_node xm_qdss_etr_0;
35 static struct qcom_icc_node xm_qdss_etr_1;
36 static struct qcom_icc_node xm_sdc2;
37 static struct qcom_icc_node qup0_core_master;
38 static struct qcom_icc_node qup1_core_master;
39 static struct qcom_icc_node qup2_core_master;
40 static struct qcom_icc_node qnm_gemnoc_cnoc;
41 static struct qcom_icc_node qnm_gemnoc_pcie;
42 static struct qcom_icc_node alm_gpu_tcu;
43 static struct qcom_icc_node alm_sys_tcu;
44 static struct qcom_icc_node chm_apps;
45 static struct qcom_icc_node qnm_gpu;
46 static struct qcom_icc_node qnm_mdsp;
47 static struct qcom_icc_node qnm_mnoc_hf;
48 static struct qcom_icc_node qnm_mnoc_sf;
49 static struct qcom_icc_node qnm_nsp_gemnoc;
50 static struct qcom_icc_node qnm_pcie;
51 static struct qcom_icc_node qnm_snoc_gc;
52 static struct qcom_icc_node qnm_snoc_sf;
53 static struct qcom_icc_node qhm_config_noc;
54 static struct qcom_icc_node qxm_lpass_dsp;
55 static struct qcom_icc_node llcc_mc;
56 static struct qcom_icc_node qnm_camnoc_hf;
57 static struct qcom_icc_node qnm_camnoc_icp;
58 static struct qcom_icc_node qnm_camnoc_sf;
59 static struct qcom_icc_node qnm_mdp;
60 static struct qcom_icc_node qnm_mnoc_cfg;
61 static struct qcom_icc_node qnm_rot;
62 static struct qcom_icc_node qnm_vapss_hcp;
63 static struct qcom_icc_node qnm_video;
64 static struct qcom_icc_node qnm_video_cv_cpu;
65 static struct qcom_icc_node qnm_video_cvp;
66 static struct qcom_icc_node qnm_video_v_cpu;
67 static struct qcom_icc_node qhm_nsp_noc_config;
68 static struct qcom_icc_node qxm_nsp;
69 static struct qcom_icc_node qnm_pcie_anoc_cfg;
70 static struct qcom_icc_node xm_pcie3_0;
71 static struct qcom_icc_node xm_pcie3_1;
72 static struct qcom_icc_node qhm_gic;
73 static struct qcom_icc_node qnm_aggre1_noc;
74 static struct qcom_icc_node qnm_aggre2_noc;
75 static struct qcom_icc_node qnm_lpass_noc;
76 static struct qcom_icc_node qnm_snoc_cfg;
77 static struct qcom_icc_node qxm_pimem;
78 static struct qcom_icc_node xm_gic;
79 static struct qcom_icc_node qnm_mnoc_hf_disp;
80 static struct qcom_icc_node qnm_mnoc_sf_disp;
81 static struct qcom_icc_node qnm_pcie_disp;
82 static struct qcom_icc_node llcc_mc_disp;
83 static struct qcom_icc_node qnm_mdp_disp;
84 static struct qcom_icc_node qnm_rot_disp;
85 static struct qcom_icc_node qns_a1noc_snoc;
86 static struct qcom_icc_node srvc_aggre1_noc;
87 static struct qcom_icc_node qns_a2noc_snoc;
88 static struct qcom_icc_node srvc_aggre2_noc;
89 static struct qcom_icc_node qup0_core_slave;
90 static struct qcom_icc_node qup1_core_slave;
91 static struct qcom_icc_node qup2_core_slave;
92 static struct qcom_icc_node qhs_ahb2phy0;
93 static struct qcom_icc_node qhs_ahb2phy1;
94 static struct qcom_icc_node qhs_aoss;
95 static struct qcom_icc_node qhs_camera_cfg;
96 static struct qcom_icc_node qhs_clk_ctl;
97 static struct qcom_icc_node qhs_compute_cfg;
98 static struct qcom_icc_node qhs_cpr_cx;
99 static struct qcom_icc_node qhs_cpr_mmcx;
100 static struct qcom_icc_node qhs_cpr_mxa;
101 static struct qcom_icc_node qhs_cpr_mxc;
102 static struct qcom_icc_node qhs_crypto0_cfg;
103 static struct qcom_icc_node qhs_cx_rdpm;
104 static struct qcom_icc_node qhs_display_cfg;
105 static struct qcom_icc_node qhs_gpuss_cfg;
106 static struct qcom_icc_node qhs_imem_cfg;
107 static struct qcom_icc_node qhs_ipa;
108 static struct qcom_icc_node qhs_ipc_router;
109 static struct qcom_icc_node qhs_lpass_cfg;
110 static struct qcom_icc_node qhs_mss_cfg;
111 static struct qcom_icc_node qhs_mx_rdpm;
112 static struct qcom_icc_node qhs_pcie0_cfg;
113 static struct qcom_icc_node qhs_pcie1_cfg;
114 static struct qcom_icc_node qhs_pdm;
115 static struct qcom_icc_node qhs_pimem_cfg;
116 static struct qcom_icc_node qhs_prng;
117 static struct qcom_icc_node qhs_qdss_cfg;
118 static struct qcom_icc_node qhs_qspi;
119 static struct qcom_icc_node qhs_qup0;
120 static struct qcom_icc_node qhs_qup1;
121 static struct qcom_icc_node qhs_qup2;
122 static struct qcom_icc_node qhs_sdc2;
123 static struct qcom_icc_node qhs_sdc4;
124 static struct qcom_icc_node qhs_spss_cfg;
125 static struct qcom_icc_node qhs_tcsr;
126 static struct qcom_icc_node qhs_tlmm;
127 static struct qcom_icc_node qhs_tme_cfg;
128 static struct qcom_icc_node qhs_ufs_mem_cfg;
129 static struct qcom_icc_node qhs_usb3_0;
130 static struct qcom_icc_node qhs_venus_cfg;
131 static struct qcom_icc_node qhs_vsense_ctrl_cfg;
132 static struct qcom_icc_node qns_a1_noc_cfg;
133 static struct qcom_icc_node qns_a2_noc_cfg;
134 static struct qcom_icc_node qns_ddrss_cfg;
135 static struct qcom_icc_node qns_mnoc_cfg;
136 static struct qcom_icc_node qns_pcie_anoc_cfg;
137 static struct qcom_icc_node qns_snoc_cfg;
138 static struct qcom_icc_node qxs_imem;
139 static struct qcom_icc_node qxs_pimem;
140 static struct qcom_icc_node srvc_cnoc;
141 static struct qcom_icc_node xs_pcie_0;
142 static struct qcom_icc_node xs_pcie_1;
143 static struct qcom_icc_node xs_qdss_stm;
144 static struct qcom_icc_node xs_sys_tcu_cfg;
145 static struct qcom_icc_node qns_gem_noc_cnoc;
146 static struct qcom_icc_node qns_llcc;
147 static struct qcom_icc_node qns_pcie;
148 static struct qcom_icc_node qhs_lpass_core;
149 static struct qcom_icc_node qhs_lpass_lpi;
150 static struct qcom_icc_node qhs_lpass_mpu;
151 static struct qcom_icc_node qhs_lpass_top;
152 static struct qcom_icc_node qns_sysnoc;
153 static struct qcom_icc_node srvc_niu_aml_noc;
154 static struct qcom_icc_node srvc_niu_lpass_agnoc;
155 static struct qcom_icc_node ebi;
156 static struct qcom_icc_node qns_mem_noc_hf;
157 static struct qcom_icc_node qns_mem_noc_sf;
158 static struct qcom_icc_node srvc_mnoc;
159 static struct qcom_icc_node qns_nsp_gemnoc;
160 static struct qcom_icc_node service_nsp_noc;
161 static struct qcom_icc_node qns_pcie_mem_noc;
162 static struct qcom_icc_node srvc_pcie_aggre_noc;
163 static struct qcom_icc_node qns_gemnoc_gc;
164 static struct qcom_icc_node qns_gemnoc_sf;
165 static struct qcom_icc_node srvc_snoc;
166 static struct qcom_icc_node qns_llcc_disp;
167 static struct qcom_icc_node ebi_disp;
168 static struct qcom_icc_node qns_mem_noc_hf_disp;
169 static struct qcom_icc_node qns_mem_noc_sf_disp;
170 
171 static struct qcom_icc_node qhm_qspi = {
172 	.name = "qhm_qspi",
173 	.channels = 1,
174 	.buswidth = 4,
175 	.num_links = 1,
176 	.link_nodes = { &qns_a1noc_snoc },
177 };
178 
179 static struct qcom_icc_node qhm_qup1 = {
180 	.name = "qhm_qup1",
181 	.channels = 1,
182 	.buswidth = 4,
183 	.num_links = 1,
184 	.link_nodes = { &qns_a1noc_snoc },
185 };
186 
187 static struct qcom_icc_node qnm_a1noc_cfg = {
188 	.name = "qnm_a1noc_cfg",
189 	.channels = 1,
190 	.buswidth = 4,
191 	.num_links = 1,
192 	.link_nodes = { &srvc_aggre1_noc },
193 };
194 
195 static struct qcom_icc_node xm_sdc4 = {
196 	.name = "xm_sdc4",
197 	.channels = 1,
198 	.buswidth = 8,
199 	.num_links = 1,
200 	.link_nodes = { &qns_a1noc_snoc },
201 };
202 
203 static struct qcom_icc_node xm_ufs_mem = {
204 	.name = "xm_ufs_mem",
205 	.channels = 1,
206 	.buswidth = 8,
207 	.num_links = 1,
208 	.link_nodes = { &qns_a1noc_snoc },
209 };
210 
211 static struct qcom_icc_node xm_usb3_0 = {
212 	.name = "xm_usb3_0",
213 	.channels = 1,
214 	.buswidth = 8,
215 	.num_links = 1,
216 	.link_nodes = { &qns_a1noc_snoc },
217 };
218 
219 static struct qcom_icc_node qhm_qdss_bam = {
220 	.name = "qhm_qdss_bam",
221 	.channels = 1,
222 	.buswidth = 4,
223 	.num_links = 1,
224 	.link_nodes = { &qns_a2noc_snoc },
225 };
226 
227 static struct qcom_icc_node qhm_qup0 = {
228 	.name = "qhm_qup0",
229 	.channels = 1,
230 	.buswidth = 4,
231 	.num_links = 1,
232 	.link_nodes = { &qns_a2noc_snoc },
233 };
234 
235 static struct qcom_icc_node qhm_qup2 = {
236 	.name = "qhm_qup2",
237 	.channels = 1,
238 	.buswidth = 4,
239 	.num_links = 1,
240 	.link_nodes = { &qns_a2noc_snoc },
241 };
242 
243 static struct qcom_icc_node qnm_a2noc_cfg = {
244 	.name = "qnm_a2noc_cfg",
245 	.channels = 1,
246 	.buswidth = 4,
247 	.num_links = 1,
248 	.link_nodes = { &srvc_aggre2_noc },
249 };
250 
251 static struct qcom_icc_node qxm_crypto = {
252 	.name = "qxm_crypto",
253 	.channels = 1,
254 	.buswidth = 8,
255 	.num_links = 1,
256 	.link_nodes = { &qns_a2noc_snoc },
257 };
258 
259 static struct qcom_icc_node qxm_ipa = {
260 	.name = "qxm_ipa",
261 	.channels = 1,
262 	.buswidth = 8,
263 	.num_links = 1,
264 	.link_nodes = { &qns_a2noc_snoc },
265 };
266 
267 static struct qcom_icc_node qxm_sensorss_q6 = {
268 	.name = "qxm_sensorss_q6",
269 	.channels = 1,
270 	.buswidth = 8,
271 	.num_links = 1,
272 	.link_nodes = { &qns_a2noc_snoc },
273 };
274 
275 static struct qcom_icc_node qxm_sp = {
276 	.name = "qxm_sp",
277 	.channels = 1,
278 	.buswidth = 8,
279 	.num_links = 1,
280 	.link_nodes = { &qns_a2noc_snoc },
281 };
282 
283 static struct qcom_icc_node xm_qdss_etr_0 = {
284 	.name = "xm_qdss_etr_0",
285 	.channels = 1,
286 	.buswidth = 8,
287 	.num_links = 1,
288 	.link_nodes = { &qns_a2noc_snoc },
289 };
290 
291 static struct qcom_icc_node xm_qdss_etr_1 = {
292 	.name = "xm_qdss_etr_1",
293 	.channels = 1,
294 	.buswidth = 8,
295 	.num_links = 1,
296 	.link_nodes = { &qns_a2noc_snoc },
297 };
298 
299 static struct qcom_icc_node xm_sdc2 = {
300 	.name = "xm_sdc2",
301 	.channels = 1,
302 	.buswidth = 8,
303 	.num_links = 1,
304 	.link_nodes = { &qns_a2noc_snoc },
305 };
306 
307 static struct qcom_icc_node qup0_core_master = {
308 	.name = "qup0_core_master",
309 	.channels = 1,
310 	.buswidth = 4,
311 	.num_links = 1,
312 	.link_nodes = { &qup0_core_slave },
313 };
314 
315 static struct qcom_icc_node qup1_core_master = {
316 	.name = "qup1_core_master",
317 	.channels = 1,
318 	.buswidth = 4,
319 	.num_links = 1,
320 	.link_nodes = { &qup1_core_slave },
321 };
322 
323 static struct qcom_icc_node qup2_core_master = {
324 	.name = "qup2_core_master",
325 	.channels = 1,
326 	.buswidth = 4,
327 	.num_links = 1,
328 	.link_nodes = { &qup2_core_slave },
329 };
330 
331 static struct qcom_icc_node qnm_gemnoc_cnoc = {
332 	.name = "qnm_gemnoc_cnoc",
333 	.channels = 1,
334 	.buswidth = 16,
335 	.num_links = 51,
336 	.link_nodes = { &qhs_ahb2phy0, &qhs_ahb2phy1,
337 			&qhs_aoss, &qhs_camera_cfg,
338 			&qhs_clk_ctl, &qhs_compute_cfg,
339 			&qhs_cpr_cx, &qhs_cpr_mmcx,
340 			&qhs_cpr_mxa, &qhs_cpr_mxc,
341 			&qhs_crypto0_cfg, &qhs_cx_rdpm,
342 			&qhs_display_cfg, &qhs_gpuss_cfg,
343 			&qhs_imem_cfg, &qhs_ipa,
344 			&qhs_ipc_router, &qhs_lpass_cfg,
345 			&qhs_mss_cfg, &qhs_mx_rdpm,
346 			&qhs_pcie0_cfg, &qhs_pcie1_cfg,
347 			&qhs_pdm, &qhs_pimem_cfg,
348 			&qhs_prng, &qhs_qdss_cfg,
349 			&qhs_qspi, &qhs_qup0,
350 			&qhs_qup1, &qhs_qup2,
351 			&qhs_sdc2, &qhs_sdc4,
352 			&qhs_spss_cfg, &qhs_tcsr,
353 			&qhs_tlmm, &qhs_tme_cfg,
354 			&qhs_ufs_mem_cfg, &qhs_usb3_0,
355 			&qhs_venus_cfg, &qhs_vsense_ctrl_cfg,
356 			&qns_a1_noc_cfg, &qns_a2_noc_cfg,
357 			&qns_ddrss_cfg, &qns_mnoc_cfg,
358 			&qns_pcie_anoc_cfg, &qns_snoc_cfg,
359 			&qxs_imem, &qxs_pimem,
360 			&srvc_cnoc, &xs_qdss_stm,
361 			&xs_sys_tcu_cfg },
362 };
363 
364 static struct qcom_icc_node qnm_gemnoc_pcie = {
365 	.name = "qnm_gemnoc_pcie",
366 	.channels = 1,
367 	.buswidth = 8,
368 	.num_links = 2,
369 	.link_nodes = { &xs_pcie_0, &xs_pcie_1 },
370 };
371 
372 static struct qcom_icc_node alm_gpu_tcu = {
373 	.name = "alm_gpu_tcu",
374 	.channels = 1,
375 	.buswidth = 8,
376 	.num_links = 2,
377 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
378 };
379 
380 static struct qcom_icc_node alm_sys_tcu = {
381 	.name = "alm_sys_tcu",
382 	.channels = 1,
383 	.buswidth = 8,
384 	.num_links = 2,
385 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
386 };
387 
388 static struct qcom_icc_node chm_apps = {
389 	.name = "chm_apps",
390 	.channels = 3,
391 	.buswidth = 32,
392 	.num_links = 3,
393 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc,
394 			&qns_pcie },
395 };
396 
397 static struct qcom_icc_node qnm_gpu = {
398 	.name = "qnm_gpu",
399 	.channels = 2,
400 	.buswidth = 32,
401 	.num_links = 2,
402 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
403 };
404 
405 static struct qcom_icc_node qnm_mdsp = {
406 	.name = "qnm_mdsp",
407 	.channels = 1,
408 	.buswidth = 16,
409 	.num_links = 3,
410 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc,
411 			&qns_pcie },
412 };
413 
414 static struct qcom_icc_node qnm_mnoc_hf = {
415 	.name = "qnm_mnoc_hf",
416 	.channels = 2,
417 	.buswidth = 32,
418 	.num_links = 1,
419 	.link_nodes = { &qns_llcc },
420 };
421 
422 static struct qcom_icc_node qnm_mnoc_sf = {
423 	.name = "qnm_mnoc_sf",
424 	.channels = 2,
425 	.buswidth = 32,
426 	.num_links = 2,
427 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
428 };
429 
430 static struct qcom_icc_node qnm_nsp_gemnoc = {
431 	.name = "qnm_nsp_gemnoc",
432 	.channels = 2,
433 	.buswidth = 32,
434 	.num_links = 2,
435 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
436 };
437 
438 static struct qcom_icc_node qnm_pcie = {
439 	.name = "qnm_pcie",
440 	.channels = 1,
441 	.buswidth = 16,
442 	.num_links = 2,
443 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc },
444 };
445 
446 static struct qcom_icc_node qnm_snoc_gc = {
447 	.name = "qnm_snoc_gc",
448 	.channels = 1,
449 	.buswidth = 8,
450 	.num_links = 1,
451 	.link_nodes = { &qns_llcc },
452 };
453 
454 static struct qcom_icc_node qnm_snoc_sf = {
455 	.name = "qnm_snoc_sf",
456 	.channels = 1,
457 	.buswidth = 16,
458 	.num_links = 3,
459 	.link_nodes = { &qns_gem_noc_cnoc, &qns_llcc,
460 			&qns_pcie },
461 };
462 
463 static struct qcom_icc_node qhm_config_noc = {
464 	.name = "qhm_config_noc",
465 	.channels = 1,
466 	.buswidth = 4,
467 	.num_links = 6,
468 	.link_nodes = { &qhs_lpass_core, &qhs_lpass_lpi,
469 			&qhs_lpass_mpu, &qhs_lpass_top,
470 			&srvc_niu_aml_noc, &srvc_niu_lpass_agnoc },
471 };
472 
473 static struct qcom_icc_node qxm_lpass_dsp = {
474 	.name = "qxm_lpass_dsp",
475 	.channels = 1,
476 	.buswidth = 8,
477 	.num_links = 4,
478 	.link_nodes = { &qhs_lpass_top, &qns_sysnoc,
479 			&srvc_niu_aml_noc, &srvc_niu_lpass_agnoc },
480 };
481 
482 static struct qcom_icc_node llcc_mc = {
483 	.name = "llcc_mc",
484 	.channels = 4,
485 	.buswidth = 4,
486 	.num_links = 1,
487 	.link_nodes = { &ebi },
488 };
489 
490 static struct qcom_icc_node qnm_camnoc_hf = {
491 	.name = "qnm_camnoc_hf",
492 	.channels = 2,
493 	.buswidth = 32,
494 	.num_links = 1,
495 	.link_nodes = { &qns_mem_noc_hf },
496 };
497 
498 static struct qcom_icc_node qnm_camnoc_icp = {
499 	.name = "qnm_camnoc_icp",
500 	.channels = 1,
501 	.buswidth = 8,
502 	.num_links = 1,
503 	.link_nodes = { &qns_mem_noc_sf },
504 };
505 
506 static struct qcom_icc_node qnm_camnoc_sf = {
507 	.name = "qnm_camnoc_sf",
508 	.channels = 2,
509 	.buswidth = 32,
510 	.num_links = 1,
511 	.link_nodes = { &qns_mem_noc_sf },
512 };
513 
514 static struct qcom_icc_node qnm_mdp = {
515 	.name = "qnm_mdp",
516 	.channels = 2,
517 	.buswidth = 32,
518 	.num_links = 1,
519 	.link_nodes = { &qns_mem_noc_hf },
520 };
521 
522 static struct qcom_icc_node qnm_mnoc_cfg = {
523 	.name = "qnm_mnoc_cfg",
524 	.channels = 1,
525 	.buswidth = 4,
526 	.num_links = 1,
527 	.link_nodes = { &srvc_mnoc },
528 };
529 
530 static struct qcom_icc_node qnm_rot = {
531 	.name = "qnm_rot",
532 	.channels = 1,
533 	.buswidth = 32,
534 	.num_links = 1,
535 	.link_nodes = { &qns_mem_noc_sf },
536 };
537 
538 static struct qcom_icc_node qnm_vapss_hcp = {
539 	.name = "qnm_vapss_hcp",
540 	.channels = 1,
541 	.buswidth = 32,
542 	.num_links = 1,
543 	.link_nodes = { &qns_mem_noc_sf },
544 };
545 
546 static struct qcom_icc_node qnm_video = {
547 	.name = "qnm_video",
548 	.channels = 2,
549 	.buswidth = 32,
550 	.num_links = 1,
551 	.link_nodes = { &qns_mem_noc_sf },
552 };
553 
554 static struct qcom_icc_node qnm_video_cv_cpu = {
555 	.name = "qnm_video_cv_cpu",
556 	.channels = 1,
557 	.buswidth = 8,
558 	.num_links = 1,
559 	.link_nodes = { &qns_mem_noc_sf },
560 };
561 
562 static struct qcom_icc_node qnm_video_cvp = {
563 	.name = "qnm_video_cvp",
564 	.channels = 1,
565 	.buswidth = 32,
566 	.num_links = 1,
567 	.link_nodes = { &qns_mem_noc_sf },
568 };
569 
570 static struct qcom_icc_node qnm_video_v_cpu = {
571 	.name = "qnm_video_v_cpu",
572 	.channels = 1,
573 	.buswidth = 8,
574 	.num_links = 1,
575 	.link_nodes = { &qns_mem_noc_sf },
576 };
577 
578 static struct qcom_icc_node qhm_nsp_noc_config = {
579 	.name = "qhm_nsp_noc_config",
580 	.channels = 1,
581 	.buswidth = 4,
582 	.num_links = 1,
583 	.link_nodes = { &service_nsp_noc },
584 };
585 
586 static struct qcom_icc_node qxm_nsp = {
587 	.name = "qxm_nsp",
588 	.channels = 2,
589 	.buswidth = 32,
590 	.num_links = 1,
591 	.link_nodes = { &qns_nsp_gemnoc },
592 };
593 
594 static struct qcom_icc_node qnm_pcie_anoc_cfg = {
595 	.name = "qnm_pcie_anoc_cfg",
596 	.channels = 1,
597 	.buswidth = 4,
598 	.num_links = 1,
599 	.link_nodes = { &srvc_pcie_aggre_noc },
600 };
601 
602 static struct qcom_icc_node xm_pcie3_0 = {
603 	.name = "xm_pcie3_0",
604 	.channels = 1,
605 	.buswidth = 8,
606 	.num_links = 1,
607 	.link_nodes = { &qns_pcie_mem_noc },
608 };
609 
610 static struct qcom_icc_node xm_pcie3_1 = {
611 	.name = "xm_pcie3_1",
612 	.channels = 1,
613 	.buswidth = 8,
614 	.num_links = 1,
615 	.link_nodes = { &qns_pcie_mem_noc },
616 };
617 
618 static struct qcom_icc_node qhm_gic = {
619 	.name = "qhm_gic",
620 	.channels = 1,
621 	.buswidth = 4,
622 	.num_links = 1,
623 	.link_nodes = { &qns_gemnoc_sf },
624 };
625 
626 static struct qcom_icc_node qnm_aggre1_noc = {
627 	.name = "qnm_aggre1_noc",
628 	.channels = 1,
629 	.buswidth = 16,
630 	.num_links = 1,
631 	.link_nodes = { &qns_gemnoc_sf },
632 };
633 
634 static struct qcom_icc_node qnm_aggre2_noc = {
635 	.name = "qnm_aggre2_noc",
636 	.channels = 1,
637 	.buswidth = 16,
638 	.num_links = 1,
639 	.link_nodes = { &qns_gemnoc_sf },
640 };
641 
642 static struct qcom_icc_node qnm_lpass_noc = {
643 	.name = "qnm_lpass_noc",
644 	.channels = 1,
645 	.buswidth = 16,
646 	.num_links = 1,
647 	.link_nodes = { &qns_gemnoc_sf },
648 };
649 
650 static struct qcom_icc_node qnm_snoc_cfg = {
651 	.name = "qnm_snoc_cfg",
652 	.channels = 1,
653 	.buswidth = 4,
654 	.num_links = 1,
655 	.link_nodes = { &srvc_snoc },
656 };
657 
658 static struct qcom_icc_node qxm_pimem = {
659 	.name = "qxm_pimem",
660 	.channels = 1,
661 	.buswidth = 8,
662 	.num_links = 1,
663 	.link_nodes = { &qns_gemnoc_gc },
664 };
665 
666 static struct qcom_icc_node xm_gic = {
667 	.name = "xm_gic",
668 	.channels = 1,
669 	.buswidth = 8,
670 	.num_links = 1,
671 	.link_nodes = { &qns_gemnoc_gc },
672 };
673 
674 static struct qcom_icc_node qnm_mnoc_hf_disp = {
675 	.name = "qnm_mnoc_hf_disp",
676 	.channels = 2,
677 	.buswidth = 32,
678 	.num_links = 1,
679 	.link_nodes = { &qns_llcc_disp },
680 };
681 
682 static struct qcom_icc_node qnm_mnoc_sf_disp = {
683 	.name = "qnm_mnoc_sf_disp",
684 	.channels = 2,
685 	.buswidth = 32,
686 	.num_links = 1,
687 	.link_nodes = { &qns_llcc_disp },
688 };
689 
690 static struct qcom_icc_node qnm_pcie_disp = {
691 	.name = "qnm_pcie_disp",
692 	.channels = 1,
693 	.buswidth = 16,
694 	.num_links = 1,
695 	.link_nodes = { &qns_llcc_disp },
696 };
697 
698 static struct qcom_icc_node llcc_mc_disp = {
699 	.name = "llcc_mc_disp",
700 	.channels = 4,
701 	.buswidth = 4,
702 	.num_links = 1,
703 	.link_nodes = { &ebi_disp },
704 };
705 
706 static struct qcom_icc_node qnm_mdp_disp = {
707 	.name = "qnm_mdp_disp",
708 	.channels = 2,
709 	.buswidth = 32,
710 	.num_links = 1,
711 	.link_nodes = { &qns_mem_noc_hf_disp },
712 };
713 
714 static struct qcom_icc_node qnm_rot_disp = {
715 	.name = "qnm_rot_disp",
716 	.channels = 1,
717 	.buswidth = 32,
718 	.num_links = 1,
719 	.link_nodes = { &qns_mem_noc_sf_disp },
720 };
721 
722 static struct qcom_icc_node qns_a1noc_snoc = {
723 	.name = "qns_a1noc_snoc",
724 	.channels = 1,
725 	.buswidth = 16,
726 	.num_links = 1,
727 	.link_nodes = { &qnm_aggre1_noc },
728 };
729 
730 static struct qcom_icc_node srvc_aggre1_noc = {
731 	.name = "srvc_aggre1_noc",
732 	.channels = 1,
733 	.buswidth = 4,
734 };
735 
736 static struct qcom_icc_node qns_a2noc_snoc = {
737 	.name = "qns_a2noc_snoc",
738 	.channels = 1,
739 	.buswidth = 16,
740 	.num_links = 1,
741 	.link_nodes = { &qnm_aggre2_noc },
742 };
743 
744 static struct qcom_icc_node srvc_aggre2_noc = {
745 	.name = "srvc_aggre2_noc",
746 	.channels = 1,
747 	.buswidth = 4,
748 };
749 
750 static struct qcom_icc_node qup0_core_slave = {
751 	.name = "qup0_core_slave",
752 	.channels = 1,
753 	.buswidth = 4,
754 };
755 
756 static struct qcom_icc_node qup1_core_slave = {
757 	.name = "qup1_core_slave",
758 	.channels = 1,
759 	.buswidth = 4,
760 };
761 
762 static struct qcom_icc_node qup2_core_slave = {
763 	.name = "qup2_core_slave",
764 	.channels = 1,
765 	.buswidth = 4,
766 };
767 
768 static struct qcom_icc_node qhs_ahb2phy0 = {
769 	.name = "qhs_ahb2phy0",
770 	.channels = 1,
771 	.buswidth = 4,
772 };
773 
774 static struct qcom_icc_node qhs_ahb2phy1 = {
775 	.name = "qhs_ahb2phy1",
776 	.channels = 1,
777 	.buswidth = 4,
778 };
779 
780 static struct qcom_icc_node qhs_aoss = {
781 	.name = "qhs_aoss",
782 	.channels = 1,
783 	.buswidth = 4,
784 };
785 
786 static struct qcom_icc_node qhs_camera_cfg = {
787 	.name = "qhs_camera_cfg",
788 	.channels = 1,
789 	.buswidth = 4,
790 };
791 
792 static struct qcom_icc_node qhs_clk_ctl = {
793 	.name = "qhs_clk_ctl",
794 	.channels = 1,
795 	.buswidth = 4,
796 };
797 
798 static struct qcom_icc_node qhs_compute_cfg = {
799 	.name = "qhs_compute_cfg",
800 	.channels = 1,
801 	.buswidth = 4,
802 	.num_links = 1,
803 	.link_nodes = { MASTER_CDSP_NOC_CFG },
804 };
805 
806 static struct qcom_icc_node qhs_cpr_cx = {
807 	.name = "qhs_cpr_cx",
808 	.channels = 1,
809 	.buswidth = 4,
810 };
811 
812 static struct qcom_icc_node qhs_cpr_mmcx = {
813 	.name = "qhs_cpr_mmcx",
814 	.channels = 1,
815 	.buswidth = 4,
816 };
817 
818 static struct qcom_icc_node qhs_cpr_mxa = {
819 	.name = "qhs_cpr_mxa",
820 	.channels = 1,
821 	.buswidth = 4,
822 };
823 
824 static struct qcom_icc_node qhs_cpr_mxc = {
825 	.name = "qhs_cpr_mxc",
826 	.channels = 1,
827 	.buswidth = 4,
828 };
829 
830 static struct qcom_icc_node qhs_crypto0_cfg = {
831 	.name = "qhs_crypto0_cfg",
832 	.channels = 1,
833 	.buswidth = 4,
834 };
835 
836 static struct qcom_icc_node qhs_cx_rdpm = {
837 	.name = "qhs_cx_rdpm",
838 	.channels = 1,
839 	.buswidth = 4,
840 };
841 
842 static struct qcom_icc_node qhs_display_cfg = {
843 	.name = "qhs_display_cfg",
844 	.channels = 1,
845 	.buswidth = 4,
846 };
847 
848 static struct qcom_icc_node qhs_gpuss_cfg = {
849 	.name = "qhs_gpuss_cfg",
850 	.channels = 1,
851 	.buswidth = 8,
852 };
853 
854 static struct qcom_icc_node qhs_imem_cfg = {
855 	.name = "qhs_imem_cfg",
856 	.channels = 1,
857 	.buswidth = 4,
858 };
859 
860 static struct qcom_icc_node qhs_ipa = {
861 	.name = "qhs_ipa",
862 	.channels = 1,
863 	.buswidth = 4,
864 };
865 
866 static struct qcom_icc_node qhs_ipc_router = {
867 	.name = "qhs_ipc_router",
868 	.channels = 1,
869 	.buswidth = 4,
870 };
871 
872 static struct qcom_icc_node qhs_lpass_cfg = {
873 	.name = "qhs_lpass_cfg",
874 	.channels = 1,
875 	.buswidth = 4,
876 	.num_links = 1,
877 	.link_nodes = { MASTER_CNOC_LPASS_AG_NOC },
878 };
879 
880 static struct qcom_icc_node qhs_mss_cfg = {
881 	.name = "qhs_mss_cfg",
882 	.channels = 1,
883 	.buswidth = 4,
884 };
885 
886 static struct qcom_icc_node qhs_mx_rdpm = {
887 	.name = "qhs_mx_rdpm",
888 	.channels = 1,
889 	.buswidth = 4,
890 };
891 
892 static struct qcom_icc_node qhs_pcie0_cfg = {
893 	.name = "qhs_pcie0_cfg",
894 	.channels = 1,
895 	.buswidth = 4,
896 };
897 
898 static struct qcom_icc_node qhs_pcie1_cfg = {
899 	.name = "qhs_pcie1_cfg",
900 	.channels = 1,
901 	.buswidth = 4,
902 };
903 
904 static struct qcom_icc_node qhs_pdm = {
905 	.name = "qhs_pdm",
906 	.channels = 1,
907 	.buswidth = 4,
908 };
909 
910 static struct qcom_icc_node qhs_pimem_cfg = {
911 	.name = "qhs_pimem_cfg",
912 	.channels = 1,
913 	.buswidth = 4,
914 };
915 
916 static struct qcom_icc_node qhs_prng = {
917 	.name = "qhs_prng",
918 	.channels = 1,
919 	.buswidth = 4,
920 };
921 
922 static struct qcom_icc_node qhs_qdss_cfg = {
923 	.name = "qhs_qdss_cfg",
924 	.channels = 1,
925 	.buswidth = 4,
926 };
927 
928 static struct qcom_icc_node qhs_qspi = {
929 	.name = "qhs_qspi",
930 	.channels = 1,
931 	.buswidth = 4,
932 };
933 
934 static struct qcom_icc_node qhs_qup0 = {
935 	.name = "qhs_qup0",
936 	.channels = 1,
937 	.buswidth = 4,
938 };
939 
940 static struct qcom_icc_node qhs_qup1 = {
941 	.name = "qhs_qup1",
942 	.channels = 1,
943 	.buswidth = 4,
944 };
945 
946 static struct qcom_icc_node qhs_qup2 = {
947 	.name = "qhs_qup2",
948 	.channels = 1,
949 	.buswidth = 4,
950 };
951 
952 static struct qcom_icc_node qhs_sdc2 = {
953 	.name = "qhs_sdc2",
954 	.channels = 1,
955 	.buswidth = 4,
956 };
957 
958 static struct qcom_icc_node qhs_sdc4 = {
959 	.name = "qhs_sdc4",
960 	.channels = 1,
961 	.buswidth = 4,
962 };
963 
964 static struct qcom_icc_node qhs_spss_cfg = {
965 	.name = "qhs_spss_cfg",
966 	.channels = 1,
967 	.buswidth = 4,
968 };
969 
970 static struct qcom_icc_node qhs_tcsr = {
971 	.name = "qhs_tcsr",
972 	.channels = 1,
973 	.buswidth = 4,
974 };
975 
976 static struct qcom_icc_node qhs_tlmm = {
977 	.name = "qhs_tlmm",
978 	.channels = 1,
979 	.buswidth = 4,
980 };
981 
982 static struct qcom_icc_node qhs_tme_cfg = {
983 	.name = "qhs_tme_cfg",
984 	.channels = 1,
985 	.buswidth = 4,
986 };
987 
988 static struct qcom_icc_node qhs_ufs_mem_cfg = {
989 	.name = "qhs_ufs_mem_cfg",
990 	.channels = 1,
991 	.buswidth = 4,
992 };
993 
994 static struct qcom_icc_node qhs_usb3_0 = {
995 	.name = "qhs_usb3_0",
996 	.channels = 1,
997 	.buswidth = 4,
998 };
999 
1000 static struct qcom_icc_node qhs_venus_cfg = {
1001 	.name = "qhs_venus_cfg",
1002 	.channels = 1,
1003 	.buswidth = 4,
1004 };
1005 
1006 static struct qcom_icc_node qhs_vsense_ctrl_cfg = {
1007 	.name = "qhs_vsense_ctrl_cfg",
1008 	.channels = 1,
1009 	.buswidth = 4,
1010 };
1011 
1012 static struct qcom_icc_node qns_a1_noc_cfg = {
1013 	.name = "qns_a1_noc_cfg",
1014 	.channels = 1,
1015 	.buswidth = 4,
1016 	.num_links = 1,
1017 	.link_nodes = { &qnm_a1noc_cfg },
1018 };
1019 
1020 static struct qcom_icc_node qns_a2_noc_cfg = {
1021 	.name = "qns_a2_noc_cfg",
1022 	.channels = 1,
1023 	.buswidth = 4,
1024 	.num_links = 1,
1025 	.link_nodes = { &qnm_a2noc_cfg },
1026 };
1027 
1028 static struct qcom_icc_node qns_ddrss_cfg = {
1029 	.name = "qns_ddrss_cfg",
1030 	.channels = 1,
1031 	.buswidth = 4,
1032 	//FIXME where is link
1033 };
1034 
1035 static struct qcom_icc_node qns_mnoc_cfg = {
1036 	.name = "qns_mnoc_cfg",
1037 	.channels = 1,
1038 	.buswidth = 4,
1039 	.num_links = 1,
1040 	.link_nodes = { &qnm_mnoc_cfg },
1041 };
1042 
1043 static struct qcom_icc_node qns_pcie_anoc_cfg = {
1044 	.name = "qns_pcie_anoc_cfg",
1045 	.channels = 1,
1046 	.buswidth = 4,
1047 	.num_links = 1,
1048 	.link_nodes = { &qnm_pcie_anoc_cfg },
1049 };
1050 
1051 static struct qcom_icc_node qns_snoc_cfg = {
1052 	.name = "qns_snoc_cfg",
1053 	.channels = 1,
1054 	.buswidth = 4,
1055 	.num_links = 1,
1056 	.link_nodes = { &qnm_snoc_cfg },
1057 };
1058 
1059 static struct qcom_icc_node qxs_imem = {
1060 	.name = "qxs_imem",
1061 	.channels = 1,
1062 	.buswidth = 8,
1063 };
1064 
1065 static struct qcom_icc_node qxs_pimem = {
1066 	.name = "qxs_pimem",
1067 	.channels = 1,
1068 	.buswidth = 8,
1069 };
1070 
1071 static struct qcom_icc_node srvc_cnoc = {
1072 	.name = "srvc_cnoc",
1073 	.channels = 1,
1074 	.buswidth = 4,
1075 };
1076 
1077 static struct qcom_icc_node xs_pcie_0 = {
1078 	.name = "xs_pcie_0",
1079 	.channels = 1,
1080 	.buswidth = 8,
1081 };
1082 
1083 static struct qcom_icc_node xs_pcie_1 = {
1084 	.name = "xs_pcie_1",
1085 	.channels = 1,
1086 	.buswidth = 8,
1087 };
1088 
1089 static struct qcom_icc_node xs_qdss_stm = {
1090 	.name = "xs_qdss_stm",
1091 	.channels = 1,
1092 	.buswidth = 4,
1093 };
1094 
1095 static struct qcom_icc_node xs_sys_tcu_cfg = {
1096 	.name = "xs_sys_tcu_cfg",
1097 	.channels = 1,
1098 	.buswidth = 8,
1099 };
1100 
1101 static struct qcom_icc_node qns_gem_noc_cnoc = {
1102 	.name = "qns_gem_noc_cnoc",
1103 	.channels = 1,
1104 	.buswidth = 16,
1105 	.num_links = 1,
1106 	.link_nodes = { &qnm_gemnoc_cnoc },
1107 };
1108 
1109 static struct qcom_icc_node qns_llcc = {
1110 	.name = "qns_llcc",
1111 	.channels = 4,
1112 	.buswidth = 16,
1113 	.num_links = 1,
1114 	.link_nodes = { &llcc_mc },
1115 };
1116 
1117 static struct qcom_icc_node qns_pcie = {
1118 	.name = "qns_pcie",
1119 	.channels = 1,
1120 	.buswidth = 8,
1121 	.num_links = 1,
1122 	.link_nodes = { &qnm_gemnoc_pcie },
1123 };
1124 
1125 static struct qcom_icc_node qhs_lpass_core = {
1126 	.name = "qhs_lpass_core",
1127 	.channels = 1,
1128 	.buswidth = 4,
1129 };
1130 
1131 static struct qcom_icc_node qhs_lpass_lpi = {
1132 	.name = "qhs_lpass_lpi",
1133 	.channels = 1,
1134 	.buswidth = 4,
1135 };
1136 
1137 static struct qcom_icc_node qhs_lpass_mpu = {
1138 	.name = "qhs_lpass_mpu",
1139 	.channels = 1,
1140 	.buswidth = 4,
1141 };
1142 
1143 static struct qcom_icc_node qhs_lpass_top = {
1144 	.name = "qhs_lpass_top",
1145 	.channels = 1,
1146 	.buswidth = 4,
1147 };
1148 
1149 static struct qcom_icc_node qns_sysnoc = {
1150 	.name = "qns_sysnoc",
1151 	.channels = 1,
1152 	.buswidth = 16,
1153 	.num_links = 1,
1154 	.link_nodes = { &qnm_lpass_noc },
1155 };
1156 
1157 static struct qcom_icc_node srvc_niu_aml_noc = {
1158 	.name = "srvc_niu_aml_noc",
1159 	.channels = 1,
1160 	.buswidth = 4,
1161 };
1162 
1163 static struct qcom_icc_node srvc_niu_lpass_agnoc = {
1164 	.name = "srvc_niu_lpass_agnoc",
1165 	.channels = 1,
1166 	.buswidth = 4,
1167 };
1168 
1169 static struct qcom_icc_node ebi = {
1170 	.name = "ebi",
1171 	.channels = 4,
1172 	.buswidth = 4,
1173 };
1174 
1175 static struct qcom_icc_node qns_mem_noc_hf = {
1176 	.name = "qns_mem_noc_hf",
1177 	.channels = 2,
1178 	.buswidth = 32,
1179 	.num_links = 1,
1180 	.link_nodes = { &qnm_mnoc_hf },
1181 };
1182 
1183 static struct qcom_icc_node qns_mem_noc_sf = {
1184 	.name = "qns_mem_noc_sf",
1185 	.channels = 2,
1186 	.buswidth = 32,
1187 	.num_links = 1,
1188 	.link_nodes = { &qnm_mnoc_sf },
1189 };
1190 
1191 static struct qcom_icc_node srvc_mnoc = {
1192 	.name = "srvc_mnoc",
1193 	.channels = 1,
1194 	.buswidth = 4,
1195 };
1196 
1197 static struct qcom_icc_node qns_nsp_gemnoc = {
1198 	.name = "qns_nsp_gemnoc",
1199 	.channels = 2,
1200 	.buswidth = 32,
1201 	.num_links = 1,
1202 	.link_nodes = { &qnm_nsp_gemnoc },
1203 };
1204 
1205 static struct qcom_icc_node service_nsp_noc = {
1206 	.name = "service_nsp_noc",
1207 	.channels = 1,
1208 	.buswidth = 4,
1209 };
1210 
1211 static struct qcom_icc_node qns_pcie_mem_noc = {
1212 	.name = "qns_pcie_mem_noc",
1213 	.channels = 1,
1214 	.buswidth = 16,
1215 	.num_links = 1,
1216 	.link_nodes = { &qnm_pcie },
1217 };
1218 
1219 static struct qcom_icc_node srvc_pcie_aggre_noc = {
1220 	.name = "srvc_pcie_aggre_noc",
1221 	.channels = 1,
1222 	.buswidth = 4,
1223 };
1224 
1225 static struct qcom_icc_node qns_gemnoc_gc = {
1226 	.name = "qns_gemnoc_gc",
1227 	.channels = 1,
1228 	.buswidth = 8,
1229 	.num_links = 1,
1230 	.link_nodes = { &qnm_snoc_gc },
1231 };
1232 
1233 static struct qcom_icc_node qns_gemnoc_sf = {
1234 	.name = "qns_gemnoc_sf",
1235 	.channels = 1,
1236 	.buswidth = 16,
1237 	.num_links = 1,
1238 	.link_nodes = { &qnm_snoc_sf },
1239 };
1240 
1241 static struct qcom_icc_node srvc_snoc = {
1242 	.name = "srvc_snoc",
1243 	.channels = 1,
1244 	.buswidth = 4,
1245 };
1246 
1247 static struct qcom_icc_node qns_llcc_disp = {
1248 	.name = "qns_llcc_disp",
1249 	.channels = 4,
1250 	.buswidth = 16,
1251 	.num_links = 1,
1252 	.link_nodes = { &llcc_mc_disp },
1253 };
1254 
1255 static struct qcom_icc_node ebi_disp = {
1256 	.name = "ebi_disp",
1257 	.channels = 4,
1258 	.buswidth = 4,
1259 };
1260 
1261 static struct qcom_icc_node qns_mem_noc_hf_disp = {
1262 	.name = "qns_mem_noc_hf_disp",
1263 	.channels = 2,
1264 	.buswidth = 32,
1265 	.num_links = 1,
1266 	.link_nodes = { &qnm_mnoc_hf_disp },
1267 };
1268 
1269 static struct qcom_icc_node qns_mem_noc_sf_disp = {
1270 	.name = "qns_mem_noc_sf_disp",
1271 	.channels = 2,
1272 	.buswidth = 32,
1273 	.num_links = 1,
1274 	.link_nodes = { &qnm_mnoc_sf_disp },
1275 };
1276 
1277 static struct qcom_icc_bcm bcm_acv = {
1278 	.name = "ACV",
1279 	.enable_mask = 0x8,
1280 	.num_nodes = 1,
1281 	.nodes = { &ebi },
1282 };
1283 
1284 static struct qcom_icc_bcm bcm_ce0 = {
1285 	.name = "CE0",
1286 	.num_nodes = 1,
1287 	.nodes = { &qxm_crypto },
1288 };
1289 
1290 static struct qcom_icc_bcm bcm_cn0 = {
1291 	.name = "CN0",
1292 	.enable_mask = 0x1,
1293 	.keepalive = true,
1294 	.num_nodes = 55,
1295 	.nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie,
1296 		   &qhs_ahb2phy0, &qhs_ahb2phy1,
1297 		   &qhs_aoss, &qhs_camera_cfg,
1298 		   &qhs_clk_ctl, &qhs_compute_cfg,
1299 		   &qhs_cpr_cx, &qhs_cpr_mmcx,
1300 		   &qhs_cpr_mxa, &qhs_cpr_mxc,
1301 		   &qhs_crypto0_cfg, &qhs_cx_rdpm,
1302 		   &qhs_display_cfg, &qhs_gpuss_cfg,
1303 		   &qhs_imem_cfg, &qhs_ipa,
1304 		   &qhs_ipc_router, &qhs_lpass_cfg,
1305 		   &qhs_mss_cfg, &qhs_mx_rdpm,
1306 		   &qhs_pcie0_cfg, &qhs_pcie1_cfg,
1307 		   &qhs_pdm, &qhs_pimem_cfg,
1308 		   &qhs_prng, &qhs_qdss_cfg,
1309 		   &qhs_qspi, &qhs_qup0,
1310 		   &qhs_qup1, &qhs_qup2,
1311 		   &qhs_sdc2, &qhs_sdc4,
1312 		   &qhs_spss_cfg, &qhs_tcsr,
1313 		   &qhs_tlmm, &qhs_tme_cfg,
1314 		   &qhs_ufs_mem_cfg, &qhs_usb3_0,
1315 		   &qhs_venus_cfg, &qhs_vsense_ctrl_cfg,
1316 		   &qns_a1_noc_cfg, &qns_a2_noc_cfg,
1317 		   &qns_ddrss_cfg, &qns_mnoc_cfg,
1318 		   &qns_pcie_anoc_cfg, &qns_snoc_cfg,
1319 		   &qxs_imem, &qxs_pimem,
1320 		   &srvc_cnoc, &xs_pcie_0,
1321 		   &xs_pcie_1, &xs_qdss_stm,
1322 		   &xs_sys_tcu_cfg },
1323 };
1324 
1325 static struct qcom_icc_bcm bcm_co0 = {
1326 	.name = "CO0",
1327 	.enable_mask = 0x1,
1328 	.num_nodes = 2,
1329 	.nodes = { &qxm_nsp, &qns_nsp_gemnoc },
1330 };
1331 
1332 static struct qcom_icc_bcm bcm_mc0 = {
1333 	.name = "MC0",
1334 	.keepalive = true,
1335 	.num_nodes = 1,
1336 	.nodes = { &ebi },
1337 };
1338 
1339 static struct qcom_icc_bcm bcm_mm0 = {
1340 	.name = "MM0",
1341 	.keepalive = true,
1342 	.num_nodes = 1,
1343 	.nodes = { &qns_mem_noc_hf },
1344 };
1345 
1346 static struct qcom_icc_bcm bcm_mm1 = {
1347 	.name = "MM1",
1348 	.enable_mask = 0x1,
1349 	.num_nodes = 12,
1350 	.nodes = { &qnm_camnoc_hf, &qnm_camnoc_icp,
1351 		   &qnm_camnoc_sf, &qnm_mdp,
1352 		   &qnm_mnoc_cfg, &qnm_rot,
1353 		   &qnm_vapss_hcp, &qnm_video,
1354 		   &qnm_video_cv_cpu, &qnm_video_cvp,
1355 		   &qnm_video_v_cpu, &qns_mem_noc_sf },
1356 };
1357 
1358 static struct qcom_icc_bcm bcm_qup0 = {
1359 	.name = "QUP0",
1360 	.keepalive = true,
1361 	.vote_scale = 1,
1362 	.num_nodes = 1,
1363 	.nodes = { &qup0_core_slave },
1364 };
1365 
1366 static struct qcom_icc_bcm bcm_qup1 = {
1367 	.name = "QUP1",
1368 	.keepalive = true,
1369 	.vote_scale = 1,
1370 	.num_nodes = 1,
1371 	.nodes = { &qup1_core_slave },
1372 };
1373 
1374 static struct qcom_icc_bcm bcm_qup2 = {
1375 	.name = "QUP2",
1376 	.keepalive = true,
1377 	.vote_scale = 1,
1378 	.num_nodes = 1,
1379 	.nodes = { &qup2_core_slave },
1380 };
1381 
1382 static struct qcom_icc_bcm bcm_sh0 = {
1383 	.name = "SH0",
1384 	.keepalive = true,
1385 	.num_nodes = 1,
1386 	.nodes = { &qns_llcc },
1387 };
1388 
1389 static struct qcom_icc_bcm bcm_sh1 = {
1390 	.name = "SH1",
1391 	.enable_mask = 0x1,
1392 	.num_nodes = 7,
1393 	.nodes = { &alm_gpu_tcu, &alm_sys_tcu,
1394 		   &qnm_nsp_gemnoc, &qnm_pcie,
1395 		   &qnm_snoc_gc, &qns_gem_noc_cnoc,
1396 		   &qns_pcie },
1397 };
1398 
1399 static struct qcom_icc_bcm bcm_sn0 = {
1400 	.name = "SN0",
1401 	.keepalive = true,
1402 	.num_nodes = 1,
1403 	.nodes = { &qns_gemnoc_sf },
1404 };
1405 
1406 static struct qcom_icc_bcm bcm_sn1 = {
1407 	.name = "SN1",
1408 	.enable_mask = 0x1,
1409 	.num_nodes = 4,
1410 	.nodes = { &qhm_gic, &qxm_pimem,
1411 		   &xm_gic, &qns_gemnoc_gc },
1412 };
1413 
1414 static struct qcom_icc_bcm bcm_sn2 = {
1415 	.name = "SN2",
1416 	.num_nodes = 1,
1417 	.nodes = { &qnm_aggre1_noc },
1418 };
1419 
1420 static struct qcom_icc_bcm bcm_sn3 = {
1421 	.name = "SN3",
1422 	.num_nodes = 1,
1423 	.nodes = { &qnm_aggre2_noc },
1424 };
1425 
1426 static struct qcom_icc_bcm bcm_sn4 = {
1427 	.name = "SN4",
1428 	.num_nodes = 1,
1429 	.nodes = { &qnm_lpass_noc },
1430 };
1431 
1432 static struct qcom_icc_bcm bcm_sn7 = {
1433 	.name = "SN7",
1434 	.num_nodes = 1,
1435 	.nodes = { &qns_pcie_mem_noc },
1436 };
1437 
1438 static struct qcom_icc_bcm bcm_acv_disp = {
1439 	.name = "ACV",
1440 	.enable_mask = 0x1,
1441 	.num_nodes = 1,
1442 	.nodes = { &ebi_disp },
1443 };
1444 
1445 static struct qcom_icc_bcm bcm_mc0_disp = {
1446 	.name = "MC0",
1447 	.num_nodes = 1,
1448 	.nodes = { &ebi_disp },
1449 };
1450 
1451 static struct qcom_icc_bcm bcm_mm0_disp = {
1452 	.name = "MM0",
1453 	.num_nodes = 1,
1454 	.nodes = { &qns_mem_noc_hf_disp },
1455 };
1456 
1457 static struct qcom_icc_bcm bcm_mm1_disp = {
1458 	.name = "MM1",
1459 	.enable_mask = 0x1,
1460 	.num_nodes = 3,
1461 	.nodes = { &qnm_mdp_disp, &qnm_rot_disp,
1462 		   &qns_mem_noc_sf_disp },
1463 };
1464 
1465 static struct qcom_icc_bcm bcm_sh0_disp = {
1466 	.name = "SH0",
1467 	.num_nodes = 1,
1468 	.nodes = { &qns_llcc_disp },
1469 };
1470 
1471 static struct qcom_icc_bcm bcm_sh1_disp = {
1472 	.name = "SH1",
1473 	.enable_mask = 0x1,
1474 	.num_nodes = 1,
1475 	.nodes = { &qnm_pcie_disp },
1476 };
1477 
1478 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
1479 };
1480 
1481 static struct qcom_icc_node * const aggre1_noc_nodes[] = {
1482 	[MASTER_QSPI_0] = &qhm_qspi,
1483 	[MASTER_QUP_1] = &qhm_qup1,
1484 	[MASTER_A1NOC_CFG] = &qnm_a1noc_cfg,
1485 	[MASTER_SDCC_4] = &xm_sdc4,
1486 	[MASTER_UFS_MEM] = &xm_ufs_mem,
1487 	[MASTER_USB3_0] = &xm_usb3_0,
1488 	[SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
1489 	[SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc,
1490 };
1491 
1492 static const struct qcom_icc_desc sm8450_aggre1_noc = {
1493 	.nodes = aggre1_noc_nodes,
1494 	.num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
1495 	.bcms = aggre1_noc_bcms,
1496 	.num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
1497 };
1498 
1499 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
1500 	&bcm_ce0,
1501 };
1502 
1503 static struct qcom_icc_node * const aggre2_noc_nodes[] = {
1504 	[MASTER_QDSS_BAM] = &qhm_qdss_bam,
1505 	[MASTER_QUP_0] = &qhm_qup0,
1506 	[MASTER_QUP_2] = &qhm_qup2,
1507 	[MASTER_A2NOC_CFG] = &qnm_a2noc_cfg,
1508 	[MASTER_CRYPTO] = &qxm_crypto,
1509 	[MASTER_IPA] = &qxm_ipa,
1510 	[MASTER_SENSORS_PROC] = &qxm_sensorss_q6,
1511 	[MASTER_SP] = &qxm_sp,
1512 	[MASTER_QDSS_ETR] = &xm_qdss_etr_0,
1513 	[MASTER_QDSS_ETR_1] = &xm_qdss_etr_1,
1514 	[MASTER_SDCC_2] = &xm_sdc2,
1515 	[SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
1516 	[SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc,
1517 };
1518 
1519 static const struct qcom_icc_desc sm8450_aggre2_noc = {
1520 	.nodes = aggre2_noc_nodes,
1521 	.num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
1522 	.bcms = aggre2_noc_bcms,
1523 	.num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
1524 };
1525 
1526 static struct qcom_icc_bcm * const clk_virt_bcms[] = {
1527 	&bcm_qup0,
1528 	&bcm_qup1,
1529 	&bcm_qup2,
1530 };
1531 
1532 static struct qcom_icc_node * const clk_virt_nodes[] = {
1533 	[MASTER_QUP_CORE_0] = &qup0_core_master,
1534 	[MASTER_QUP_CORE_1] = &qup1_core_master,
1535 	[MASTER_QUP_CORE_2] = &qup2_core_master,
1536 	[SLAVE_QUP_CORE_0] = &qup0_core_slave,
1537 	[SLAVE_QUP_CORE_1] = &qup1_core_slave,
1538 	[SLAVE_QUP_CORE_2] = &qup2_core_slave,
1539 };
1540 
1541 static const struct qcom_icc_desc sm8450_clk_virt = {
1542 	.nodes = clk_virt_nodes,
1543 	.num_nodes = ARRAY_SIZE(clk_virt_nodes),
1544 	.bcms = clk_virt_bcms,
1545 	.num_bcms = ARRAY_SIZE(clk_virt_bcms),
1546 };
1547 
1548 static struct qcom_icc_bcm * const config_noc_bcms[] = {
1549 	&bcm_cn0,
1550 };
1551 
1552 static struct qcom_icc_node * const config_noc_nodes[] = {
1553 	[MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc,
1554 	[MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie,
1555 	[SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0,
1556 	[SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1,
1557 	[SLAVE_AOSS] = &qhs_aoss,
1558 	[SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
1559 	[SLAVE_CLK_CTL] = &qhs_clk_ctl,
1560 	[SLAVE_CDSP_CFG] = &qhs_compute_cfg,
1561 	[SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
1562 	[SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx,
1563 	[SLAVE_RBCPR_MXA_CFG] = &qhs_cpr_mxa,
1564 	[SLAVE_RBCPR_MXC_CFG] = &qhs_cpr_mxc,
1565 	[SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
1566 	[SLAVE_CX_RDPM] = &qhs_cx_rdpm,
1567 	[SLAVE_DISPLAY_CFG] = &qhs_display_cfg,
1568 	[SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
1569 	[SLAVE_IMEM_CFG] = &qhs_imem_cfg,
1570 	[SLAVE_IPA_CFG] = &qhs_ipa,
1571 	[SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
1572 	[SLAVE_LPASS] = &qhs_lpass_cfg,
1573 	[SLAVE_CNOC_MSS] = &qhs_mss_cfg,
1574 	[SLAVE_MX_RDPM] = &qhs_mx_rdpm,
1575 	[SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
1576 	[SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
1577 	[SLAVE_PDM] = &qhs_pdm,
1578 	[SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
1579 	[SLAVE_PRNG] = &qhs_prng,
1580 	[SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
1581 	[SLAVE_QSPI_0] = &qhs_qspi,
1582 	[SLAVE_QUP_0] = &qhs_qup0,
1583 	[SLAVE_QUP_1] = &qhs_qup1,
1584 	[SLAVE_QUP_2] = &qhs_qup2,
1585 	[SLAVE_SDCC_2] = &qhs_sdc2,
1586 	[SLAVE_SDCC_4] = &qhs_sdc4,
1587 	[SLAVE_SPSS_CFG] = &qhs_spss_cfg,
1588 	[SLAVE_TCSR] = &qhs_tcsr,
1589 	[SLAVE_TLMM] = &qhs_tlmm,
1590 	[SLAVE_TME_CFG] = &qhs_tme_cfg,
1591 	[SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
1592 	[SLAVE_USB3_0] = &qhs_usb3_0,
1593 	[SLAVE_VENUS_CFG] = &qhs_venus_cfg,
1594 	[SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg,
1595 	[SLAVE_A1NOC_CFG] = &qns_a1_noc_cfg,
1596 	[SLAVE_A2NOC_CFG] = &qns_a2_noc_cfg,
1597 	[SLAVE_DDRSS_CFG] = &qns_ddrss_cfg,
1598 	[SLAVE_CNOC_MNOC_CFG] = &qns_mnoc_cfg,
1599 	[SLAVE_PCIE_ANOC_CFG] = &qns_pcie_anoc_cfg,
1600 	[SLAVE_SNOC_CFG] = &qns_snoc_cfg,
1601 	[SLAVE_IMEM] = &qxs_imem,
1602 	[SLAVE_PIMEM] = &qxs_pimem,
1603 	[SLAVE_SERVICE_CNOC] = &srvc_cnoc,
1604 	[SLAVE_PCIE_0] = &xs_pcie_0,
1605 	[SLAVE_PCIE_1] = &xs_pcie_1,
1606 	[SLAVE_QDSS_STM] = &xs_qdss_stm,
1607 	[SLAVE_TCU] = &xs_sys_tcu_cfg,
1608 };
1609 
1610 static const struct qcom_icc_desc sm8450_config_noc = {
1611 	.nodes = config_noc_nodes,
1612 	.num_nodes = ARRAY_SIZE(config_noc_nodes),
1613 	.bcms = config_noc_bcms,
1614 	.num_bcms = ARRAY_SIZE(config_noc_bcms),
1615 };
1616 
1617 static struct qcom_icc_bcm * const gem_noc_bcms[] = {
1618 	&bcm_sh0,
1619 	&bcm_sh1,
1620 	&bcm_sh0_disp,
1621 	&bcm_sh1_disp,
1622 };
1623 
1624 static struct qcom_icc_node * const gem_noc_nodes[] = {
1625 	[MASTER_GPU_TCU] = &alm_gpu_tcu,
1626 	[MASTER_SYS_TCU] = &alm_sys_tcu,
1627 	[MASTER_APPSS_PROC] = &chm_apps,
1628 	[MASTER_GFX3D] = &qnm_gpu,
1629 	[MASTER_MSS_PROC] = &qnm_mdsp,
1630 	[MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
1631 	[MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
1632 	[MASTER_COMPUTE_NOC] = &qnm_nsp_gemnoc,
1633 	[MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie,
1634 	[MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
1635 	[MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
1636 	[SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc,
1637 	[SLAVE_LLCC] = &qns_llcc,
1638 	[SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie,
1639 	[MASTER_MNOC_HF_MEM_NOC_DISP] = &qnm_mnoc_hf_disp,
1640 	[MASTER_MNOC_SF_MEM_NOC_DISP] = &qnm_mnoc_sf_disp,
1641 	[MASTER_ANOC_PCIE_GEM_NOC_DISP] = &qnm_pcie_disp,
1642 	[SLAVE_LLCC_DISP] = &qns_llcc_disp,
1643 };
1644 
1645 static const struct qcom_icc_desc sm8450_gem_noc = {
1646 	.nodes = gem_noc_nodes,
1647 	.num_nodes = ARRAY_SIZE(gem_noc_nodes),
1648 	.bcms = gem_noc_bcms,
1649 	.num_bcms = ARRAY_SIZE(gem_noc_bcms),
1650 };
1651 
1652 static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = {
1653 };
1654 
1655 static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
1656 	[MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc,
1657 	[MASTER_LPASS_PROC] = &qxm_lpass_dsp,
1658 	[SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core,
1659 	[SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi,
1660 	[SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu,
1661 	[SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top,
1662 	[SLAVE_LPASS_SNOC] = &qns_sysnoc,
1663 	[SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc,
1664 	[SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
1665 };
1666 
1667 static const struct qcom_icc_desc sm8450_lpass_ag_noc = {
1668 	.nodes = lpass_ag_noc_nodes,
1669 	.num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
1670 	.bcms = lpass_ag_noc_bcms,
1671 	.num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms),
1672 };
1673 
1674 static struct qcom_icc_bcm * const mc_virt_bcms[] = {
1675 	&bcm_acv,
1676 	&bcm_mc0,
1677 	&bcm_acv_disp,
1678 	&bcm_mc0_disp,
1679 };
1680 
1681 static struct qcom_icc_node * const mc_virt_nodes[] = {
1682 	[MASTER_LLCC] = &llcc_mc,
1683 	[SLAVE_EBI1] = &ebi,
1684 	[MASTER_LLCC_DISP] = &llcc_mc_disp,
1685 	[SLAVE_EBI1_DISP] = &ebi_disp,
1686 };
1687 
1688 static const struct qcom_icc_desc sm8450_mc_virt = {
1689 	.nodes = mc_virt_nodes,
1690 	.num_nodes = ARRAY_SIZE(mc_virt_nodes),
1691 	.bcms = mc_virt_bcms,
1692 	.num_bcms = ARRAY_SIZE(mc_virt_bcms),
1693 };
1694 
1695 static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
1696 	&bcm_mm0,
1697 	&bcm_mm1,
1698 	&bcm_mm0_disp,
1699 	&bcm_mm1_disp,
1700 };
1701 
1702 static struct qcom_icc_node * const mmss_noc_nodes[] = {
1703 	[MASTER_CAMNOC_HF] = &qnm_camnoc_hf,
1704 	[MASTER_CAMNOC_ICP] = &qnm_camnoc_icp,
1705 	[MASTER_CAMNOC_SF] = &qnm_camnoc_sf,
1706 	[MASTER_MDP] = &qnm_mdp,
1707 	[MASTER_CNOC_MNOC_CFG] = &qnm_mnoc_cfg,
1708 	[MASTER_ROTATOR] = &qnm_rot,
1709 	[MASTER_CDSP_HCP] = &qnm_vapss_hcp,
1710 	[MASTER_VIDEO] = &qnm_video,
1711 	[MASTER_VIDEO_CV_PROC] = &qnm_video_cv_cpu,
1712 	[MASTER_VIDEO_PROC] = &qnm_video_cvp,
1713 	[MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu,
1714 	[SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
1715 	[SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
1716 	[SLAVE_SERVICE_MNOC] = &srvc_mnoc,
1717 	[MASTER_MDP_DISP] = &qnm_mdp_disp,
1718 	[MASTER_ROTATOR_DISP] = &qnm_rot_disp,
1719 	[SLAVE_MNOC_HF_MEM_NOC_DISP] = &qns_mem_noc_hf_disp,
1720 	[SLAVE_MNOC_SF_MEM_NOC_DISP] = &qns_mem_noc_sf_disp,
1721 };
1722 
1723 static const struct qcom_icc_desc sm8450_mmss_noc = {
1724 	.nodes = mmss_noc_nodes,
1725 	.num_nodes = ARRAY_SIZE(mmss_noc_nodes),
1726 	.bcms = mmss_noc_bcms,
1727 	.num_bcms = ARRAY_SIZE(mmss_noc_bcms),
1728 };
1729 
1730 static struct qcom_icc_bcm * const nsp_noc_bcms[] = {
1731 	&bcm_co0,
1732 };
1733 
1734 static struct qcom_icc_node * const nsp_noc_nodes[] = {
1735 	[MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config,
1736 	[MASTER_CDSP_PROC] = &qxm_nsp,
1737 	[SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
1738 	[SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
1739 };
1740 
1741 static const struct qcom_icc_desc sm8450_nsp_noc = {
1742 	.nodes = nsp_noc_nodes,
1743 	.num_nodes = ARRAY_SIZE(nsp_noc_nodes),
1744 	.bcms = nsp_noc_bcms,
1745 	.num_bcms = ARRAY_SIZE(nsp_noc_bcms),
1746 };
1747 
1748 static struct qcom_icc_bcm * const pcie_anoc_bcms[] = {
1749 	&bcm_sn7,
1750 };
1751 
1752 static struct qcom_icc_node * const pcie_anoc_nodes[] = {
1753 	[MASTER_PCIE_ANOC_CFG] = &qnm_pcie_anoc_cfg,
1754 	[MASTER_PCIE_0] = &xm_pcie3_0,
1755 	[MASTER_PCIE_1] = &xm_pcie3_1,
1756 	[SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc,
1757 	[SLAVE_SERVICE_PCIE_ANOC] = &srvc_pcie_aggre_noc,
1758 };
1759 
1760 static const struct qcom_icc_desc sm8450_pcie_anoc = {
1761 	.nodes = pcie_anoc_nodes,
1762 	.num_nodes = ARRAY_SIZE(pcie_anoc_nodes),
1763 	.bcms = pcie_anoc_bcms,
1764 	.num_bcms = ARRAY_SIZE(pcie_anoc_bcms),
1765 };
1766 
1767 static struct qcom_icc_bcm * const system_noc_bcms[] = {
1768 	&bcm_sn0,
1769 	&bcm_sn1,
1770 	&bcm_sn2,
1771 	&bcm_sn3,
1772 	&bcm_sn4,
1773 };
1774 
1775 static struct qcom_icc_node * const system_noc_nodes[] = {
1776 	[MASTER_GIC_AHB] = &qhm_gic,
1777 	[MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
1778 	[MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
1779 	[MASTER_LPASS_ANOC] = &qnm_lpass_noc,
1780 	[MASTER_SNOC_CFG] = &qnm_snoc_cfg,
1781 	[MASTER_PIMEM] = &qxm_pimem,
1782 	[MASTER_GIC] = &xm_gic,
1783 	[SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc,
1784 	[SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
1785 	[SLAVE_SERVICE_SNOC] = &srvc_snoc,
1786 };
1787 
1788 static const struct qcom_icc_desc sm8450_system_noc = {
1789 	.nodes = system_noc_nodes,
1790 	.num_nodes = ARRAY_SIZE(system_noc_nodes),
1791 	.bcms = system_noc_bcms,
1792 	.num_bcms = ARRAY_SIZE(system_noc_bcms),
1793 };
1794 
1795 static const struct of_device_id qnoc_of_match[] = {
1796 	{ .compatible = "qcom,sm8450-aggre1-noc",
1797 	  .data = &sm8450_aggre1_noc},
1798 	{ .compatible = "qcom,sm8450-aggre2-noc",
1799 	  .data = &sm8450_aggre2_noc},
1800 	{ .compatible = "qcom,sm8450-clk-virt",
1801 	  .data = &sm8450_clk_virt},
1802 	{ .compatible = "qcom,sm8450-config-noc",
1803 	  .data = &sm8450_config_noc},
1804 	{ .compatible = "qcom,sm8450-gem-noc",
1805 	  .data = &sm8450_gem_noc},
1806 	{ .compatible = "qcom,sm8450-lpass-ag-noc",
1807 	  .data = &sm8450_lpass_ag_noc},
1808 	{ .compatible = "qcom,sm8450-mc-virt",
1809 	  .data = &sm8450_mc_virt},
1810 	{ .compatible = "qcom,sm8450-mmss-noc",
1811 	  .data = &sm8450_mmss_noc},
1812 	{ .compatible = "qcom,sm8450-nsp-noc",
1813 	  .data = &sm8450_nsp_noc},
1814 	{ .compatible = "qcom,sm8450-pcie-anoc",
1815 	  .data = &sm8450_pcie_anoc},
1816 	{ .compatible = "qcom,sm8450-system-noc",
1817 	  .data = &sm8450_system_noc},
1818 	{ }
1819 };
1820 MODULE_DEVICE_TABLE(of, qnoc_of_match);
1821 
1822 static struct platform_driver qnoc_driver = {
1823 	.probe = qcom_icc_rpmh_probe,
1824 	.remove = qcom_icc_rpmh_remove,
1825 	.driver = {
1826 		.name = "qnoc-sm8450",
1827 		.of_match_table = qnoc_of_match,
1828 		.sync_state = icc_sync_state,
1829 	},
1830 };
1831 
qnoc_driver_init(void)1832 static int __init qnoc_driver_init(void)
1833 {
1834 	return platform_driver_register(&qnoc_driver);
1835 }
1836 core_initcall(qnoc_driver_init);
1837 
qnoc_driver_exit(void)1838 static void __exit qnoc_driver_exit(void)
1839 {
1840 	platform_driver_unregister(&qnoc_driver);
1841 }
1842 module_exit(qnoc_driver_exit);
1843 
1844 MODULE_DESCRIPTION("sm8450 NoC driver");
1845 MODULE_LICENSE("GPL v2");
1846