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 
18a5403ec6SKonrad Dybcio static struct qcom_icc_node llcc_mc = {
19a5403ec6SKonrad Dybcio 	.name = "llcc_mc",
20a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_LLCC,
21a5403ec6SKonrad Dybcio 	.channels = 1,
22a5403ec6SKonrad Dybcio 	.buswidth = 4,
23a5403ec6SKonrad Dybcio 	.num_links = 1,
24a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_EBI1 },
25a5403ec6SKonrad Dybcio };
26a5403ec6SKonrad Dybcio 
27a5403ec6SKonrad Dybcio static struct qcom_icc_node acm_tcu = {
28a5403ec6SKonrad Dybcio 	.name = "acm_tcu",
29a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_TCU_0,
30a5403ec6SKonrad Dybcio 	.channels = 1,
31a5403ec6SKonrad Dybcio 	.buswidth = 8,
32a5403ec6SKonrad Dybcio 	.num_links = 3,
33a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_LLCC,
34a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_SNOC,
35a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_PCIE_SNOC
36a5403ec6SKonrad Dybcio 	},
37a5403ec6SKonrad Dybcio };
38a5403ec6SKonrad Dybcio 
39a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_snoc_gc = {
40a5403ec6SKonrad Dybcio 	.name = "qnm_snoc_gc",
41a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SNOC_GC_MEM_NOC,
42a5403ec6SKonrad Dybcio 	.channels = 1,
43a5403ec6SKonrad Dybcio 	.buswidth = 16,
44a5403ec6SKonrad Dybcio 	.num_links = 1,
45a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_LLCC },
46a5403ec6SKonrad Dybcio };
47a5403ec6SKonrad Dybcio 
48a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_apps_rdwr = {
49a5403ec6SKonrad Dybcio 	.name = "xm_apps_rdwr",
50a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_APPSS_PROC,
51a5403ec6SKonrad Dybcio 	.channels = 1,
52a5403ec6SKonrad Dybcio 	.buswidth = 16,
53a5403ec6SKonrad Dybcio 	.num_links = 3,
54a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_LLCC,
55a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_SNOC,
56a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_MEM_NOC_PCIE_SNOC
57a5403ec6SKonrad Dybcio 	},
58a5403ec6SKonrad Dybcio };
59a5403ec6SKonrad Dybcio 
60a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_audio = {
61a5403ec6SKonrad Dybcio 	.name = "qhm_audio",
62a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_AUDIO,
63a5403ec6SKonrad Dybcio 	.channels = 1,
64a5403ec6SKonrad Dybcio 	.buswidth = 4,
65a5403ec6SKonrad Dybcio 	.num_links = 1,
66a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
67a5403ec6SKonrad Dybcio };
68a5403ec6SKonrad Dybcio 
69a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_blsp1 = {
70a5403ec6SKonrad Dybcio 	.name = "qhm_blsp1",
71a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_BLSP_1,
72a5403ec6SKonrad Dybcio 	.channels = 1,
73a5403ec6SKonrad Dybcio 	.buswidth = 4,
74a5403ec6SKonrad Dybcio 	.num_links = 1,
75a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
76a5403ec6SKonrad Dybcio };
77a5403ec6SKonrad Dybcio 
78a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_qdss_bam = {
79a5403ec6SKonrad Dybcio 	.name = "qhm_qdss_bam",
80a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_QDSS_BAM,
81a5403ec6SKonrad Dybcio 	.channels = 1,
82a5403ec6SKonrad Dybcio 	.buswidth = 4,
83a5403ec6SKonrad Dybcio 	.num_links = 26,
84a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
85a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
86a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
87a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
88a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
89a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
90a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
91a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
92a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
93a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
94a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
95a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
96a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
97a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
98a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
99a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
100a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
101a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
102a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
103a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
104a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
105a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
106a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
107a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
108a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
109a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
110a5403ec6SKonrad Dybcio 	},
111a5403ec6SKonrad Dybcio };
112a5403ec6SKonrad Dybcio 
113a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_qpic = {
114a5403ec6SKonrad Dybcio 	.name = "qhm_qpic",
115a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_QPIC,
116a5403ec6SKonrad Dybcio 	.channels = 1,
117a5403ec6SKonrad Dybcio 	.buswidth = 4,
118a5403ec6SKonrad Dybcio 	.num_links = 4,
119a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
120a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
121a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
122a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
123a5403ec6SKonrad Dybcio 	},
124a5403ec6SKonrad Dybcio };
125a5403ec6SKonrad Dybcio 
126a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_snoc_cfg = {
127a5403ec6SKonrad Dybcio 	.name = "qhm_snoc_cfg",
128a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SNOC_CFG,
129a5403ec6SKonrad Dybcio 	.channels = 1,
130a5403ec6SKonrad Dybcio 	.buswidth = 4,
131a5403ec6SKonrad Dybcio 	.num_links = 1,
132a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_SERVICE_SNOC },
133a5403ec6SKonrad Dybcio };
134a5403ec6SKonrad Dybcio 
135a5403ec6SKonrad Dybcio static struct qcom_icc_node qhm_spmi_fetcher1 = {
136a5403ec6SKonrad Dybcio 	.name = "qhm_spmi_fetcher1",
137a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SPMI_FETCHER,
138a5403ec6SKonrad Dybcio 	.channels = 1,
139a5403ec6SKonrad Dybcio 	.buswidth = 4,
140a5403ec6SKonrad Dybcio 	.num_links = 2,
141a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
142a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
143a5403ec6SKonrad Dybcio 	},
144a5403ec6SKonrad Dybcio };
145a5403ec6SKonrad Dybcio 
146a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_aggre_noc = {
147a5403ec6SKonrad Dybcio 	.name = "qnm_aggre_noc",
148a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_ANOC_SNOC,
149a5403ec6SKonrad Dybcio 	.channels = 1,
150a5403ec6SKonrad Dybcio 	.buswidth = 8,
151a5403ec6SKonrad Dybcio 	.num_links = 29,
152a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
153a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_APPSS,
154a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
155a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
156a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
157a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
158a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
159a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
160a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
161a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
162a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
163a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
164a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
165a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
166a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
167a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
168a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
169a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
170a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
171a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
172a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
173a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
174a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
175a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
176a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
177a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
178a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_0,
179a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_STM,
180a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
181a5403ec6SKonrad Dybcio 	},
182a5403ec6SKonrad Dybcio };
183a5403ec6SKonrad Dybcio 
184a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_ipa = {
185a5403ec6SKonrad Dybcio 	.name = "qnm_ipa",
186a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_IPA,
187a5403ec6SKonrad Dybcio 	.channels = 1,
188a5403ec6SKonrad Dybcio 	.buswidth = 8,
189a5403ec6SKonrad Dybcio 	.num_links = 26,
190a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
191a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
192a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
193a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
194a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
195a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
196a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
197a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
198a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
199a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
200a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
201a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
202a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
203a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
204a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
205a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
206a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
207a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
208a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
209a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
210a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
211a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
212a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
213a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
214a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_0,
215a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_STM
216a5403ec6SKonrad Dybcio 	},
217a5403ec6SKonrad Dybcio };
218a5403ec6SKonrad Dybcio 
219a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_memnoc = {
220a5403ec6SKonrad Dybcio 	.name = "qnm_memnoc",
221a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_MEM_NOC_SNOC,
222a5403ec6SKonrad Dybcio 	.channels = 1,
223a5403ec6SKonrad Dybcio 	.buswidth = 8,
224a5403ec6SKonrad Dybcio 	.num_links = 27,
225a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
226a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_APPSS,
227a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
228a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
229a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
230a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
231a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
232a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
233a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
234a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
235a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
236a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
237a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
238a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
239a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
240a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
241a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
242a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
243a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
244a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
245a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
246a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
247a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
248a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
249a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
250a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_STM,
251a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
252a5403ec6SKonrad Dybcio 	},
253a5403ec6SKonrad Dybcio };
254a5403ec6SKonrad Dybcio 
255a5403ec6SKonrad Dybcio static struct qcom_icc_node qnm_memnoc_pcie = {
256a5403ec6SKonrad Dybcio 	.name = "qnm_memnoc_pcie",
257a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_MEM_NOC_PCIE_SNOC,
258a5403ec6SKonrad Dybcio 	.channels = 1,
259a5403ec6SKonrad Dybcio 	.buswidth = 8,
260a5403ec6SKonrad Dybcio 	.num_links = 1,
261a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_PCIE_0 },
262a5403ec6SKonrad Dybcio };
263a5403ec6SKonrad Dybcio 
264a5403ec6SKonrad Dybcio static struct qcom_icc_node qxm_crypto = {
265a5403ec6SKonrad Dybcio 	.name = "qxm_crypto",
266a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_CRYPTO,
267a5403ec6SKonrad Dybcio 	.channels = 1,
268a5403ec6SKonrad Dybcio 	.buswidth = 8,
269a5403ec6SKonrad Dybcio 	.num_links = 2,
270a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
271a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
272a5403ec6SKonrad Dybcio 	},
273a5403ec6SKonrad Dybcio };
274a5403ec6SKonrad Dybcio 
275a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_ipa2pcie_slv = {
276a5403ec6SKonrad Dybcio 	.name = "xm_ipa2pcie_slv",
277a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_IPA_PCIE,
278a5403ec6SKonrad Dybcio 	.channels = 1,
279a5403ec6SKonrad Dybcio 	.buswidth = 8,
280a5403ec6SKonrad Dybcio 	.num_links = 1,
281a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_PCIE_0 },
282a5403ec6SKonrad Dybcio };
283a5403ec6SKonrad Dybcio 
284a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_pcie = {
285a5403ec6SKonrad Dybcio 	.name = "xm_pcie",
286a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_PCIE_0,
287a5403ec6SKonrad Dybcio 	.channels = 1,
288a5403ec6SKonrad Dybcio 	.buswidth = 8,
289a5403ec6SKonrad Dybcio 	.num_links = 1,
290a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
291a5403ec6SKonrad Dybcio };
292a5403ec6SKonrad Dybcio 
293a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_qdss_etr = {
294a5403ec6SKonrad Dybcio 	.name = "xm_qdss_etr",
295a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_QDSS_ETR,
296a5403ec6SKonrad Dybcio 	.channels = 1,
297a5403ec6SKonrad Dybcio 	.buswidth = 8,
298a5403ec6SKonrad Dybcio 	.num_links = 26,
299a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
300a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
301a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_BLSP_1,
302a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CLK_CTL,
303a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CRYPTO_0_CFG,
304a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_DDRSS,
305a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ECC_CFG,
306a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM_CFG,
307a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
308a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_CNOC_MSS,
309a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PCIE_PARF,
310a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PDM,
311a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_PRNG,
312a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QDSS_CFG,
313a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_QPIC,
314a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SDCC_1,
315a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_CFG,
316a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_FETCHER,
317a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SPMI_VGI_COEX,
318a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCSR,
319a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TLMM,
320a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3,
321a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_USB3_PHY_CFG,
322a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_SNOC_MEM_NOC_GC,
323a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IMEM,
324a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_TCU
325a5403ec6SKonrad Dybcio 	},
326a5403ec6SKonrad Dybcio };
327a5403ec6SKonrad Dybcio 
328a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_sdc1 = {
329a5403ec6SKonrad Dybcio 	.name = "xm_sdc1",
330a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_SDCC_1,
331a5403ec6SKonrad Dybcio 	.channels = 1,
332a5403ec6SKonrad Dybcio 	.buswidth = 8,
333a5403ec6SKonrad Dybcio 	.num_links = 4,
334a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_AOSS,
335a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_AUDIO,
336a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_IPA_CFG,
337a5403ec6SKonrad Dybcio 		   SDX65_SLAVE_ANOC_SNOC
338a5403ec6SKonrad Dybcio 	},
339a5403ec6SKonrad Dybcio };
340a5403ec6SKonrad Dybcio 
341a5403ec6SKonrad Dybcio static struct qcom_icc_node xm_usb3 = {
342a5403ec6SKonrad Dybcio 	.name = "xm_usb3",
343a5403ec6SKonrad Dybcio 	.id = SDX65_MASTER_USB3,
344a5403ec6SKonrad Dybcio 	.channels = 1,
345a5403ec6SKonrad Dybcio 	.buswidth = 8,
346a5403ec6SKonrad Dybcio 	.num_links = 1,
347a5403ec6SKonrad Dybcio 	.links = { SDX65_SLAVE_ANOC_SNOC },
348a5403ec6SKonrad Dybcio };
349a5403ec6SKonrad Dybcio 
350a5403ec6SKonrad Dybcio static struct qcom_icc_node ebi = {
351a5403ec6SKonrad Dybcio 	.name = "ebi",
352a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_EBI1,
353a5403ec6SKonrad Dybcio 	.channels = 1,
354a5403ec6SKonrad Dybcio 	.buswidth = 4,
355a5403ec6SKonrad Dybcio };
356a5403ec6SKonrad Dybcio 
357a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_llcc = {
358a5403ec6SKonrad Dybcio 	.name = "qns_llcc",
359a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_LLCC,
360a5403ec6SKonrad Dybcio 	.channels = 1,
361a5403ec6SKonrad Dybcio 	.buswidth = 16,
362a5403ec6SKonrad Dybcio 	.num_links = 1,
363a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_LLCC },
364a5403ec6SKonrad Dybcio };
365a5403ec6SKonrad Dybcio 
366a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_memnoc_snoc = {
367a5403ec6SKonrad Dybcio 	.name = "qns_memnoc_snoc",
368a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_MEM_NOC_SNOC,
369a5403ec6SKonrad Dybcio 	.channels = 1,
370a5403ec6SKonrad Dybcio 	.buswidth = 8,
371a5403ec6SKonrad Dybcio 	.num_links = 1,
372a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_MEM_NOC_SNOC },
373a5403ec6SKonrad Dybcio };
374a5403ec6SKonrad Dybcio 
375a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_sys_pcie = {
376a5403ec6SKonrad Dybcio 	.name = "qns_sys_pcie",
377a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_MEM_NOC_PCIE_SNOC,
378a5403ec6SKonrad Dybcio 	.channels = 1,
379a5403ec6SKonrad Dybcio 	.buswidth = 8,
380a5403ec6SKonrad Dybcio 	.num_links = 1,
381a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_MEM_NOC_PCIE_SNOC },
382a5403ec6SKonrad Dybcio };
383a5403ec6SKonrad Dybcio 
384a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_aoss = {
385a5403ec6SKonrad Dybcio 	.name = "qhs_aoss",
386a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_AOSS,
387a5403ec6SKonrad Dybcio 	.channels = 1,
388a5403ec6SKonrad Dybcio 	.buswidth = 4,
389a5403ec6SKonrad Dybcio };
390a5403ec6SKonrad Dybcio 
391a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_apss = {
392a5403ec6SKonrad Dybcio 	.name = "qhs_apss",
393a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_APPSS,
394a5403ec6SKonrad Dybcio 	.channels = 1,
395a5403ec6SKonrad Dybcio 	.buswidth = 4,
396a5403ec6SKonrad Dybcio };
397a5403ec6SKonrad Dybcio 
398a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_audio = {
399a5403ec6SKonrad Dybcio 	.name = "qhs_audio",
400a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_AUDIO,
401a5403ec6SKonrad Dybcio 	.channels = 1,
402a5403ec6SKonrad Dybcio 	.buswidth = 4,
403a5403ec6SKonrad Dybcio };
404a5403ec6SKonrad Dybcio 
405a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_blsp1 = {
406a5403ec6SKonrad Dybcio 	.name = "qhs_blsp1",
407a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_BLSP_1,
408a5403ec6SKonrad Dybcio 	.channels = 1,
409a5403ec6SKonrad Dybcio 	.buswidth = 4,
410a5403ec6SKonrad Dybcio };
411a5403ec6SKonrad Dybcio 
412a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_clk_ctl = {
413a5403ec6SKonrad Dybcio 	.name = "qhs_clk_ctl",
414a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CLK_CTL,
415a5403ec6SKonrad Dybcio 	.channels = 1,
416a5403ec6SKonrad Dybcio 	.buswidth = 4,
417a5403ec6SKonrad Dybcio };
418a5403ec6SKonrad Dybcio 
419a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_crypto0_cfg = {
420a5403ec6SKonrad Dybcio 	.name = "qhs_crypto0_cfg",
421a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CRYPTO_0_CFG,
422a5403ec6SKonrad Dybcio 	.channels = 1,
423a5403ec6SKonrad Dybcio 	.buswidth = 4,
424a5403ec6SKonrad Dybcio };
425a5403ec6SKonrad Dybcio 
426a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ddrss_cfg = {
427a5403ec6SKonrad Dybcio 	.name = "qhs_ddrss_cfg",
428a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CNOC_DDRSS,
429a5403ec6SKonrad Dybcio 	.channels = 1,
430a5403ec6SKonrad Dybcio 	.buswidth = 4,
431a5403ec6SKonrad Dybcio };
432a5403ec6SKonrad Dybcio 
433a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ecc_cfg = {
434a5403ec6SKonrad Dybcio 	.name = "qhs_ecc_cfg",
435a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_ECC_CFG,
436a5403ec6SKonrad Dybcio 	.channels = 1,
437a5403ec6SKonrad Dybcio 	.buswidth = 4,
438a5403ec6SKonrad Dybcio };
439a5403ec6SKonrad Dybcio 
440a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_imem_cfg = {
441a5403ec6SKonrad Dybcio 	.name = "qhs_imem_cfg",
442a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_IMEM_CFG,
443a5403ec6SKonrad Dybcio 	.channels = 1,
444a5403ec6SKonrad Dybcio 	.buswidth = 4,
445a5403ec6SKonrad Dybcio };
446a5403ec6SKonrad Dybcio 
447a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_ipa = {
448a5403ec6SKonrad Dybcio 	.name = "qhs_ipa",
449a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_IPA_CFG,
450a5403ec6SKonrad Dybcio 	.channels = 1,
451a5403ec6SKonrad Dybcio 	.buswidth = 4,
452a5403ec6SKonrad Dybcio };
453a5403ec6SKonrad Dybcio 
454a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_mss_cfg = {
455a5403ec6SKonrad Dybcio 	.name = "qhs_mss_cfg",
456a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_CNOC_MSS,
457a5403ec6SKonrad Dybcio 	.channels = 1,
458a5403ec6SKonrad Dybcio 	.buswidth = 4,
459a5403ec6SKonrad Dybcio };
460a5403ec6SKonrad Dybcio 
461a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_pcie_parf = {
462a5403ec6SKonrad Dybcio 	.name = "qhs_pcie_parf",
463a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PCIE_PARF,
464a5403ec6SKonrad Dybcio 	.channels = 1,
465a5403ec6SKonrad Dybcio 	.buswidth = 4,
466a5403ec6SKonrad Dybcio };
467a5403ec6SKonrad Dybcio 
468a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_pdm = {
469a5403ec6SKonrad Dybcio 	.name = "qhs_pdm",
470a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PDM,
471a5403ec6SKonrad Dybcio 	.channels = 1,
472a5403ec6SKonrad Dybcio 	.buswidth = 4,
473a5403ec6SKonrad Dybcio };
474a5403ec6SKonrad Dybcio 
475a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_prng = {
476a5403ec6SKonrad Dybcio 	.name = "qhs_prng",
477a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PRNG,
478a5403ec6SKonrad Dybcio 	.channels = 1,
479a5403ec6SKonrad Dybcio 	.buswidth = 4,
480a5403ec6SKonrad Dybcio };
481a5403ec6SKonrad Dybcio 
482a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_qdss_cfg = {
483a5403ec6SKonrad Dybcio 	.name = "qhs_qdss_cfg",
484a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_QDSS_CFG,
485a5403ec6SKonrad Dybcio 	.channels = 1,
486a5403ec6SKonrad Dybcio 	.buswidth = 4,
487a5403ec6SKonrad Dybcio };
488a5403ec6SKonrad Dybcio 
489a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_qpic = {
490a5403ec6SKonrad Dybcio 	.name = "qhs_qpic",
491a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_QPIC,
492a5403ec6SKonrad Dybcio 	.channels = 1,
493a5403ec6SKonrad Dybcio 	.buswidth = 4,
494a5403ec6SKonrad Dybcio };
495a5403ec6SKonrad Dybcio 
496a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_sdc1 = {
497a5403ec6SKonrad Dybcio 	.name = "qhs_sdc1",
498a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SDCC_1,
499a5403ec6SKonrad Dybcio 	.channels = 1,
500a5403ec6SKonrad Dybcio 	.buswidth = 4,
501a5403ec6SKonrad Dybcio };
502a5403ec6SKonrad Dybcio 
503a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_snoc_cfg = {
504a5403ec6SKonrad Dybcio 	.name = "qhs_snoc_cfg",
505a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SNOC_CFG,
506a5403ec6SKonrad Dybcio 	.channels = 1,
507a5403ec6SKonrad Dybcio 	.buswidth = 4,
508a5403ec6SKonrad Dybcio 	.num_links = 1,
509a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_SNOC_CFG },
510a5403ec6SKonrad Dybcio };
511a5403ec6SKonrad Dybcio 
512a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_spmi_fetcher = {
513a5403ec6SKonrad Dybcio 	.name = "qhs_spmi_fetcher",
514a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SPMI_FETCHER,
515a5403ec6SKonrad Dybcio 	.channels = 1,
516a5403ec6SKonrad Dybcio 	.buswidth = 4,
517a5403ec6SKonrad Dybcio };
518a5403ec6SKonrad Dybcio 
519a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_spmi_vgi_coex = {
520a5403ec6SKonrad Dybcio 	.name = "qhs_spmi_vgi_coex",
521a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SPMI_VGI_COEX,
522a5403ec6SKonrad Dybcio 	.channels = 1,
523a5403ec6SKonrad Dybcio 	.buswidth = 4,
524a5403ec6SKonrad Dybcio };
525a5403ec6SKonrad Dybcio 
526a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_tcsr = {
527a5403ec6SKonrad Dybcio 	.name = "qhs_tcsr",
528a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_TCSR,
529a5403ec6SKonrad Dybcio 	.channels = 1,
530a5403ec6SKonrad Dybcio 	.buswidth = 4,
531a5403ec6SKonrad Dybcio };
532a5403ec6SKonrad Dybcio 
533a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_tlmm = {
534a5403ec6SKonrad Dybcio 	.name = "qhs_tlmm",
535a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_TLMM,
536a5403ec6SKonrad Dybcio 	.channels = 1,
537a5403ec6SKonrad Dybcio 	.buswidth = 4,
538a5403ec6SKonrad Dybcio };
539a5403ec6SKonrad Dybcio 
540a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_usb3 = {
541a5403ec6SKonrad Dybcio 	.name = "qhs_usb3",
542a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_USB3,
543a5403ec6SKonrad Dybcio 	.channels = 1,
544a5403ec6SKonrad Dybcio 	.buswidth = 4,
545a5403ec6SKonrad Dybcio };
546a5403ec6SKonrad Dybcio 
547a5403ec6SKonrad Dybcio static struct qcom_icc_node qhs_usb3_phy = {
548a5403ec6SKonrad Dybcio 	.name = "qhs_usb3_phy",
549a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_USB3_PHY_CFG,
550a5403ec6SKonrad Dybcio 	.channels = 1,
551a5403ec6SKonrad Dybcio 	.buswidth = 4,
552a5403ec6SKonrad Dybcio };
553a5403ec6SKonrad Dybcio 
554a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_aggre_noc = {
555a5403ec6SKonrad Dybcio 	.name = "qns_aggre_noc",
556a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_ANOC_SNOC,
557a5403ec6SKonrad Dybcio 	.channels = 1,
558a5403ec6SKonrad Dybcio 	.buswidth = 8,
559a5403ec6SKonrad Dybcio 	.num_links = 1,
560a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_ANOC_SNOC },
561a5403ec6SKonrad Dybcio };
562a5403ec6SKonrad Dybcio 
563a5403ec6SKonrad Dybcio static struct qcom_icc_node qns_snoc_memnoc = {
564a5403ec6SKonrad Dybcio 	.name = "qns_snoc_memnoc",
565a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SNOC_MEM_NOC_GC,
566a5403ec6SKonrad Dybcio 	.channels = 1,
567a5403ec6SKonrad Dybcio 	.buswidth = 16,
568a5403ec6SKonrad Dybcio 	.num_links = 1,
569a5403ec6SKonrad Dybcio 	.links = { SDX65_MASTER_SNOC_GC_MEM_NOC },
570a5403ec6SKonrad Dybcio };
571a5403ec6SKonrad Dybcio 
572a5403ec6SKonrad Dybcio static struct qcom_icc_node qxs_imem = {
573a5403ec6SKonrad Dybcio 	.name = "qxs_imem",
574a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_IMEM,
575a5403ec6SKonrad Dybcio 	.channels = 1,
576a5403ec6SKonrad Dybcio 	.buswidth = 8,
577a5403ec6SKonrad Dybcio };
578a5403ec6SKonrad Dybcio 
579a5403ec6SKonrad Dybcio static struct qcom_icc_node srvc_snoc = {
580a5403ec6SKonrad Dybcio 	.name = "srvc_snoc",
581a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_SERVICE_SNOC,
582a5403ec6SKonrad Dybcio 	.channels = 1,
583a5403ec6SKonrad Dybcio 	.buswidth = 4,
584a5403ec6SKonrad Dybcio };
585a5403ec6SKonrad Dybcio 
586a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_pcie = {
587a5403ec6SKonrad Dybcio 	.name = "xs_pcie",
588a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_PCIE_0,
589a5403ec6SKonrad Dybcio 	.channels = 1,
590a5403ec6SKonrad Dybcio 	.buswidth = 8,
591a5403ec6SKonrad Dybcio };
592a5403ec6SKonrad Dybcio 
593a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_qdss_stm = {
594a5403ec6SKonrad Dybcio 	.name = "xs_qdss_stm",
595a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_QDSS_STM,
596a5403ec6SKonrad Dybcio 	.channels = 1,
597a5403ec6SKonrad Dybcio 	.buswidth = 4,
598a5403ec6SKonrad Dybcio };
599a5403ec6SKonrad Dybcio 
600a5403ec6SKonrad Dybcio static struct qcom_icc_node xs_sys_tcu_cfg = {
601a5403ec6SKonrad Dybcio 	.name = "xs_sys_tcu_cfg",
602a5403ec6SKonrad Dybcio 	.id = SDX65_SLAVE_TCU,
603a5403ec6SKonrad Dybcio 	.channels = 1,
604a5403ec6SKonrad Dybcio 	.buswidth = 8,
605a5403ec6SKonrad Dybcio };
60639a53928SRohit Agarwal 
607*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_ce0 = {
608*de2ae887SKonrad Dybcio 	.name = "CE0",
609*de2ae887SKonrad Dybcio 	.keepalive = false,
610*de2ae887SKonrad Dybcio 	.num_nodes = 1,
611*de2ae887SKonrad Dybcio 	.nodes = { &qxm_crypto },
612*de2ae887SKonrad Dybcio };
613*de2ae887SKonrad Dybcio 
614*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_mc0 = {
615*de2ae887SKonrad Dybcio 	.name = "MC0",
616*de2ae887SKonrad Dybcio 	.keepalive = true,
617*de2ae887SKonrad Dybcio 	.num_nodes = 1,
618*de2ae887SKonrad Dybcio 	.nodes = { &ebi },
619*de2ae887SKonrad Dybcio };
620*de2ae887SKonrad Dybcio 
621*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn0 = {
622*de2ae887SKonrad Dybcio 	.name = "PN0",
623*de2ae887SKonrad Dybcio 	.keepalive = true,
624*de2ae887SKonrad Dybcio 	.num_nodes = 26,
625*de2ae887SKonrad Dybcio 	.nodes = { &qhm_snoc_cfg,
626*de2ae887SKonrad Dybcio 		   &qhs_aoss,
627*de2ae887SKonrad Dybcio 		   &qhs_apss,
628*de2ae887SKonrad Dybcio 		   &qhs_audio,
629*de2ae887SKonrad Dybcio 		   &qhs_blsp1,
630*de2ae887SKonrad Dybcio 		   &qhs_clk_ctl,
631*de2ae887SKonrad Dybcio 		   &qhs_crypto0_cfg,
632*de2ae887SKonrad Dybcio 		   &qhs_ddrss_cfg,
633*de2ae887SKonrad Dybcio 		   &qhs_ecc_cfg,
634*de2ae887SKonrad Dybcio 		   &qhs_imem_cfg,
635*de2ae887SKonrad Dybcio 		   &qhs_ipa,
636*de2ae887SKonrad Dybcio 		   &qhs_mss_cfg,
637*de2ae887SKonrad Dybcio 		   &qhs_pcie_parf,
638*de2ae887SKonrad Dybcio 		   &qhs_pdm,
639*de2ae887SKonrad Dybcio 		   &qhs_prng,
640*de2ae887SKonrad Dybcio 		   &qhs_qdss_cfg,
641*de2ae887SKonrad Dybcio 		   &qhs_qpic,
642*de2ae887SKonrad Dybcio 		   &qhs_sdc1,
643*de2ae887SKonrad Dybcio 		   &qhs_snoc_cfg,
644*de2ae887SKonrad Dybcio 		   &qhs_spmi_fetcher,
645*de2ae887SKonrad Dybcio 		   &qhs_spmi_vgi_coex,
646*de2ae887SKonrad Dybcio 		   &qhs_tcsr,
647*de2ae887SKonrad Dybcio 		   &qhs_tlmm,
648*de2ae887SKonrad Dybcio 		   &qhs_usb3,
649*de2ae887SKonrad Dybcio 		   &qhs_usb3_phy,
650*de2ae887SKonrad Dybcio 		   &srvc_snoc
651*de2ae887SKonrad Dybcio 	},
652*de2ae887SKonrad Dybcio };
653*de2ae887SKonrad Dybcio 
654*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn1 = {
655*de2ae887SKonrad Dybcio 	.name = "PN1",
656*de2ae887SKonrad Dybcio 	.keepalive = false,
657*de2ae887SKonrad Dybcio 	.num_nodes = 1,
658*de2ae887SKonrad Dybcio 	.nodes = { &xm_sdc1 },
659*de2ae887SKonrad Dybcio };
660*de2ae887SKonrad Dybcio 
661*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn2 = {
662*de2ae887SKonrad Dybcio 	.name = "PN2",
663*de2ae887SKonrad Dybcio 	.keepalive = false,
664*de2ae887SKonrad Dybcio 	.num_nodes = 2,
665*de2ae887SKonrad Dybcio 	.nodes = { &qhm_audio, &qhm_spmi_fetcher1 },
666*de2ae887SKonrad Dybcio };
667*de2ae887SKonrad Dybcio 
668*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn3 = {
669*de2ae887SKonrad Dybcio 	.name = "PN3",
670*de2ae887SKonrad Dybcio 	.keepalive = false,
671*de2ae887SKonrad Dybcio 	.num_nodes = 2,
672*de2ae887SKonrad Dybcio 	.nodes = { &qhm_blsp1, &qhm_qpic },
673*de2ae887SKonrad Dybcio };
674*de2ae887SKonrad Dybcio 
675*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_pn4 = {
676*de2ae887SKonrad Dybcio 	.name = "PN4",
677*de2ae887SKonrad Dybcio 	.keepalive = false,
678*de2ae887SKonrad Dybcio 	.num_nodes = 1,
679*de2ae887SKonrad Dybcio 	.nodes = { &qxm_crypto },
680*de2ae887SKonrad Dybcio };
681*de2ae887SKonrad Dybcio 
682*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sh0 = {
683*de2ae887SKonrad Dybcio 	.name = "SH0",
684*de2ae887SKonrad Dybcio 	.keepalive = true,
685*de2ae887SKonrad Dybcio 	.num_nodes = 1,
686*de2ae887SKonrad Dybcio 	.nodes = { &qns_llcc },
687*de2ae887SKonrad Dybcio };
688*de2ae887SKonrad Dybcio 
689*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sh1 = {
690*de2ae887SKonrad Dybcio 	.name = "SH1",
691*de2ae887SKonrad Dybcio 	.keepalive = false,
692*de2ae887SKonrad Dybcio 	.num_nodes = 1,
693*de2ae887SKonrad Dybcio 	.nodes = { &qns_memnoc_snoc },
694*de2ae887SKonrad Dybcio };
695*de2ae887SKonrad Dybcio 
696*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sh3 = {
697*de2ae887SKonrad Dybcio 	.name = "SH3",
698*de2ae887SKonrad Dybcio 	.keepalive = false,
699*de2ae887SKonrad Dybcio 	.num_nodes = 1,
700*de2ae887SKonrad Dybcio 	.nodes = { &xm_apps_rdwr },
701*de2ae887SKonrad Dybcio };
702*de2ae887SKonrad Dybcio 
703*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn0 = {
704*de2ae887SKonrad Dybcio 	.name = "SN0",
705*de2ae887SKonrad Dybcio 	.keepalive = true,
706*de2ae887SKonrad Dybcio 	.num_nodes = 1,
707*de2ae887SKonrad Dybcio 	.nodes = { &qns_snoc_memnoc },
708*de2ae887SKonrad Dybcio };
709*de2ae887SKonrad Dybcio 
710*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn1 = {
711*de2ae887SKonrad Dybcio 	.name = "SN1",
712*de2ae887SKonrad Dybcio 	.keepalive = false,
713*de2ae887SKonrad Dybcio 	.num_nodes = 1,
714*de2ae887SKonrad Dybcio 	.nodes = { &qxs_imem },
715*de2ae887SKonrad Dybcio };
716*de2ae887SKonrad Dybcio 
717*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn2 = {
718*de2ae887SKonrad Dybcio 	.name = "SN2",
719*de2ae887SKonrad Dybcio 	.keepalive = false,
720*de2ae887SKonrad Dybcio 	.num_nodes = 1,
721*de2ae887SKonrad Dybcio 	.nodes = { &xs_qdss_stm },
722*de2ae887SKonrad Dybcio };
723*de2ae887SKonrad Dybcio 
724*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn3 = {
725*de2ae887SKonrad Dybcio 	.name = "SN3",
726*de2ae887SKonrad Dybcio 	.keepalive = false,
727*de2ae887SKonrad Dybcio 	.num_nodes = 1,
728*de2ae887SKonrad Dybcio 	.nodes = { &xs_sys_tcu_cfg },
729*de2ae887SKonrad Dybcio };
730*de2ae887SKonrad Dybcio 
731*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn5 = {
732*de2ae887SKonrad Dybcio 	.name = "SN5",
733*de2ae887SKonrad Dybcio 	.keepalive = false,
734*de2ae887SKonrad Dybcio 	.num_nodes = 1,
735*de2ae887SKonrad Dybcio 	.nodes = { &xs_pcie },
736*de2ae887SKonrad Dybcio };
737*de2ae887SKonrad Dybcio 
738*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn6 = {
739*de2ae887SKonrad Dybcio 	.name = "SN6",
740*de2ae887SKonrad Dybcio 	.keepalive = false,
741*de2ae887SKonrad Dybcio 	.num_nodes = 2,
742*de2ae887SKonrad Dybcio 	.nodes = { &qhm_qdss_bam, &xm_qdss_etr },
743*de2ae887SKonrad Dybcio };
744*de2ae887SKonrad Dybcio 
745*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn7 = {
746*de2ae887SKonrad Dybcio 	.name = "SN7",
747*de2ae887SKonrad Dybcio 	.keepalive = false,
748*de2ae887SKonrad Dybcio 	.num_nodes = 4,
749*de2ae887SKonrad Dybcio 	.nodes = { &qnm_aggre_noc, &xm_pcie, &xm_usb3, &qns_aggre_noc },
750*de2ae887SKonrad Dybcio };
751*de2ae887SKonrad Dybcio 
752*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn8 = {
753*de2ae887SKonrad Dybcio 	.name = "SN8",
754*de2ae887SKonrad Dybcio 	.keepalive = false,
755*de2ae887SKonrad Dybcio 	.num_nodes = 1,
756*de2ae887SKonrad Dybcio 	.nodes = { &qnm_memnoc },
757*de2ae887SKonrad Dybcio };
758*de2ae887SKonrad Dybcio 
759*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn9 = {
760*de2ae887SKonrad Dybcio 	.name = "SN9",
761*de2ae887SKonrad Dybcio 	.keepalive = false,
762*de2ae887SKonrad Dybcio 	.num_nodes = 1,
763*de2ae887SKonrad Dybcio 	.nodes = { &qnm_memnoc_pcie },
764*de2ae887SKonrad Dybcio };
765*de2ae887SKonrad Dybcio 
766*de2ae887SKonrad Dybcio static struct qcom_icc_bcm bcm_sn10 = {
767*de2ae887SKonrad Dybcio 	.name = "SN10",
768*de2ae887SKonrad Dybcio 	.keepalive = false,
769*de2ae887SKonrad Dybcio 	.num_nodes = 2,
770*de2ae887SKonrad Dybcio 	.nodes = { &qnm_ipa, &xm_ipa2pcie_slv },
771*de2ae887SKonrad Dybcio };
77239a53928SRohit Agarwal 
77339a53928SRohit Agarwal static struct qcom_icc_bcm * const mc_virt_bcms[] = {
77439a53928SRohit Agarwal 	&bcm_mc0,
77539a53928SRohit Agarwal };
77639a53928SRohit Agarwal 
77739a53928SRohit Agarwal static struct qcom_icc_node * const mc_virt_nodes[] = {
77839a53928SRohit Agarwal 	[MASTER_LLCC] = &llcc_mc,
77939a53928SRohit Agarwal 	[SLAVE_EBI1] = &ebi,
78039a53928SRohit Agarwal };
78139a53928SRohit Agarwal 
78239a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_mc_virt = {
78339a53928SRohit Agarwal 	.nodes = mc_virt_nodes,
78439a53928SRohit Agarwal 	.num_nodes = ARRAY_SIZE(mc_virt_nodes),
78539a53928SRohit Agarwal 	.bcms = mc_virt_bcms,
78639a53928SRohit Agarwal 	.num_bcms = ARRAY_SIZE(mc_virt_bcms),
78739a53928SRohit Agarwal };
78839a53928SRohit Agarwal 
78939a53928SRohit Agarwal static struct qcom_icc_bcm * const mem_noc_bcms[] = {
79039a53928SRohit Agarwal 	&bcm_sh0,
79139a53928SRohit Agarwal 	&bcm_sh1,
79239a53928SRohit Agarwal 	&bcm_sh3,
79339a53928SRohit Agarwal };
79439a53928SRohit Agarwal 
79539a53928SRohit Agarwal static struct qcom_icc_node * const mem_noc_nodes[] = {
79639a53928SRohit Agarwal 	[MASTER_TCU_0] = &acm_tcu,
79739a53928SRohit Agarwal 	[MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
79839a53928SRohit Agarwal 	[MASTER_APPSS_PROC] = &xm_apps_rdwr,
79939a53928SRohit Agarwal 	[SLAVE_LLCC] = &qns_llcc,
80039a53928SRohit Agarwal 	[SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc,
80139a53928SRohit Agarwal 	[SLAVE_MEM_NOC_PCIE_SNOC] = &qns_sys_pcie,
80239a53928SRohit Agarwal };
80339a53928SRohit Agarwal 
80439a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_mem_noc = {
80539a53928SRohit Agarwal 	.nodes = mem_noc_nodes,
80639a53928SRohit Agarwal 	.num_nodes = ARRAY_SIZE(mem_noc_nodes),
80739a53928SRohit Agarwal 	.bcms = mem_noc_bcms,
80839a53928SRohit Agarwal 	.num_bcms = ARRAY_SIZE(mem_noc_bcms),
80939a53928SRohit Agarwal };
81039a53928SRohit Agarwal 
81139a53928SRohit Agarwal static struct qcom_icc_bcm * const system_noc_bcms[] = {
81239a53928SRohit Agarwal 	&bcm_ce0,
81339a53928SRohit Agarwal 	&bcm_pn0,
81439a53928SRohit Agarwal 	&bcm_pn1,
81539a53928SRohit Agarwal 	&bcm_pn2,
81639a53928SRohit Agarwal 	&bcm_pn3,
81739a53928SRohit Agarwal 	&bcm_pn4,
81839a53928SRohit Agarwal 	&bcm_sn0,
81939a53928SRohit Agarwal 	&bcm_sn1,
82039a53928SRohit Agarwal 	&bcm_sn2,
82139a53928SRohit Agarwal 	&bcm_sn3,
82239a53928SRohit Agarwal 	&bcm_sn5,
82339a53928SRohit Agarwal 	&bcm_sn6,
82439a53928SRohit Agarwal 	&bcm_sn7,
82539a53928SRohit Agarwal 	&bcm_sn8,
82639a53928SRohit Agarwal 	&bcm_sn9,
82739a53928SRohit Agarwal 	&bcm_sn10,
82839a53928SRohit Agarwal };
82939a53928SRohit Agarwal 
83039a53928SRohit Agarwal static struct qcom_icc_node * const system_noc_nodes[] = {
83139a53928SRohit Agarwal 	[MASTER_AUDIO] = &qhm_audio,
83239a53928SRohit Agarwal 	[MASTER_BLSP_1] = &qhm_blsp1,
83339a53928SRohit Agarwal 	[MASTER_QDSS_BAM] = &qhm_qdss_bam,
83439a53928SRohit Agarwal 	[MASTER_QPIC] = &qhm_qpic,
83539a53928SRohit Agarwal 	[MASTER_SNOC_CFG] = &qhm_snoc_cfg,
83639a53928SRohit Agarwal 	[MASTER_SPMI_FETCHER] = &qhm_spmi_fetcher1,
83739a53928SRohit Agarwal 	[MASTER_ANOC_SNOC] = &qnm_aggre_noc,
83839a53928SRohit Agarwal 	[MASTER_IPA] = &qnm_ipa,
83939a53928SRohit Agarwal 	[MASTER_MEM_NOC_SNOC] = &qnm_memnoc,
84039a53928SRohit Agarwal 	[MASTER_MEM_NOC_PCIE_SNOC] = &qnm_memnoc_pcie,
84139a53928SRohit Agarwal 	[MASTER_CRYPTO] = &qxm_crypto,
84239a53928SRohit Agarwal 	[MASTER_IPA_PCIE] = &xm_ipa2pcie_slv,
84339a53928SRohit Agarwal 	[MASTER_PCIE_0] = &xm_pcie,
84439a53928SRohit Agarwal 	[MASTER_QDSS_ETR] = &xm_qdss_etr,
84539a53928SRohit Agarwal 	[MASTER_SDCC_1] = &xm_sdc1,
84639a53928SRohit Agarwal 	[MASTER_USB3] = &xm_usb3,
84739a53928SRohit Agarwal 	[SLAVE_AOSS] = &qhs_aoss,
84839a53928SRohit Agarwal 	[SLAVE_APPSS] = &qhs_apss,
84939a53928SRohit Agarwal 	[SLAVE_AUDIO] = &qhs_audio,
85039a53928SRohit Agarwal 	[SLAVE_BLSP_1] = &qhs_blsp1,
85139a53928SRohit Agarwal 	[SLAVE_CLK_CTL] = &qhs_clk_ctl,
85239a53928SRohit Agarwal 	[SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
85339a53928SRohit Agarwal 	[SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg,
85439a53928SRohit Agarwal 	[SLAVE_ECC_CFG] = &qhs_ecc_cfg,
85539a53928SRohit Agarwal 	[SLAVE_IMEM_CFG] = &qhs_imem_cfg,
85639a53928SRohit Agarwal 	[SLAVE_IPA_CFG] = &qhs_ipa,
85739a53928SRohit Agarwal 	[SLAVE_CNOC_MSS] = &qhs_mss_cfg,
85839a53928SRohit Agarwal 	[SLAVE_PCIE_PARF] = &qhs_pcie_parf,
85939a53928SRohit Agarwal 	[SLAVE_PDM] = &qhs_pdm,
86039a53928SRohit Agarwal 	[SLAVE_PRNG] = &qhs_prng,
86139a53928SRohit Agarwal 	[SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
86239a53928SRohit Agarwal 	[SLAVE_QPIC] = &qhs_qpic,
86339a53928SRohit Agarwal 	[SLAVE_SDCC_1] = &qhs_sdc1,
86439a53928SRohit Agarwal 	[SLAVE_SNOC_CFG] = &qhs_snoc_cfg,
86539a53928SRohit Agarwal 	[SLAVE_SPMI_FETCHER] = &qhs_spmi_fetcher,
86639a53928SRohit Agarwal 	[SLAVE_SPMI_VGI_COEX] = &qhs_spmi_vgi_coex,
86739a53928SRohit Agarwal 	[SLAVE_TCSR] = &qhs_tcsr,
86839a53928SRohit Agarwal 	[SLAVE_TLMM] = &qhs_tlmm,
86939a53928SRohit Agarwal 	[SLAVE_USB3] = &qhs_usb3,
87039a53928SRohit Agarwal 	[SLAVE_USB3_PHY_CFG] = &qhs_usb3_phy,
87139a53928SRohit Agarwal 	[SLAVE_ANOC_SNOC] = &qns_aggre_noc,
87239a53928SRohit Agarwal 	[SLAVE_SNOC_MEM_NOC_GC] = &qns_snoc_memnoc,
87339a53928SRohit Agarwal 	[SLAVE_IMEM] = &qxs_imem,
87439a53928SRohit Agarwal 	[SLAVE_SERVICE_SNOC] = &srvc_snoc,
87539a53928SRohit Agarwal 	[SLAVE_PCIE_0] = &xs_pcie,
87639a53928SRohit Agarwal 	[SLAVE_QDSS_STM] = &xs_qdss_stm,
87739a53928SRohit Agarwal 	[SLAVE_TCU] = &xs_sys_tcu_cfg,
87839a53928SRohit Agarwal };
87939a53928SRohit Agarwal 
88039a53928SRohit Agarwal static const struct qcom_icc_desc sdx65_system_noc = {
88139a53928SRohit Agarwal 	.nodes = system_noc_nodes,
88239a53928SRohit Agarwal 	.num_nodes = ARRAY_SIZE(system_noc_nodes),
88339a53928SRohit Agarwal 	.bcms = system_noc_bcms,
88439a53928SRohit Agarwal 	.num_bcms = ARRAY_SIZE(system_noc_bcms),
88539a53928SRohit Agarwal };
88639a53928SRohit Agarwal 
88739a53928SRohit Agarwal static const struct of_device_id qnoc_of_match[] = {
88839a53928SRohit Agarwal 	{ .compatible = "qcom,sdx65-mc-virt",
88939a53928SRohit Agarwal 	  .data = &sdx65_mc_virt},
89039a53928SRohit Agarwal 	{ .compatible = "qcom,sdx65-mem-noc",
89139a53928SRohit Agarwal 	  .data = &sdx65_mem_noc},
89239a53928SRohit Agarwal 	{ .compatible = "qcom,sdx65-system-noc",
89339a53928SRohit Agarwal 	  .data = &sdx65_system_noc},
89439a53928SRohit Agarwal 	{ }
89539a53928SRohit Agarwal };
89639a53928SRohit Agarwal MODULE_DEVICE_TABLE(of, qnoc_of_match);
89739a53928SRohit Agarwal 
89839a53928SRohit Agarwal static struct platform_driver qnoc_driver = {
89939a53928SRohit Agarwal 	.probe = qcom_icc_rpmh_probe,
90039a53928SRohit Agarwal 	.remove = qcom_icc_rpmh_remove,
90139a53928SRohit Agarwal 	.driver = {
90239a53928SRohit Agarwal 		.name = "qnoc-sdx65",
90339a53928SRohit Agarwal 		.of_match_table = qnoc_of_match,
90439a53928SRohit Agarwal 		.sync_state = icc_sync_state,
90539a53928SRohit Agarwal 	},
90639a53928SRohit Agarwal };
90739a53928SRohit Agarwal module_platform_driver(qnoc_driver);
90839a53928SRohit Agarwal 
90939a53928SRohit Agarwal MODULE_DESCRIPTION("Qualcomm SDX65 NoC driver");
91039a53928SRohit Agarwal MODULE_LICENSE("GPL v2");
911