1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Qualcomm SDM630/SDM636/SDM660 Network-on-Chip (NoC) QoS driver
4  * Copyright (C) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
5  */
6 
7 #include <dt-bindings/interconnect/qcom,sdm660.h>
8 #include <linux/clk.h>
9 #include <linux/device.h>
10 #include <linux/interconnect-provider.h>
11 #include <linux/io.h>
12 #include <linux/module.h>
13 #include <linux/of_device.h>
14 #include <linux/of_platform.h>
15 #include <linux/platform_device.h>
16 #include <linux/regmap.h>
17 #include <linux/slab.h>
18 
19 #include "icc-rpm.h"
20 #include "smd-rpm.h"
21 
22 enum {
23 	SDM660_MASTER_IPA = 1,
24 	SDM660_MASTER_CNOC_A2NOC,
25 	SDM660_MASTER_SDCC_1,
26 	SDM660_MASTER_SDCC_2,
27 	SDM660_MASTER_BLSP_1,
28 	SDM660_MASTER_BLSP_2,
29 	SDM660_MASTER_UFS,
30 	SDM660_MASTER_USB_HS,
31 	SDM660_MASTER_USB3,
32 	SDM660_MASTER_CRYPTO_C0,
33 	SDM660_MASTER_GNOC_BIMC,
34 	SDM660_MASTER_OXILI,
35 	SDM660_MASTER_MNOC_BIMC,
36 	SDM660_MASTER_SNOC_BIMC,
37 	SDM660_MASTER_PIMEM,
38 	SDM660_MASTER_SNOC_CNOC,
39 	SDM660_MASTER_QDSS_DAP,
40 	SDM660_MASTER_APPS_PROC,
41 	SDM660_MASTER_CNOC_MNOC_MMSS_CFG,
42 	SDM660_MASTER_CNOC_MNOC_CFG,
43 	SDM660_MASTER_CPP,
44 	SDM660_MASTER_JPEG,
45 	SDM660_MASTER_MDP_P0,
46 	SDM660_MASTER_MDP_P1,
47 	SDM660_MASTER_VENUS,
48 	SDM660_MASTER_VFE,
49 	SDM660_MASTER_QDSS_ETR,
50 	SDM660_MASTER_QDSS_BAM,
51 	SDM660_MASTER_SNOC_CFG,
52 	SDM660_MASTER_BIMC_SNOC,
53 	SDM660_MASTER_A2NOC_SNOC,
54 	SDM660_MASTER_GNOC_SNOC,
55 
56 	SDM660_SLAVE_A2NOC_SNOC,
57 	SDM660_SLAVE_EBI,
58 	SDM660_SLAVE_HMSS_L3,
59 	SDM660_SLAVE_BIMC_SNOC,
60 	SDM660_SLAVE_CNOC_A2NOC,
61 	SDM660_SLAVE_MPM,
62 	SDM660_SLAVE_PMIC_ARB,
63 	SDM660_SLAVE_TLMM_NORTH,
64 	SDM660_SLAVE_TCSR,
65 	SDM660_SLAVE_PIMEM_CFG,
66 	SDM660_SLAVE_IMEM_CFG,
67 	SDM660_SLAVE_MESSAGE_RAM,
68 	SDM660_SLAVE_GLM,
69 	SDM660_SLAVE_BIMC_CFG,
70 	SDM660_SLAVE_PRNG,
71 	SDM660_SLAVE_SPDM,
72 	SDM660_SLAVE_QDSS_CFG,
73 	SDM660_SLAVE_CNOC_MNOC_CFG,
74 	SDM660_SLAVE_SNOC_CFG,
75 	SDM660_SLAVE_QM_CFG,
76 	SDM660_SLAVE_CLK_CTL,
77 	SDM660_SLAVE_MSS_CFG,
78 	SDM660_SLAVE_TLMM_SOUTH,
79 	SDM660_SLAVE_UFS_CFG,
80 	SDM660_SLAVE_A2NOC_CFG,
81 	SDM660_SLAVE_A2NOC_SMMU_CFG,
82 	SDM660_SLAVE_GPUSS_CFG,
83 	SDM660_SLAVE_AHB2PHY,
84 	SDM660_SLAVE_BLSP_1,
85 	SDM660_SLAVE_SDCC_1,
86 	SDM660_SLAVE_SDCC_2,
87 	SDM660_SLAVE_TLMM_CENTER,
88 	SDM660_SLAVE_BLSP_2,
89 	SDM660_SLAVE_PDM,
90 	SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
91 	SDM660_SLAVE_USB_HS,
92 	SDM660_SLAVE_USB3_0,
93 	SDM660_SLAVE_SRVC_CNOC,
94 	SDM660_SLAVE_GNOC_BIMC,
95 	SDM660_SLAVE_GNOC_SNOC,
96 	SDM660_SLAVE_CAMERA_CFG,
97 	SDM660_SLAVE_CAMERA_THROTTLE_CFG,
98 	SDM660_SLAVE_MISC_CFG,
99 	SDM660_SLAVE_VENUS_THROTTLE_CFG,
100 	SDM660_SLAVE_VENUS_CFG,
101 	SDM660_SLAVE_MMSS_CLK_XPU_CFG,
102 	SDM660_SLAVE_MMSS_CLK_CFG,
103 	SDM660_SLAVE_MNOC_MPU_CFG,
104 	SDM660_SLAVE_DISPLAY_CFG,
105 	SDM660_SLAVE_CSI_PHY_CFG,
106 	SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
107 	SDM660_SLAVE_SMMU_CFG,
108 	SDM660_SLAVE_MNOC_BIMC,
109 	SDM660_SLAVE_SRVC_MNOC,
110 	SDM660_SLAVE_HMSS,
111 	SDM660_SLAVE_LPASS,
112 	SDM660_SLAVE_WLAN,
113 	SDM660_SLAVE_CDSP,
114 	SDM660_SLAVE_IPA,
115 	SDM660_SLAVE_SNOC_BIMC,
116 	SDM660_SLAVE_SNOC_CNOC,
117 	SDM660_SLAVE_IMEM,
118 	SDM660_SLAVE_PIMEM,
119 	SDM660_SLAVE_QDSS_STM,
120 	SDM660_SLAVE_SRVC_SNOC,
121 
122 	SDM660_A2NOC,
123 	SDM660_BIMC,
124 	SDM660_CNOC,
125 	SDM660_GNOC,
126 	SDM660_MNOC,
127 	SDM660_SNOC,
128 };
129 
130 static const char * const bus_mm_clocks[] = {
131 	"bus",
132 	"bus_a",
133 	"iface",
134 };
135 
136 static const char * const bus_a2noc_clocks[] = {
137 	"bus",
138 	"bus_a",
139 	"ipa",
140 	"ufs_axi",
141 	"aggre2_ufs_axi",
142 	"aggre2_usb3_axi",
143 	"cfg_noc_usb2_axi",
144 };
145 
146 static const u16 mas_ipa_links[] = {
147 	SDM660_SLAVE_A2NOC_SNOC
148 };
149 
150 static struct qcom_icc_node mas_ipa = {
151 	.name = "mas_ipa",
152 	.id = SDM660_MASTER_IPA,
153 	.buswidth = 8,
154 	.mas_rpm_id = 59,
155 	.slv_rpm_id = -1,
156 	.qos.ap_owned = true,
157 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
158 	.qos.areq_prio = 1,
159 	.qos.prio_level = 1,
160 	.qos.qos_port = 3,
161 	.num_links = ARRAY_SIZE(mas_ipa_links),
162 	.links = mas_ipa_links,
163 };
164 
165 static const u16 mas_cnoc_a2noc_links[] = {
166 	SDM660_SLAVE_A2NOC_SNOC
167 };
168 
169 static struct qcom_icc_node mas_cnoc_a2noc = {
170 	.name = "mas_cnoc_a2noc",
171 	.id = SDM660_MASTER_CNOC_A2NOC,
172 	.buswidth = 8,
173 	.mas_rpm_id = 146,
174 	.slv_rpm_id = -1,
175 	.qos.ap_owned = true,
176 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
177 	.num_links = ARRAY_SIZE(mas_cnoc_a2noc_links),
178 	.links = mas_cnoc_a2noc_links,
179 };
180 
181 static const u16 mas_sdcc_1_links[] = {
182 	SDM660_SLAVE_A2NOC_SNOC
183 };
184 
185 static struct qcom_icc_node mas_sdcc_1 = {
186 	.name = "mas_sdcc_1",
187 	.id = SDM660_MASTER_SDCC_1,
188 	.buswidth = 8,
189 	.mas_rpm_id = 33,
190 	.slv_rpm_id = -1,
191 	.num_links = ARRAY_SIZE(mas_sdcc_1_links),
192 	.links = mas_sdcc_1_links,
193 };
194 
195 static const u16 mas_sdcc_2_links[] = {
196 	SDM660_SLAVE_A2NOC_SNOC
197 };
198 
199 static struct qcom_icc_node mas_sdcc_2 = {
200 	.name = "mas_sdcc_2",
201 	.id = SDM660_MASTER_SDCC_2,
202 	.buswidth = 8,
203 	.mas_rpm_id = 35,
204 	.slv_rpm_id = -1,
205 	.num_links = ARRAY_SIZE(mas_sdcc_2_links),
206 	.links = mas_sdcc_2_links,
207 };
208 
209 static const u16 mas_blsp_1_links[] = {
210 	SDM660_SLAVE_A2NOC_SNOC
211 };
212 
213 static struct qcom_icc_node mas_blsp_1 = {
214 	.name = "mas_blsp_1",
215 	.id = SDM660_MASTER_BLSP_1,
216 	.buswidth = 4,
217 	.mas_rpm_id = 41,
218 	.slv_rpm_id = -1,
219 	.num_links = ARRAY_SIZE(mas_blsp_1_links),
220 	.links = mas_blsp_1_links,
221 };
222 
223 static const u16 mas_blsp_2_links[] = {
224 	SDM660_SLAVE_A2NOC_SNOC
225 };
226 
227 static struct qcom_icc_node mas_blsp_2 = {
228 	.name = "mas_blsp_2",
229 	.id = SDM660_MASTER_BLSP_2,
230 	.buswidth = 4,
231 	.mas_rpm_id = 39,
232 	.slv_rpm_id = -1,
233 	.num_links = ARRAY_SIZE(mas_blsp_2_links),
234 	.links = mas_blsp_2_links,
235 };
236 
237 static const u16 mas_ufs_links[] = {
238 	SDM660_SLAVE_A2NOC_SNOC
239 };
240 
241 static struct qcom_icc_node mas_ufs = {
242 	.name = "mas_ufs",
243 	.id = SDM660_MASTER_UFS,
244 	.buswidth = 8,
245 	.mas_rpm_id = 68,
246 	.slv_rpm_id = -1,
247 	.qos.ap_owned = true,
248 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
249 	.qos.areq_prio = 1,
250 	.qos.prio_level = 1,
251 	.qos.qos_port = 4,
252 	.num_links = ARRAY_SIZE(mas_ufs_links),
253 	.links = mas_ufs_links,
254 };
255 
256 static const u16 mas_usb_hs_links[] = {
257 	SDM660_SLAVE_A2NOC_SNOC
258 };
259 
260 static struct qcom_icc_node mas_usb_hs = {
261 	.name = "mas_usb_hs",
262 	.id = SDM660_MASTER_USB_HS,
263 	.buswidth = 8,
264 	.mas_rpm_id = 42,
265 	.slv_rpm_id = -1,
266 	.qos.ap_owned = true,
267 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
268 	.qos.areq_prio = 1,
269 	.qos.prio_level = 1,
270 	.qos.qos_port = 1,
271 	.num_links = ARRAY_SIZE(mas_usb_hs_links),
272 	.links = mas_usb_hs_links,
273 };
274 
275 static const u16 mas_usb3_links[] = {
276 	SDM660_SLAVE_A2NOC_SNOC
277 };
278 
279 static struct qcom_icc_node mas_usb3 = {
280 	.name = "mas_usb3",
281 	.id = SDM660_MASTER_USB3,
282 	.buswidth = 8,
283 	.mas_rpm_id = 32,
284 	.slv_rpm_id = -1,
285 	.qos.ap_owned = true,
286 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
287 	.qos.areq_prio = 1,
288 	.qos.prio_level = 1,
289 	.qos.qos_port = 2,
290 	.num_links = ARRAY_SIZE(mas_usb3_links),
291 	.links = mas_usb3_links,
292 };
293 
294 static const u16 mas_crypto_links[] = {
295 	SDM660_SLAVE_A2NOC_SNOC
296 };
297 
298 static struct qcom_icc_node mas_crypto = {
299 	.name = "mas_crypto",
300 	.id = SDM660_MASTER_CRYPTO_C0,
301 	.buswidth = 8,
302 	.mas_rpm_id = 23,
303 	.slv_rpm_id = -1,
304 	.qos.ap_owned = true,
305 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
306 	.qos.areq_prio = 1,
307 	.qos.prio_level = 1,
308 	.qos.qos_port = 11,
309 	.num_links = ARRAY_SIZE(mas_crypto_links),
310 	.links = mas_crypto_links,
311 };
312 
313 static const u16 mas_gnoc_bimc_links[] = {
314 	SDM660_SLAVE_EBI
315 };
316 
317 static struct qcom_icc_node mas_gnoc_bimc = {
318 	.name = "mas_gnoc_bimc",
319 	.id = SDM660_MASTER_GNOC_BIMC,
320 	.buswidth = 4,
321 	.mas_rpm_id = 144,
322 	.slv_rpm_id = -1,
323 	.qos.ap_owned = true,
324 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
325 	.qos.areq_prio = 0,
326 	.qos.prio_level = 0,
327 	.qos.qos_port = 0,
328 	.num_links = ARRAY_SIZE(mas_gnoc_bimc_links),
329 	.links = mas_gnoc_bimc_links,
330 };
331 
332 static const u16 mas_oxili_links[] = {
333 	SDM660_SLAVE_HMSS_L3,
334 	SDM660_SLAVE_EBI,
335 	SDM660_SLAVE_BIMC_SNOC
336 };
337 
338 static struct qcom_icc_node mas_oxili = {
339 	.name = "mas_oxili",
340 	.id = SDM660_MASTER_OXILI,
341 	.buswidth = 4,
342 	.mas_rpm_id = 6,
343 	.slv_rpm_id = -1,
344 	.qos.ap_owned = true,
345 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
346 	.qos.areq_prio = 0,
347 	.qos.prio_level = 0,
348 	.qos.qos_port = 1,
349 	.num_links = ARRAY_SIZE(mas_oxili_links),
350 	.links = mas_oxili_links,
351 };
352 
353 static const u16 mas_mnoc_bimc_links[] = {
354 	SDM660_SLAVE_HMSS_L3,
355 	SDM660_SLAVE_EBI,
356 	SDM660_SLAVE_BIMC_SNOC
357 };
358 
359 static struct qcom_icc_node mas_mnoc_bimc = {
360 	.name = "mas_mnoc_bimc",
361 	.id = SDM660_MASTER_MNOC_BIMC,
362 	.buswidth = 4,
363 	.mas_rpm_id = 2,
364 	.slv_rpm_id = -1,
365 	.qos.ap_owned = true,
366 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
367 	.qos.areq_prio = 0,
368 	.qos.prio_level = 0,
369 	.qos.qos_port = 2,
370 	.num_links = ARRAY_SIZE(mas_mnoc_bimc_links),
371 	.links = mas_mnoc_bimc_links,
372 };
373 
374 static const u16 mas_snoc_bimc_links[] = {
375 	SDM660_SLAVE_HMSS_L3,
376 	SDM660_SLAVE_EBI
377 };
378 
379 static struct qcom_icc_node mas_snoc_bimc = {
380 	.name = "mas_snoc_bimc",
381 	.id = SDM660_MASTER_SNOC_BIMC,
382 	.buswidth = 4,
383 	.mas_rpm_id = 3,
384 	.slv_rpm_id = -1,
385 	.num_links = ARRAY_SIZE(mas_snoc_bimc_links),
386 	.links = mas_snoc_bimc_links,
387 };
388 
389 static const u16 mas_pimem_links[] = {
390 	SDM660_SLAVE_HMSS_L3,
391 	SDM660_SLAVE_EBI
392 };
393 
394 static struct qcom_icc_node mas_pimem = {
395 	.name = "mas_pimem",
396 	.id = SDM660_MASTER_PIMEM,
397 	.buswidth = 4,
398 	.mas_rpm_id = 113,
399 	.slv_rpm_id = -1,
400 	.qos.ap_owned = true,
401 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
402 	.qos.areq_prio = 1,
403 	.qos.prio_level = 1,
404 	.qos.qos_port = 4,
405 	.num_links = ARRAY_SIZE(mas_pimem_links),
406 	.links = mas_pimem_links,
407 };
408 
409 static const u16 mas_snoc_cnoc_links[] = {
410 	SDM660_SLAVE_CLK_CTL,
411 	SDM660_SLAVE_QDSS_CFG,
412 	SDM660_SLAVE_QM_CFG,
413 	SDM660_SLAVE_SRVC_CNOC,
414 	SDM660_SLAVE_UFS_CFG,
415 	SDM660_SLAVE_TCSR,
416 	SDM660_SLAVE_A2NOC_SMMU_CFG,
417 	SDM660_SLAVE_SNOC_CFG,
418 	SDM660_SLAVE_TLMM_SOUTH,
419 	SDM660_SLAVE_MPM,
420 	SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
421 	SDM660_SLAVE_SDCC_2,
422 	SDM660_SLAVE_SDCC_1,
423 	SDM660_SLAVE_SPDM,
424 	SDM660_SLAVE_PMIC_ARB,
425 	SDM660_SLAVE_PRNG,
426 	SDM660_SLAVE_MSS_CFG,
427 	SDM660_SLAVE_GPUSS_CFG,
428 	SDM660_SLAVE_IMEM_CFG,
429 	SDM660_SLAVE_USB3_0,
430 	SDM660_SLAVE_A2NOC_CFG,
431 	SDM660_SLAVE_TLMM_NORTH,
432 	SDM660_SLAVE_USB_HS,
433 	SDM660_SLAVE_PDM,
434 	SDM660_SLAVE_TLMM_CENTER,
435 	SDM660_SLAVE_AHB2PHY,
436 	SDM660_SLAVE_BLSP_2,
437 	SDM660_SLAVE_BLSP_1,
438 	SDM660_SLAVE_PIMEM_CFG,
439 	SDM660_SLAVE_GLM,
440 	SDM660_SLAVE_MESSAGE_RAM,
441 	SDM660_SLAVE_BIMC_CFG,
442 	SDM660_SLAVE_CNOC_MNOC_CFG
443 };
444 
445 static struct qcom_icc_node mas_snoc_cnoc = {
446 	.name = "mas_snoc_cnoc",
447 	.id = SDM660_MASTER_SNOC_CNOC,
448 	.buswidth = 8,
449 	.mas_rpm_id = 52,
450 	.slv_rpm_id = -1,
451 	.qos.ap_owned = true,
452 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
453 	.num_links = ARRAY_SIZE(mas_snoc_cnoc_links),
454 	.links = mas_snoc_cnoc_links,
455 };
456 
457 static const u16 mas_qdss_dap_links[] = {
458 	SDM660_SLAVE_CLK_CTL,
459 	SDM660_SLAVE_QDSS_CFG,
460 	SDM660_SLAVE_QM_CFG,
461 	SDM660_SLAVE_SRVC_CNOC,
462 	SDM660_SLAVE_UFS_CFG,
463 	SDM660_SLAVE_TCSR,
464 	SDM660_SLAVE_A2NOC_SMMU_CFG,
465 	SDM660_SLAVE_SNOC_CFG,
466 	SDM660_SLAVE_TLMM_SOUTH,
467 	SDM660_SLAVE_MPM,
468 	SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
469 	SDM660_SLAVE_SDCC_2,
470 	SDM660_SLAVE_SDCC_1,
471 	SDM660_SLAVE_SPDM,
472 	SDM660_SLAVE_PMIC_ARB,
473 	SDM660_SLAVE_PRNG,
474 	SDM660_SLAVE_MSS_CFG,
475 	SDM660_SLAVE_GPUSS_CFG,
476 	SDM660_SLAVE_IMEM_CFG,
477 	SDM660_SLAVE_USB3_0,
478 	SDM660_SLAVE_A2NOC_CFG,
479 	SDM660_SLAVE_TLMM_NORTH,
480 	SDM660_SLAVE_USB_HS,
481 	SDM660_SLAVE_PDM,
482 	SDM660_SLAVE_TLMM_CENTER,
483 	SDM660_SLAVE_AHB2PHY,
484 	SDM660_SLAVE_BLSP_2,
485 	SDM660_SLAVE_BLSP_1,
486 	SDM660_SLAVE_PIMEM_CFG,
487 	SDM660_SLAVE_GLM,
488 	SDM660_SLAVE_MESSAGE_RAM,
489 	SDM660_SLAVE_CNOC_A2NOC,
490 	SDM660_SLAVE_BIMC_CFG,
491 	SDM660_SLAVE_CNOC_MNOC_CFG
492 };
493 
494 static struct qcom_icc_node mas_qdss_dap = {
495 	.name = "mas_qdss_dap",
496 	.id = SDM660_MASTER_QDSS_DAP,
497 	.buswidth = 8,
498 	.mas_rpm_id = 49,
499 	.slv_rpm_id = -1,
500 	.qos.ap_owned = true,
501 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
502 	.num_links = ARRAY_SIZE(mas_qdss_dap_links),
503 	.links = mas_qdss_dap_links,
504 };
505 
506 static const u16 mas_apss_proc_links[] = {
507 	SDM660_SLAVE_GNOC_SNOC,
508 	SDM660_SLAVE_GNOC_BIMC
509 };
510 
511 static struct qcom_icc_node mas_apss_proc = {
512 	.name = "mas_apss_proc",
513 	.id = SDM660_MASTER_APPS_PROC,
514 	.buswidth = 16,
515 	.mas_rpm_id = 0,
516 	.slv_rpm_id = -1,
517 	.qos.ap_owned = true,
518 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
519 	.num_links = ARRAY_SIZE(mas_apss_proc_links),
520 	.links = mas_apss_proc_links,
521 };
522 
523 static const u16 mas_cnoc_mnoc_mmss_cfg_links[] = {
524 	SDM660_SLAVE_VENUS_THROTTLE_CFG,
525 	SDM660_SLAVE_VENUS_CFG,
526 	SDM660_SLAVE_CAMERA_THROTTLE_CFG,
527 	SDM660_SLAVE_SMMU_CFG,
528 	SDM660_SLAVE_CAMERA_CFG,
529 	SDM660_SLAVE_CSI_PHY_CFG,
530 	SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
531 	SDM660_SLAVE_DISPLAY_CFG,
532 	SDM660_SLAVE_MMSS_CLK_CFG,
533 	SDM660_SLAVE_MNOC_MPU_CFG,
534 	SDM660_SLAVE_MISC_CFG,
535 	SDM660_SLAVE_MMSS_CLK_XPU_CFG
536 };
537 
538 static struct qcom_icc_node mas_cnoc_mnoc_mmss_cfg = {
539 	.name = "mas_cnoc_mnoc_mmss_cfg",
540 	.id = SDM660_MASTER_CNOC_MNOC_MMSS_CFG,
541 	.buswidth = 8,
542 	.mas_rpm_id = 4,
543 	.slv_rpm_id = -1,
544 	.qos.ap_owned = true,
545 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
546 	.num_links = ARRAY_SIZE(mas_cnoc_mnoc_mmss_cfg_links),
547 	.links = mas_cnoc_mnoc_mmss_cfg_links,
548 };
549 
550 static const u16 mas_cnoc_mnoc_cfg_links[] = {
551 	SDM660_SLAVE_SRVC_MNOC
552 };
553 
554 static struct qcom_icc_node mas_cnoc_mnoc_cfg = {
555 	.name = "mas_cnoc_mnoc_cfg",
556 	.id = SDM660_MASTER_CNOC_MNOC_CFG,
557 	.buswidth = 4,
558 	.mas_rpm_id = 5,
559 	.slv_rpm_id = -1,
560 	.qos.ap_owned = true,
561 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
562 	.num_links = ARRAY_SIZE(mas_cnoc_mnoc_cfg_links),
563 	.links = mas_cnoc_mnoc_cfg_links,
564 };
565 
566 static const u16 mas_cpp_links[] = {
567 	SDM660_SLAVE_MNOC_BIMC
568 };
569 
570 static struct qcom_icc_node mas_cpp = {
571 	.name = "mas_cpp",
572 	.id = SDM660_MASTER_CPP,
573 	.buswidth = 16,
574 	.mas_rpm_id = 115,
575 	.slv_rpm_id = -1,
576 	.qos.ap_owned = true,
577 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
578 	.qos.areq_prio = 0,
579 	.qos.prio_level = 0,
580 	.qos.qos_port = 4,
581 	.num_links = ARRAY_SIZE(mas_cpp_links),
582 	.links = mas_cpp_links,
583 };
584 
585 static const u16 mas_jpeg_links[] = {
586 	SDM660_SLAVE_MNOC_BIMC
587 };
588 
589 static struct qcom_icc_node mas_jpeg = {
590 	.name = "mas_jpeg",
591 	.id = SDM660_MASTER_JPEG,
592 	.buswidth = 16,
593 	.mas_rpm_id = 7,
594 	.slv_rpm_id = -1,
595 	.qos.ap_owned = true,
596 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
597 	.qos.areq_prio = 0,
598 	.qos.prio_level = 0,
599 	.qos.qos_port = 6,
600 	.num_links = ARRAY_SIZE(mas_jpeg_links),
601 	.links = mas_jpeg_links,
602 };
603 
604 static const u16 mas_mdp_p0_links[] = {
605 	SDM660_SLAVE_MNOC_BIMC
606 };
607 
608 static struct qcom_icc_node mas_mdp_p0 = {
609 	.name = "mas_mdp_p0",
610 	.id = SDM660_MASTER_MDP_P0,
611 	.buswidth = 16,
612 	.mas_rpm_id = 8,
613 	.slv_rpm_id = -1,
614 	.qos.ap_owned = true,
615 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
616 	.qos.areq_prio = 0,
617 	.qos.prio_level = 0,
618 	.qos.qos_port = 0,
619 	.num_links = ARRAY_SIZE(mas_mdp_p0_links),
620 	.links = mas_mdp_p0_links,
621 };
622 
623 static const u16 mas_mdp_p1_links[] = {
624 	SDM660_SLAVE_MNOC_BIMC
625 };
626 
627 static struct qcom_icc_node mas_mdp_p1 = {
628 	.name = "mas_mdp_p1",
629 	.id = SDM660_MASTER_MDP_P1,
630 	.buswidth = 16,
631 	.mas_rpm_id = 61,
632 	.slv_rpm_id = -1,
633 	.qos.ap_owned = true,
634 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
635 	.qos.areq_prio = 0,
636 	.qos.prio_level = 0,
637 	.qos.qos_port = 1,
638 	.num_links = ARRAY_SIZE(mas_mdp_p1_links),
639 	.links = mas_mdp_p1_links,
640 };
641 
642 static const u16 mas_venus_links[] = {
643 	SDM660_SLAVE_MNOC_BIMC
644 };
645 
646 static struct qcom_icc_node mas_venus = {
647 	.name = "mas_venus",
648 	.id = SDM660_MASTER_VENUS,
649 	.buswidth = 16,
650 	.mas_rpm_id = 9,
651 	.slv_rpm_id = -1,
652 	.qos.ap_owned = true,
653 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
654 	.qos.areq_prio = 0,
655 	.qos.prio_level = 0,
656 	.qos.qos_port = 1,
657 	.num_links = ARRAY_SIZE(mas_venus_links),
658 	.links = mas_venus_links,
659 };
660 
661 static const u16 mas_vfe_links[] = {
662 	SDM660_SLAVE_MNOC_BIMC
663 };
664 
665 static struct qcom_icc_node mas_vfe = {
666 	.name = "mas_vfe",
667 	.id = SDM660_MASTER_VFE,
668 	.buswidth = 16,
669 	.mas_rpm_id = 11,
670 	.slv_rpm_id = -1,
671 	.qos.ap_owned = true,
672 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
673 	.qos.areq_prio = 0,
674 	.qos.prio_level = 0,
675 	.qos.qos_port = 5,
676 	.num_links = ARRAY_SIZE(mas_vfe_links),
677 	.links = mas_vfe_links,
678 };
679 
680 static const u16 mas_qdss_etr_links[] = {
681 	SDM660_SLAVE_PIMEM,
682 	SDM660_SLAVE_IMEM,
683 	SDM660_SLAVE_SNOC_CNOC,
684 	SDM660_SLAVE_SNOC_BIMC
685 };
686 
687 static struct qcom_icc_node mas_qdss_etr = {
688 	.name = "mas_qdss_etr",
689 	.id = SDM660_MASTER_QDSS_ETR,
690 	.buswidth = 8,
691 	.mas_rpm_id = 31,
692 	.slv_rpm_id = -1,
693 	.qos.ap_owned = true,
694 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
695 	.qos.areq_prio = 1,
696 	.qos.prio_level = 1,
697 	.qos.qos_port = 1,
698 	.num_links = ARRAY_SIZE(mas_qdss_etr_links),
699 	.links = mas_qdss_etr_links,
700 };
701 
702 static const u16 mas_qdss_bam_links[] = {
703 	SDM660_SLAVE_PIMEM,
704 	SDM660_SLAVE_IMEM,
705 	SDM660_SLAVE_SNOC_CNOC,
706 	SDM660_SLAVE_SNOC_BIMC
707 };
708 
709 static struct qcom_icc_node mas_qdss_bam = {
710 	.name = "mas_qdss_bam",
711 	.id = SDM660_MASTER_QDSS_BAM,
712 	.buswidth = 4,
713 	.mas_rpm_id = 19,
714 	.slv_rpm_id = -1,
715 	.qos.ap_owned = true,
716 	.qos.qos_mode = NOC_QOS_MODE_FIXED,
717 	.qos.areq_prio = 1,
718 	.qos.prio_level = 1,
719 	.qos.qos_port = 0,
720 	.num_links = ARRAY_SIZE(mas_qdss_bam_links),
721 	.links = mas_qdss_bam_links,
722 };
723 
724 static const u16 mas_snoc_cfg_links[] = {
725 	SDM660_SLAVE_SRVC_SNOC
726 };
727 
728 static struct qcom_icc_node mas_snoc_cfg = {
729 	.name = "mas_snoc_cfg",
730 	.id = SDM660_MASTER_SNOC_CFG,
731 	.buswidth = 4,
732 	.mas_rpm_id = 20,
733 	.slv_rpm_id = -1,
734 	.num_links = ARRAY_SIZE(mas_snoc_cfg_links),
735 	.links = mas_snoc_cfg_links,
736 };
737 
738 static const u16 mas_bimc_snoc_links[] = {
739 	SDM660_SLAVE_PIMEM,
740 	SDM660_SLAVE_IPA,
741 	SDM660_SLAVE_QDSS_STM,
742 	SDM660_SLAVE_LPASS,
743 	SDM660_SLAVE_HMSS,
744 	SDM660_SLAVE_CDSP,
745 	SDM660_SLAVE_SNOC_CNOC,
746 	SDM660_SLAVE_WLAN,
747 	SDM660_SLAVE_IMEM
748 };
749 
750 static struct qcom_icc_node mas_bimc_snoc = {
751 	.name = "mas_bimc_snoc",
752 	.id = SDM660_MASTER_BIMC_SNOC,
753 	.buswidth = 8,
754 	.mas_rpm_id = 21,
755 	.slv_rpm_id = -1,
756 	.num_links = ARRAY_SIZE(mas_bimc_snoc_links),
757 	.links = mas_bimc_snoc_links,
758 };
759 
760 static const u16 mas_gnoc_snoc_links[] = {
761 	SDM660_SLAVE_PIMEM,
762 	SDM660_SLAVE_IPA,
763 	SDM660_SLAVE_QDSS_STM,
764 	SDM660_SLAVE_LPASS,
765 	SDM660_SLAVE_HMSS,
766 	SDM660_SLAVE_CDSP,
767 	SDM660_SLAVE_SNOC_CNOC,
768 	SDM660_SLAVE_WLAN,
769 	SDM660_SLAVE_IMEM
770 };
771 
772 static struct qcom_icc_node mas_gnoc_snoc = {
773 	.name = "mas_gnoc_snoc",
774 	.id = SDM660_MASTER_GNOC_SNOC,
775 	.buswidth = 8,
776 	.mas_rpm_id = 150,
777 	.slv_rpm_id = -1,
778 	.num_links = ARRAY_SIZE(mas_gnoc_snoc_links),
779 	.links = mas_gnoc_snoc_links,
780 };
781 
782 static const u16 mas_a2noc_snoc_links[] = {
783 	SDM660_SLAVE_PIMEM,
784 	SDM660_SLAVE_IPA,
785 	SDM660_SLAVE_QDSS_STM,
786 	SDM660_SLAVE_LPASS,
787 	SDM660_SLAVE_HMSS,
788 	SDM660_SLAVE_SNOC_BIMC,
789 	SDM660_SLAVE_CDSP,
790 	SDM660_SLAVE_SNOC_CNOC,
791 	SDM660_SLAVE_WLAN,
792 	SDM660_SLAVE_IMEM
793 };
794 
795 static struct qcom_icc_node mas_a2noc_snoc = {
796 	.name = "mas_a2noc_snoc",
797 	.id = SDM660_MASTER_A2NOC_SNOC,
798 	.buswidth = 16,
799 	.mas_rpm_id = 112,
800 	.slv_rpm_id = -1,
801 	.num_links = ARRAY_SIZE(mas_a2noc_snoc_links),
802 	.links = mas_a2noc_snoc_links,
803 };
804 
805 static const u16 slv_a2noc_snoc_links[] = {
806 	SDM660_MASTER_A2NOC_SNOC
807 };
808 
809 static struct qcom_icc_node slv_a2noc_snoc = {
810 	.name = "slv_a2noc_snoc",
811 	.id = SDM660_SLAVE_A2NOC_SNOC,
812 	.buswidth = 16,
813 	.mas_rpm_id = -1,
814 	.slv_rpm_id = 143,
815 	.num_links = ARRAY_SIZE(slv_a2noc_snoc_links),
816 	.links = slv_a2noc_snoc_links,
817 };
818 
819 static struct qcom_icc_node slv_ebi = {
820 	.name = "slv_ebi",
821 	.id = SDM660_SLAVE_EBI,
822 	.buswidth = 4,
823 	.mas_rpm_id = -1,
824 	.slv_rpm_id = 0,
825 };
826 
827 static struct qcom_icc_node slv_hmss_l3 = {
828 	.name = "slv_hmss_l3",
829 	.id = SDM660_SLAVE_HMSS_L3,
830 	.buswidth = 4,
831 	.mas_rpm_id = -1,
832 	.slv_rpm_id = 160,
833 };
834 
835 static const u16 slv_bimc_snoc_links[] = {
836 	SDM660_MASTER_BIMC_SNOC
837 };
838 
839 static struct qcom_icc_node slv_bimc_snoc = {
840 	.name = "slv_bimc_snoc",
841 	.id = SDM660_SLAVE_BIMC_SNOC,
842 	.buswidth = 4,
843 	.mas_rpm_id = -1,
844 	.slv_rpm_id = 2,
845 	.num_links = ARRAY_SIZE(slv_bimc_snoc_links),
846 	.links = slv_bimc_snoc_links,
847 };
848 
849 static const u16 slv_cnoc_a2noc_links[] = {
850 	SDM660_MASTER_CNOC_A2NOC
851 };
852 
853 static struct qcom_icc_node slv_cnoc_a2noc = {
854 	.name = "slv_cnoc_a2noc",
855 	.id = SDM660_SLAVE_CNOC_A2NOC,
856 	.buswidth = 8,
857 	.mas_rpm_id = -1,
858 	.slv_rpm_id = 208,
859 	.qos.ap_owned = true,
860 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
861 	.num_links = ARRAY_SIZE(slv_cnoc_a2noc_links),
862 	.links = slv_cnoc_a2noc_links,
863 };
864 
865 static struct qcom_icc_node slv_mpm = {
866 	.name = "slv_mpm",
867 	.id = SDM660_SLAVE_MPM,
868 	.buswidth = 4,
869 	.mas_rpm_id = -1,
870 	.slv_rpm_id = 62,
871 	.qos.ap_owned = true,
872 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
873 };
874 
875 static struct qcom_icc_node slv_pmic_arb = {
876 	.name = "slv_pmic_arb",
877 	.id = SDM660_SLAVE_PMIC_ARB,
878 	.buswidth = 4,
879 	.mas_rpm_id = -1,
880 	.slv_rpm_id = 59,
881 	.qos.ap_owned = true,
882 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
883 };
884 
885 static struct qcom_icc_node slv_tlmm_north = {
886 	.name = "slv_tlmm_north",
887 	.id = SDM660_SLAVE_TLMM_NORTH,
888 	.buswidth = 8,
889 	.mas_rpm_id = -1,
890 	.slv_rpm_id = 214,
891 	.qos.ap_owned = true,
892 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
893 };
894 
895 static struct qcom_icc_node slv_tcsr = {
896 	.name = "slv_tcsr",
897 	.id = SDM660_SLAVE_TCSR,
898 	.buswidth = 4,
899 	.mas_rpm_id = -1,
900 	.slv_rpm_id = 50,
901 	.qos.ap_owned = true,
902 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
903 };
904 
905 static struct qcom_icc_node slv_pimem_cfg = {
906 	.name = "slv_pimem_cfg",
907 	.id = SDM660_SLAVE_PIMEM_CFG,
908 	.buswidth = 4,
909 	.mas_rpm_id = -1,
910 	.slv_rpm_id = 167,
911 	.qos.ap_owned = true,
912 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
913 };
914 
915 static struct qcom_icc_node slv_imem_cfg = {
916 	.name = "slv_imem_cfg",
917 	.id = SDM660_SLAVE_IMEM_CFG,
918 	.buswidth = 4,
919 	.mas_rpm_id = -1,
920 	.slv_rpm_id = 54,
921 	.qos.ap_owned = true,
922 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
923 };
924 
925 static struct qcom_icc_node slv_message_ram = {
926 	.name = "slv_message_ram",
927 	.id = SDM660_SLAVE_MESSAGE_RAM,
928 	.buswidth = 4,
929 	.mas_rpm_id = -1,
930 	.slv_rpm_id = 55,
931 	.qos.ap_owned = true,
932 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
933 };
934 
935 static struct qcom_icc_node slv_glm = {
936 	.name = "slv_glm",
937 	.id = SDM660_SLAVE_GLM,
938 	.buswidth = 4,
939 	.mas_rpm_id = -1,
940 	.slv_rpm_id = 209,
941 	.qos.ap_owned = true,
942 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
943 };
944 
945 static struct qcom_icc_node slv_bimc_cfg = {
946 	.name = "slv_bimc_cfg",
947 	.id = SDM660_SLAVE_BIMC_CFG,
948 	.buswidth = 4,
949 	.mas_rpm_id = -1,
950 	.slv_rpm_id = 56,
951 	.qos.ap_owned = true,
952 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
953 };
954 
955 static struct qcom_icc_node slv_prng = {
956 	.name = "slv_prng",
957 	.id = SDM660_SLAVE_PRNG,
958 	.buswidth = 4,
959 	.mas_rpm_id = -1,
960 	.slv_rpm_id = 44,
961 	.qos.ap_owned = true,
962 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
963 };
964 
965 static struct qcom_icc_node slv_spdm = {
966 	.name = "slv_spdm",
967 	.id = SDM660_SLAVE_SPDM,
968 	.buswidth = 4,
969 	.mas_rpm_id = -1,
970 	.slv_rpm_id = 60,
971 	.qos.ap_owned = true,
972 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
973 };
974 
975 static struct qcom_icc_node slv_qdss_cfg = {
976 	.name = "slv_qdss_cfg",
977 	.id = SDM660_SLAVE_QDSS_CFG,
978 	.buswidth = 4,
979 	.mas_rpm_id = -1,
980 	.slv_rpm_id = 63,
981 	.qos.ap_owned = true,
982 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
983 };
984 
985 static const u16 slv_cnoc_mnoc_cfg_links[] = {
986 	SDM660_MASTER_CNOC_MNOC_CFG
987 };
988 
989 static struct qcom_icc_node slv_cnoc_mnoc_cfg = {
990 	.name = "slv_cnoc_mnoc_cfg",
991 	.id = SDM660_SLAVE_CNOC_MNOC_CFG,
992 	.buswidth = 4,
993 	.mas_rpm_id = -1,
994 	.slv_rpm_id = 66,
995 	.qos.ap_owned = true,
996 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
997 	.num_links = ARRAY_SIZE(slv_cnoc_mnoc_cfg_links),
998 	.links = slv_cnoc_mnoc_cfg_links,
999 };
1000 
1001 static struct qcom_icc_node slv_snoc_cfg = {
1002 	.name = "slv_snoc_cfg",
1003 	.id = SDM660_SLAVE_SNOC_CFG,
1004 	.buswidth = 4,
1005 	.mas_rpm_id = -1,
1006 	.slv_rpm_id = 70,
1007 	.qos.ap_owned = true,
1008 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1009 };
1010 
1011 static struct qcom_icc_node slv_qm_cfg = {
1012 	.name = "slv_qm_cfg",
1013 	.id = SDM660_SLAVE_QM_CFG,
1014 	.buswidth = 4,
1015 	.mas_rpm_id = -1,
1016 	.slv_rpm_id = 212,
1017 	.qos.ap_owned = true,
1018 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1019 };
1020 
1021 static struct qcom_icc_node slv_clk_ctl = {
1022 	.name = "slv_clk_ctl",
1023 	.id = SDM660_SLAVE_CLK_CTL,
1024 	.buswidth = 4,
1025 	.mas_rpm_id = -1,
1026 	.slv_rpm_id = 47,
1027 	.qos.ap_owned = true,
1028 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1029 };
1030 
1031 static struct qcom_icc_node slv_mss_cfg = {
1032 	.name = "slv_mss_cfg",
1033 	.id = SDM660_SLAVE_MSS_CFG,
1034 	.buswidth = 4,
1035 	.mas_rpm_id = -1,
1036 	.slv_rpm_id = 48,
1037 	.qos.ap_owned = true,
1038 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1039 };
1040 
1041 static struct qcom_icc_node slv_tlmm_south = {
1042 	.name = "slv_tlmm_south",
1043 	.id = SDM660_SLAVE_TLMM_SOUTH,
1044 	.buswidth = 4,
1045 	.mas_rpm_id = -1,
1046 	.slv_rpm_id = 217,
1047 	.qos.ap_owned = true,
1048 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1049 };
1050 
1051 static struct qcom_icc_node slv_ufs_cfg = {
1052 	.name = "slv_ufs_cfg",
1053 	.id = SDM660_SLAVE_UFS_CFG,
1054 	.buswidth = 4,
1055 	.mas_rpm_id = -1,
1056 	.slv_rpm_id = 92,
1057 	.qos.ap_owned = true,
1058 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1059 };
1060 
1061 static struct qcom_icc_node slv_a2noc_cfg = {
1062 	.name = "slv_a2noc_cfg",
1063 	.id = SDM660_SLAVE_A2NOC_CFG,
1064 	.buswidth = 4,
1065 	.mas_rpm_id = -1,
1066 	.slv_rpm_id = 150,
1067 	.qos.ap_owned = true,
1068 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1069 };
1070 
1071 static struct qcom_icc_node slv_a2noc_smmu_cfg = {
1072 	.name = "slv_a2noc_smmu_cfg",
1073 	.id = SDM660_SLAVE_A2NOC_SMMU_CFG,
1074 	.buswidth = 8,
1075 	.mas_rpm_id = -1,
1076 	.slv_rpm_id = 152,
1077 	.qos.ap_owned = true,
1078 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1079 };
1080 
1081 static struct qcom_icc_node slv_gpuss_cfg = {
1082 	.name = "slv_gpuss_cfg",
1083 	.id = SDM660_SLAVE_GPUSS_CFG,
1084 	.buswidth = 8,
1085 	.mas_rpm_id = -1,
1086 	.slv_rpm_id = 11,
1087 	.qos.ap_owned = true,
1088 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1089 };
1090 
1091 static struct qcom_icc_node slv_ahb2phy = {
1092 	.name = "slv_ahb2phy",
1093 	.id = SDM660_SLAVE_AHB2PHY,
1094 	.buswidth = 4,
1095 	.mas_rpm_id = -1,
1096 	.slv_rpm_id = 163,
1097 	.qos.ap_owned = true,
1098 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1099 };
1100 
1101 static struct qcom_icc_node slv_blsp_1 = {
1102 	.name = "slv_blsp_1",
1103 	.id = SDM660_SLAVE_BLSP_1,
1104 	.buswidth = 4,
1105 	.mas_rpm_id = -1,
1106 	.slv_rpm_id = 39,
1107 	.qos.ap_owned = true,
1108 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1109 };
1110 
1111 static struct qcom_icc_node slv_sdcc_1 = {
1112 	.name = "slv_sdcc_1",
1113 	.id = SDM660_SLAVE_SDCC_1,
1114 	.buswidth = 4,
1115 	.mas_rpm_id = -1,
1116 	.slv_rpm_id = 31,
1117 	.qos.ap_owned = true,
1118 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1119 };
1120 
1121 static struct qcom_icc_node slv_sdcc_2 = {
1122 	.name = "slv_sdcc_2",
1123 	.id = SDM660_SLAVE_SDCC_2,
1124 	.buswidth = 4,
1125 	.mas_rpm_id = -1,
1126 	.slv_rpm_id = 33,
1127 	.qos.ap_owned = true,
1128 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1129 };
1130 
1131 static struct qcom_icc_node slv_tlmm_center = {
1132 	.name = "slv_tlmm_center",
1133 	.id = SDM660_SLAVE_TLMM_CENTER,
1134 	.buswidth = 4,
1135 	.mas_rpm_id = -1,
1136 	.slv_rpm_id = 218,
1137 	.qos.ap_owned = true,
1138 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1139 };
1140 
1141 static struct qcom_icc_node slv_blsp_2 = {
1142 	.name = "slv_blsp_2",
1143 	.id = SDM660_SLAVE_BLSP_2,
1144 	.buswidth = 4,
1145 	.mas_rpm_id = -1,
1146 	.slv_rpm_id = 37,
1147 	.qos.ap_owned = true,
1148 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1149 };
1150 
1151 static struct qcom_icc_node slv_pdm = {
1152 	.name = "slv_pdm",
1153 	.id = SDM660_SLAVE_PDM,
1154 	.buswidth = 4,
1155 	.mas_rpm_id = -1,
1156 	.slv_rpm_id = 41,
1157 	.qos.ap_owned = true,
1158 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1159 };
1160 
1161 static const u16 slv_cnoc_mnoc_mmss_cfg_links[] = {
1162 	SDM660_MASTER_CNOC_MNOC_MMSS_CFG
1163 };
1164 
1165 static struct qcom_icc_node slv_cnoc_mnoc_mmss_cfg = {
1166 	.name = "slv_cnoc_mnoc_mmss_cfg",
1167 	.id = SDM660_SLAVE_CNOC_MNOC_MMSS_CFG,
1168 	.buswidth = 8,
1169 	.mas_rpm_id = -1,
1170 	.slv_rpm_id = 58,
1171 	.qos.ap_owned = true,
1172 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1173 	.num_links = ARRAY_SIZE(slv_cnoc_mnoc_mmss_cfg_links),
1174 	.links = slv_cnoc_mnoc_mmss_cfg_links,
1175 };
1176 
1177 static struct qcom_icc_node slv_usb_hs = {
1178 	.name = "slv_usb_hs",
1179 	.id = SDM660_SLAVE_USB_HS,
1180 	.buswidth = 4,
1181 	.mas_rpm_id = -1,
1182 	.slv_rpm_id = 40,
1183 	.qos.ap_owned = true,
1184 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1185 };
1186 
1187 static struct qcom_icc_node slv_usb3_0 = {
1188 	.name = "slv_usb3_0",
1189 	.id = SDM660_SLAVE_USB3_0,
1190 	.buswidth = 4,
1191 	.mas_rpm_id = -1,
1192 	.slv_rpm_id = 22,
1193 	.qos.ap_owned = true,
1194 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1195 };
1196 
1197 static struct qcom_icc_node slv_srvc_cnoc = {
1198 	.name = "slv_srvc_cnoc",
1199 	.id = SDM660_SLAVE_SRVC_CNOC,
1200 	.buswidth = 4,
1201 	.mas_rpm_id = -1,
1202 	.slv_rpm_id = 76,
1203 	.qos.ap_owned = true,
1204 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1205 };
1206 
1207 static const u16 slv_gnoc_bimc_links[] = {
1208 	SDM660_MASTER_GNOC_BIMC
1209 };
1210 
1211 static struct qcom_icc_node slv_gnoc_bimc = {
1212 	.name = "slv_gnoc_bimc",
1213 	.id = SDM660_SLAVE_GNOC_BIMC,
1214 	.buswidth = 16,
1215 	.mas_rpm_id = -1,
1216 	.slv_rpm_id = 210,
1217 	.qos.ap_owned = true,
1218 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1219 	.num_links = ARRAY_SIZE(slv_gnoc_bimc_links),
1220 	.links = slv_gnoc_bimc_links,
1221 };
1222 
1223 static const u16 slv_gnoc_snoc_links[] = {
1224 	SDM660_MASTER_GNOC_SNOC
1225 };
1226 
1227 static struct qcom_icc_node slv_gnoc_snoc = {
1228 	.name = "slv_gnoc_snoc",
1229 	.id = SDM660_SLAVE_GNOC_SNOC,
1230 	.buswidth = 8,
1231 	.mas_rpm_id = -1,
1232 	.slv_rpm_id = 211,
1233 	.qos.ap_owned = true,
1234 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1235 	.num_links = ARRAY_SIZE(slv_gnoc_snoc_links),
1236 	.links = slv_gnoc_snoc_links,
1237 };
1238 
1239 static struct qcom_icc_node slv_camera_cfg = {
1240 	.name = "slv_camera_cfg",
1241 	.id = SDM660_SLAVE_CAMERA_CFG,
1242 	.buswidth = 4,
1243 	.mas_rpm_id = -1,
1244 	.slv_rpm_id = 3,
1245 	.qos.ap_owned = true,
1246 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1247 };
1248 
1249 static struct qcom_icc_node slv_camera_throttle_cfg = {
1250 	.name = "slv_camera_throttle_cfg",
1251 	.id = SDM660_SLAVE_CAMERA_THROTTLE_CFG,
1252 	.buswidth = 4,
1253 	.mas_rpm_id = -1,
1254 	.slv_rpm_id = 154,
1255 	.qos.ap_owned = true,
1256 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1257 };
1258 
1259 static struct qcom_icc_node slv_misc_cfg = {
1260 	.name = "slv_misc_cfg",
1261 	.id = SDM660_SLAVE_MISC_CFG,
1262 	.buswidth = 4,
1263 	.mas_rpm_id = -1,
1264 	.slv_rpm_id = 8,
1265 	.qos.ap_owned = true,
1266 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1267 };
1268 
1269 static struct qcom_icc_node slv_venus_throttle_cfg = {
1270 	.name = "slv_venus_throttle_cfg",
1271 	.id = SDM660_SLAVE_VENUS_THROTTLE_CFG,
1272 	.buswidth = 4,
1273 	.mas_rpm_id = -1,
1274 	.slv_rpm_id = 178,
1275 	.qos.ap_owned = true,
1276 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1277 };
1278 
1279 static struct qcom_icc_node slv_venus_cfg = {
1280 	.name = "slv_venus_cfg",
1281 	.id = SDM660_SLAVE_VENUS_CFG,
1282 	.buswidth = 4,
1283 	.mas_rpm_id = -1,
1284 	.slv_rpm_id = 10,
1285 	.qos.ap_owned = true,
1286 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1287 };
1288 
1289 static struct qcom_icc_node slv_mmss_clk_xpu_cfg = {
1290 	.name = "slv_mmss_clk_xpu_cfg",
1291 	.id = SDM660_SLAVE_MMSS_CLK_XPU_CFG,
1292 	.buswidth = 4,
1293 	.mas_rpm_id = -1,
1294 	.slv_rpm_id = 13,
1295 	.qos.ap_owned = true,
1296 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1297 };
1298 
1299 static struct qcom_icc_node slv_mmss_clk_cfg = {
1300 	.name = "slv_mmss_clk_cfg",
1301 	.id = SDM660_SLAVE_MMSS_CLK_CFG,
1302 	.buswidth = 4,
1303 	.mas_rpm_id = -1,
1304 	.slv_rpm_id = 12,
1305 	.qos.ap_owned = true,
1306 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1307 };
1308 
1309 static struct qcom_icc_node slv_mnoc_mpu_cfg = {
1310 	.name = "slv_mnoc_mpu_cfg",
1311 	.id = SDM660_SLAVE_MNOC_MPU_CFG,
1312 	.buswidth = 4,
1313 	.mas_rpm_id = -1,
1314 	.slv_rpm_id = 14,
1315 	.qos.ap_owned = true,
1316 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1317 };
1318 
1319 static struct qcom_icc_node slv_display_cfg = {
1320 	.name = "slv_display_cfg",
1321 	.id = SDM660_SLAVE_DISPLAY_CFG,
1322 	.buswidth = 4,
1323 	.mas_rpm_id = -1,
1324 	.slv_rpm_id = 4,
1325 	.qos.ap_owned = true,
1326 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1327 };
1328 
1329 static struct qcom_icc_node slv_csi_phy_cfg = {
1330 	.name = "slv_csi_phy_cfg",
1331 	.id = SDM660_SLAVE_CSI_PHY_CFG,
1332 	.buswidth = 4,
1333 	.mas_rpm_id = -1,
1334 	.slv_rpm_id = 224,
1335 	.qos.ap_owned = true,
1336 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1337 };
1338 
1339 static struct qcom_icc_node slv_display_throttle_cfg = {
1340 	.name = "slv_display_throttle_cfg",
1341 	.id = SDM660_SLAVE_DISPLAY_THROTTLE_CFG,
1342 	.buswidth = 4,
1343 	.mas_rpm_id = -1,
1344 	.slv_rpm_id = 156,
1345 	.qos.ap_owned = true,
1346 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1347 };
1348 
1349 static struct qcom_icc_node slv_smmu_cfg = {
1350 	.name = "slv_smmu_cfg",
1351 	.id = SDM660_SLAVE_SMMU_CFG,
1352 	.buswidth = 8,
1353 	.mas_rpm_id = -1,
1354 	.slv_rpm_id = 205,
1355 	.qos.ap_owned = true,
1356 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1357 };
1358 
1359 static const u16 slv_mnoc_bimc_links[] = {
1360 	SDM660_MASTER_MNOC_BIMC
1361 };
1362 
1363 static struct qcom_icc_node slv_mnoc_bimc = {
1364 	.name = "slv_mnoc_bimc",
1365 	.id = SDM660_SLAVE_MNOC_BIMC,
1366 	.buswidth = 16,
1367 	.mas_rpm_id = -1,
1368 	.slv_rpm_id = 16,
1369 	.qos.ap_owned = true,
1370 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1371 	.num_links = ARRAY_SIZE(slv_mnoc_bimc_links),
1372 	.links = slv_mnoc_bimc_links,
1373 };
1374 
1375 static struct qcom_icc_node slv_srvc_mnoc = {
1376 	.name = "slv_srvc_mnoc",
1377 	.id = SDM660_SLAVE_SRVC_MNOC,
1378 	.buswidth = 8,
1379 	.mas_rpm_id = -1,
1380 	.slv_rpm_id = 17,
1381 	.qos.ap_owned = true,
1382 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1383 };
1384 
1385 static struct qcom_icc_node slv_hmss = {
1386 	.name = "slv_hmss",
1387 	.id = SDM660_SLAVE_HMSS,
1388 	.buswidth = 8,
1389 	.mas_rpm_id = -1,
1390 	.slv_rpm_id = 20,
1391 	.qos.ap_owned = true,
1392 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1393 };
1394 
1395 static struct qcom_icc_node slv_lpass = {
1396 	.name = "slv_lpass",
1397 	.id = SDM660_SLAVE_LPASS,
1398 	.buswidth = 4,
1399 	.mas_rpm_id = -1,
1400 	.slv_rpm_id = 21,
1401 	.qos.ap_owned = true,
1402 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1403 };
1404 
1405 static struct qcom_icc_node slv_wlan = {
1406 	.name = "slv_wlan",
1407 	.id = SDM660_SLAVE_WLAN,
1408 	.buswidth = 4,
1409 	.mas_rpm_id = -1,
1410 	.slv_rpm_id = 206,
1411 };
1412 
1413 static struct qcom_icc_node slv_cdsp = {
1414 	.name = "slv_cdsp",
1415 	.id = SDM660_SLAVE_CDSP,
1416 	.buswidth = 4,
1417 	.mas_rpm_id = -1,
1418 	.slv_rpm_id = 221,
1419 	.qos.ap_owned = true,
1420 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1421 };
1422 
1423 static struct qcom_icc_node slv_ipa = {
1424 	.name = "slv_ipa",
1425 	.id = SDM660_SLAVE_IPA,
1426 	.buswidth = 4,
1427 	.mas_rpm_id = -1,
1428 	.slv_rpm_id = 183,
1429 	.qos.ap_owned = true,
1430 	.qos.qos_mode = NOC_QOS_MODE_INVALID,
1431 };
1432 
1433 static const u16 slv_snoc_bimc_links[] = {
1434 	SDM660_MASTER_SNOC_BIMC
1435 };
1436 
1437 static struct qcom_icc_node slv_snoc_bimc = {
1438 	.name = "slv_snoc_bimc",
1439 	.id = SDM660_SLAVE_SNOC_BIMC,
1440 	.buswidth = 16,
1441 	.mas_rpm_id = -1,
1442 	.slv_rpm_id = 24,
1443 	.num_links = ARRAY_SIZE(slv_snoc_bimc_links),
1444 	.links = slv_snoc_bimc_links,
1445 };
1446 
1447 static const u16 slv_snoc_cnoc_links[] = {
1448 	SDM660_MASTER_SNOC_CNOC
1449 };
1450 
1451 static struct qcom_icc_node slv_snoc_cnoc = {
1452 	.name = "slv_snoc_cnoc",
1453 	.id = SDM660_SLAVE_SNOC_CNOC,
1454 	.buswidth = 8,
1455 	.mas_rpm_id = -1,
1456 	.slv_rpm_id = 25,
1457 	.num_links = ARRAY_SIZE(slv_snoc_cnoc_links),
1458 	.links = slv_snoc_cnoc_links,
1459 };
1460 
1461 static struct qcom_icc_node slv_imem = {
1462 	.name = "slv_imem",
1463 	.id = SDM660_SLAVE_IMEM,
1464 	.buswidth = 8,
1465 	.mas_rpm_id = -1,
1466 	.slv_rpm_id = 26,
1467 };
1468 
1469 static struct qcom_icc_node slv_pimem = {
1470 	.name = "slv_pimem",
1471 	.id = SDM660_SLAVE_PIMEM,
1472 	.buswidth = 8,
1473 	.mas_rpm_id = -1,
1474 	.slv_rpm_id = 166,
1475 };
1476 
1477 static struct qcom_icc_node slv_qdss_stm = {
1478 	.name = "slv_qdss_stm",
1479 	.id = SDM660_SLAVE_QDSS_STM,
1480 	.buswidth = 4,
1481 	.mas_rpm_id = -1,
1482 	.slv_rpm_id = 30,
1483 };
1484 
1485 static struct qcom_icc_node slv_srvc_snoc = {
1486 	.name = "slv_srvc_snoc",
1487 	.id = SDM660_SLAVE_SRVC_SNOC,
1488 	.buswidth = 16,
1489 	.mas_rpm_id = -1,
1490 	.slv_rpm_id = 29,
1491 };
1492 
1493 static struct qcom_icc_node *sdm660_a2noc_nodes[] = {
1494 	[MASTER_IPA] = &mas_ipa,
1495 	[MASTER_CNOC_A2NOC] = &mas_cnoc_a2noc,
1496 	[MASTER_SDCC_1] = &mas_sdcc_1,
1497 	[MASTER_SDCC_2] = &mas_sdcc_2,
1498 	[MASTER_BLSP_1] = &mas_blsp_1,
1499 	[MASTER_BLSP_2] = &mas_blsp_2,
1500 	[MASTER_UFS] = &mas_ufs,
1501 	[MASTER_USB_HS] = &mas_usb_hs,
1502 	[MASTER_USB3] = &mas_usb3,
1503 	[MASTER_CRYPTO_C0] = &mas_crypto,
1504 	[SLAVE_A2NOC_SNOC] = &slv_a2noc_snoc,
1505 };
1506 
1507 static const struct regmap_config sdm660_a2noc_regmap_config = {
1508 	.reg_bits	= 32,
1509 	.reg_stride	= 4,
1510 	.val_bits	= 32,
1511 	.max_register	= 0x20000,
1512 	.fast_io	= true,
1513 };
1514 
1515 static struct qcom_icc_desc sdm660_a2noc = {
1516 	.nodes = sdm660_a2noc_nodes,
1517 	.num_nodes = ARRAY_SIZE(sdm660_a2noc_nodes),
1518 	.clocks = bus_a2noc_clocks,
1519 	.num_clocks = ARRAY_SIZE(bus_a2noc_clocks),
1520 	.regmap_cfg = &sdm660_a2noc_regmap_config,
1521 };
1522 
1523 static struct qcom_icc_node *sdm660_bimc_nodes[] = {
1524 	[MASTER_GNOC_BIMC] = &mas_gnoc_bimc,
1525 	[MASTER_OXILI] = &mas_oxili,
1526 	[MASTER_MNOC_BIMC] = &mas_mnoc_bimc,
1527 	[MASTER_SNOC_BIMC] = &mas_snoc_bimc,
1528 	[MASTER_PIMEM] = &mas_pimem,
1529 	[SLAVE_EBI] = &slv_ebi,
1530 	[SLAVE_HMSS_L3] = &slv_hmss_l3,
1531 	[SLAVE_BIMC_SNOC] = &slv_bimc_snoc,
1532 };
1533 
1534 static const struct regmap_config sdm660_bimc_regmap_config = {
1535 	.reg_bits	= 32,
1536 	.reg_stride	= 4,
1537 	.val_bits	= 32,
1538 	.max_register	= 0x80000,
1539 	.fast_io	= true,
1540 };
1541 
1542 static struct qcom_icc_desc sdm660_bimc = {
1543 	.nodes = sdm660_bimc_nodes,
1544 	.num_nodes = ARRAY_SIZE(sdm660_bimc_nodes),
1545 	.is_bimc_node = true,
1546 	.regmap_cfg = &sdm660_bimc_regmap_config,
1547 };
1548 
1549 static struct qcom_icc_node *sdm660_cnoc_nodes[] = {
1550 	[MASTER_SNOC_CNOC] = &mas_snoc_cnoc,
1551 	[MASTER_QDSS_DAP] = &mas_qdss_dap,
1552 	[SLAVE_CNOC_A2NOC] = &slv_cnoc_a2noc,
1553 	[SLAVE_MPM] = &slv_mpm,
1554 	[SLAVE_PMIC_ARB] = &slv_pmic_arb,
1555 	[SLAVE_TLMM_NORTH] = &slv_tlmm_north,
1556 	[SLAVE_TCSR] = &slv_tcsr,
1557 	[SLAVE_PIMEM_CFG] = &slv_pimem_cfg,
1558 	[SLAVE_IMEM_CFG] = &slv_imem_cfg,
1559 	[SLAVE_MESSAGE_RAM] = &slv_message_ram,
1560 	[SLAVE_GLM] = &slv_glm,
1561 	[SLAVE_BIMC_CFG] = &slv_bimc_cfg,
1562 	[SLAVE_PRNG] = &slv_prng,
1563 	[SLAVE_SPDM] = &slv_spdm,
1564 	[SLAVE_QDSS_CFG] = &slv_qdss_cfg,
1565 	[SLAVE_CNOC_MNOC_CFG] = &slv_cnoc_mnoc_cfg,
1566 	[SLAVE_SNOC_CFG] = &slv_snoc_cfg,
1567 	[SLAVE_QM_CFG] = &slv_qm_cfg,
1568 	[SLAVE_CLK_CTL] = &slv_clk_ctl,
1569 	[SLAVE_MSS_CFG] = &slv_mss_cfg,
1570 	[SLAVE_TLMM_SOUTH] = &slv_tlmm_south,
1571 	[SLAVE_UFS_CFG] = &slv_ufs_cfg,
1572 	[SLAVE_A2NOC_CFG] = &slv_a2noc_cfg,
1573 	[SLAVE_A2NOC_SMMU_CFG] = &slv_a2noc_smmu_cfg,
1574 	[SLAVE_GPUSS_CFG] = &slv_gpuss_cfg,
1575 	[SLAVE_AHB2PHY] = &slv_ahb2phy,
1576 	[SLAVE_BLSP_1] = &slv_blsp_1,
1577 	[SLAVE_SDCC_1] = &slv_sdcc_1,
1578 	[SLAVE_SDCC_2] = &slv_sdcc_2,
1579 	[SLAVE_TLMM_CENTER] = &slv_tlmm_center,
1580 	[SLAVE_BLSP_2] = &slv_blsp_2,
1581 	[SLAVE_PDM] = &slv_pdm,
1582 	[SLAVE_CNOC_MNOC_MMSS_CFG] = &slv_cnoc_mnoc_mmss_cfg,
1583 	[SLAVE_USB_HS] = &slv_usb_hs,
1584 	[SLAVE_USB3_0] = &slv_usb3_0,
1585 	[SLAVE_SRVC_CNOC] = &slv_srvc_cnoc,
1586 };
1587 
1588 static const struct regmap_config sdm660_cnoc_regmap_config = {
1589 	.reg_bits	= 32,
1590 	.reg_stride	= 4,
1591 	.val_bits	= 32,
1592 	.max_register	= 0x10000,
1593 	.fast_io	= true,
1594 };
1595 
1596 static struct qcom_icc_desc sdm660_cnoc = {
1597 	.nodes = sdm660_cnoc_nodes,
1598 	.num_nodes = ARRAY_SIZE(sdm660_cnoc_nodes),
1599 	.regmap_cfg = &sdm660_cnoc_regmap_config,
1600 };
1601 
1602 static struct qcom_icc_node *sdm660_gnoc_nodes[] = {
1603 	[MASTER_APSS_PROC] = &mas_apss_proc,
1604 	[SLAVE_GNOC_BIMC] = &slv_gnoc_bimc,
1605 	[SLAVE_GNOC_SNOC] = &slv_gnoc_snoc,
1606 };
1607 
1608 static const struct regmap_config sdm660_gnoc_regmap_config = {
1609 	.reg_bits	= 32,
1610 	.reg_stride	= 4,
1611 	.val_bits	= 32,
1612 	.max_register	= 0xe000,
1613 	.fast_io	= true,
1614 };
1615 
1616 static struct qcom_icc_desc sdm660_gnoc = {
1617 	.nodes = sdm660_gnoc_nodes,
1618 	.num_nodes = ARRAY_SIZE(sdm660_gnoc_nodes),
1619 	.regmap_cfg = &sdm660_gnoc_regmap_config,
1620 };
1621 
1622 static struct qcom_icc_node *sdm660_mnoc_nodes[] = {
1623 	[MASTER_CPP] = &mas_cpp,
1624 	[MASTER_JPEG] = &mas_jpeg,
1625 	[MASTER_MDP_P0] = &mas_mdp_p0,
1626 	[MASTER_MDP_P1] = &mas_mdp_p1,
1627 	[MASTER_VENUS] = &mas_venus,
1628 	[MASTER_VFE] = &mas_vfe,
1629 	[MASTER_CNOC_MNOC_MMSS_CFG] = &mas_cnoc_mnoc_mmss_cfg,
1630 	[MASTER_CNOC_MNOC_CFG] = &mas_cnoc_mnoc_cfg,
1631 	[SLAVE_CAMERA_CFG] = &slv_camera_cfg,
1632 	[SLAVE_CAMERA_THROTTLE_CFG] = &slv_camera_throttle_cfg,
1633 	[SLAVE_MISC_CFG] = &slv_misc_cfg,
1634 	[SLAVE_VENUS_THROTTLE_CFG] = &slv_venus_throttle_cfg,
1635 	[SLAVE_VENUS_CFG] = &slv_venus_cfg,
1636 	[SLAVE_MMSS_CLK_XPU_CFG] = &slv_mmss_clk_xpu_cfg,
1637 	[SLAVE_MMSS_CLK_CFG] = &slv_mmss_clk_cfg,
1638 	[SLAVE_MNOC_MPU_CFG] = &slv_mnoc_mpu_cfg,
1639 	[SLAVE_DISPLAY_CFG] = &slv_display_cfg,
1640 	[SLAVE_CSI_PHY_CFG] = &slv_csi_phy_cfg,
1641 	[SLAVE_DISPLAY_THROTTLE_CFG] = &slv_display_throttle_cfg,
1642 	[SLAVE_SMMU_CFG] = &slv_smmu_cfg,
1643 	[SLAVE_SRVC_MNOC] = &slv_srvc_mnoc,
1644 	[SLAVE_MNOC_BIMC] = &slv_mnoc_bimc,
1645 };
1646 
1647 static const struct regmap_config sdm660_mnoc_regmap_config = {
1648 	.reg_bits	= 32,
1649 	.reg_stride	= 4,
1650 	.val_bits	= 32,
1651 	.max_register	= 0x10000,
1652 	.fast_io	= true,
1653 };
1654 
1655 static struct qcom_icc_desc sdm660_mnoc = {
1656 	.nodes = sdm660_mnoc_nodes,
1657 	.num_nodes = ARRAY_SIZE(sdm660_mnoc_nodes),
1658 	.clocks = bus_mm_clocks,
1659 	.num_clocks = ARRAY_SIZE(bus_mm_clocks),
1660 	.regmap_cfg = &sdm660_mnoc_regmap_config,
1661 };
1662 
1663 static struct qcom_icc_node *sdm660_snoc_nodes[] = {
1664 	[MASTER_QDSS_ETR] = &mas_qdss_etr,
1665 	[MASTER_QDSS_BAM] = &mas_qdss_bam,
1666 	[MASTER_SNOC_CFG] = &mas_snoc_cfg,
1667 	[MASTER_BIMC_SNOC] = &mas_bimc_snoc,
1668 	[MASTER_A2NOC_SNOC] = &mas_a2noc_snoc,
1669 	[MASTER_GNOC_SNOC] = &mas_gnoc_snoc,
1670 	[SLAVE_HMSS] = &slv_hmss,
1671 	[SLAVE_LPASS] = &slv_lpass,
1672 	[SLAVE_WLAN] = &slv_wlan,
1673 	[SLAVE_CDSP] = &slv_cdsp,
1674 	[SLAVE_IPA] = &slv_ipa,
1675 	[SLAVE_SNOC_BIMC] = &slv_snoc_bimc,
1676 	[SLAVE_SNOC_CNOC] = &slv_snoc_cnoc,
1677 	[SLAVE_IMEM] = &slv_imem,
1678 	[SLAVE_PIMEM] = &slv_pimem,
1679 	[SLAVE_QDSS_STM] = &slv_qdss_stm,
1680 	[SLAVE_SRVC_SNOC] = &slv_srvc_snoc,
1681 };
1682 
1683 static const struct regmap_config sdm660_snoc_regmap_config = {
1684 	.reg_bits	= 32,
1685 	.reg_stride	= 4,
1686 	.val_bits	= 32,
1687 	.max_register	= 0x20000,
1688 	.fast_io	= true,
1689 };
1690 
1691 static struct qcom_icc_desc sdm660_snoc = {
1692 	.nodes = sdm660_snoc_nodes,
1693 	.num_nodes = ARRAY_SIZE(sdm660_snoc_nodes),
1694 	.regmap_cfg = &sdm660_snoc_regmap_config,
1695 };
1696 
1697 static const struct of_device_id sdm660_noc_of_match[] = {
1698 	{ .compatible = "qcom,sdm660-a2noc", .data = &sdm660_a2noc },
1699 	{ .compatible = "qcom,sdm660-bimc", .data = &sdm660_bimc },
1700 	{ .compatible = "qcom,sdm660-cnoc", .data = &sdm660_cnoc },
1701 	{ .compatible = "qcom,sdm660-gnoc", .data = &sdm660_gnoc },
1702 	{ .compatible = "qcom,sdm660-mnoc", .data = &sdm660_mnoc },
1703 	{ .compatible = "qcom,sdm660-snoc", .data = &sdm660_snoc },
1704 	{ },
1705 };
1706 MODULE_DEVICE_TABLE(of, sdm660_noc_of_match);
1707 
1708 static struct platform_driver sdm660_noc_driver = {
1709 	.probe = qnoc_probe,
1710 	.remove = qnoc_remove,
1711 	.driver = {
1712 		.name = "qnoc-sdm660",
1713 		.of_match_table = sdm660_noc_of_match,
1714 	},
1715 };
1716 module_platform_driver(sdm660_noc_driver);
1717 MODULE_DESCRIPTION("Qualcomm sdm660 NoC driver");
1718 MODULE_LICENSE("GPL v2");
1719