xref: /openbmc/linux/drivers/interconnect/qcom/sdx65.c (revision a5403ec6758de958b459aaf3042878794714165c)
139a53928SRohit Agarwal // SPDX-License-Identifier: GPL-2.0-only
239a53928SRohit Agarwal /*
339a53928SRohit Agarwal  * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
439a53928SRohit Agarwal  */
539a53928SRohit Agarwal 
639a53928SRohit Agarwal #include <linux/device.h>
739a53928SRohit Agarwal #include <linux/interconnect.h>
839a53928SRohit Agarwal #include <linux/interconnect-provider.h>
9cff66aceSRob Herring #include <linux/mod_devicetable.h>
1039a53928SRohit Agarwal #include <linux/module.h>
11cff66aceSRob Herring #include <linux/platform_device.h>
1239a53928SRohit Agarwal #include <dt-bindings/interconnect/qcom,sdx65.h>
1339a53928SRohit Agarwal 
1439a53928SRohit Agarwal #include "bcm-voter.h"
1539a53928SRohit Agarwal #include "icc-rpmh.h"
1639a53928SRohit Agarwal #include "sdx65.h"
1739a53928SRohit Agarwal 
18*a5403ec6SKonrad Dybcio static struct qcom_icc_node llcc_mc = {
19*a5403ec6SKonrad Dybcio 	.name = "llcc_mc",
20*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_LLCC,
21*a5403ec6SKonrad Dybcio 	.channels = 1,
22*a5403ec6SKonrad Dybcio 	.buswidth = 4,
23*a5403ec6SKonrad Dybcio 	.num_links = 1,
24*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_EBI1 },
25*a5403ec6SKonrad Dybcio };
26*a5403ec6SKonrad Dybcio 
27*a5403ec6SKonrad Dybcio static struct qcom_icc_node acm_tcu = {
28*a5403ec6SKonrad Dybcio 	.name = "acm_tcu",
29*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_TCU_0,
30*a5403ec6SKonrad Dybcio 	.channels = 1,
31*a5403ec6SKonrad Dybcio 	.buswidth = 8,
32*a5403ec6SKonrad Dybcio 	.num_links = 3,
33*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_LLCC,
34*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_SNOC,
35*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_PCIE_SNOC
36*a5403ec6SKonrad Dybcio 	},
37*a5403ec6SKonrad Dybcio };
38*a5403ec6SKonrad Dybcio 
39*a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_snoc_gc = {
40*a5403ec6SKonrad Dybcio 	.name = "qnm_snoc_gc",
41*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SNOC_GC_MEM_NOC,
42*a5403ec6SKonrad Dybcio 	.channels = 1,
43*a5403ec6SKonrad Dybcio 	.buswidth = 16,
44*a5403ec6SKonrad Dybcio 	.num_links = 1,
45*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_LLCC },
46*a5403ec6SKonrad Dybcio };
47*a5403ec6SKonrad Dybcio 
48*a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_apps_rdwr = {
49*a5403ec6SKonrad Dybcio 	.name = "xm_apps_rdwr",
50*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_APPSS_PROC,
51*a5403ec6SKonrad Dybcio 	.channels = 1,
52*a5403ec6SKonrad Dybcio 	.buswidth = 16,
53*a5403ec6SKonrad Dybcio 	.num_links = 3,
54*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_LLCC,
55*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_SNOC,
56*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_PCIE_SNOC
57*a5403ec6SKonrad Dybcio 	},
58*a5403ec6SKonrad Dybcio };
59*a5403ec6SKonrad Dybcio 
60*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_audio = {
61*a5403ec6SKonrad Dybcio 	.name = "qhm_audio",
62*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_AUDIO,
63*a5403ec6SKonrad Dybcio 	.channels = 1,
64*a5403ec6SKonrad Dybcio 	.buswidth = 4,
65*a5403ec6SKonrad Dybcio 	.num_links = 1,
66*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
67*a5403ec6SKonrad Dybcio };
68*a5403ec6SKonrad Dybcio 
69*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_blsp1 = {
70*a5403ec6SKonrad Dybcio 	.name = "qhm_blsp1",
71*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_BLSP_1,
72*a5403ec6SKonrad Dybcio 	.channels = 1,
73*a5403ec6SKonrad Dybcio 	.buswidth = 4,
74*a5403ec6SKonrad Dybcio 	.num_links = 1,
75*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
76*a5403ec6SKonrad Dybcio };
77*a5403ec6SKonrad Dybcio 
78*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_qdss_bam = {
79*a5403ec6SKonrad Dybcio 	.name = "qhm_qdss_bam",
80*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_QDSS_BAM,
81*a5403ec6SKonrad Dybcio 	.channels = 1,
82*a5403ec6SKonrad Dybcio 	.buswidth = 4,
83*a5403ec6SKonrad Dybcio 	.num_links = 26,
84*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
85*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
86*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
87*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
88*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
89*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
90*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
91*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
92*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
93*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
94*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
95*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
96*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
97*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
98*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
99*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
100*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
101*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
102*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
103*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
104*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
105*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
106*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
107*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
108*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
109*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
110*a5403ec6SKonrad Dybcio 	},
111*a5403ec6SKonrad Dybcio };
112*a5403ec6SKonrad Dybcio 
113*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_qpic = {
114*a5403ec6SKonrad Dybcio 	.name = "qhm_qpic",
115*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_QPIC,
116*a5403ec6SKonrad Dybcio 	.channels = 1,
117*a5403ec6SKonrad Dybcio 	.buswidth = 4,
118*a5403ec6SKonrad Dybcio 	.num_links = 4,
119*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
120*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
121*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
122*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
123*a5403ec6SKonrad Dybcio 	},
124*a5403ec6SKonrad Dybcio };
125*a5403ec6SKonrad Dybcio 
126*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_snoc_cfg = {
127*a5403ec6SKonrad Dybcio 	.name = "qhm_snoc_cfg",
128*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SNOC_CFG,
129*a5403ec6SKonrad Dybcio 	.channels = 1,
130*a5403ec6SKonrad Dybcio 	.buswidth = 4,
131*a5403ec6SKonrad Dybcio 	.num_links = 1,
132*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_SERVICE_SNOC },
133*a5403ec6SKonrad Dybcio };
134*a5403ec6SKonrad Dybcio 
135*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_spmi_fetcher1 = {
136*a5403ec6SKonrad Dybcio 	.name = "qhm_spmi_fetcher1",
137*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SPMI_FETCHER,
138*a5403ec6SKonrad Dybcio 	.channels = 1,
139*a5403ec6SKonrad Dybcio 	.buswidth = 4,
140*a5403ec6SKonrad Dybcio 	.num_links = 2,
141*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
142*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
143*a5403ec6SKonrad Dybcio 	},
144*a5403ec6SKonrad Dybcio };
145*a5403ec6SKonrad Dybcio 
146*a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_aggre_noc = {
147*a5403ec6SKonrad Dybcio 	.name = "qnm_aggre_noc",
148*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_ANOC_SNOC,
149*a5403ec6SKonrad Dybcio 	.channels = 1,
150*a5403ec6SKonrad Dybcio 	.buswidth = 8,
151*a5403ec6SKonrad Dybcio 	.num_links = 29,
152*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
153*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_APPSS,
154*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
155*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
156*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
157*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
158*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
159*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
160*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
161*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
162*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
163*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
164*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
165*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
166*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
167*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
168*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
169*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
170*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
171*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
172*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
173*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
174*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
175*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
176*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
177*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
178*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_0,
179*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_STM,
180*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
181*a5403ec6SKonrad Dybcio 	},
182*a5403ec6SKonrad Dybcio };
183*a5403ec6SKonrad Dybcio 
184*a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_ipa = {
185*a5403ec6SKonrad Dybcio 	.name = "qnm_ipa",
186*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_IPA,
187*a5403ec6SKonrad Dybcio 	.channels = 1,
188*a5403ec6SKonrad Dybcio 	.buswidth = 8,
189*a5403ec6SKonrad Dybcio 	.num_links = 26,
190*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
191*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
192*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
193*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
194*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
195*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
196*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
197*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
198*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
199*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
200*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
201*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
202*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
203*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
204*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
205*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
206*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
207*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
208*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
209*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
210*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
211*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
212*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
213*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
214*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_0,
215*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_STM
216*a5403ec6SKonrad Dybcio 	},
217*a5403ec6SKonrad Dybcio };
218*a5403ec6SKonrad Dybcio 
219*a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_memnoc = {
220*a5403ec6SKonrad Dybcio 	.name = "qnm_memnoc",
221*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_MEM_NOC_SNOC,
222*a5403ec6SKonrad Dybcio 	.channels = 1,
223*a5403ec6SKonrad Dybcio 	.buswidth = 8,
224*a5403ec6SKonrad Dybcio 	.num_links = 27,
225*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
226*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_APPSS,
227*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
228*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
229*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
230*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
231*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
232*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
233*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
234*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
235*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
236*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
237*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
238*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
239*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
240*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
241*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
242*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
243*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
244*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
245*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
246*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
247*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
248*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
249*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
250*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_STM,
251*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
252*a5403ec6SKonrad Dybcio 	},
253*a5403ec6SKonrad Dybcio };
254*a5403ec6SKonrad Dybcio 
255*a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_memnoc_pcie = {
256*a5403ec6SKonrad Dybcio 	.name = "qnm_memnoc_pcie",
257*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_MEM_NOC_PCIE_SNOC,
258*a5403ec6SKonrad Dybcio 	.channels = 1,
259*a5403ec6SKonrad Dybcio 	.buswidth = 8,
260*a5403ec6SKonrad Dybcio 	.num_links = 1,
261*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_PCIE_0 },
262*a5403ec6SKonrad Dybcio };
263*a5403ec6SKonrad Dybcio 
264*a5403ec6SKonrad Dybcio static struct qcom_icc_node qxm_crypto = {
265*a5403ec6SKonrad Dybcio 	.name = "qxm_crypto",
266*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_CRYPTO,
267*a5403ec6SKonrad Dybcio 	.channels = 1,
268*a5403ec6SKonrad Dybcio 	.buswidth = 8,
269*a5403ec6SKonrad Dybcio 	.num_links = 2,
270*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
271*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
272*a5403ec6SKonrad Dybcio 	},
273*a5403ec6SKonrad Dybcio };
274*a5403ec6SKonrad Dybcio 
275*a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_ipa2pcie_slv = {
276*a5403ec6SKonrad Dybcio 	.name = "xm_ipa2pcie_slv",
277*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_IPA_PCIE,
278*a5403ec6SKonrad Dybcio 	.channels = 1,
279*a5403ec6SKonrad Dybcio 	.buswidth = 8,
280*a5403ec6SKonrad Dybcio 	.num_links = 1,
281*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_PCIE_0 },
282*a5403ec6SKonrad Dybcio };
283*a5403ec6SKonrad Dybcio 
284*a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_pcie = {
285*a5403ec6SKonrad Dybcio 	.name = "xm_pcie",
286*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_PCIE_0,
287*a5403ec6SKonrad Dybcio 	.channels = 1,
288*a5403ec6SKonrad Dybcio 	.buswidth = 8,
289*a5403ec6SKonrad Dybcio 	.num_links = 1,
290*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
291*a5403ec6SKonrad Dybcio };
292*a5403ec6SKonrad Dybcio 
293*a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_qdss_etr = {
294*a5403ec6SKonrad Dybcio 	.name = "xm_qdss_etr",
295*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_QDSS_ETR,
296*a5403ec6SKonrad Dybcio 	.channels = 1,
297*a5403ec6SKonrad Dybcio 	.buswidth = 8,
298*a5403ec6SKonrad Dybcio 	.num_links = 26,
299*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
300*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
301*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
302*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
303*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
304*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
305*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
306*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
307*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
308*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
309*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
310*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
311*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
312*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
313*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
314*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
315*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
316*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
317*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
318*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
319*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
320*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
321*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
322*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
323*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
324*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
325*a5403ec6SKonrad Dybcio 	},
326*a5403ec6SKonrad Dybcio };
327*a5403ec6SKonrad Dybcio 
328*a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_sdc1 = {
329*a5403ec6SKonrad Dybcio 	.name = "xm_sdc1",
330*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SDCC_1,
331*a5403ec6SKonrad Dybcio 	.channels = 1,
332*a5403ec6SKonrad Dybcio 	.buswidth = 8,
333*a5403ec6SKonrad Dybcio 	.num_links = 4,
334*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
335*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
336*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
337*a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
338*a5403ec6SKonrad Dybcio 	},
339*a5403ec6SKonrad Dybcio };
340*a5403ec6SKonrad Dybcio 
341*a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_usb3 = {
342*a5403ec6SKonrad Dybcio 	.name = "xm_usb3",
343*a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_USB3,
344*a5403ec6SKonrad Dybcio 	.channels = 1,
345*a5403ec6SKonrad Dybcio 	.buswidth = 8,
346*a5403ec6SKonrad Dybcio 	.num_links = 1,
347*a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
348*a5403ec6SKonrad Dybcio };
349*a5403ec6SKonrad Dybcio 
350*a5403ec6SKonrad Dybcio static struct qcom_icc_node ebi = {
351*a5403ec6SKonrad Dybcio 	.name = "ebi",
352*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_EBI1,
353*a5403ec6SKonrad Dybcio 	.channels = 1,
354*a5403ec6SKonrad Dybcio 	.buswidth = 4,
355*a5403ec6SKonrad Dybcio };
356*a5403ec6SKonrad Dybcio 
357*a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_llcc = {
358*a5403ec6SKonrad Dybcio 	.name = "qns_llcc",
359*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_LLCC,
360*a5403ec6SKonrad Dybcio 	.channels = 1,
361*a5403ec6SKonrad Dybcio 	.buswidth = 16,
362*a5403ec6SKonrad Dybcio 	.num_links = 1,
363*a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_LLCC },
364*a5403ec6SKonrad Dybcio };
365*a5403ec6SKonrad Dybcio 
366*a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_memnoc_snoc = {
367*a5403ec6SKonrad Dybcio 	.name = "qns_memnoc_snoc",
368*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_MEM_NOC_SNOC,
369*a5403ec6SKonrad Dybcio 	.channels = 1,
370*a5403ec6SKonrad Dybcio 	.buswidth = 8,
371*a5403ec6SKonrad Dybcio 	.num_links = 1,
372*a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_MEM_NOC_SNOC },
373*a5403ec6SKonrad Dybcio };
374*a5403ec6SKonrad Dybcio 
375*a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_sys_pcie = {
376*a5403ec6SKonrad Dybcio 	.name = "qns_sys_pcie",
377*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_MEM_NOC_PCIE_SNOC,
378*a5403ec6SKonrad Dybcio 	.channels = 1,
379*a5403ec6SKonrad Dybcio 	.buswidth = 8,
380*a5403ec6SKonrad Dybcio 	.num_links = 1,
381*a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_MEM_NOC_PCIE_SNOC },
382*a5403ec6SKonrad Dybcio };
383*a5403ec6SKonrad Dybcio 
384*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_aoss = {
385*a5403ec6SKonrad Dybcio 	.name = "qhs_aoss",
386*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_AOSS,
387*a5403ec6SKonrad Dybcio 	.channels = 1,
388*a5403ec6SKonrad Dybcio 	.buswidth = 4,
389*a5403ec6SKonrad Dybcio };
390*a5403ec6SKonrad Dybcio 
391*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_apss = {
392*a5403ec6SKonrad Dybcio 	.name = "qhs_apss",
393*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_APPSS,
394*a5403ec6SKonrad Dybcio 	.channels = 1,
395*a5403ec6SKonrad Dybcio 	.buswidth = 4,
396*a5403ec6SKonrad Dybcio };
397*a5403ec6SKonrad Dybcio 
398*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_audio = {
399*a5403ec6SKonrad Dybcio 	.name = "qhs_audio",
400*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_AUDIO,
401*a5403ec6SKonrad Dybcio 	.channels = 1,
402*a5403ec6SKonrad Dybcio 	.buswidth = 4,
403*a5403ec6SKonrad Dybcio };
404*a5403ec6SKonrad Dybcio 
405*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_blsp1 = {
406*a5403ec6SKonrad Dybcio 	.name = "qhs_blsp1",
407*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_BLSP_1,
408*a5403ec6SKonrad Dybcio 	.channels = 1,
409*a5403ec6SKonrad Dybcio 	.buswidth = 4,
410*a5403ec6SKonrad Dybcio };
411*a5403ec6SKonrad Dybcio 
412*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_clk_ctl = {
413*a5403ec6SKonrad Dybcio 	.name = "qhs_clk_ctl",
414*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CLK_CTL,
415*a5403ec6SKonrad Dybcio 	.channels = 1,
416*a5403ec6SKonrad Dybcio 	.buswidth = 4,
417*a5403ec6SKonrad Dybcio };
418*a5403ec6SKonrad Dybcio 
419*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_crypto0_cfg = {
420*a5403ec6SKonrad Dybcio 	.name = "qhs_crypto0_cfg",
421*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CRYPTO_0_CFG,
422*a5403ec6SKonrad Dybcio 	.channels = 1,
423*a5403ec6SKonrad Dybcio 	.buswidth = 4,
424*a5403ec6SKonrad Dybcio };
425*a5403ec6SKonrad Dybcio 
426*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ddrss_cfg = {
427*a5403ec6SKonrad Dybcio 	.name = "qhs_ddrss_cfg",
428*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CNOC_DDRSS,
429*a5403ec6SKonrad Dybcio 	.channels = 1,
430*a5403ec6SKonrad Dybcio 	.buswidth = 4,
431*a5403ec6SKonrad Dybcio };
432*a5403ec6SKonrad Dybcio 
433*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ecc_cfg = {
434*a5403ec6SKonrad Dybcio 	.name = "qhs_ecc_cfg",
435*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_ECC_CFG,
436*a5403ec6SKonrad Dybcio 	.channels = 1,
437*a5403ec6SKonrad Dybcio 	.buswidth = 4,
438*a5403ec6SKonrad Dybcio };
439*a5403ec6SKonrad Dybcio 
440*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_imem_cfg = {
441*a5403ec6SKonrad Dybcio 	.name = "qhs_imem_cfg",
442*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_IMEM_CFG,
443*a5403ec6SKonrad Dybcio 	.channels = 1,
444*a5403ec6SKonrad Dybcio 	.buswidth = 4,
445*a5403ec6SKonrad Dybcio };
446*a5403ec6SKonrad Dybcio 
447*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ipa = {
448*a5403ec6SKonrad Dybcio 	.name = "qhs_ipa",
449*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_IPA_CFG,
450*a5403ec6SKonrad Dybcio 	.channels = 1,
451*a5403ec6SKonrad Dybcio 	.buswidth = 4,
452*a5403ec6SKonrad Dybcio };
453*a5403ec6SKonrad Dybcio 
454*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_mss_cfg = {
455*a5403ec6SKonrad Dybcio 	.name = "qhs_mss_cfg",
456*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CNOC_MSS,
457*a5403ec6SKonrad Dybcio 	.channels = 1,
458*a5403ec6SKonrad Dybcio 	.buswidth = 4,
459*a5403ec6SKonrad Dybcio };
460*a5403ec6SKonrad Dybcio 
461*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_pcie_parf = {
462*a5403ec6SKonrad Dybcio 	.name = "qhs_pcie_parf",
463*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PCIE_PARF,
464*a5403ec6SKonrad Dybcio 	.channels = 1,
465*a5403ec6SKonrad Dybcio 	.buswidth = 4,
466*a5403ec6SKonrad Dybcio };
467*a5403ec6SKonrad Dybcio 
468*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_pdm = {
469*a5403ec6SKonrad Dybcio 	.name = "qhs_pdm",
470*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PDM,
471*a5403ec6SKonrad Dybcio 	.channels = 1,
472*a5403ec6SKonrad Dybcio 	.buswidth = 4,
473*a5403ec6SKonrad Dybcio };
474*a5403ec6SKonrad Dybcio 
475*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_prng = {
476*a5403ec6SKonrad Dybcio 	.name = "qhs_prng",
477*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PRNG,
478*a5403ec6SKonrad Dybcio 	.channels = 1,
479*a5403ec6SKonrad Dybcio 	.buswidth = 4,
480*a5403ec6SKonrad Dybcio };
481*a5403ec6SKonrad Dybcio 
482*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_qdss_cfg = {
483*a5403ec6SKonrad Dybcio 	.name = "qhs_qdss_cfg",
484*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_QDSS_CFG,
485*a5403ec6SKonrad Dybcio 	.channels = 1,
486*a5403ec6SKonrad Dybcio 	.buswidth = 4,
487*a5403ec6SKonrad Dybcio };
488*a5403ec6SKonrad Dybcio 
489*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_qpic = {
490*a5403ec6SKonrad Dybcio 	.name = "qhs_qpic",
491*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_QPIC,
492*a5403ec6SKonrad Dybcio 	.channels = 1,
493*a5403ec6SKonrad Dybcio 	.buswidth = 4,
494*a5403ec6SKonrad Dybcio };
495*a5403ec6SKonrad Dybcio 
496*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_sdc1 = {
497*a5403ec6SKonrad Dybcio 	.name = "qhs_sdc1",
498*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SDCC_1,
499*a5403ec6SKonrad Dybcio 	.channels = 1,
500*a5403ec6SKonrad Dybcio 	.buswidth = 4,
501*a5403ec6SKonrad Dybcio };
502*a5403ec6SKonrad Dybcio 
503*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_snoc_cfg = {
504*a5403ec6SKonrad Dybcio 	.name = "qhs_snoc_cfg",
505*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SNOC_CFG,
506*a5403ec6SKonrad Dybcio 	.channels = 1,
507*a5403ec6SKonrad Dybcio 	.buswidth = 4,
508*a5403ec6SKonrad Dybcio 	.num_links = 1,
509*a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_SNOC_CFG },
510*a5403ec6SKonrad Dybcio };
511*a5403ec6SKonrad Dybcio 
512*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_spmi_fetcher = {
513*a5403ec6SKonrad Dybcio 	.name = "qhs_spmi_fetcher",
514*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SPMI_FETCHER,
515*a5403ec6SKonrad Dybcio 	.channels = 1,
516*a5403ec6SKonrad Dybcio 	.buswidth = 4,
517*a5403ec6SKonrad Dybcio };
518*a5403ec6SKonrad Dybcio 
519*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_spmi_vgi_coex = {
520*a5403ec6SKonrad Dybcio 	.name = "qhs_spmi_vgi_coex",
521*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SPMI_VGI_COEX,
522*a5403ec6SKonrad Dybcio 	.channels = 1,
523*a5403ec6SKonrad Dybcio 	.buswidth = 4,
524*a5403ec6SKonrad Dybcio };
525*a5403ec6SKonrad Dybcio 
526*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_tcsr = {
527*a5403ec6SKonrad Dybcio 	.name = "qhs_tcsr",
528*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_TCSR,
529*a5403ec6SKonrad Dybcio 	.channels = 1,
530*a5403ec6SKonrad Dybcio 	.buswidth = 4,
531*a5403ec6SKonrad Dybcio };
532*a5403ec6SKonrad Dybcio 
533*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_tlmm = {
534*a5403ec6SKonrad Dybcio 	.name = "qhs_tlmm",
535*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_TLMM,
536*a5403ec6SKonrad Dybcio 	.channels = 1,
537*a5403ec6SKonrad Dybcio 	.buswidth = 4,
538*a5403ec6SKonrad Dybcio };
539*a5403ec6SKonrad Dybcio 
540*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_usb3 = {
541*a5403ec6SKonrad Dybcio 	.name = "qhs_usb3",
542*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_USB3,
543*a5403ec6SKonrad Dybcio 	.channels = 1,
544*a5403ec6SKonrad Dybcio 	.buswidth = 4,
545*a5403ec6SKonrad Dybcio };
546*a5403ec6SKonrad Dybcio 
547*a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_usb3_phy = {
548*a5403ec6SKonrad Dybcio 	.name = "qhs_usb3_phy",
549*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_USB3_PHY_CFG,
550*a5403ec6SKonrad Dybcio 	.channels = 1,
551*a5403ec6SKonrad Dybcio 	.buswidth = 4,
552*a5403ec6SKonrad Dybcio };
553*a5403ec6SKonrad Dybcio 
554*a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_aggre_noc = {
555*a5403ec6SKonrad Dybcio 	.name = "qns_aggre_noc",
556*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_ANOC_SNOC,
557*a5403ec6SKonrad Dybcio 	.channels = 1,
558*a5403ec6SKonrad Dybcio 	.buswidth = 8,
559*a5403ec6SKonrad Dybcio 	.num_links = 1,
560*a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_ANOC_SNOC },
561*a5403ec6SKonrad Dybcio };
562*a5403ec6SKonrad Dybcio 
563*a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_snoc_memnoc = {
564*a5403ec6SKonrad Dybcio 	.name = "qns_snoc_memnoc",
565*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SNOC_MEM_NOC_GC,
566*a5403ec6SKonrad Dybcio 	.channels = 1,
567*a5403ec6SKonrad Dybcio 	.buswidth = 16,
568*a5403ec6SKonrad Dybcio 	.num_links = 1,
569*a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_SNOC_GC_MEM_NOC },
570*a5403ec6SKonrad Dybcio };
571*a5403ec6SKonrad Dybcio 
572*a5403ec6SKonrad Dybcio static struct qcom_icc_node qxs_imem = {
573*a5403ec6SKonrad Dybcio 	.name = "qxs_imem",
574*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_IMEM,
575*a5403ec6SKonrad Dybcio 	.channels = 1,
576*a5403ec6SKonrad Dybcio 	.buswidth = 8,
577*a5403ec6SKonrad Dybcio };
578*a5403ec6SKonrad Dybcio 
579*a5403ec6SKonrad Dybcio static struct qcom_icc_node srvc_snoc = {
580*a5403ec6SKonrad Dybcio 	.name = "srvc_snoc",
581*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SERVICE_SNOC,
582*a5403ec6SKonrad Dybcio 	.channels = 1,
583*a5403ec6SKonrad Dybcio 	.buswidth = 4,
584*a5403ec6SKonrad Dybcio };
585*a5403ec6SKonrad Dybcio 
586*a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_pcie = {
587*a5403ec6SKonrad Dybcio 	.name = "xs_pcie",
588*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PCIE_0,
589*a5403ec6SKonrad Dybcio 	.channels = 1,
590*a5403ec6SKonrad Dybcio 	.buswidth = 8,
591*a5403ec6SKonrad Dybcio };
592*a5403ec6SKonrad Dybcio 
593*a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_qdss_stm = {
594*a5403ec6SKonrad Dybcio 	.name = "xs_qdss_stm",
595*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_QDSS_STM,
596*a5403ec6SKonrad Dybcio 	.channels = 1,
597*a5403ec6SKonrad Dybcio 	.buswidth = 4,
598*a5403ec6SKonrad Dybcio };
599*a5403ec6SKonrad Dybcio 
600*a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_sys_tcu_cfg = {
601*a5403ec6SKonrad Dybcio 	.name = "xs_sys_tcu_cfg",
602*a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_TCU,
603*a5403ec6SKonrad Dybcio 	.channels = 1,
604*a5403ec6SKonrad Dybcio 	.buswidth = 8,
605*a5403ec6SKonrad Dybcio };
60639a53928SRohit Agarwal 
60739a53928SRohit Agarwal DEFINE_QBCM(bcm_ce0, "CE0", false, &qxm_crypto);
60839a53928SRohit Agarwal DEFINE_QBCM(bcm_mc0, "MC0", true, &ebi);
60939a53928SRohit Agarwal DEFINE_QBCM(bcm_pn0, "PN0", true, &qhm_snoc_cfg, &qhs_aoss, &qhs_apss, &qhs_audio, &qhs_blsp1, &qhs_clk_ctl, &qhs_crypto0_cfg, &qhs_ddrss_cfg, &qhs_ecc_cfg, &qhs_imem_cfg, &qhs_ipa, &qhs_mss_cfg, &qhs_pcie_parf, &qhs_pdm, &qhs_prng, &qhs_qdss_cfg, &qhs_qpic, &qhs_sdc1, &qhs_snoc_cfg, &qhs_spmi_fetcher, &qhs_spmi_vgi_coex, &qhs_tcsr, &qhs_tlmm, &qhs_usb3, &qhs_usb3_phy, &srvc_snoc);
61039a53928SRohit Agarwal DEFINE_QBCM(bcm_pn1, "PN1", false, &xm_sdc1);
61139a53928SRohit Agarwal DEFINE_QBCM(bcm_pn2, "PN2", false, &qhm_audio, &qhm_spmi_fetcher1);
61239a53928SRohit Agarwal DEFINE_QBCM(bcm_pn3, "PN3", false, &qhm_blsp1, &qhm_qpic);
61339a53928SRohit Agarwal DEFINE_QBCM(bcm_pn4, "PN4", false, &qxm_crypto);
61439a53928SRohit Agarwal DEFINE_QBCM(bcm_sh0, "SH0", true, &qns_llcc);
61539a53928SRohit Agarwal DEFINE_QBCM(bcm_sh1, "SH1", false, &qns_memnoc_snoc);
61639a53928SRohit Agarwal DEFINE_QBCM(bcm_sh3, "SH3", false, &xm_apps_rdwr);
61739a53928SRohit Agarwal DEFINE_QBCM(bcm_sn0, "SN0", true, &qns_snoc_memnoc);
61839a53928SRohit Agarwal DEFINE_QBCM(bcm_sn1, "SN1", false, &qxs_imem);
61939a53928SRohit Agarwal DEFINE_QBCM(bcm_sn2, "SN2", false, &xs_qdss_stm);
62039a53928SRohit Agarwal DEFINE_QBCM(bcm_sn3, "SN3", false, &xs_sys_tcu_cfg);
62139a53928SRohit Agarwal DEFINE_QBCM(bcm_sn5, "SN5", false, &xs_pcie);
62239a53928SRohit Agarwal DEFINE_QBCM(bcm_sn6, "SN6", false, &qhm_qdss_bam, &xm_qdss_etr);
62339a53928SRohit Agarwal DEFINE_QBCM(bcm_sn7, "SN7", false, &qnm_aggre_noc, &xm_pcie, &xm_usb3, &qns_aggre_noc);
62439a53928SRohit Agarwal DEFINE_QBCM(bcm_sn8, "SN8", false, &qnm_memnoc);
62539a53928SRohit Agarwal DEFINE_QBCM(bcm_sn9, "SN9", false, &qnm_memnoc_pcie);
62639a53928SRohit Agarwal DEFINE_QBCM(bcm_sn10, "SN10", false, &qnm_ipa, &xm_ipa2pcie_slv);
62739a53928SRohit Agarwal 
62839a53928SRohit Agarwal static struct qcom_icc_bcm * const mc_virt_bcms[] = {
62939a53928SRohit Agarwal 	&bcm_mc0,
63039a53928SRohit Agarwal };
63139a53928SRohit Agarwal 
63239a53928SRohit Agarwal static struct qcom_icc_node * const mc_virt_nodes[] = {
63339a53928SRohit Agarwal 	[MASTER_LLCC] = &llcc_mc,
63439a53928SRohit Agarwal 	[SLAVE_EBI1] = &ebi,
63539a53928SRohit Agarwal };
63639a53928SRohit Agarwal 
63739a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_mc_virt = {
63839a53928SRohit Agarwal 	.nodes = mc_virt_nodes,
63939a53928SRohit Agarwal 	.num_nodes = ARRAY_SIZE(mc_virt_nodes),
64039a53928SRohit Agarwal 	.bcms = mc_virt_bcms,
64139a53928SRohit Agarwal 	.num_bcms = ARRAY_SIZE(mc_virt_bcms),
64239a53928SRohit Agarwal };
64339a53928SRohit Agarwal 
64439a53928SRohit Agarwal static struct qcom_icc_bcm * const mem_noc_bcms[] = {
64539a53928SRohit Agarwal 	&bcm_sh0,
64639a53928SRohit Agarwal 	&bcm_sh1,
64739a53928SRohit Agarwal 	&bcm_sh3,
64839a53928SRohit Agarwal };
64939a53928SRohit Agarwal 
65039a53928SRohit Agarwal static struct qcom_icc_node * const mem_noc_nodes[] = {
65139a53928SRohit Agarwal 	[MASTER_TCU_0] = &acm_tcu,
65239a53928SRohit Agarwal 	[MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
65339a53928SRohit Agarwal 	[MASTER_APPSS_PROC] = &xm_apps_rdwr,
65439a53928SRohit Agarwal 	[SLAVE_LLCC] = &qns_llcc,
65539a53928SRohit Agarwal 	[SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc,
65639a53928SRohit Agarwal 	[SLAVE_MEM_NOC_PCIE_SNOC] = &qns_sys_pcie,
65739a53928SRohit Agarwal };
65839a53928SRohit Agarwal 
65939a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_mem_noc = {
66039a53928SRohit Agarwal 	.nodes = mem_noc_nodes,
66139a53928SRohit Agarwal 	.num_nodes = ARRAY_SIZE(mem_noc_nodes),
66239a53928SRohit Agarwal 	.bcms = mem_noc_bcms,
66339a53928SRohit Agarwal 	.num_bcms = ARRAY_SIZE(mem_noc_bcms),
66439a53928SRohit Agarwal };
66539a53928SRohit Agarwal 
66639a53928SRohit Agarwal static struct qcom_icc_bcm * const system_noc_bcms[] = {
66739a53928SRohit Agarwal 	&bcm_ce0,
66839a53928SRohit Agarwal 	&bcm_pn0,
66939a53928SRohit Agarwal 	&bcm_pn1,
67039a53928SRohit Agarwal 	&bcm_pn2,
67139a53928SRohit Agarwal 	&bcm_pn3,
67239a53928SRohit Agarwal 	&bcm_pn4,
67339a53928SRohit Agarwal 	&bcm_sn0,
67439a53928SRohit Agarwal 	&bcm_sn1,
67539a53928SRohit Agarwal 	&bcm_sn2,
67639a53928SRohit Agarwal 	&bcm_sn3,
67739a53928SRohit Agarwal 	&bcm_sn5,
67839a53928SRohit Agarwal 	&bcm_sn6,
67939a53928SRohit Agarwal 	&bcm_sn7,
68039a53928SRohit Agarwal 	&bcm_sn8,
68139a53928SRohit Agarwal 	&bcm_sn9,
68239a53928SRohit Agarwal 	&bcm_sn10,
68339a53928SRohit Agarwal };
68439a53928SRohit Agarwal 
68539a53928SRohit Agarwal static struct qcom_icc_node * const system_noc_nodes[] = {
68639a53928SRohit Agarwal 	[MASTER_AUDIO] = &qhm_audio,
68739a53928SRohit Agarwal 	[MASTER_BLSP_1] = &qhm_blsp1,
68839a53928SRohit Agarwal 	[MASTER_QDSS_BAM] = &qhm_qdss_bam,
68939a53928SRohit Agarwal 	[MASTER_QPIC] = &qhm_qpic,
69039a53928SRohit Agarwal 	[MASTER_SNOC_CFG] = &qhm_snoc_cfg,
69139a53928SRohit Agarwal 	[MASTER_SPMI_FETCHER] = &qhm_spmi_fetcher1,
69239a53928SRohit Agarwal 	[MASTER_ANOC_SNOC] = &qnm_aggre_noc,
69339a53928SRohit Agarwal 	[MASTER_IPA] = &qnm_ipa,
69439a53928SRohit Agarwal 	[MASTER_MEM_NOC_SNOC] = &qnm_memnoc,
69539a53928SRohit Agarwal 	[MASTER_MEM_NOC_PCIE_SNOC] = &qnm_memnoc_pcie,
69639a53928SRohit Agarwal 	[MASTER_CRYPTO] = &qxm_crypto,
69739a53928SRohit Agarwal 	[MASTER_IPA_PCIE] = &xm_ipa2pcie_slv,
69839a53928SRohit Agarwal 	[MASTER_PCIE_0] = &xm_pcie,
69939a53928SRohit Agarwal 	[MASTER_QDSS_ETR] = &xm_qdss_etr,
70039a53928SRohit Agarwal 	[MASTER_SDCC_1] = &xm_sdc1,
70139a53928SRohit Agarwal 	[MASTER_USB3] = &xm_usb3,
70239a53928SRohit Agarwal 	[SLAVE_AOSS] = &qhs_aoss,
70339a53928SRohit Agarwal 	[SLAVE_APPSS] = &qhs_apss,
70439a53928SRohit Agarwal 	[SLAVE_AUDIO] = &qhs_audio,
70539a53928SRohit Agarwal 	[SLAVE_BLSP_1] = &qhs_blsp1,
70639a53928SRohit Agarwal 	[SLAVE_CLK_CTL] = &qhs_clk_ctl,
70739a53928SRohit Agarwal 	[SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
70839a53928SRohit Agarwal 	[SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg,
70939a53928SRohit Agarwal 	[SLAVE_ECC_CFG] = &qhs_ecc_cfg,
71039a53928SRohit Agarwal 	[SLAVE_IMEM_CFG] = &qhs_imem_cfg,
71139a53928SRohit Agarwal 	[SLAVE_IPA_CFG] = &qhs_ipa,
71239a53928SRohit Agarwal 	[SLAVE_CNOC_MSS] = &qhs_mss_cfg,
71339a53928SRohit Agarwal 	[SLAVE_PCIE_PARF] = &qhs_pcie_parf,
71439a53928SRohit Agarwal 	[SLAVE_PDM] = &qhs_pdm,
71539a53928SRohit Agarwal 	[SLAVE_PRNG] = &qhs_prng,
71639a53928SRohit Agarwal 	[SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
71739a53928SRohit Agarwal 	[SLAVE_QPIC] = &qhs_qpic,
71839a53928SRohit Agarwal 	[SLAVE_SDCC_1] = &qhs_sdc1,
71939a53928SRohit Agarwal 	[SLAVE_SNOC_CFG] = &qhs_snoc_cfg,
72039a53928SRohit Agarwal 	[SLAVE_SPMI_FETCHER] = &qhs_spmi_fetcher,
72139a53928SRohit Agarwal 	[SLAVE_SPMI_VGI_COEX] = &qhs_spmi_vgi_coex,
72239a53928SRohit Agarwal 	[SLAVE_TCSR] = &qhs_tcsr,
72339a53928SRohit Agarwal 	[SLAVE_TLMM] = &qhs_tlmm,
72439a53928SRohit Agarwal 	[SLAVE_USB3] = &qhs_usb3,
72539a53928SRohit Agarwal 	[SLAVE_USB3_PHY_CFG] = &qhs_usb3_phy,
72639a53928SRohit Agarwal 	[SLAVE_ANOC_SNOC] = &qns_aggre_noc,
72739a53928SRohit Agarwal 	[SLAVE_SNOC_MEM_NOC_GC] = &qns_snoc_memnoc,
72839a53928SRohit Agarwal 	[SLAVE_IMEM] = &qxs_imem,
72939a53928SRohit Agarwal 	[SLAVE_SERVICE_SNOC] = &srvc_snoc,
73039a53928SRohit Agarwal 	[SLAVE_PCIE_0] = &xs_pcie,
73139a53928SRohit Agarwal 	[SLAVE_QDSS_STM] = &xs_qdss_stm,
73239a53928SRohit Agarwal 	[SLAVE_TCU] = &xs_sys_tcu_cfg,
73339a53928SRohit Agarwal };
73439a53928SRohit Agarwal 
73539a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_system_noc = {
73639a53928SRohit Agarwal 	.nodes = system_noc_nodes,
73739a53928SRohit Agarwal 	.num_nodes = ARRAY_SIZE(system_noc_nodes),
73839a53928SRohit Agarwal 	.bcms = system_noc_bcms,
73939a53928SRohit Agarwal 	.num_bcms = ARRAY_SIZE(system_noc_bcms),
74039a53928SRohit Agarwal };
74139a53928SRohit Agarwal 
74239a53928SRohit Agarwal static const struct of_device_id qnoc_of_match[] = {
74339a53928SRohit Agarwal 	{ .compatible = "qcom,sdx65-mc-virt",
74439a53928SRohit Agarwal 	  .data = &sdx65_mc_virt},
74539a53928SRohit Agarwal 	{ .compatible = "qcom,sdx65-mem-noc",
74639a53928SRohit Agarwal 	  .data = &sdx65_mem_noc},
74739a53928SRohit Agarwal 	{ .compatible = "qcom,sdx65-system-noc",
74839a53928SRohit Agarwal 	  .data = &sdx65_system_noc},
74939a53928SRohit Agarwal 	{ }
75039a53928SRohit Agarwal };
75139a53928SRohit Agarwal MODULE_DEVICE_TABLE(of, qnoc_of_match);
75239a53928SRohit Agarwal 
75339a53928SRohit Agarwal static struct platform_driver qnoc_driver = {
75439a53928SRohit Agarwal 	.probe = qcom_icc_rpmh_probe,
75539a53928SRohit Agarwal 	.remove = qcom_icc_rpmh_remove,
75639a53928SRohit Agarwal 	.driver = {
75739a53928SRohit Agarwal 		.name = "qnoc-sdx65",
75839a53928SRohit Agarwal 		.of_match_table = qnoc_of_match,
75939a53928SRohit Agarwal 		.sync_state = icc_sync_state,
76039a53928SRohit Agarwal 	},
76139a53928SRohit Agarwal };
76239a53928SRohit Agarwal module_platform_driver(qnoc_driver);
76339a53928SRohit Agarwal 
76439a53928SRohit Agarwal MODULE_DESCRIPTION("Qualcomm SDX65 NoC driver");
76539a53928SRohit Agarwal MODULE_LICENSE("GPL v2");
766