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