]> Git Repo - J-linux.git/blob - drivers/interconnect/qcom/sc7280.c
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / drivers / interconnect / qcom / sc7280.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
5  *
6  */
7
8 #include <linux/device.h>
9 #include <linux/interconnect.h>
10 #include <linux/interconnect-provider.h>
11 #include <linux/mod_devicetable.h>
12 #include <linux/module.h>
13 #include <linux/platform_device.h>
14 #include <dt-bindings/interconnect/qcom,sc7280.h>
15
16 #include "bcm-voter.h"
17 #include "icc-rpmh.h"
18 #include "sc7280.h"
19
20 static struct qcom_icc_node qhm_qspi = {
21         .name = "qhm_qspi",
22         .id = SC7280_MASTER_QSPI_0,
23         .channels = 1,
24         .buswidth = 4,
25         .qosbox = &(const struct qcom_icc_qosbox) {
26                 .num_ports = 1,
27                 .port_offsets = { 0x7000 },
28                 .prio = 2,
29                 .urg_fwd = 0,
30         },
31         .num_links = 1,
32         .links = { SC7280_SLAVE_A1NOC_SNOC },
33 };
34
35 static struct qcom_icc_node qhm_qup0 = {
36         .name = "qhm_qup0",
37         .id = SC7280_MASTER_QUP_0,
38         .channels = 1,
39         .buswidth = 4,
40         .qosbox = &(const struct qcom_icc_qosbox) {
41                 .num_ports = 1,
42                 .port_offsets = { 0x11000 },
43                 .prio = 2,
44                 .urg_fwd = 0,
45         },
46         .num_links = 1,
47         .links = { SC7280_SLAVE_A1NOC_SNOC },
48 };
49
50 static struct qcom_icc_node qhm_qup1 = {
51         .name = "qhm_qup1",
52         .id = SC7280_MASTER_QUP_1,
53         .channels = 1,
54         .buswidth = 4,
55         .qosbox = &(const struct qcom_icc_qosbox) {
56                 .num_ports = 1,
57                 .port_offsets = { 0x8000 },
58                 .prio = 2,
59                 .urg_fwd = 0,
60         },
61         .num_links = 1,
62         .links = { SC7280_SLAVE_A1NOC_SNOC },
63 };
64
65 static struct qcom_icc_node qnm_a1noc_cfg = {
66         .name = "qnm_a1noc_cfg",
67         .id = SC7280_MASTER_A1NOC_CFG,
68         .channels = 1,
69         .buswidth = 4,
70         .num_links = 1,
71         .links = { SC7280_SLAVE_SERVICE_A1NOC },
72 };
73
74 static struct qcom_icc_node xm_sdc1 = {
75         .name = "xm_sdc1",
76         .id = SC7280_MASTER_SDCC_1,
77         .channels = 1,
78         .buswidth = 8,
79         .qosbox = &(const struct qcom_icc_qosbox) {
80                 .num_ports = 1,
81                 .port_offsets = { 0xc000 },
82                 .prio = 2,
83                 .urg_fwd = 0,
84         },
85         .num_links = 1,
86         .links = { SC7280_SLAVE_A1NOC_SNOC },
87 };
88
89 static struct qcom_icc_node xm_sdc2 = {
90         .name = "xm_sdc2",
91         .id = SC7280_MASTER_SDCC_2,
92         .channels = 1,
93         .buswidth = 8,
94         .qosbox = &(const struct qcom_icc_qosbox) {
95                 .num_ports = 1,
96                 .port_offsets = { 0xe000 },
97                 .prio = 2,
98                 .urg_fwd = 0,
99         },
100         .num_links = 1,
101         .links = { SC7280_SLAVE_A1NOC_SNOC },
102 };
103
104 static struct qcom_icc_node xm_sdc4 = {
105         .name = "xm_sdc4",
106         .id = SC7280_MASTER_SDCC_4,
107         .channels = 1,
108         .buswidth = 8,
109         .qosbox = &(const struct qcom_icc_qosbox) {
110                 .num_ports = 1,
111                 .port_offsets = { 0x9000 },
112                 .prio = 2,
113                 .urg_fwd = 0,
114         },
115         .num_links = 1,
116         .links = { SC7280_SLAVE_A1NOC_SNOC },
117 };
118
119 static struct qcom_icc_node xm_ufs_mem = {
120         .name = "xm_ufs_mem",
121         .id = SC7280_MASTER_UFS_MEM,
122         .channels = 1,
123         .buswidth = 8,
124         .qosbox = &(const struct qcom_icc_qosbox) {
125                 .num_ports = 1,
126                 .port_offsets = { 0xa000 },
127                 .prio = 2,
128                 .urg_fwd = 0,
129         },
130         .num_links = 1,
131         .links = { SC7280_SLAVE_A1NOC_SNOC },
132 };
133
134 static struct qcom_icc_node xm_usb2 = {
135         .name = "xm_usb2",
136         .id = SC7280_MASTER_USB2,
137         .channels = 1,
138         .buswidth = 8,
139         .num_links = 1,
140         .links = { SC7280_SLAVE_A1NOC_SNOC },
141 };
142
143 static struct qcom_icc_node xm_usb3_0 = {
144         .name = "xm_usb3_0",
145         .id = SC7280_MASTER_USB3_0,
146         .channels = 1,
147         .buswidth = 8,
148         .qosbox = &(const struct qcom_icc_qosbox) {
149                 .num_ports = 1,
150                 .port_offsets = { 0xb000 },
151                 .prio = 2,
152                 .urg_fwd = 0,
153         },
154         .num_links = 1,
155         .links = { SC7280_SLAVE_A1NOC_SNOC },
156 };
157
158 static struct qcom_icc_node qhm_qdss_bam = {
159         .name = "qhm_qdss_bam",
160         .id = SC7280_MASTER_QDSS_BAM,
161         .channels = 1,
162         .buswidth = 4,
163         .qosbox = &(const struct qcom_icc_qosbox) {
164                 .num_ports = 1,
165                 .port_offsets = { 0x18000 },
166                 .prio = 2,
167                 .urg_fwd = 0,
168         },
169         .num_links = 1,
170         .links = { SC7280_SLAVE_A2NOC_SNOC },
171 };
172
173 static struct qcom_icc_node qnm_a2noc_cfg = {
174         .name = "qnm_a2noc_cfg",
175         .id = SC7280_MASTER_A2NOC_CFG,
176         .channels = 1,
177         .buswidth = 4,
178         .num_links = 1,
179         .links = { SC7280_SLAVE_SERVICE_A2NOC },
180 };
181
182 static struct qcom_icc_node qnm_cnoc_datapath = {
183         .name = "qnm_cnoc_datapath",
184         .id = SC7280_MASTER_CNOC_A2NOC,
185         .channels = 1,
186         .buswidth = 8,
187         .qosbox = &(const struct qcom_icc_qosbox) {
188                 .num_ports = 1,
189                 .port_offsets = { 0x1c000 },
190                 .prio = 2,
191                 .urg_fwd = 0,
192         },
193         .num_links = 1,
194         .links = { SC7280_SLAVE_A2NOC_SNOC },
195 };
196
197 static struct qcom_icc_node qxm_crypto = {
198         .name = "qxm_crypto",
199         .id = SC7280_MASTER_CRYPTO,
200         .channels = 1,
201         .buswidth = 8,
202         .qosbox = &(const struct qcom_icc_qosbox) {
203                 .num_ports = 1,
204                 .port_offsets = { 0x1d000 },
205                 .prio = 2,
206                 .urg_fwd = 0,
207         },
208         .num_links = 1,
209         .links = { SC7280_SLAVE_A2NOC_SNOC },
210 };
211
212 static struct qcom_icc_node qxm_ipa = {
213         .name = "qxm_ipa",
214         .id = SC7280_MASTER_IPA,
215         .channels = 1,
216         .buswidth = 8,
217         .qosbox = &(const struct qcom_icc_qosbox) {
218                 .num_ports = 1,
219                 .port_offsets = { 0x10000 },
220                 .prio = 2,
221                 .urg_fwd = 0,
222         },
223         .num_links = 1,
224         .links = { SC7280_SLAVE_A2NOC_SNOC },
225 };
226
227 static struct qcom_icc_node xm_pcie3_0 = {
228         .name = "xm_pcie3_0",
229         .id = SC7280_MASTER_PCIE_0,
230         .channels = 1,
231         .buswidth = 8,
232         .num_links = 1,
233         .links = { SC7280_SLAVE_ANOC_PCIE_GEM_NOC },
234 };
235
236 static struct qcom_icc_node xm_pcie3_1 = {
237         .name = "xm_pcie3_1",
238         .id = SC7280_MASTER_PCIE_1,
239         .channels = 1,
240         .buswidth = 8,
241         .links = { SC7280_SLAVE_ANOC_PCIE_GEM_NOC },
242 };
243
244 static struct qcom_icc_node xm_qdss_etr = {
245         .name = "xm_qdss_etr",
246         .id = SC7280_MASTER_QDSS_ETR,
247         .channels = 1,
248         .buswidth = 8,
249         .qosbox = &(const struct qcom_icc_qosbox) {
250                 .num_ports = 1,
251                 .port_offsets = { 0x15000 },
252                 .prio = 2,
253                 .urg_fwd = 0,
254         },
255         .num_links = 1,
256         .links = { SC7280_SLAVE_A2NOC_SNOC },
257 };
258
259 static struct qcom_icc_node qup0_core_master = {
260         .name = "qup0_core_master",
261         .id = SC7280_MASTER_QUP_CORE_0,
262         .channels = 1,
263         .buswidth = 4,
264         .num_links = 1,
265         .links = { SC7280_SLAVE_QUP_CORE_0 },
266 };
267
268 static struct qcom_icc_node qup1_core_master = {
269         .name = "qup1_core_master",
270         .id = SC7280_MASTER_QUP_CORE_1,
271         .channels = 1,
272         .buswidth = 4,
273         .num_links = 1,
274         .links = { SC7280_SLAVE_QUP_CORE_1 },
275 };
276
277 static struct qcom_icc_node qnm_cnoc3_cnoc2 = {
278         .name = "qnm_cnoc3_cnoc2",
279         .id = SC7280_MASTER_CNOC3_CNOC2,
280         .channels = 1,
281         .buswidth = 8,
282         .num_links = 44,
283         .links = { SC7280_SLAVE_AHB2PHY_SOUTH, SC7280_SLAVE_AHB2PHY_NORTH,
284                    SC7280_SLAVE_CAMERA_CFG, SC7280_SLAVE_CLK_CTL,
285                    SC7280_SLAVE_CDSP_CFG, SC7280_SLAVE_RBCPR_CX_CFG,
286                    SC7280_SLAVE_RBCPR_MX_CFG, SC7280_SLAVE_CRYPTO_0_CFG,
287                    SC7280_SLAVE_CX_RDPM, SC7280_SLAVE_DCC_CFG,
288                    SC7280_SLAVE_DISPLAY_CFG, SC7280_SLAVE_GFX3D_CFG,
289                    SC7280_SLAVE_HWKM, SC7280_SLAVE_IMEM_CFG,
290                    SC7280_SLAVE_IPA_CFG, SC7280_SLAVE_IPC_ROUTER_CFG,
291                    SC7280_SLAVE_LPASS, SC7280_SLAVE_CNOC_MSS,
292                    SC7280_SLAVE_MX_RDPM, SC7280_SLAVE_PCIE_0_CFG,
293                    SC7280_SLAVE_PCIE_1_CFG, SC7280_SLAVE_PDM,
294                    SC7280_SLAVE_PIMEM_CFG, SC7280_SLAVE_PKA_WRAPPER_CFG,
295                    SC7280_SLAVE_PMU_WRAPPER_CFG, SC7280_SLAVE_QDSS_CFG,
296                    SC7280_SLAVE_QSPI_0, SC7280_SLAVE_QUP_0,
297                    SC7280_SLAVE_QUP_1, SC7280_SLAVE_SDCC_1,
298                    SC7280_SLAVE_SDCC_2, SC7280_SLAVE_SDCC_4,
299                    SC7280_SLAVE_SECURITY, SC7280_SLAVE_TCSR,
300                    SC7280_SLAVE_TLMM, SC7280_SLAVE_UFS_MEM_CFG,
301                    SC7280_SLAVE_USB2, SC7280_SLAVE_USB3_0,
302                    SC7280_SLAVE_VENUS_CFG, SC7280_SLAVE_VSENSE_CTRL_CFG,
303                    SC7280_SLAVE_A1NOC_CFG, SC7280_SLAVE_A2NOC_CFG,
304                    SC7280_SLAVE_CNOC_MNOC_CFG, SC7280_SLAVE_SNOC_CFG },
305 };
306
307 static struct qcom_icc_node xm_qdss_dap = {
308         .name = "xm_qdss_dap",
309         .id = SC7280_MASTER_QDSS_DAP,
310         .channels = 1,
311         .buswidth = 8,
312         .num_links = 45,
313         .links = { SC7280_SLAVE_AHB2PHY_SOUTH, SC7280_SLAVE_AHB2PHY_NORTH,
314                    SC7280_SLAVE_CAMERA_CFG, SC7280_SLAVE_CLK_CTL,
315                    SC7280_SLAVE_CDSP_CFG, SC7280_SLAVE_RBCPR_CX_CFG,
316                    SC7280_SLAVE_RBCPR_MX_CFG, SC7280_SLAVE_CRYPTO_0_CFG,
317                    SC7280_SLAVE_CX_RDPM, SC7280_SLAVE_DCC_CFG,
318                    SC7280_SLAVE_DISPLAY_CFG, SC7280_SLAVE_GFX3D_CFG,
319                    SC7280_SLAVE_HWKM, SC7280_SLAVE_IMEM_CFG,
320                    SC7280_SLAVE_IPA_CFG, SC7280_SLAVE_IPC_ROUTER_CFG,
321                    SC7280_SLAVE_LPASS, SC7280_SLAVE_CNOC_MSS,
322                    SC7280_SLAVE_MX_RDPM, SC7280_SLAVE_PCIE_0_CFG,
323                    SC7280_SLAVE_PCIE_1_CFG, SC7280_SLAVE_PDM,
324                    SC7280_SLAVE_PIMEM_CFG, SC7280_SLAVE_PKA_WRAPPER_CFG,
325                    SC7280_SLAVE_PMU_WRAPPER_CFG, SC7280_SLAVE_QDSS_CFG,
326                    SC7280_SLAVE_QSPI_0, SC7280_SLAVE_QUP_0,
327                    SC7280_SLAVE_QUP_1, SC7280_SLAVE_SDCC_1,
328                    SC7280_SLAVE_SDCC_2, SC7280_SLAVE_SDCC_4,
329                    SC7280_SLAVE_SECURITY, SC7280_SLAVE_TCSR,
330                    SC7280_SLAVE_TLMM, SC7280_SLAVE_UFS_MEM_CFG,
331                    SC7280_SLAVE_USB2, SC7280_SLAVE_USB3_0,
332                    SC7280_SLAVE_VENUS_CFG, SC7280_SLAVE_VSENSE_CTRL_CFG,
333                    SC7280_SLAVE_A1NOC_CFG, SC7280_SLAVE_A2NOC_CFG,
334                    SC7280_SLAVE_CNOC2_CNOC3, SC7280_SLAVE_CNOC_MNOC_CFG,
335                    SC7280_SLAVE_SNOC_CFG },
336 };
337
338 static struct qcom_icc_node qnm_cnoc2_cnoc3 = {
339         .name = "qnm_cnoc2_cnoc3",
340         .id = SC7280_MASTER_CNOC2_CNOC3,
341         .channels = 1,
342         .buswidth = 8,
343         .num_links = 9,
344         .links = { SC7280_SLAVE_AOSS, SC7280_SLAVE_APPSS,
345                    SC7280_SLAVE_CNOC_A2NOC, SC7280_SLAVE_DDRSS_CFG,
346                    SC7280_SLAVE_BOOT_IMEM, SC7280_SLAVE_IMEM,
347                    SC7280_SLAVE_PIMEM, SC7280_SLAVE_QDSS_STM,
348                    SC7280_SLAVE_TCU },
349 };
350
351 static struct qcom_icc_node qnm_gemnoc_cnoc = {
352         .name = "qnm_gemnoc_cnoc",
353         .id = SC7280_MASTER_GEM_NOC_CNOC,
354         .channels = 1,
355         .buswidth = 16,
356         .num_links = 9,
357         .links = { SC7280_SLAVE_AOSS, SC7280_SLAVE_APPSS,
358                    SC7280_SLAVE_CNOC3_CNOC2, SC7280_SLAVE_DDRSS_CFG,
359                    SC7280_SLAVE_BOOT_IMEM, SC7280_SLAVE_IMEM,
360                    SC7280_SLAVE_PIMEM, SC7280_SLAVE_QDSS_STM,
361                    SC7280_SLAVE_TCU },
362 };
363
364 static struct qcom_icc_node qnm_gemnoc_pcie = {
365         .name = "qnm_gemnoc_pcie",
366         .id = SC7280_MASTER_GEM_NOC_PCIE_SNOC,
367         .channels = 1,
368         .buswidth = 8,
369         .num_links = 2,
370         .links = { SC7280_SLAVE_PCIE_0, SC7280_SLAVE_PCIE_1 },
371 };
372
373 static struct qcom_icc_node qnm_cnoc_dc_noc = {
374         .name = "qnm_cnoc_dc_noc",
375         .id = SC7280_MASTER_CNOC_DC_NOC,
376         .channels = 1,
377         .buswidth = 4,
378         .num_links = 2,
379         .links = { SC7280_SLAVE_LLCC_CFG, SC7280_SLAVE_GEM_NOC_CFG },
380 };
381
382 static struct qcom_icc_node alm_gpu_tcu = {
383         .name = "alm_gpu_tcu",
384         .id = SC7280_MASTER_GPU_TCU,
385         .channels = 1,
386         .buswidth = 8,
387         .qosbox = &(const struct qcom_icc_qosbox) {
388                 .num_ports = 1,
389                 .port_offsets = { 0xd7000 },
390                 .prio = 2,
391                 .urg_fwd = 0,
392         },
393         .num_links = 2,
394         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
395 };
396
397 static struct qcom_icc_node alm_sys_tcu = {
398         .name = "alm_sys_tcu",
399         .id = SC7280_MASTER_SYS_TCU,
400         .channels = 1,
401         .buswidth = 8,
402         .qosbox = &(const struct qcom_icc_qosbox) {
403                 .num_ports = 1,
404                 .port_offsets = { 0xd6000 },
405                 .prio = 6,
406                 .urg_fwd = 0,
407         },
408         .num_links = 2,
409         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
410 };
411
412 static struct qcom_icc_node chm_apps = {
413         .name = "chm_apps",
414         .id = SC7280_MASTER_APPSS_PROC,
415         .channels = 1,
416         .buswidth = 32,
417         .num_links = 3,
418         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC,
419                    SC7280_SLAVE_MEM_NOC_PCIE_SNOC },
420 };
421
422 static struct qcom_icc_node qnm_cmpnoc = {
423         .name = "qnm_cmpnoc",
424         .id = SC7280_MASTER_COMPUTE_NOC,
425         .channels = 2,
426         .buswidth = 32,
427         .qosbox = &(const struct qcom_icc_qosbox) {
428                 .num_ports = 2,
429                 .port_offsets = { 0x21000, 0x61000 },
430                 .prio = 0,
431                 .urg_fwd = 1,
432         },
433         .num_links = 2,
434         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
435 };
436
437 static struct qcom_icc_node qnm_gemnoc_cfg = {
438         .name = "qnm_gemnoc_cfg",
439         .id = SC7280_MASTER_GEM_NOC_CFG,
440         .channels = 1,
441         .buswidth = 4,
442         .num_links = 5,
443         .links = { SC7280_SLAVE_MSS_PROC_MS_MPU_CFG, SC7280_SLAVE_MCDMA_MS_MPU_CFG,
444                    SC7280_SLAVE_SERVICE_GEM_NOC_1, SC7280_SLAVE_SERVICE_GEM_NOC_2,
445                    SC7280_SLAVE_SERVICE_GEM_NOC },
446 };
447
448 static struct qcom_icc_node qnm_gpu = {
449         .name = "qnm_gpu",
450         .id = SC7280_MASTER_GFX3D,
451         .channels = 2,
452         .buswidth = 32,
453         .qosbox = &(const struct qcom_icc_qosbox) {
454                 .num_ports = 2,
455                 .port_offsets = { 0x22000, 0x62000 },
456                 .prio = 0,
457                 .urg_fwd = 0,
458         },
459         .num_links = 2,
460         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
461 };
462
463 static struct qcom_icc_node qnm_mnoc_hf = {
464         .name = "qnm_mnoc_hf",
465         .id = SC7280_MASTER_MNOC_HF_MEM_NOC,
466         .channels = 2,
467         .buswidth = 32,
468         .qosbox = &(const struct qcom_icc_qosbox) {
469                 .num_ports = 2,
470                 .port_offsets = { 0x23000, 0x63000 },
471                 .prio = 0,
472                 .urg_fwd = 1,
473         },
474         .num_links = 1,
475         .links = { SC7280_SLAVE_LLCC },
476 };
477
478 static struct qcom_icc_node qnm_mnoc_sf = {
479         .name = "qnm_mnoc_sf",
480         .id = SC7280_MASTER_MNOC_SF_MEM_NOC,
481         .channels = 1,
482         .buswidth = 32,
483         .qosbox = &(const struct qcom_icc_qosbox) {
484                 .num_ports = 1,
485                 .port_offsets = { 0xcf000 },
486                 .prio = 0,
487                 .urg_fwd = 1,
488         },
489         .num_links = 2,
490         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
491 };
492
493 static struct qcom_icc_node qnm_pcie = {
494         .name = "qnm_pcie",
495         .id = SC7280_MASTER_ANOC_PCIE_GEM_NOC,
496         .channels = 1,
497         .buswidth = 16,
498         .num_links = 2,
499         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC },
500 };
501
502 static struct qcom_icc_node qnm_snoc_gc = {
503         .name = "qnm_snoc_gc",
504         .id = SC7280_MASTER_SNOC_GC_MEM_NOC,
505         .channels = 1,
506         .buswidth = 8,
507         .qosbox = &(const struct qcom_icc_qosbox) {
508                 .num_ports = 1,
509                 .port_offsets = { 0xd3000 },
510                 .prio = 0,
511                 .urg_fwd = 1,
512         },
513         .num_links = 1,
514         .links = { SC7280_SLAVE_LLCC },
515 };
516
517 static struct qcom_icc_node qnm_snoc_sf = {
518         .name = "qnm_snoc_sf",
519         .id = SC7280_MASTER_SNOC_SF_MEM_NOC,
520         .channels = 1,
521         .buswidth = 16,
522         .qosbox = &(const struct qcom_icc_qosbox) {
523                 .num_ports = 1,
524                 .port_offsets = { 0xd4000 },
525                 .prio = 0,
526                 .urg_fwd = 1,
527         },
528         .num_links = 3,
529         .links = { SC7280_SLAVE_GEM_NOC_CNOC, SC7280_SLAVE_LLCC,
530                    SC7280_SLAVE_MEM_NOC_PCIE_SNOC },
531 };
532
533 static struct qcom_icc_node qhm_config_noc = {
534         .name = "qhm_config_noc",
535         .id = SC7280_MASTER_CNOC_LPASS_AG_NOC,
536         .channels = 1,
537         .buswidth = 4,
538         .num_links = 6,
539         .links = { SC7280_SLAVE_LPASS_CORE_CFG, SC7280_SLAVE_LPASS_LPI_CFG,
540                    SC7280_SLAVE_LPASS_MPU_CFG, SC7280_SLAVE_LPASS_TOP_CFG,
541                    SC7280_SLAVE_SERVICES_LPASS_AML_NOC, SC7280_SLAVE_SERVICE_LPASS_AG_NOC },
542 };
543
544 static struct qcom_icc_node llcc_mc = {
545         .name = "llcc_mc",
546         .id = SC7280_MASTER_LLCC,
547         .channels = 2,
548         .buswidth = 4,
549         .num_links = 1,
550         .links = { SC7280_SLAVE_EBI1 },
551 };
552
553 static struct qcom_icc_node qnm_mnoc_cfg = {
554         .name = "qnm_mnoc_cfg",
555         .id = SC7280_MASTER_CNOC_MNOC_CFG,
556         .channels = 1,
557         .buswidth = 4,
558         .num_links = 1,
559         .links = { SC7280_SLAVE_SERVICE_MNOC },
560 };
561
562 static struct qcom_icc_node qnm_video0 = {
563         .name = "qnm_video0",
564         .id = SC7280_MASTER_VIDEO_P0,
565         .channels = 1,
566         .buswidth = 32,
567         .qosbox = &(const struct qcom_icc_qosbox) {
568                 .num_ports = 1,
569                 .port_offsets = { 0x14000 },
570                 .prio = 0,
571                 .urg_fwd = 1,
572         },
573         .num_links = 1,
574         .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
575 };
576
577 static struct qcom_icc_node qnm_video_cpu = {
578         .name = "qnm_video_cpu",
579         .id = SC7280_MASTER_VIDEO_PROC,
580         .channels = 1,
581         .buswidth = 8,
582         .qosbox = &(const struct qcom_icc_qosbox) {
583                 .num_ports = 1,
584                 .port_offsets = { 0x15000 },
585                 .prio = 0,
586                 .urg_fwd = 1,
587         },
588         .num_links = 1,
589         .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
590 };
591
592 static struct qcom_icc_node qxm_camnoc_hf = {
593         .name = "qxm_camnoc_hf",
594         .id = SC7280_MASTER_CAMNOC_HF,
595         .channels = 2,
596         .buswidth = 32,
597         .qosbox = &(const struct qcom_icc_qosbox) {
598                 .num_ports = 2,
599                 .port_offsets = { 0x10000, 0x10180 },
600                 .prio = 0,
601                 .urg_fwd = 1,
602         },
603         .num_links = 1,
604         .links = { SC7280_SLAVE_MNOC_HF_MEM_NOC },
605 };
606
607 static struct qcom_icc_node qxm_camnoc_icp = {
608         .name = "qxm_camnoc_icp",
609         .id = SC7280_MASTER_CAMNOC_ICP,
610         .channels = 1,
611         .buswidth = 8,
612         .qosbox = &(const struct qcom_icc_qosbox) {
613                 .num_ports = 1,
614                 .port_offsets = { 0x11000 },
615                 .prio = 0,
616                 .urg_fwd = 1,
617         },
618         .num_links = 1,
619         .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
620 };
621
622 static struct qcom_icc_node qxm_camnoc_sf = {
623         .name = "qxm_camnoc_sf",
624         .id = SC7280_MASTER_CAMNOC_SF,
625         .channels = 1,
626         .buswidth = 32,
627         .qosbox = &(const struct qcom_icc_qosbox) {
628                 .num_ports = 1,
629                 .port_offsets = { 0x12000 },
630                 .prio = 0,
631                 .urg_fwd = 1,
632         },
633         .num_links = 1,
634         .links = { SC7280_SLAVE_MNOC_SF_MEM_NOC },
635 };
636
637 static struct qcom_icc_node qxm_mdp0 = {
638         .name = "qxm_mdp0",
639         .id = SC7280_MASTER_MDP0,
640         .channels = 1,
641         .buswidth = 32,
642         .qosbox = &(const struct qcom_icc_qosbox) {
643                 .num_ports = 1,
644                 .port_offsets = { 0x16000 },
645                 .prio = 0,
646                 .urg_fwd = 1,
647         },
648         .num_links = 1,
649         .links = { SC7280_SLAVE_MNOC_HF_MEM_NOC },
650 };
651
652 static struct qcom_icc_node qhm_nsp_noc_config = {
653         .name = "qhm_nsp_noc_config",
654         .id = SC7280_MASTER_CDSP_NOC_CFG,
655         .channels = 1,
656         .buswidth = 4,
657         .num_links = 1,
658         .links = { SC7280_SLAVE_SERVICE_NSP_NOC },
659 };
660
661 static struct qcom_icc_node qxm_nsp = {
662         .name = "qxm_nsp",
663         .id = SC7280_MASTER_CDSP_PROC,
664         .channels = 2,
665         .buswidth = 32,
666         .num_links = 1,
667         .links = { SC7280_SLAVE_CDSP_MEM_NOC },
668 };
669
670 static struct qcom_icc_node qnm_aggre1_noc = {
671         .name = "qnm_aggre1_noc",
672         .id = SC7280_MASTER_A1NOC_SNOC,
673         .channels = 1,
674         .buswidth = 16,
675         .num_links = 1,
676         .links = { SC7280_SLAVE_SNOC_GEM_NOC_SF },
677 };
678
679 static struct qcom_icc_node qnm_aggre2_noc = {
680         .name = "qnm_aggre2_noc",
681         .id = SC7280_MASTER_A2NOC_SNOC,
682         .channels = 1,
683         .buswidth = 16,
684         .num_links = 1,
685         .links = { SC7280_SLAVE_SNOC_GEM_NOC_SF },
686 };
687
688 static struct qcom_icc_node qnm_snoc_cfg = {
689         .name = "qnm_snoc_cfg",
690         .id = SC7280_MASTER_SNOC_CFG,
691         .channels = 1,
692         .buswidth = 4,
693         .num_links = 1,
694         .links = { SC7280_SLAVE_SERVICE_SNOC },
695 };
696
697 static struct qcom_icc_node qxm_pimem = {
698         .name = "qxm_pimem",
699         .id = SC7280_MASTER_PIMEM,
700         .channels = 1,
701         .buswidth = 8,
702         .qosbox = &(const struct qcom_icc_qosbox) {
703                 .num_ports = 1,
704                 .port_offsets = { 0x8000 },
705                 .prio = 2,
706                 .urg_fwd = 0,
707         },
708         .num_links = 1,
709         .links = { SC7280_SLAVE_SNOC_GEM_NOC_GC },
710 };
711
712 static struct qcom_icc_node xm_gic = {
713         .name = "xm_gic",
714         .id = SC7280_MASTER_GIC,
715         .channels = 1,
716         .buswidth = 8,
717         .qosbox = &(const struct qcom_icc_qosbox) {
718                 .num_ports = 1,
719                 .port_offsets = { 0xa000 },
720                 .prio = 2,
721                 .urg_fwd = 0,
722         },
723         .num_links = 1,
724         .links = { SC7280_SLAVE_SNOC_GEM_NOC_GC },
725 };
726
727 static struct qcom_icc_node qns_a1noc_snoc = {
728         .name = "qns_a1noc_snoc",
729         .id = SC7280_SLAVE_A1NOC_SNOC,
730         .channels = 1,
731         .buswidth = 16,
732         .num_links = 1,
733         .links = { SC7280_MASTER_A1NOC_SNOC },
734 };
735
736 static struct qcom_icc_node srvc_aggre1_noc = {
737         .name = "srvc_aggre1_noc",
738         .id = SC7280_SLAVE_SERVICE_A1NOC,
739         .channels = 1,
740         .buswidth = 4,
741         .num_links = 0,
742 };
743
744 static struct qcom_icc_node qns_a2noc_snoc = {
745         .name = "qns_a2noc_snoc",
746         .id = SC7280_SLAVE_A2NOC_SNOC,
747         .channels = 1,
748         .buswidth = 16,
749         .num_links = 1,
750         .links = { SC7280_MASTER_A2NOC_SNOC },
751 };
752
753 static struct qcom_icc_node qns_pcie_mem_noc = {
754         .name = "qns_pcie_mem_noc",
755         .id = SC7280_SLAVE_ANOC_PCIE_GEM_NOC,
756         .channels = 1,
757         .buswidth = 16,
758         .num_links = 1,
759         .links = { SC7280_MASTER_ANOC_PCIE_GEM_NOC },
760 };
761
762 static struct qcom_icc_node srvc_aggre2_noc = {
763         .name = "srvc_aggre2_noc",
764         .id = SC7280_SLAVE_SERVICE_A2NOC,
765         .channels = 1,
766         .buswidth = 4,
767         .num_links = 0,
768 };
769
770 static struct qcom_icc_node qup0_core_slave = {
771         .name = "qup0_core_slave",
772         .id = SC7280_SLAVE_QUP_CORE_0,
773         .channels = 1,
774         .buswidth = 4,
775         .num_links = 0,
776 };
777
778 static struct qcom_icc_node qup1_core_slave = {
779         .name = "qup1_core_slave",
780         .id = SC7280_SLAVE_QUP_CORE_1,
781         .channels = 1,
782         .buswidth = 4,
783         .num_links = 0,
784 };
785
786 static struct qcom_icc_node qhs_ahb2phy0 = {
787         .name = "qhs_ahb2phy0",
788         .id = SC7280_SLAVE_AHB2PHY_SOUTH,
789         .channels = 1,
790         .buswidth = 4,
791         .num_links = 0,
792 };
793
794 static struct qcom_icc_node qhs_ahb2phy1 = {
795         .name = "qhs_ahb2phy1",
796         .id = SC7280_SLAVE_AHB2PHY_NORTH,
797         .channels = 1,
798         .buswidth = 4,
799         .num_links = 0,
800 };
801
802 static struct qcom_icc_node qhs_camera_cfg = {
803         .name = "qhs_camera_cfg",
804         .id = SC7280_SLAVE_CAMERA_CFG,
805         .channels = 1,
806         .buswidth = 4,
807         .num_links = 0,
808 };
809
810 static struct qcom_icc_node qhs_clk_ctl = {
811         .name = "qhs_clk_ctl",
812         .id = SC7280_SLAVE_CLK_CTL,
813         .channels = 1,
814         .buswidth = 4,
815         .num_links = 0,
816 };
817
818 static struct qcom_icc_node qhs_compute_cfg = {
819         .name = "qhs_compute_cfg",
820         .id = SC7280_SLAVE_CDSP_CFG,
821         .channels = 1,
822         .buswidth = 4,
823         .num_links = 1,
824         .links = { SC7280_MASTER_CDSP_NOC_CFG },
825 };
826
827 static struct qcom_icc_node qhs_cpr_cx = {
828         .name = "qhs_cpr_cx",
829         .id = SC7280_SLAVE_RBCPR_CX_CFG,
830         .channels = 1,
831         .buswidth = 4,
832         .num_links = 0,
833 };
834
835 static struct qcom_icc_node qhs_cpr_mx = {
836         .name = "qhs_cpr_mx",
837         .id = SC7280_SLAVE_RBCPR_MX_CFG,
838         .channels = 1,
839         .buswidth = 4,
840         .num_links = 0,
841 };
842
843 static struct qcom_icc_node qhs_crypto0_cfg = {
844         .name = "qhs_crypto0_cfg",
845         .id = SC7280_SLAVE_CRYPTO_0_CFG,
846         .channels = 1,
847         .buswidth = 4,
848         .num_links = 0,
849 };
850
851 static struct qcom_icc_node qhs_cx_rdpm = {
852         .name = "qhs_cx_rdpm",
853         .id = SC7280_SLAVE_CX_RDPM,
854         .channels = 1,
855         .buswidth = 4,
856         .num_links = 0,
857 };
858
859 static struct qcom_icc_node qhs_dcc_cfg = {
860         .name = "qhs_dcc_cfg",
861         .id = SC7280_SLAVE_DCC_CFG,
862         .channels = 1,
863         .buswidth = 4,
864         .num_links = 0,
865 };
866
867 static struct qcom_icc_node qhs_display_cfg = {
868         .name = "qhs_display_cfg",
869         .id = SC7280_SLAVE_DISPLAY_CFG,
870         .channels = 1,
871         .buswidth = 4,
872         .num_links = 0,
873 };
874
875 static struct qcom_icc_node qhs_gpuss_cfg = {
876         .name = "qhs_gpuss_cfg",
877         .id = SC7280_SLAVE_GFX3D_CFG,
878         .channels = 1,
879         .buswidth = 8,
880         .num_links = 0,
881 };
882
883 static struct qcom_icc_node qhs_hwkm = {
884         .name = "qhs_hwkm",
885         .id = SC7280_SLAVE_HWKM,
886         .channels = 1,
887         .buswidth = 4,
888         .num_links = 0,
889 };
890
891 static struct qcom_icc_node qhs_imem_cfg = {
892         .name = "qhs_imem_cfg",
893         .id = SC7280_SLAVE_IMEM_CFG,
894         .channels = 1,
895         .buswidth = 4,
896         .num_links = 0,
897 };
898
899 static struct qcom_icc_node qhs_ipa = {
900         .name = "qhs_ipa",
901         .id = SC7280_SLAVE_IPA_CFG,
902         .channels = 1,
903         .buswidth = 4,
904         .num_links = 0,
905 };
906
907 static struct qcom_icc_node qhs_ipc_router = {
908         .name = "qhs_ipc_router",
909         .id = SC7280_SLAVE_IPC_ROUTER_CFG,
910         .channels = 1,
911         .buswidth = 4,
912         .num_links = 0,
913 };
914
915 static struct qcom_icc_node qhs_lpass_cfg = {
916         .name = "qhs_lpass_cfg",
917         .id = SC7280_SLAVE_LPASS,
918         .channels = 1,
919         .buswidth = 4,
920         .num_links = 1,
921         .links = { SC7280_MASTER_CNOC_LPASS_AG_NOC },
922 };
923
924 static struct qcom_icc_node qhs_mss_cfg = {
925         .name = "qhs_mss_cfg",
926         .id = SC7280_SLAVE_CNOC_MSS,
927         .channels = 1,
928         .buswidth = 4,
929         .num_links = 0,
930 };
931
932 static struct qcom_icc_node qhs_mx_rdpm = {
933         .name = "qhs_mx_rdpm",
934         .id = SC7280_SLAVE_MX_RDPM,
935         .channels = 1,
936         .buswidth = 4,
937         .num_links = 0,
938 };
939
940 static struct qcom_icc_node qhs_pcie0_cfg = {
941         .name = "qhs_pcie0_cfg",
942         .id = SC7280_SLAVE_PCIE_0_CFG,
943         .channels = 1,
944         .buswidth = 4,
945         .num_links = 0,
946 };
947
948 static struct qcom_icc_node qhs_pcie1_cfg = {
949         .name = "qhs_pcie1_cfg",
950         .id = SC7280_SLAVE_PCIE_1_CFG,
951         .channels = 1,
952         .buswidth = 4,
953         .num_links = 0,
954 };
955
956 static struct qcom_icc_node qhs_pdm = {
957         .name = "qhs_pdm",
958         .id = SC7280_SLAVE_PDM,
959         .channels = 1,
960         .buswidth = 4,
961         .num_links = 0,
962 };
963
964 static struct qcom_icc_node qhs_pimem_cfg = {
965         .name = "qhs_pimem_cfg",
966         .id = SC7280_SLAVE_PIMEM_CFG,
967         .channels = 1,
968         .buswidth = 4,
969         .num_links = 0,
970 };
971
972 static struct qcom_icc_node qhs_pka_wrapper_cfg = {
973         .name = "qhs_pka_wrapper_cfg",
974         .id = SC7280_SLAVE_PKA_WRAPPER_CFG,
975         .channels = 1,
976         .buswidth = 4,
977         .num_links = 0,
978 };
979
980 static struct qcom_icc_node qhs_pmu_wrapper_cfg = {
981         .name = "qhs_pmu_wrapper_cfg",
982         .id = SC7280_SLAVE_PMU_WRAPPER_CFG,
983         .channels = 1,
984         .buswidth = 4,
985         .num_links = 0,
986 };
987
988 static struct qcom_icc_node qhs_qdss_cfg = {
989         .name = "qhs_qdss_cfg",
990         .id = SC7280_SLAVE_QDSS_CFG,
991         .channels = 1,
992         .buswidth = 4,
993         .num_links = 0,
994 };
995
996 static struct qcom_icc_node qhs_qspi = {
997         .name = "qhs_qspi",
998         .id = SC7280_SLAVE_QSPI_0,
999         .channels = 1,
1000         .buswidth = 4,
1001         .num_links = 0,
1002 };
1003
1004 static struct qcom_icc_node qhs_qup0 = {
1005         .name = "qhs_qup0",
1006         .id = SC7280_SLAVE_QUP_0,
1007         .channels = 1,
1008         .buswidth = 4,
1009         .num_links = 0,
1010 };
1011
1012 static struct qcom_icc_node qhs_qup1 = {
1013         .name = "qhs_qup1",
1014         .id = SC7280_SLAVE_QUP_1,
1015         .channels = 1,
1016         .buswidth = 4,
1017         .num_links = 0,
1018 };
1019
1020 static struct qcom_icc_node qhs_sdc1 = {
1021         .name = "qhs_sdc1",
1022         .id = SC7280_SLAVE_SDCC_1,
1023         .channels = 1,
1024         .buswidth = 4,
1025         .num_links = 0,
1026 };
1027
1028 static struct qcom_icc_node qhs_sdc2 = {
1029         .name = "qhs_sdc2",
1030         .id = SC7280_SLAVE_SDCC_2,
1031         .channels = 1,
1032         .buswidth = 4,
1033         .num_links = 0,
1034 };
1035
1036 static struct qcom_icc_node qhs_sdc4 = {
1037         .name = "qhs_sdc4",
1038         .id = SC7280_SLAVE_SDCC_4,
1039         .channels = 1,
1040         .buswidth = 4,
1041         .num_links = 0,
1042 };
1043
1044 static struct qcom_icc_node qhs_security = {
1045         .name = "qhs_security",
1046         .id = SC7280_SLAVE_SECURITY,
1047         .channels = 1,
1048         .buswidth = 4,
1049         .num_links = 0,
1050 };
1051
1052 static struct qcom_icc_node qhs_tcsr = {
1053         .name = "qhs_tcsr",
1054         .id = SC7280_SLAVE_TCSR,
1055         .channels = 1,
1056         .buswidth = 4,
1057         .num_links = 0,
1058 };
1059
1060 static struct qcom_icc_node qhs_tlmm = {
1061         .name = "qhs_tlmm",
1062         .id = SC7280_SLAVE_TLMM,
1063         .channels = 1,
1064         .buswidth = 4,
1065         .num_links = 0,
1066 };
1067
1068 static struct qcom_icc_node qhs_ufs_mem_cfg = {
1069         .name = "qhs_ufs_mem_cfg",
1070         .id = SC7280_SLAVE_UFS_MEM_CFG,
1071         .channels = 1,
1072         .buswidth = 4,
1073         .num_links = 0,
1074 };
1075
1076 static struct qcom_icc_node qhs_usb2 = {
1077         .name = "qhs_usb2",
1078         .id = SC7280_SLAVE_USB2,
1079         .channels = 1,
1080         .buswidth = 4,
1081         .num_links = 0,
1082 };
1083
1084 static struct qcom_icc_node qhs_usb3_0 = {
1085         .name = "qhs_usb3_0",
1086         .id = SC7280_SLAVE_USB3_0,
1087         .channels = 1,
1088         .buswidth = 4,
1089         .num_links = 0,
1090 };
1091
1092 static struct qcom_icc_node qhs_venus_cfg = {
1093         .name = "qhs_venus_cfg",
1094         .id = SC7280_SLAVE_VENUS_CFG,
1095         .channels = 1,
1096         .buswidth = 4,
1097         .num_links = 0,
1098 };
1099
1100 static struct qcom_icc_node qhs_vsense_ctrl_cfg = {
1101         .name = "qhs_vsense_ctrl_cfg",
1102         .id = SC7280_SLAVE_VSENSE_CTRL_CFG,
1103         .channels = 1,
1104         .buswidth = 4,
1105         .num_links = 0,
1106 };
1107
1108 static struct qcom_icc_node qns_a1_noc_cfg = {
1109         .name = "qns_a1_noc_cfg",
1110         .id = SC7280_SLAVE_A1NOC_CFG,
1111         .channels = 1,
1112         .buswidth = 4,
1113         .num_links = 1,
1114         .links = { SC7280_MASTER_A1NOC_CFG },
1115 };
1116
1117 static struct qcom_icc_node qns_a2_noc_cfg = {
1118         .name = "qns_a2_noc_cfg",
1119         .id = SC7280_SLAVE_A2NOC_CFG,
1120         .channels = 1,
1121         .buswidth = 4,
1122         .num_links = 1,
1123         .links = { SC7280_MASTER_A2NOC_CFG },
1124 };
1125
1126 static struct qcom_icc_node qns_cnoc2_cnoc3 = {
1127         .name = "qns_cnoc2_cnoc3",
1128         .id = SC7280_SLAVE_CNOC2_CNOC3,
1129         .channels = 1,
1130         .buswidth = 8,
1131         .num_links = 1,
1132         .links = { SC7280_MASTER_CNOC2_CNOC3 },
1133 };
1134
1135 static struct qcom_icc_node qns_mnoc_cfg = {
1136         .name = "qns_mnoc_cfg",
1137         .id = SC7280_SLAVE_CNOC_MNOC_CFG,
1138         .channels = 1,
1139         .buswidth = 4,
1140         .num_links = 1,
1141         .links = { SC7280_MASTER_CNOC_MNOC_CFG },
1142 };
1143
1144 static struct qcom_icc_node qns_snoc_cfg = {
1145         .name = "qns_snoc_cfg",
1146         .id = SC7280_SLAVE_SNOC_CFG,
1147         .channels = 1,
1148         .buswidth = 4,
1149         .num_links = 1,
1150         .links = { SC7280_MASTER_SNOC_CFG },
1151 };
1152
1153 static struct qcom_icc_node qhs_aoss = {
1154         .name = "qhs_aoss",
1155         .id = SC7280_SLAVE_AOSS,
1156         .channels = 1,
1157         .buswidth = 4,
1158         .num_links = 0,
1159 };
1160
1161 static struct qcom_icc_node qhs_apss = {
1162         .name = "qhs_apss",
1163         .id = SC7280_SLAVE_APPSS,
1164         .channels = 1,
1165         .buswidth = 8,
1166         .num_links = 0,
1167 };
1168
1169 static struct qcom_icc_node qns_cnoc3_cnoc2 = {
1170         .name = "qns_cnoc3_cnoc2",
1171         .id = SC7280_SLAVE_CNOC3_CNOC2,
1172         .channels = 1,
1173         .buswidth = 8,
1174         .num_links = 1,
1175         .links = { SC7280_MASTER_CNOC3_CNOC2 },
1176 };
1177
1178 static struct qcom_icc_node qns_cnoc_a2noc = {
1179         .name = "qns_cnoc_a2noc",
1180         .id = SC7280_SLAVE_CNOC_A2NOC,
1181         .channels = 1,
1182         .buswidth = 8,
1183         .num_links = 1,
1184         .links = { SC7280_MASTER_CNOC_A2NOC },
1185 };
1186
1187 static struct qcom_icc_node qns_ddrss_cfg = {
1188         .name = "qns_ddrss_cfg",
1189         .id = SC7280_SLAVE_DDRSS_CFG,
1190         .channels = 1,
1191         .buswidth = 4,
1192         .num_links = 1,
1193         .links = { SC7280_MASTER_CNOC_DC_NOC },
1194 };
1195
1196 static struct qcom_icc_node qxs_boot_imem = {
1197         .name = "qxs_boot_imem",
1198         .id = SC7280_SLAVE_BOOT_IMEM,
1199         .channels = 1,
1200         .buswidth = 8,
1201         .num_links = 0,
1202 };
1203
1204 static struct qcom_icc_node qxs_imem = {
1205         .name = "qxs_imem",
1206         .id = SC7280_SLAVE_IMEM,
1207         .channels = 1,
1208         .buswidth = 8,
1209         .num_links = 0,
1210 };
1211
1212 static struct qcom_icc_node qxs_pimem = {
1213         .name = "qxs_pimem",
1214         .id = SC7280_SLAVE_PIMEM,
1215         .channels = 1,
1216         .buswidth = 8,
1217         .num_links = 0,
1218 };
1219
1220 static struct qcom_icc_node xs_pcie_0 = {
1221         .name = "xs_pcie_0",
1222         .id = SC7280_SLAVE_PCIE_0,
1223         .channels = 1,
1224         .buswidth = 8,
1225         .num_links = 0,
1226 };
1227
1228 static struct qcom_icc_node xs_pcie_1 = {
1229         .name = "xs_pcie_1",
1230         .id = SC7280_SLAVE_PCIE_1,
1231         .channels = 1,
1232         .buswidth = 8,
1233         .num_links = 0,
1234 };
1235
1236 static struct qcom_icc_node xs_qdss_stm = {
1237         .name = "xs_qdss_stm",
1238         .id = SC7280_SLAVE_QDSS_STM,
1239         .channels = 1,
1240         .buswidth = 4,
1241         .num_links = 0,
1242 };
1243
1244 static struct qcom_icc_node xs_sys_tcu_cfg = {
1245         .name = "xs_sys_tcu_cfg",
1246         .id = SC7280_SLAVE_TCU,
1247         .channels = 1,
1248         .buswidth = 8,
1249         .num_links = 0,
1250 };
1251
1252 static struct qcom_icc_node qhs_llcc = {
1253         .name = "qhs_llcc",
1254         .id = SC7280_SLAVE_LLCC_CFG,
1255         .channels = 1,
1256         .buswidth = 4,
1257         .num_links = 0,
1258 };
1259
1260 static struct qcom_icc_node qns_gemnoc = {
1261         .name = "qns_gemnoc",
1262         .id = SC7280_SLAVE_GEM_NOC_CFG,
1263         .channels = 1,
1264         .buswidth = 4,
1265         .num_links = 1,
1266         .links = { SC7280_MASTER_GEM_NOC_CFG },
1267 };
1268
1269 static struct qcom_icc_node qhs_mdsp_ms_mpu_cfg = {
1270         .name = "qhs_mdsp_ms_mpu_cfg",
1271         .id = SC7280_SLAVE_MSS_PROC_MS_MPU_CFG,
1272         .channels = 1,
1273         .buswidth = 4,
1274         .num_links = 0,
1275 };
1276
1277 static struct qcom_icc_node qhs_modem_ms_mpu_cfg = {
1278         .name = "qhs_modem_ms_mpu_cfg",
1279         .id = SC7280_SLAVE_MCDMA_MS_MPU_CFG,
1280         .channels = 1,
1281         .buswidth = 4,
1282         .num_links = 0,
1283 };
1284
1285 static struct qcom_icc_node qns_gem_noc_cnoc = {
1286         .name = "qns_gem_noc_cnoc",
1287         .id = SC7280_SLAVE_GEM_NOC_CNOC,
1288         .channels = 1,
1289         .buswidth = 16,
1290         .num_links = 1,
1291         .links = { SC7280_MASTER_GEM_NOC_CNOC },
1292 };
1293
1294 static struct qcom_icc_node qns_llcc = {
1295         .name = "qns_llcc",
1296         .id = SC7280_SLAVE_LLCC,
1297         .channels = 2,
1298         .buswidth = 16,
1299         .num_links = 1,
1300         .links = { SC7280_MASTER_LLCC },
1301 };
1302
1303 static struct qcom_icc_node qns_pcie = {
1304         .name = "qns_pcie",
1305         .id = SC7280_SLAVE_MEM_NOC_PCIE_SNOC,
1306         .channels = 1,
1307         .buswidth = 8,
1308         .num_links = 1,
1309         .links = { SC7280_MASTER_GEM_NOC_PCIE_SNOC },
1310 };
1311
1312 static struct qcom_icc_node srvc_even_gemnoc = {
1313         .name = "srvc_even_gemnoc",
1314         .id = SC7280_SLAVE_SERVICE_GEM_NOC_1,
1315         .channels = 1,
1316         .buswidth = 4,
1317         .num_links = 0,
1318 };
1319
1320 static struct qcom_icc_node srvc_odd_gemnoc = {
1321         .name = "srvc_odd_gemnoc",
1322         .id = SC7280_SLAVE_SERVICE_GEM_NOC_2,
1323         .channels = 1,
1324         .buswidth = 4,
1325         .num_links = 0,
1326 };
1327
1328 static struct qcom_icc_node srvc_sys_gemnoc = {
1329         .name = "srvc_sys_gemnoc",
1330         .id = SC7280_SLAVE_SERVICE_GEM_NOC,
1331         .channels = 1,
1332         .buswidth = 4,
1333         .num_links = 0,
1334 };
1335
1336 static struct qcom_icc_node qhs_lpass_core = {
1337         .name = "qhs_lpass_core",
1338         .id = SC7280_SLAVE_LPASS_CORE_CFG,
1339         .channels = 1,
1340         .buswidth = 4,
1341         .num_links = 0,
1342 };
1343
1344 static struct qcom_icc_node qhs_lpass_lpi = {
1345         .name = "qhs_lpass_lpi",
1346         .id = SC7280_SLAVE_LPASS_LPI_CFG,
1347         .channels = 1,
1348         .buswidth = 4,
1349         .num_links = 0,
1350 };
1351
1352 static struct qcom_icc_node qhs_lpass_mpu = {
1353         .name = "qhs_lpass_mpu",
1354         .id = SC7280_SLAVE_LPASS_MPU_CFG,
1355         .channels = 1,
1356         .buswidth = 4,
1357         .num_links = 0,
1358 };
1359
1360 static struct qcom_icc_node qhs_lpass_top = {
1361         .name = "qhs_lpass_top",
1362         .id = SC7280_SLAVE_LPASS_TOP_CFG,
1363         .channels = 1,
1364         .buswidth = 4,
1365         .num_links = 0,
1366 };
1367
1368 static struct qcom_icc_node srvc_niu_aml_noc = {
1369         .name = "srvc_niu_aml_noc",
1370         .id = SC7280_SLAVE_SERVICES_LPASS_AML_NOC,
1371         .channels = 1,
1372         .buswidth = 4,
1373         .num_links = 0,
1374 };
1375
1376 static struct qcom_icc_node srvc_niu_lpass_agnoc = {
1377         .name = "srvc_niu_lpass_agnoc",
1378         .id = SC7280_SLAVE_SERVICE_LPASS_AG_NOC,
1379         .channels = 1,
1380         .buswidth = 4,
1381         .num_links = 0,
1382 };
1383
1384 static struct qcom_icc_node ebi = {
1385         .name = "ebi",
1386         .id = SC7280_SLAVE_EBI1,
1387         .channels = 2,
1388         .buswidth = 4,
1389         .num_links = 0,
1390 };
1391
1392 static struct qcom_icc_node qns_mem_noc_hf = {
1393         .name = "qns_mem_noc_hf",
1394         .id = SC7280_SLAVE_MNOC_HF_MEM_NOC,
1395         .channels = 2,
1396         .buswidth = 32,
1397         .num_links = 1,
1398         .links = { SC7280_MASTER_MNOC_HF_MEM_NOC },
1399 };
1400
1401 static struct qcom_icc_node qns_mem_noc_sf = {
1402         .name = "qns_mem_noc_sf",
1403         .id = SC7280_SLAVE_MNOC_SF_MEM_NOC,
1404         .channels = 1,
1405         .buswidth = 32,
1406         .num_links = 1,
1407         .links = { SC7280_MASTER_MNOC_SF_MEM_NOC },
1408 };
1409
1410 static struct qcom_icc_node srvc_mnoc = {
1411         .name = "srvc_mnoc",
1412         .id = SC7280_SLAVE_SERVICE_MNOC,
1413         .channels = 1,
1414         .buswidth = 4,
1415         .num_links = 0,
1416 };
1417
1418 static struct qcom_icc_node qns_nsp_gemnoc = {
1419         .name = "qns_nsp_gemnoc",
1420         .id = SC7280_SLAVE_CDSP_MEM_NOC,
1421         .channels = 2,
1422         .buswidth = 32,
1423         .num_links = 1,
1424         .links = { SC7280_MASTER_COMPUTE_NOC },
1425 };
1426
1427 static struct qcom_icc_node service_nsp_noc = {
1428         .name = "service_nsp_noc",
1429         .id = SC7280_SLAVE_SERVICE_NSP_NOC,
1430         .channels = 1,
1431         .buswidth = 4,
1432         .num_links = 0,
1433 };
1434
1435 static struct qcom_icc_node qns_gemnoc_gc = {
1436         .name = "qns_gemnoc_gc",
1437         .id = SC7280_SLAVE_SNOC_GEM_NOC_GC,
1438         .channels = 1,
1439         .buswidth = 8,
1440         .num_links = 1,
1441         .links = { SC7280_MASTER_SNOC_GC_MEM_NOC },
1442 };
1443
1444 static struct qcom_icc_node qns_gemnoc_sf = {
1445         .name = "qns_gemnoc_sf",
1446         .id = SC7280_SLAVE_SNOC_GEM_NOC_SF,
1447         .channels = 1,
1448         .buswidth = 16,
1449         .num_links = 1,
1450         .links = { SC7280_MASTER_SNOC_SF_MEM_NOC },
1451 };
1452
1453 static struct qcom_icc_node srvc_snoc = {
1454         .name = "srvc_snoc",
1455         .id = SC7280_SLAVE_SERVICE_SNOC,
1456         .channels = 1,
1457         .buswidth = 4,
1458         .num_links = 0,
1459 };
1460
1461 static struct qcom_icc_bcm bcm_acv = {
1462         .name = "ACV",
1463         .enable_mask = BIT(3),
1464         .num_nodes = 1,
1465         .nodes = { &ebi },
1466 };
1467
1468 static struct qcom_icc_bcm bcm_ce0 = {
1469         .name = "CE0",
1470         .num_nodes = 1,
1471         .nodes = { &qxm_crypto },
1472 };
1473
1474 static struct qcom_icc_bcm bcm_cn0 = {
1475         .name = "CN0",
1476         .keepalive = true,
1477         .num_nodes = 2,
1478         .nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie },
1479 };
1480
1481 static struct qcom_icc_bcm bcm_cn1 = {
1482         .name = "CN1",
1483         .num_nodes = 47,
1484         .nodes = { &qnm_cnoc3_cnoc2, &xm_qdss_dap,
1485                    &qhs_ahb2phy0, &qhs_ahb2phy1,
1486                    &qhs_camera_cfg, &qhs_clk_ctl,
1487                    &qhs_compute_cfg, &qhs_cpr_cx,
1488                    &qhs_cpr_mx, &qhs_crypto0_cfg,
1489                    &qhs_cx_rdpm, &qhs_dcc_cfg,
1490                    &qhs_display_cfg, &qhs_gpuss_cfg,
1491                    &qhs_hwkm, &qhs_imem_cfg,
1492                    &qhs_ipa, &qhs_ipc_router,
1493                    &qhs_mss_cfg, &qhs_mx_rdpm,
1494                    &qhs_pcie0_cfg, &qhs_pcie1_cfg,
1495                    &qhs_pimem_cfg, &qhs_pka_wrapper_cfg,
1496                    &qhs_pmu_wrapper_cfg, &qhs_qdss_cfg,
1497                    &qhs_qup0, &qhs_qup1,
1498                    &qhs_security, &qhs_tcsr,
1499                    &qhs_tlmm, &qhs_ufs_mem_cfg, &qhs_usb2,
1500                    &qhs_usb3_0, &qhs_venus_cfg,
1501                    &qhs_vsense_ctrl_cfg, &qns_a1_noc_cfg,
1502                    &qns_a2_noc_cfg, &qns_cnoc2_cnoc3,
1503                    &qns_mnoc_cfg, &qns_snoc_cfg,
1504                    &qnm_cnoc2_cnoc3, &qhs_aoss,
1505                    &qhs_apss, &qns_cnoc3_cnoc2,
1506                    &qns_cnoc_a2noc, &qns_ddrss_cfg },
1507 };
1508
1509 static struct qcom_icc_bcm bcm_cn2 = {
1510         .name = "CN2",
1511         .num_nodes = 6,
1512         .nodes = { &qhs_lpass_cfg, &qhs_pdm,
1513                    &qhs_qspi, &qhs_sdc1,
1514                    &qhs_sdc2, &qhs_sdc4 },
1515 };
1516
1517 static struct qcom_icc_bcm bcm_co0 = {
1518         .name = "CO0",
1519         .num_nodes = 1,
1520         .nodes = { &qns_nsp_gemnoc },
1521 };
1522
1523 static struct qcom_icc_bcm bcm_co3 = {
1524         .name = "CO3",
1525         .num_nodes = 1,
1526         .nodes = { &qxm_nsp },
1527 };
1528
1529 static struct qcom_icc_bcm bcm_mc0 = {
1530         .name = "MC0",
1531         .keepalive = true,
1532         .num_nodes = 1,
1533         .nodes = { &ebi },
1534 };
1535
1536 static struct qcom_icc_bcm bcm_mm0 = {
1537         .name = "MM0",
1538         .keepalive = true,
1539         .num_nodes = 1,
1540         .nodes = { &qns_mem_noc_hf },
1541 };
1542
1543 static struct qcom_icc_bcm bcm_mm1 = {
1544         .name = "MM1",
1545         .num_nodes = 2,
1546         .nodes = { &qxm_camnoc_hf, &qxm_mdp0 },
1547 };
1548
1549 static struct qcom_icc_bcm bcm_mm4 = {
1550         .name = "MM4",
1551         .num_nodes = 1,
1552         .nodes = { &qns_mem_noc_sf },
1553 };
1554
1555 static struct qcom_icc_bcm bcm_mm5 = {
1556         .name = "MM5",
1557         .num_nodes = 3,
1558         .nodes = { &qnm_video0, &qxm_camnoc_icp,
1559                    &qxm_camnoc_sf },
1560 };
1561
1562 static struct qcom_icc_bcm bcm_qup0 = {
1563         .name = "QUP0",
1564         .vote_scale = 1,
1565         .num_nodes = 1,
1566         .nodes = { &qup0_core_slave },
1567 };
1568
1569 static struct qcom_icc_bcm bcm_qup1 = {
1570         .name = "QUP1",
1571         .vote_scale = 1,
1572         .num_nodes = 1,
1573         .nodes = { &qup1_core_slave },
1574 };
1575
1576 static struct qcom_icc_bcm bcm_sh0 = {
1577         .name = "SH0",
1578         .keepalive = true,
1579         .num_nodes = 1,
1580         .nodes = { &qns_llcc },
1581 };
1582
1583 static struct qcom_icc_bcm bcm_sh2 = {
1584         .name = "SH2",
1585         .num_nodes = 2,
1586         .nodes = { &alm_gpu_tcu, &alm_sys_tcu },
1587 };
1588
1589 static struct qcom_icc_bcm bcm_sh3 = {
1590         .name = "SH3",
1591         .num_nodes = 1,
1592         .nodes = { &qnm_cmpnoc },
1593 };
1594
1595 static struct qcom_icc_bcm bcm_sh4 = {
1596         .name = "SH4",
1597         .num_nodes = 1,
1598         .nodes = { &chm_apps },
1599 };
1600
1601 static struct qcom_icc_bcm bcm_sn0 = {
1602         .name = "SN0",
1603         .keepalive = true,
1604         .num_nodes = 1,
1605         .nodes = { &qns_gemnoc_sf },
1606 };
1607
1608 static struct qcom_icc_bcm bcm_sn2 = {
1609         .name = "SN2",
1610         .num_nodes = 1,
1611         .nodes = { &qns_gemnoc_gc },
1612 };
1613
1614 static struct qcom_icc_bcm bcm_sn3 = {
1615         .name = "SN3",
1616         .num_nodes = 1,
1617         .nodes = { &qxs_pimem },
1618 };
1619
1620 static struct qcom_icc_bcm bcm_sn4 = {
1621         .name = "SN4",
1622         .num_nodes = 1,
1623         .nodes = { &xs_qdss_stm },
1624 };
1625
1626 static struct qcom_icc_bcm bcm_sn5 = {
1627         .name = "SN5",
1628         .num_nodes = 1,
1629         .nodes = { &xm_pcie3_0 },
1630 };
1631
1632 static struct qcom_icc_bcm bcm_sn6 = {
1633         .name = "SN6",
1634         .num_nodes = 1,
1635         .nodes = { &xm_pcie3_1 },
1636 };
1637
1638 static struct qcom_icc_bcm bcm_sn7 = {
1639         .name = "SN7",
1640         .num_nodes = 1,
1641         .nodes = { &qnm_aggre1_noc },
1642 };
1643
1644 static struct qcom_icc_bcm bcm_sn8 = {
1645         .name = "SN8",
1646         .num_nodes = 1,
1647         .nodes = { &qnm_aggre2_noc },
1648 };
1649
1650 static struct qcom_icc_bcm bcm_sn14 = {
1651         .name = "SN14",
1652         .num_nodes = 1,
1653         .nodes = { &qns_pcie_mem_noc },
1654 };
1655
1656 static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
1657         &bcm_sn5,
1658         &bcm_sn6,
1659         &bcm_sn14,
1660 };
1661
1662 static struct qcom_icc_node * const aggre1_noc_nodes[] = {
1663         [MASTER_QSPI_0] = &qhm_qspi,
1664         [MASTER_QUP_0] = &qhm_qup0,
1665         [MASTER_QUP_1] = &qhm_qup1,
1666         [MASTER_A1NOC_CFG] = &qnm_a1noc_cfg,
1667         [MASTER_PCIE_0] = &xm_pcie3_0,
1668         [MASTER_PCIE_1] = &xm_pcie3_1,
1669         [MASTER_SDCC_1] = &xm_sdc1,
1670         [MASTER_SDCC_2] = &xm_sdc2,
1671         [MASTER_SDCC_4] = &xm_sdc4,
1672         [MASTER_UFS_MEM] = &xm_ufs_mem,
1673         [MASTER_USB2] = &xm_usb2,
1674         [MASTER_USB3_0] = &xm_usb3_0,
1675         [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
1676         [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc,
1677         [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc,
1678 };
1679
1680 static const struct regmap_config sc7280_aggre1_noc_regmap_config = {
1681         .reg_bits = 32,
1682         .reg_stride = 4,
1683         .val_bits = 32,
1684         .max_register = 0x1c080,
1685         .fast_io = true,
1686 };
1687
1688 static const struct qcom_icc_desc sc7280_aggre1_noc = {
1689         .config = &sc7280_aggre1_noc_regmap_config,
1690         .nodes = aggre1_noc_nodes,
1691         .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
1692         .bcms = aggre1_noc_bcms,
1693         .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
1694         .qos_requires_clocks = true,
1695 };
1696
1697 static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
1698         &bcm_ce0,
1699 };
1700
1701 static const struct regmap_config sc7280_aggre2_noc_regmap_config = {
1702         .reg_bits = 32,
1703         .reg_stride = 4,
1704         .val_bits = 32,
1705         .max_register = 0x2b080,
1706         .fast_io = true,
1707 };
1708
1709 static struct qcom_icc_node * const aggre2_noc_nodes[] = {
1710         [MASTER_QDSS_BAM] = &qhm_qdss_bam,
1711         [MASTER_A2NOC_CFG] = &qnm_a2noc_cfg,
1712         [MASTER_CNOC_A2NOC] = &qnm_cnoc_datapath,
1713         [MASTER_CRYPTO] = &qxm_crypto,
1714         [MASTER_IPA] = &qxm_ipa,
1715         [MASTER_QDSS_ETR] = &xm_qdss_etr,
1716         [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
1717         [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc,
1718 };
1719
1720 static const struct qcom_icc_desc sc7280_aggre2_noc = {
1721         .config = &sc7280_aggre2_noc_regmap_config,
1722         .nodes = aggre2_noc_nodes,
1723         .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
1724         .bcms = aggre2_noc_bcms,
1725         .num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
1726         .qos_requires_clocks = true,
1727 };
1728
1729 static struct qcom_icc_bcm * const clk_virt_bcms[] = {
1730         &bcm_qup0,
1731         &bcm_qup1,
1732 };
1733
1734 static struct qcom_icc_node * const clk_virt_nodes[] = {
1735         [MASTER_QUP_CORE_0] = &qup0_core_master,
1736         [MASTER_QUP_CORE_1] = &qup1_core_master,
1737         [SLAVE_QUP_CORE_0] = &qup0_core_slave,
1738         [SLAVE_QUP_CORE_1] = &qup1_core_slave,
1739 };
1740
1741 static const struct qcom_icc_desc sc7280_clk_virt = {
1742         .nodes = clk_virt_nodes,
1743         .num_nodes = ARRAY_SIZE(clk_virt_nodes),
1744         .bcms = clk_virt_bcms,
1745         .num_bcms = ARRAY_SIZE(clk_virt_bcms),
1746 };
1747
1748 static struct qcom_icc_bcm * const cnoc2_bcms[] = {
1749         &bcm_cn1,
1750         &bcm_cn2,
1751 };
1752
1753 static struct qcom_icc_node * const cnoc2_nodes[] = {
1754         [MASTER_CNOC3_CNOC2] = &qnm_cnoc3_cnoc2,
1755         [MASTER_QDSS_DAP] = &xm_qdss_dap,
1756         [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0,
1757         [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1,
1758         [SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
1759         [SLAVE_CLK_CTL] = &qhs_clk_ctl,
1760         [SLAVE_CDSP_CFG] = &qhs_compute_cfg,
1761         [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
1762         [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx,
1763         [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
1764         [SLAVE_CX_RDPM] = &qhs_cx_rdpm,
1765         [SLAVE_DCC_CFG] = &qhs_dcc_cfg,
1766         [SLAVE_DISPLAY_CFG] = &qhs_display_cfg,
1767         [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
1768         [SLAVE_HWKM] = &qhs_hwkm,
1769         [SLAVE_IMEM_CFG] = &qhs_imem_cfg,
1770         [SLAVE_IPA_CFG] = &qhs_ipa,
1771         [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
1772         [SLAVE_LPASS] = &qhs_lpass_cfg,
1773         [SLAVE_CNOC_MSS] = &qhs_mss_cfg,
1774         [SLAVE_MX_RDPM] = &qhs_mx_rdpm,
1775         [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
1776         [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
1777         [SLAVE_PDM] = &qhs_pdm,
1778         [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
1779         [SLAVE_PKA_WRAPPER_CFG] = &qhs_pka_wrapper_cfg,
1780         [SLAVE_PMU_WRAPPER_CFG] = &qhs_pmu_wrapper_cfg,
1781         [SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
1782         [SLAVE_QSPI_0] = &qhs_qspi,
1783         [SLAVE_QUP_0] = &qhs_qup0,
1784         [SLAVE_QUP_1] = &qhs_qup1,
1785         [SLAVE_SDCC_1] = &qhs_sdc1,
1786         [SLAVE_SDCC_2] = &qhs_sdc2,
1787         [SLAVE_SDCC_4] = &qhs_sdc4,
1788         [SLAVE_SECURITY] = &qhs_security,
1789         [SLAVE_TCSR] = &qhs_tcsr,
1790         [SLAVE_TLMM] = &qhs_tlmm,
1791         [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
1792         [SLAVE_USB2] = &qhs_usb2,
1793         [SLAVE_USB3_0] = &qhs_usb3_0,
1794         [SLAVE_VENUS_CFG] = &qhs_venus_cfg,
1795         [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg,
1796         [SLAVE_A1NOC_CFG] = &qns_a1_noc_cfg,
1797         [SLAVE_A2NOC_CFG] = &qns_a2_noc_cfg,
1798         [SLAVE_CNOC2_CNOC3] = &qns_cnoc2_cnoc3,
1799         [SLAVE_CNOC_MNOC_CFG] = &qns_mnoc_cfg,
1800         [SLAVE_SNOC_CFG] = &qns_snoc_cfg,
1801 };
1802
1803 static const struct regmap_config sc7280_cnoc2_regmap_config = {
1804         .reg_bits = 32,
1805         .reg_stride = 4,
1806         .val_bits = 32,
1807         .max_register = 0x1000,
1808         .fast_io = true,
1809 };
1810
1811 static const struct qcom_icc_desc sc7280_cnoc2 = {
1812         .config = &sc7280_cnoc2_regmap_config,
1813         .nodes = cnoc2_nodes,
1814         .num_nodes = ARRAY_SIZE(cnoc2_nodes),
1815         .bcms = cnoc2_bcms,
1816         .num_bcms = ARRAY_SIZE(cnoc2_bcms),
1817 };
1818
1819 static struct qcom_icc_bcm * const cnoc3_bcms[] = {
1820         &bcm_cn0,
1821         &bcm_cn1,
1822         &bcm_sn3,
1823         &bcm_sn4,
1824 };
1825
1826 static struct qcom_icc_node * const cnoc3_nodes[] = {
1827         [MASTER_CNOC2_CNOC3] = &qnm_cnoc2_cnoc3,
1828         [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc,
1829         [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie,
1830         [SLAVE_AOSS] = &qhs_aoss,
1831         [SLAVE_APPSS] = &qhs_apss,
1832         [SLAVE_CNOC3_CNOC2] = &qns_cnoc3_cnoc2,
1833         [SLAVE_CNOC_A2NOC] = &qns_cnoc_a2noc,
1834         [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg,
1835         [SLAVE_BOOT_IMEM] = &qxs_boot_imem,
1836         [SLAVE_IMEM] = &qxs_imem,
1837         [SLAVE_PIMEM] = &qxs_pimem,
1838         [SLAVE_PCIE_0] = &xs_pcie_0,
1839         [SLAVE_PCIE_1] = &xs_pcie_1,
1840         [SLAVE_QDSS_STM] = &xs_qdss_stm,
1841         [SLAVE_TCU] = &xs_sys_tcu_cfg,
1842 };
1843
1844 static const struct regmap_config sc7280_cnoc3_regmap_config = {
1845         .reg_bits = 32,
1846         .reg_stride = 4,
1847         .val_bits = 32,
1848         .max_register = 0x1000,
1849         .fast_io = true,
1850 };
1851
1852 static const struct qcom_icc_desc sc7280_cnoc3 = {
1853         .config = &sc7280_cnoc3_regmap_config,
1854         .nodes = cnoc3_nodes,
1855         .num_nodes = ARRAY_SIZE(cnoc3_nodes),
1856         .bcms = cnoc3_bcms,
1857         .num_bcms = ARRAY_SIZE(cnoc3_bcms),
1858 };
1859
1860 static struct qcom_icc_bcm * const dc_noc_bcms[] = {
1861 };
1862
1863 static struct qcom_icc_node * const dc_noc_nodes[] = {
1864         [MASTER_CNOC_DC_NOC] = &qnm_cnoc_dc_noc,
1865         [SLAVE_LLCC_CFG] = &qhs_llcc,
1866         [SLAVE_GEM_NOC_CFG] = &qns_gemnoc,
1867 };
1868
1869 static const struct regmap_config sc7280_dc_noc_regmap_config = {
1870         .reg_bits = 32,
1871         .reg_stride = 4,
1872         .val_bits = 32,
1873         .max_register = 0x5080,
1874         .fast_io = true,
1875 };
1876
1877 static const struct qcom_icc_desc sc7280_dc_noc = {
1878         .config = &sc7280_dc_noc_regmap_config,
1879         .nodes = dc_noc_nodes,
1880         .num_nodes = ARRAY_SIZE(dc_noc_nodes),
1881         .bcms = dc_noc_bcms,
1882         .num_bcms = ARRAY_SIZE(dc_noc_bcms),
1883 };
1884
1885 static struct qcom_icc_bcm * const gem_noc_bcms[] = {
1886         &bcm_sh0,
1887         &bcm_sh2,
1888         &bcm_sh3,
1889         &bcm_sh4,
1890 };
1891
1892 static struct qcom_icc_node * const gem_noc_nodes[] = {
1893         [MASTER_GPU_TCU] = &alm_gpu_tcu,
1894         [MASTER_SYS_TCU] = &alm_sys_tcu,
1895         [MASTER_APPSS_PROC] = &chm_apps,
1896         [MASTER_COMPUTE_NOC] = &qnm_cmpnoc,
1897         [MASTER_GEM_NOC_CFG] = &qnm_gemnoc_cfg,
1898         [MASTER_GFX3D] = &qnm_gpu,
1899         [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
1900         [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
1901         [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie,
1902         [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
1903         [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
1904         [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg,
1905         [SLAVE_MCDMA_MS_MPU_CFG] = &qhs_modem_ms_mpu_cfg,
1906         [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc,
1907         [SLAVE_LLCC] = &qns_llcc,
1908         [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie,
1909         [SLAVE_SERVICE_GEM_NOC_1] = &srvc_even_gemnoc,
1910         [SLAVE_SERVICE_GEM_NOC_2] = &srvc_odd_gemnoc,
1911         [SLAVE_SERVICE_GEM_NOC] = &srvc_sys_gemnoc,
1912 };
1913
1914 static const struct regmap_config sc7280_gem_noc_regmap_config = {
1915         .reg_bits = 32,
1916         .reg_stride = 4,
1917         .val_bits = 32,
1918         .max_register = 0xe2200,
1919         .fast_io = true,
1920 };
1921
1922 static const struct qcom_icc_desc sc7280_gem_noc = {
1923         .config = &sc7280_gem_noc_regmap_config,
1924         .nodes = gem_noc_nodes,
1925         .num_nodes = ARRAY_SIZE(gem_noc_nodes),
1926         .bcms = gem_noc_bcms,
1927         .num_bcms = ARRAY_SIZE(gem_noc_bcms),
1928 };
1929
1930 static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = {
1931 };
1932
1933 static struct qcom_icc_node * const lpass_ag_noc_nodes[] = {
1934         [MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc,
1935         [SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core,
1936         [SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi,
1937         [SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu,
1938         [SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top,
1939         [SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc,
1940         [SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
1941 };
1942
1943 static const struct regmap_config sc7280_lpass_ag_noc_regmap_config = {
1944         .reg_bits = 32,
1945         .reg_stride = 4,
1946         .val_bits = 32,
1947         .max_register = 0xf080,
1948         .fast_io = true,
1949 };
1950
1951 static const struct qcom_icc_desc sc7280_lpass_ag_noc = {
1952         .config = &sc7280_lpass_ag_noc_regmap_config,
1953         .nodes = lpass_ag_noc_nodes,
1954         .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
1955         .bcms = lpass_ag_noc_bcms,
1956         .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms),
1957 };
1958
1959 static struct qcom_icc_bcm * const mc_virt_bcms[] = {
1960         &bcm_acv,
1961         &bcm_mc0,
1962 };
1963
1964 static struct qcom_icc_node * const mc_virt_nodes[] = {
1965         [MASTER_LLCC] = &llcc_mc,
1966         [SLAVE_EBI1] = &ebi,
1967 };
1968
1969 static const struct regmap_config sc7280_mc_virt_regmap_config = {
1970         .reg_bits = 32,
1971         .reg_stride = 4,
1972         .val_bits = 32,
1973         .max_register = 0x4,
1974         .fast_io = true,
1975 };
1976
1977 static const struct qcom_icc_desc sc7280_mc_virt = {
1978         .config = &sc7280_mc_virt_regmap_config,
1979         .nodes = mc_virt_nodes,
1980         .num_nodes = ARRAY_SIZE(mc_virt_nodes),
1981         .bcms = mc_virt_bcms,
1982         .num_bcms = ARRAY_SIZE(mc_virt_bcms),
1983 };
1984
1985 static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
1986         &bcm_mm0,
1987         &bcm_mm1,
1988         &bcm_mm4,
1989         &bcm_mm5,
1990 };
1991
1992 static struct qcom_icc_node * const mmss_noc_nodes[] = {
1993         [MASTER_CNOC_MNOC_CFG] = &qnm_mnoc_cfg,
1994         [MASTER_VIDEO_P0] = &qnm_video0,
1995         [MASTER_VIDEO_PROC] = &qnm_video_cpu,
1996         [MASTER_CAMNOC_HF] = &qxm_camnoc_hf,
1997         [MASTER_CAMNOC_ICP] = &qxm_camnoc_icp,
1998         [MASTER_CAMNOC_SF] = &qxm_camnoc_sf,
1999         [MASTER_MDP0] = &qxm_mdp0,
2000         [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
2001         [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
2002         [SLAVE_SERVICE_MNOC] = &srvc_mnoc,
2003 };
2004
2005 static const struct regmap_config sc7280_mmss_noc_regmap_config = {
2006         .reg_bits = 32,
2007         .reg_stride = 4,
2008         .val_bits = 32,
2009         .max_register = 0x1e080,
2010         .fast_io = true,
2011 };
2012
2013 static const struct qcom_icc_desc sc7280_mmss_noc = {
2014         .config = &sc7280_mmss_noc_regmap_config,
2015         .nodes = mmss_noc_nodes,
2016         .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
2017         .bcms = mmss_noc_bcms,
2018         .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
2019 };
2020
2021 static struct qcom_icc_bcm * const nsp_noc_bcms[] = {
2022         &bcm_co0,
2023         &bcm_co3,
2024 };
2025
2026 static struct qcom_icc_node * const nsp_noc_nodes[] = {
2027         [MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config,
2028         [MASTER_CDSP_PROC] = &qxm_nsp,
2029         [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
2030         [SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
2031 };
2032
2033 static const struct regmap_config sc7280_nsp_noc_regmap_config = {
2034         .reg_bits = 32,
2035         .reg_stride = 4,
2036         .val_bits = 32,
2037         .max_register = 0x10000,
2038         .fast_io = true,
2039 };
2040
2041 static const struct qcom_icc_desc sc7280_nsp_noc = {
2042         .config = &sc7280_nsp_noc_regmap_config,
2043         .nodes = nsp_noc_nodes,
2044         .num_nodes = ARRAY_SIZE(nsp_noc_nodes),
2045         .bcms = nsp_noc_bcms,
2046         .num_bcms = ARRAY_SIZE(nsp_noc_bcms),
2047 };
2048
2049 static struct qcom_icc_bcm * const system_noc_bcms[] = {
2050         &bcm_sn0,
2051         &bcm_sn2,
2052         &bcm_sn7,
2053         &bcm_sn8,
2054 };
2055
2056 static struct qcom_icc_node * const system_noc_nodes[] = {
2057         [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
2058         [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
2059         [MASTER_SNOC_CFG] = &qnm_snoc_cfg,
2060         [MASTER_PIMEM] = &qxm_pimem,
2061         [MASTER_GIC] = &xm_gic,
2062         [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc,
2063         [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
2064         [SLAVE_SERVICE_SNOC] = &srvc_snoc,
2065 };
2066
2067 static const struct regmap_config sc7280_system_noc_regmap_config = {
2068         .reg_bits = 32,
2069         .reg_stride = 4,
2070         .val_bits = 32,
2071         .max_register = 0x15480,
2072         .fast_io = true,
2073 };
2074
2075 static const struct qcom_icc_desc sc7280_system_noc = {
2076         .config = &sc7280_system_noc_regmap_config,
2077         .nodes = system_noc_nodes,
2078         .num_nodes = ARRAY_SIZE(system_noc_nodes),
2079         .bcms = system_noc_bcms,
2080         .num_bcms = ARRAY_SIZE(system_noc_bcms),
2081 };
2082
2083 static const struct of_device_id qnoc_of_match[] = {
2084         { .compatible = "qcom,sc7280-aggre1-noc",
2085           .data = &sc7280_aggre1_noc},
2086         { .compatible = "qcom,sc7280-aggre2-noc",
2087           .data = &sc7280_aggre2_noc},
2088         { .compatible = "qcom,sc7280-clk-virt",
2089           .data = &sc7280_clk_virt},
2090         { .compatible = "qcom,sc7280-cnoc2",
2091           .data = &sc7280_cnoc2},
2092         { .compatible = "qcom,sc7280-cnoc3",
2093           .data = &sc7280_cnoc3},
2094         { .compatible = "qcom,sc7280-dc-noc",
2095           .data = &sc7280_dc_noc},
2096         { .compatible = "qcom,sc7280-gem-noc",
2097           .data = &sc7280_gem_noc},
2098         { .compatible = "qcom,sc7280-lpass-ag-noc",
2099           .data = &sc7280_lpass_ag_noc},
2100         { .compatible = "qcom,sc7280-mc-virt",
2101           .data = &sc7280_mc_virt},
2102         { .compatible = "qcom,sc7280-mmss-noc",
2103           .data = &sc7280_mmss_noc},
2104         { .compatible = "qcom,sc7280-nsp-noc",
2105           .data = &sc7280_nsp_noc},
2106         { .compatible = "qcom,sc7280-system-noc",
2107           .data = &sc7280_system_noc},
2108         { }
2109 };
2110 MODULE_DEVICE_TABLE(of, qnoc_of_match);
2111
2112 static struct platform_driver qnoc_driver = {
2113         .probe = qcom_icc_rpmh_probe,
2114         .remove = qcom_icc_rpmh_remove,
2115         .driver = {
2116                 .name = "qnoc-sc7280",
2117                 .of_match_table = qnoc_of_match,
2118                 .sync_state = icc_sync_state,
2119         },
2120 };
2121 module_platform_driver(qnoc_driver);
2122
2123 MODULE_DESCRIPTION("SC7280 NoC driver");
2124 MODULE_LICENSE("GPL v2");
This page took 0.14379 seconds and 4 git commands to generate.