1
0

sdm845.c 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
  4. */
  5. #include <linux/device.h>
  6. #include <linux/interconnect.h>
  7. #include <linux/interconnect-provider.h>
  8. #include <linux/module.h>
  9. #include <linux/mod_devicetable.h>
  10. #include <linux/platform_device.h>
  11. #include <dt-bindings/interconnect/qcom,sdm845.h>
  12. #include "bcm-voter.h"
  13. #include "icc-rpmh.h"
  14. static struct qcom_icc_node qhm_a1noc_cfg;
  15. static struct qcom_icc_node qhm_qup1;
  16. static struct qcom_icc_node qhm_tsif;
  17. static struct qcom_icc_node xm_sdc2;
  18. static struct qcom_icc_node xm_sdc4;
  19. static struct qcom_icc_node xm_ufs_card;
  20. static struct qcom_icc_node xm_ufs_mem;
  21. static struct qcom_icc_node xm_pcie_0;
  22. static struct qcom_icc_node qhm_a2noc_cfg;
  23. static struct qcom_icc_node qhm_qdss_bam;
  24. static struct qcom_icc_node qhm_qup2;
  25. static struct qcom_icc_node qnm_cnoc;
  26. static struct qcom_icc_node qxm_crypto;
  27. static struct qcom_icc_node qxm_ipa;
  28. static struct qcom_icc_node xm_pcie3_1;
  29. static struct qcom_icc_node xm_qdss_etr;
  30. static struct qcom_icc_node xm_usb3_0;
  31. static struct qcom_icc_node xm_usb3_1;
  32. static struct qcom_icc_node qxm_camnoc_hf0_uncomp;
  33. static struct qcom_icc_node qxm_camnoc_hf1_uncomp;
  34. static struct qcom_icc_node qxm_camnoc_sf_uncomp;
  35. static struct qcom_icc_node qhm_spdm;
  36. static struct qcom_icc_node qhm_tic;
  37. static struct qcom_icc_node qnm_snoc;
  38. static struct qcom_icc_node xm_qdss_dap;
  39. static struct qcom_icc_node qhm_cnoc;
  40. static struct qcom_icc_node acm_l3;
  41. static struct qcom_icc_node pm_gnoc_cfg;
  42. static struct qcom_icc_node llcc_mc;
  43. static struct qcom_icc_node acm_tcu;
  44. static struct qcom_icc_node qhm_memnoc_cfg;
  45. static struct qcom_icc_node qnm_apps;
  46. static struct qcom_icc_node qnm_mnoc_hf;
  47. static struct qcom_icc_node qnm_mnoc_sf;
  48. static struct qcom_icc_node qnm_snoc_gc;
  49. static struct qcom_icc_node qnm_snoc_sf;
  50. static struct qcom_icc_node qxm_gpu;
  51. static struct qcom_icc_node qhm_mnoc_cfg;
  52. static struct qcom_icc_node qxm_camnoc_hf0;
  53. static struct qcom_icc_node qxm_camnoc_hf1;
  54. static struct qcom_icc_node qxm_camnoc_sf;
  55. static struct qcom_icc_node qxm_mdp0;
  56. static struct qcom_icc_node qxm_mdp1;
  57. static struct qcom_icc_node qxm_rot;
  58. static struct qcom_icc_node qxm_venus0;
  59. static struct qcom_icc_node qxm_venus1;
  60. static struct qcom_icc_node qxm_venus_arm9;
  61. static struct qcom_icc_node qhm_snoc_cfg;
  62. static struct qcom_icc_node qnm_aggre1_noc;
  63. static struct qcom_icc_node qnm_aggre2_noc;
  64. static struct qcom_icc_node qnm_gladiator_sodv;
  65. static struct qcom_icc_node qnm_memnoc;
  66. static struct qcom_icc_node qnm_pcie_anoc;
  67. static struct qcom_icc_node qxm_pimem;
  68. static struct qcom_icc_node xm_gic;
  69. static struct qcom_icc_node qns_a1noc_snoc;
  70. static struct qcom_icc_node srvc_aggre1_noc;
  71. static struct qcom_icc_node qns_pcie_a1noc_snoc;
  72. static struct qcom_icc_node qns_a2noc_snoc;
  73. static struct qcom_icc_node qns_pcie_snoc;
  74. static struct qcom_icc_node srvc_aggre2_noc;
  75. static struct qcom_icc_node qns_camnoc_uncomp;
  76. static struct qcom_icc_node qhs_a1_noc_cfg;
  77. static struct qcom_icc_node qhs_a2_noc_cfg;
  78. static struct qcom_icc_node qhs_aop;
  79. static struct qcom_icc_node qhs_aoss;
  80. static struct qcom_icc_node qhs_camera_cfg;
  81. static struct qcom_icc_node qhs_clk_ctl;
  82. static struct qcom_icc_node qhs_compute_dsp_cfg;
  83. static struct qcom_icc_node qhs_cpr_cx;
  84. static struct qcom_icc_node qhs_crypto0_cfg;
  85. static struct qcom_icc_node qhs_dcc_cfg;
  86. static struct qcom_icc_node qhs_ddrss_cfg;
  87. static struct qcom_icc_node qhs_display_cfg;
  88. static struct qcom_icc_node qhs_glm;
  89. static struct qcom_icc_node qhs_gpuss_cfg;
  90. static struct qcom_icc_node qhs_imem_cfg;
  91. static struct qcom_icc_node qhs_ipa;
  92. static struct qcom_icc_node qhs_mnoc_cfg;
  93. static struct qcom_icc_node qhs_pcie0_cfg;
  94. static struct qcom_icc_node qhs_pcie_gen3_cfg;
  95. static struct qcom_icc_node qhs_pdm;
  96. static struct qcom_icc_node qhs_phy_refgen_south;
  97. static struct qcom_icc_node qhs_pimem_cfg;
  98. static struct qcom_icc_node qhs_prng;
  99. static struct qcom_icc_node qhs_qdss_cfg;
  100. static struct qcom_icc_node qhs_qupv3_north;
  101. static struct qcom_icc_node qhs_qupv3_south;
  102. static struct qcom_icc_node qhs_sdc2;
  103. static struct qcom_icc_node qhs_sdc4;
  104. static struct qcom_icc_node qhs_snoc_cfg;
  105. static struct qcom_icc_node qhs_spdm;
  106. static struct qcom_icc_node qhs_spss_cfg;
  107. static struct qcom_icc_node qhs_tcsr;
  108. static struct qcom_icc_node qhs_tlmm_north;
  109. static struct qcom_icc_node qhs_tlmm_south;
  110. static struct qcom_icc_node qhs_tsif;
  111. static struct qcom_icc_node qhs_ufs_card_cfg;
  112. static struct qcom_icc_node qhs_ufs_mem_cfg;
  113. static struct qcom_icc_node qhs_usb3_0;
  114. static struct qcom_icc_node qhs_usb3_1;
  115. static struct qcom_icc_node qhs_venus_cfg;
  116. static struct qcom_icc_node qhs_vsense_ctrl_cfg;
  117. static struct qcom_icc_node qns_cnoc_a2noc;
  118. static struct qcom_icc_node srvc_cnoc;
  119. static struct qcom_icc_node qhs_llcc;
  120. static struct qcom_icc_node qhs_memnoc;
  121. static struct qcom_icc_node qns_gladiator_sodv;
  122. static struct qcom_icc_node qns_gnoc_memnoc;
  123. static struct qcom_icc_node srvc_gnoc;
  124. static struct qcom_icc_node ebi;
  125. static struct qcom_icc_node qhs_mdsp_ms_mpu_cfg;
  126. static struct qcom_icc_node qns_apps_io;
  127. static struct qcom_icc_node qns_llcc;
  128. static struct qcom_icc_node qns_memnoc_snoc;
  129. static struct qcom_icc_node srvc_memnoc;
  130. static struct qcom_icc_node qns2_mem_noc;
  131. static struct qcom_icc_node qns_mem_noc_hf;
  132. static struct qcom_icc_node srvc_mnoc;
  133. static struct qcom_icc_node qhs_apss;
  134. static struct qcom_icc_node qns_cnoc;
  135. static struct qcom_icc_node qns_memnoc_gc;
  136. static struct qcom_icc_node qns_memnoc_sf;
  137. static struct qcom_icc_node qxs_imem;
  138. static struct qcom_icc_node qxs_pcie;
  139. static struct qcom_icc_node qxs_pcie_gen3;
  140. static struct qcom_icc_node qxs_pimem;
  141. static struct qcom_icc_node srvc_snoc;
  142. static struct qcom_icc_node xs_qdss_stm;
  143. static struct qcom_icc_node xs_sys_tcu_cfg;
  144. static struct qcom_icc_node qhm_a1noc_cfg = {
  145. .name = "qhm_a1noc_cfg",
  146. .channels = 1,
  147. .buswidth = 4,
  148. .num_links = 1,
  149. .link_nodes = { &srvc_aggre1_noc },
  150. };
  151. static struct qcom_icc_node qhm_qup1 = {
  152. .name = "qhm_qup1",
  153. .channels = 1,
  154. .buswidth = 4,
  155. .num_links = 1,
  156. .link_nodes = { &qns_a1noc_snoc },
  157. };
  158. static struct qcom_icc_node qhm_tsif = {
  159. .name = "qhm_tsif",
  160. .channels = 1,
  161. .buswidth = 4,
  162. .num_links = 1,
  163. .link_nodes = { &qns_a1noc_snoc },
  164. };
  165. static struct qcom_icc_node xm_sdc2 = {
  166. .name = "xm_sdc2",
  167. .channels = 1,
  168. .buswidth = 8,
  169. .num_links = 1,
  170. .link_nodes = { &qns_a1noc_snoc },
  171. };
  172. static struct qcom_icc_node xm_sdc4 = {
  173. .name = "xm_sdc4",
  174. .channels = 1,
  175. .buswidth = 8,
  176. .num_links = 1,
  177. .link_nodes = { &qns_a1noc_snoc },
  178. };
  179. static struct qcom_icc_node xm_ufs_card = {
  180. .name = "xm_ufs_card",
  181. .channels = 1,
  182. .buswidth = 8,
  183. .num_links = 1,
  184. .link_nodes = { &qns_a1noc_snoc },
  185. };
  186. static struct qcom_icc_node xm_ufs_mem = {
  187. .name = "xm_ufs_mem",
  188. .channels = 1,
  189. .buswidth = 8,
  190. .num_links = 1,
  191. .link_nodes = { &qns_a1noc_snoc },
  192. };
  193. static struct qcom_icc_node xm_pcie_0 = {
  194. .name = "xm_pcie_0",
  195. .channels = 1,
  196. .buswidth = 8,
  197. .num_links = 1,
  198. .link_nodes = { &qns_pcie_a1noc_snoc },
  199. };
  200. static struct qcom_icc_node qhm_a2noc_cfg = {
  201. .name = "qhm_a2noc_cfg",
  202. .channels = 1,
  203. .buswidth = 4,
  204. .num_links = 1,
  205. .link_nodes = { &srvc_aggre2_noc },
  206. };
  207. static struct qcom_icc_node qhm_qdss_bam = {
  208. .name = "qhm_qdss_bam",
  209. .channels = 1,
  210. .buswidth = 4,
  211. .num_links = 1,
  212. .link_nodes = { &qns_a2noc_snoc },
  213. };
  214. static struct qcom_icc_node qhm_qup2 = {
  215. .name = "qhm_qup2",
  216. .channels = 1,
  217. .buswidth = 4,
  218. .num_links = 1,
  219. .link_nodes = { &qns_a2noc_snoc },
  220. };
  221. static struct qcom_icc_node qnm_cnoc = {
  222. .name = "qnm_cnoc",
  223. .channels = 1,
  224. .buswidth = 8,
  225. .num_links = 1,
  226. .link_nodes = { &qns_a2noc_snoc },
  227. };
  228. static struct qcom_icc_node qxm_crypto = {
  229. .name = "qxm_crypto",
  230. .channels = 1,
  231. .buswidth = 8,
  232. .num_links = 1,
  233. .link_nodes = { &qns_a2noc_snoc },
  234. };
  235. static struct qcom_icc_node qxm_ipa = {
  236. .name = "qxm_ipa",
  237. .channels = 1,
  238. .buswidth = 8,
  239. .num_links = 1,
  240. .link_nodes = { &qns_a2noc_snoc },
  241. };
  242. static struct qcom_icc_node xm_pcie3_1 = {
  243. .name = "xm_pcie3_1",
  244. .channels = 1,
  245. .buswidth = 8,
  246. .num_links = 1,
  247. .link_nodes = { &qns_pcie_snoc },
  248. };
  249. static struct qcom_icc_node xm_qdss_etr = {
  250. .name = "xm_qdss_etr",
  251. .channels = 1,
  252. .buswidth = 8,
  253. .num_links = 1,
  254. .link_nodes = { &qns_a2noc_snoc },
  255. };
  256. static struct qcom_icc_node xm_usb3_0 = {
  257. .name = "xm_usb3_0",
  258. .channels = 1,
  259. .buswidth = 8,
  260. .num_links = 1,
  261. .link_nodes = { &qns_a2noc_snoc },
  262. };
  263. static struct qcom_icc_node xm_usb3_1 = {
  264. .name = "xm_usb3_1",
  265. .channels = 1,
  266. .buswidth = 8,
  267. .num_links = 1,
  268. .link_nodes = { &qns_a2noc_snoc },
  269. };
  270. static struct qcom_icc_node qxm_camnoc_hf0_uncomp = {
  271. .name = "qxm_camnoc_hf0_uncomp",
  272. .channels = 1,
  273. .buswidth = 32,
  274. .num_links = 1,
  275. .link_nodes = { &qns_camnoc_uncomp },
  276. };
  277. static struct qcom_icc_node qxm_camnoc_hf1_uncomp = {
  278. .name = "qxm_camnoc_hf1_uncomp",
  279. .channels = 1,
  280. .buswidth = 32,
  281. .num_links = 1,
  282. .link_nodes = { &qns_camnoc_uncomp },
  283. };
  284. static struct qcom_icc_node qxm_camnoc_sf_uncomp = {
  285. .name = "qxm_camnoc_sf_uncomp",
  286. .channels = 1,
  287. .buswidth = 32,
  288. .num_links = 1,
  289. .link_nodes = { &qns_camnoc_uncomp },
  290. };
  291. static struct qcom_icc_node qhm_spdm = {
  292. .name = "qhm_spdm",
  293. .channels = 1,
  294. .buswidth = 4,
  295. .num_links = 1,
  296. .link_nodes = { &qns_cnoc_a2noc },
  297. };
  298. static struct qcom_icc_node qhm_tic = {
  299. .name = "qhm_tic",
  300. .channels = 1,
  301. .buswidth = 4,
  302. .num_links = 43,
  303. .link_nodes = { &qhs_a1_noc_cfg,
  304. &qhs_a2_noc_cfg,
  305. &qhs_aop,
  306. &qhs_aoss,
  307. &qhs_camera_cfg,
  308. &qhs_clk_ctl,
  309. &qhs_compute_dsp_cfg,
  310. &qhs_cpr_cx,
  311. &qhs_crypto0_cfg,
  312. &qhs_dcc_cfg,
  313. &qhs_ddrss_cfg,
  314. &qhs_display_cfg,
  315. &qhs_glm,
  316. &qhs_gpuss_cfg,
  317. &qhs_imem_cfg,
  318. &qhs_ipa,
  319. &qhs_mnoc_cfg,
  320. &qhs_pcie0_cfg,
  321. &qhs_pcie_gen3_cfg,
  322. &qhs_pdm,
  323. &qhs_phy_refgen_south,
  324. &qhs_pimem_cfg,
  325. &qhs_prng,
  326. &qhs_qdss_cfg,
  327. &qhs_qupv3_north,
  328. &qhs_qupv3_south,
  329. &qhs_sdc2,
  330. &qhs_sdc4,
  331. &qhs_snoc_cfg,
  332. &qhs_spdm,
  333. &qhs_spss_cfg,
  334. &qhs_tcsr,
  335. &qhs_tlmm_north,
  336. &qhs_tlmm_south,
  337. &qhs_tsif,
  338. &qhs_ufs_card_cfg,
  339. &qhs_ufs_mem_cfg,
  340. &qhs_usb3_0,
  341. &qhs_usb3_1,
  342. &qhs_venus_cfg,
  343. &qhs_vsense_ctrl_cfg,
  344. &qns_cnoc_a2noc,
  345. &srvc_cnoc },
  346. };
  347. static struct qcom_icc_node qnm_snoc = {
  348. .name = "qnm_snoc",
  349. .channels = 1,
  350. .buswidth = 8,
  351. .num_links = 42,
  352. .link_nodes = { &qhs_a1_noc_cfg,
  353. &qhs_a2_noc_cfg,
  354. &qhs_aop,
  355. &qhs_aoss,
  356. &qhs_camera_cfg,
  357. &qhs_clk_ctl,
  358. &qhs_compute_dsp_cfg,
  359. &qhs_cpr_cx,
  360. &qhs_crypto0_cfg,
  361. &qhs_dcc_cfg,
  362. &qhs_ddrss_cfg,
  363. &qhs_display_cfg,
  364. &qhs_glm,
  365. &qhs_gpuss_cfg,
  366. &qhs_imem_cfg,
  367. &qhs_ipa,
  368. &qhs_mnoc_cfg,
  369. &qhs_pcie0_cfg,
  370. &qhs_pcie_gen3_cfg,
  371. &qhs_pdm,
  372. &qhs_phy_refgen_south,
  373. &qhs_pimem_cfg,
  374. &qhs_prng,
  375. &qhs_qdss_cfg,
  376. &qhs_qupv3_north,
  377. &qhs_qupv3_south,
  378. &qhs_sdc2,
  379. &qhs_sdc4,
  380. &qhs_snoc_cfg,
  381. &qhs_spdm,
  382. &qhs_spss_cfg,
  383. &qhs_tcsr,
  384. &qhs_tlmm_north,
  385. &qhs_tlmm_south,
  386. &qhs_tsif,
  387. &qhs_ufs_card_cfg,
  388. &qhs_ufs_mem_cfg,
  389. &qhs_usb3_0,
  390. &qhs_usb3_1,
  391. &qhs_venus_cfg,
  392. &qhs_vsense_ctrl_cfg,
  393. &srvc_cnoc },
  394. };
  395. static struct qcom_icc_node xm_qdss_dap = {
  396. .name = "xm_qdss_dap",
  397. .channels = 1,
  398. .buswidth = 8,
  399. .num_links = 43,
  400. .link_nodes = { &qhs_a1_noc_cfg,
  401. &qhs_a2_noc_cfg,
  402. &qhs_aop,
  403. &qhs_aoss,
  404. &qhs_camera_cfg,
  405. &qhs_clk_ctl,
  406. &qhs_compute_dsp_cfg,
  407. &qhs_cpr_cx,
  408. &qhs_crypto0_cfg,
  409. &qhs_dcc_cfg,
  410. &qhs_ddrss_cfg,
  411. &qhs_display_cfg,
  412. &qhs_glm,
  413. &qhs_gpuss_cfg,
  414. &qhs_imem_cfg,
  415. &qhs_ipa,
  416. &qhs_mnoc_cfg,
  417. &qhs_pcie0_cfg,
  418. &qhs_pcie_gen3_cfg,
  419. &qhs_pdm,
  420. &qhs_phy_refgen_south,
  421. &qhs_pimem_cfg,
  422. &qhs_prng,
  423. &qhs_qdss_cfg,
  424. &qhs_qupv3_north,
  425. &qhs_qupv3_south,
  426. &qhs_sdc2,
  427. &qhs_sdc4,
  428. &qhs_snoc_cfg,
  429. &qhs_spdm,
  430. &qhs_spss_cfg,
  431. &qhs_tcsr,
  432. &qhs_tlmm_north,
  433. &qhs_tlmm_south,
  434. &qhs_tsif,
  435. &qhs_ufs_card_cfg,
  436. &qhs_ufs_mem_cfg,
  437. &qhs_usb3_0,
  438. &qhs_usb3_1,
  439. &qhs_venus_cfg,
  440. &qhs_vsense_ctrl_cfg,
  441. &qns_cnoc_a2noc,
  442. &srvc_cnoc },
  443. };
  444. static struct qcom_icc_node qhm_cnoc = {
  445. .name = "qhm_cnoc",
  446. .channels = 1,
  447. .buswidth = 4,
  448. .num_links = 2,
  449. .link_nodes = { &qhs_llcc,
  450. &qhs_memnoc },
  451. };
  452. static struct qcom_icc_node acm_l3 = {
  453. .name = "acm_l3",
  454. .channels = 1,
  455. .buswidth = 16,
  456. .num_links = 3,
  457. .link_nodes = { &qns_gladiator_sodv,
  458. &qns_gnoc_memnoc,
  459. &srvc_gnoc },
  460. };
  461. static struct qcom_icc_node pm_gnoc_cfg = {
  462. .name = "pm_gnoc_cfg",
  463. .channels = 1,
  464. .buswidth = 4,
  465. .num_links = 1,
  466. .link_nodes = { &srvc_gnoc },
  467. };
  468. static struct qcom_icc_node llcc_mc = {
  469. .name = "llcc_mc",
  470. .channels = 4,
  471. .buswidth = 4,
  472. .num_links = 1,
  473. .link_nodes = { &ebi },
  474. };
  475. static struct qcom_icc_node acm_tcu = {
  476. .name = "acm_tcu",
  477. .channels = 1,
  478. .buswidth = 8,
  479. .num_links = 3,
  480. .link_nodes = { &qns_apps_io,
  481. &qns_llcc,
  482. &qns_memnoc_snoc },
  483. };
  484. static struct qcom_icc_node qhm_memnoc_cfg = {
  485. .name = "qhm_memnoc_cfg",
  486. .channels = 1,
  487. .buswidth = 4,
  488. .num_links = 2,
  489. .link_nodes = { &qhs_mdsp_ms_mpu_cfg,
  490. &srvc_memnoc },
  491. };
  492. static struct qcom_icc_node qnm_apps = {
  493. .name = "qnm_apps",
  494. .channels = 2,
  495. .buswidth = 32,
  496. .num_links = 1,
  497. .link_nodes = { &qns_llcc },
  498. };
  499. static struct qcom_icc_node qnm_mnoc_hf = {
  500. .name = "qnm_mnoc_hf",
  501. .channels = 2,
  502. .buswidth = 32,
  503. .num_links = 2,
  504. .link_nodes = { &qns_apps_io,
  505. &qns_llcc },
  506. };
  507. static struct qcom_icc_node qnm_mnoc_sf = {
  508. .name = "qnm_mnoc_sf",
  509. .channels = 1,
  510. .buswidth = 32,
  511. .num_links = 3,
  512. .link_nodes = { &qns_apps_io,
  513. &qns_llcc,
  514. &qns_memnoc_snoc },
  515. };
  516. static struct qcom_icc_node qnm_snoc_gc = {
  517. .name = "qnm_snoc_gc",
  518. .channels = 1,
  519. .buswidth = 8,
  520. .num_links = 1,
  521. .link_nodes = { &qns_llcc },
  522. };
  523. static struct qcom_icc_node qnm_snoc_sf = {
  524. .name = "qnm_snoc_sf",
  525. .channels = 1,
  526. .buswidth = 16,
  527. .num_links = 2,
  528. .link_nodes = { &qns_apps_io,
  529. &qns_llcc },
  530. };
  531. static struct qcom_icc_node qxm_gpu = {
  532. .name = "qxm_gpu",
  533. .channels = 2,
  534. .buswidth = 32,
  535. .num_links = 3,
  536. .link_nodes = { &qns_apps_io,
  537. &qns_llcc,
  538. &qns_memnoc_snoc },
  539. };
  540. static struct qcom_icc_node qhm_mnoc_cfg = {
  541. .name = "qhm_mnoc_cfg",
  542. .channels = 1,
  543. .buswidth = 4,
  544. .num_links = 1,
  545. .link_nodes = { &srvc_mnoc },
  546. };
  547. static struct qcom_icc_node qxm_camnoc_hf0 = {
  548. .name = "qxm_camnoc_hf0",
  549. .channels = 1,
  550. .buswidth = 32,
  551. .num_links = 1,
  552. .link_nodes = { &qns_mem_noc_hf },
  553. };
  554. static struct qcom_icc_node qxm_camnoc_hf1 = {
  555. .name = "qxm_camnoc_hf1",
  556. .channels = 1,
  557. .buswidth = 32,
  558. .num_links = 1,
  559. .link_nodes = { &qns_mem_noc_hf },
  560. };
  561. static struct qcom_icc_node qxm_camnoc_sf = {
  562. .name = "qxm_camnoc_sf",
  563. .channels = 1,
  564. .buswidth = 32,
  565. .num_links = 1,
  566. .link_nodes = { &qns2_mem_noc },
  567. };
  568. static struct qcom_icc_node qxm_mdp0 = {
  569. .name = "qxm_mdp0",
  570. .channels = 1,
  571. .buswidth = 32,
  572. .num_links = 1,
  573. .link_nodes = { &qns_mem_noc_hf },
  574. };
  575. static struct qcom_icc_node qxm_mdp1 = {
  576. .name = "qxm_mdp1",
  577. .channels = 1,
  578. .buswidth = 32,
  579. .num_links = 1,
  580. .link_nodes = { &qns_mem_noc_hf },
  581. };
  582. static struct qcom_icc_node qxm_rot = {
  583. .name = "qxm_rot",
  584. .channels = 1,
  585. .buswidth = 32,
  586. .num_links = 1,
  587. .link_nodes = { &qns2_mem_noc },
  588. };
  589. static struct qcom_icc_node qxm_venus0 = {
  590. .name = "qxm_venus0",
  591. .channels = 1,
  592. .buswidth = 32,
  593. .num_links = 1,
  594. .link_nodes = { &qns2_mem_noc },
  595. };
  596. static struct qcom_icc_node qxm_venus1 = {
  597. .name = "qxm_venus1",
  598. .channels = 1,
  599. .buswidth = 32,
  600. .num_links = 1,
  601. .link_nodes = { &qns2_mem_noc },
  602. };
  603. static struct qcom_icc_node qxm_venus_arm9 = {
  604. .name = "qxm_venus_arm9",
  605. .channels = 1,
  606. .buswidth = 8,
  607. .num_links = 1,
  608. .link_nodes = { &qns2_mem_noc },
  609. };
  610. static struct qcom_icc_node qhm_snoc_cfg = {
  611. .name = "qhm_snoc_cfg",
  612. .channels = 1,
  613. .buswidth = 4,
  614. .num_links = 1,
  615. .link_nodes = { &srvc_snoc },
  616. };
  617. static struct qcom_icc_node qnm_aggre1_noc = {
  618. .name = "qnm_aggre1_noc",
  619. .channels = 1,
  620. .buswidth = 16,
  621. .num_links = 6,
  622. .link_nodes = { &qhs_apss,
  623. &qns_cnoc,
  624. &qns_memnoc_sf,
  625. &qxs_imem,
  626. &qxs_pimem,
  627. &xs_qdss_stm },
  628. };
  629. static struct qcom_icc_node qnm_aggre2_noc = {
  630. .name = "qnm_aggre2_noc",
  631. .channels = 1,
  632. .buswidth = 16,
  633. .num_links = 9,
  634. .link_nodes = { &qhs_apss,
  635. &qns_cnoc,
  636. &qns_memnoc_sf,
  637. &qxs_imem,
  638. &qxs_pcie,
  639. &qxs_pcie_gen3,
  640. &qxs_pimem,
  641. &xs_qdss_stm,
  642. &xs_sys_tcu_cfg },
  643. };
  644. static struct qcom_icc_node qnm_gladiator_sodv = {
  645. .name = "qnm_gladiator_sodv",
  646. .channels = 1,
  647. .buswidth = 8,
  648. .num_links = 8,
  649. .link_nodes = { &qhs_apss,
  650. &qns_cnoc,
  651. &qxs_imem,
  652. &qxs_pcie,
  653. &qxs_pcie_gen3,
  654. &qxs_pimem,
  655. &xs_qdss_stm,
  656. &xs_sys_tcu_cfg },
  657. };
  658. static struct qcom_icc_node qnm_memnoc = {
  659. .name = "qnm_memnoc",
  660. .channels = 1,
  661. .buswidth = 8,
  662. .num_links = 5,
  663. .link_nodes = { &qhs_apss,
  664. &qns_cnoc,
  665. &qxs_imem,
  666. &qxs_pimem,
  667. &xs_qdss_stm },
  668. };
  669. static struct qcom_icc_node qnm_pcie_anoc = {
  670. .name = "qnm_pcie_anoc",
  671. .channels = 1,
  672. .buswidth = 16,
  673. .num_links = 5,
  674. .link_nodes = { &qhs_apss,
  675. &qns_cnoc,
  676. &qns_memnoc_sf,
  677. &qxs_imem,
  678. &xs_qdss_stm },
  679. };
  680. static struct qcom_icc_node qxm_pimem = {
  681. .name = "qxm_pimem",
  682. .channels = 1,
  683. .buswidth = 8,
  684. .num_links = 2,
  685. .link_nodes = { &qns_memnoc_gc,
  686. &qxs_imem },
  687. };
  688. static struct qcom_icc_node xm_gic = {
  689. .name = "xm_gic",
  690. .channels = 1,
  691. .buswidth = 8,
  692. .num_links = 2,
  693. .link_nodes = { &qns_memnoc_gc,
  694. &qxs_imem },
  695. };
  696. static struct qcom_icc_node qns_a1noc_snoc = {
  697. .name = "qns_a1noc_snoc",
  698. .channels = 1,
  699. .buswidth = 16,
  700. .num_links = 1,
  701. .link_nodes = { &qnm_aggre1_noc },
  702. };
  703. static struct qcom_icc_node srvc_aggre1_noc = {
  704. .name = "srvc_aggre1_noc",
  705. .channels = 1,
  706. .buswidth = 4,
  707. };
  708. static struct qcom_icc_node qns_pcie_a1noc_snoc = {
  709. .name = "qns_pcie_a1noc_snoc",
  710. .channels = 1,
  711. .buswidth = 16,
  712. .num_links = 1,
  713. .link_nodes = { &qnm_pcie_anoc },
  714. };
  715. static struct qcom_icc_node qns_a2noc_snoc = {
  716. .name = "qns_a2noc_snoc",
  717. .channels = 1,
  718. .buswidth = 16,
  719. .num_links = 1,
  720. .link_nodes = { &qnm_aggre2_noc },
  721. };
  722. static struct qcom_icc_node qns_pcie_snoc = {
  723. .name = "qns_pcie_snoc",
  724. .channels = 1,
  725. .buswidth = 16,
  726. .num_links = 1,
  727. .link_nodes = { &qnm_pcie_anoc },
  728. };
  729. static struct qcom_icc_node srvc_aggre2_noc = {
  730. .name = "srvc_aggre2_noc",
  731. .channels = 1,
  732. .buswidth = 4,
  733. };
  734. static struct qcom_icc_node qns_camnoc_uncomp = {
  735. .name = "qns_camnoc_uncomp",
  736. .channels = 1,
  737. .buswidth = 32,
  738. };
  739. static struct qcom_icc_node qhs_a1_noc_cfg = {
  740. .name = "qhs_a1_noc_cfg",
  741. .channels = 1,
  742. .buswidth = 4,
  743. .num_links = 1,
  744. .link_nodes = { &qhm_a1noc_cfg },
  745. };
  746. static struct qcom_icc_node qhs_a2_noc_cfg = {
  747. .name = "qhs_a2_noc_cfg",
  748. .channels = 1,
  749. .buswidth = 4,
  750. .num_links = 1,
  751. .link_nodes = { &qhm_a2noc_cfg },
  752. };
  753. static struct qcom_icc_node qhs_aop = {
  754. .name = "qhs_aop",
  755. .channels = 1,
  756. .buswidth = 4,
  757. };
  758. static struct qcom_icc_node qhs_aoss = {
  759. .name = "qhs_aoss",
  760. .channels = 1,
  761. .buswidth = 4,
  762. };
  763. static struct qcom_icc_node qhs_camera_cfg = {
  764. .name = "qhs_camera_cfg",
  765. .channels = 1,
  766. .buswidth = 4,
  767. };
  768. static struct qcom_icc_node qhs_clk_ctl = {
  769. .name = "qhs_clk_ctl",
  770. .channels = 1,
  771. .buswidth = 4,
  772. };
  773. static struct qcom_icc_node qhs_compute_dsp_cfg = {
  774. .name = "qhs_compute_dsp_cfg",
  775. .channels = 1,
  776. .buswidth = 4,
  777. };
  778. static struct qcom_icc_node qhs_cpr_cx = {
  779. .name = "qhs_cpr_cx",
  780. .channels = 1,
  781. .buswidth = 4,
  782. };
  783. static struct qcom_icc_node qhs_crypto0_cfg = {
  784. .name = "qhs_crypto0_cfg",
  785. .channels = 1,
  786. .buswidth = 4,
  787. };
  788. static struct qcom_icc_node qhs_dcc_cfg = {
  789. .name = "qhs_dcc_cfg",
  790. .channels = 1,
  791. .buswidth = 4,
  792. .num_links = 1,
  793. .link_nodes = { &qhm_cnoc },
  794. };
  795. static struct qcom_icc_node qhs_ddrss_cfg = {
  796. .name = "qhs_ddrss_cfg",
  797. .channels = 1,
  798. .buswidth = 4,
  799. };
  800. static struct qcom_icc_node qhs_display_cfg = {
  801. .name = "qhs_display_cfg",
  802. .channels = 1,
  803. .buswidth = 4,
  804. };
  805. static struct qcom_icc_node qhs_glm = {
  806. .name = "qhs_glm",
  807. .channels = 1,
  808. .buswidth = 4,
  809. };
  810. static struct qcom_icc_node qhs_gpuss_cfg = {
  811. .name = "qhs_gpuss_cfg",
  812. .channels = 1,
  813. .buswidth = 8,
  814. };
  815. static struct qcom_icc_node qhs_imem_cfg = {
  816. .name = "qhs_imem_cfg",
  817. .channels = 1,
  818. .buswidth = 4,
  819. };
  820. static struct qcom_icc_node qhs_ipa = {
  821. .name = "qhs_ipa",
  822. .channels = 1,
  823. .buswidth = 4,
  824. };
  825. static struct qcom_icc_node qhs_mnoc_cfg = {
  826. .name = "qhs_mnoc_cfg",
  827. .channels = 1,
  828. .buswidth = 4,
  829. .num_links = 1,
  830. .link_nodes = { &qhm_mnoc_cfg },
  831. };
  832. static struct qcom_icc_node qhs_pcie0_cfg = {
  833. .name = "qhs_pcie0_cfg",
  834. .channels = 1,
  835. .buswidth = 4,
  836. };
  837. static struct qcom_icc_node qhs_pcie_gen3_cfg = {
  838. .name = "qhs_pcie_gen3_cfg",
  839. .channels = 1,
  840. .buswidth = 4,
  841. };
  842. static struct qcom_icc_node qhs_pdm = {
  843. .name = "qhs_pdm",
  844. .channels = 1,
  845. .buswidth = 4,
  846. };
  847. static struct qcom_icc_node qhs_phy_refgen_south = {
  848. .name = "qhs_phy_refgen_south",
  849. .channels = 1,
  850. .buswidth = 4,
  851. };
  852. static struct qcom_icc_node qhs_pimem_cfg = {
  853. .name = "qhs_pimem_cfg",
  854. .channels = 1,
  855. .buswidth = 4,
  856. };
  857. static struct qcom_icc_node qhs_prng = {
  858. .name = "qhs_prng",
  859. .channels = 1,
  860. .buswidth = 4,
  861. };
  862. static struct qcom_icc_node qhs_qdss_cfg = {
  863. .name = "qhs_qdss_cfg",
  864. .channels = 1,
  865. .buswidth = 4,
  866. };
  867. static struct qcom_icc_node qhs_qupv3_north = {
  868. .name = "qhs_qupv3_north",
  869. .channels = 1,
  870. .buswidth = 4,
  871. };
  872. static struct qcom_icc_node qhs_qupv3_south = {
  873. .name = "qhs_qupv3_south",
  874. .channels = 1,
  875. .buswidth = 4,
  876. };
  877. static struct qcom_icc_node qhs_sdc2 = {
  878. .name = "qhs_sdc2",
  879. .channels = 1,
  880. .buswidth = 4,
  881. };
  882. static struct qcom_icc_node qhs_sdc4 = {
  883. .name = "qhs_sdc4",
  884. .channels = 1,
  885. .buswidth = 4,
  886. };
  887. static struct qcom_icc_node qhs_snoc_cfg = {
  888. .name = "qhs_snoc_cfg",
  889. .channels = 1,
  890. .buswidth = 4,
  891. .num_links = 1,
  892. .link_nodes = { &qhm_snoc_cfg },
  893. };
  894. static struct qcom_icc_node qhs_spdm = {
  895. .name = "qhs_spdm",
  896. .channels = 1,
  897. .buswidth = 4,
  898. };
  899. static struct qcom_icc_node qhs_spss_cfg = {
  900. .name = "qhs_spss_cfg",
  901. .channels = 1,
  902. .buswidth = 4,
  903. };
  904. static struct qcom_icc_node qhs_tcsr = {
  905. .name = "qhs_tcsr",
  906. .channels = 1,
  907. .buswidth = 4,
  908. };
  909. static struct qcom_icc_node qhs_tlmm_north = {
  910. .name = "qhs_tlmm_north",
  911. .channels = 1,
  912. .buswidth = 4,
  913. };
  914. static struct qcom_icc_node qhs_tlmm_south = {
  915. .name = "qhs_tlmm_south",
  916. .channels = 1,
  917. .buswidth = 4,
  918. };
  919. static struct qcom_icc_node qhs_tsif = {
  920. .name = "qhs_tsif",
  921. .channels = 1,
  922. .buswidth = 4,
  923. };
  924. static struct qcom_icc_node qhs_ufs_card_cfg = {
  925. .name = "qhs_ufs_card_cfg",
  926. .channels = 1,
  927. .buswidth = 4,
  928. };
  929. static struct qcom_icc_node qhs_ufs_mem_cfg = {
  930. .name = "qhs_ufs_mem_cfg",
  931. .channels = 1,
  932. .buswidth = 4,
  933. };
  934. static struct qcom_icc_node qhs_usb3_0 = {
  935. .name = "qhs_usb3_0",
  936. .channels = 1,
  937. .buswidth = 4,
  938. };
  939. static struct qcom_icc_node qhs_usb3_1 = {
  940. .name = "qhs_usb3_1",
  941. .channels = 1,
  942. .buswidth = 4,
  943. };
  944. static struct qcom_icc_node qhs_venus_cfg = {
  945. .name = "qhs_venus_cfg",
  946. .channels = 1,
  947. .buswidth = 4,
  948. };
  949. static struct qcom_icc_node qhs_vsense_ctrl_cfg = {
  950. .name = "qhs_vsense_ctrl_cfg",
  951. .channels = 1,
  952. .buswidth = 4,
  953. };
  954. static struct qcom_icc_node qns_cnoc_a2noc = {
  955. .name = "qns_cnoc_a2noc",
  956. .channels = 1,
  957. .buswidth = 8,
  958. .num_links = 1,
  959. .link_nodes = { &qnm_cnoc },
  960. };
  961. static struct qcom_icc_node srvc_cnoc = {
  962. .name = "srvc_cnoc",
  963. .channels = 1,
  964. .buswidth = 4,
  965. };
  966. static struct qcom_icc_node qhs_llcc = {
  967. .name = "qhs_llcc",
  968. .channels = 1,
  969. .buswidth = 4,
  970. };
  971. static struct qcom_icc_node qhs_memnoc = {
  972. .name = "qhs_memnoc",
  973. .channels = 1,
  974. .buswidth = 4,
  975. .num_links = 1,
  976. .link_nodes = { &qhm_memnoc_cfg },
  977. };
  978. static struct qcom_icc_node qns_gladiator_sodv = {
  979. .name = "qns_gladiator_sodv",
  980. .channels = 1,
  981. .buswidth = 8,
  982. .num_links = 1,
  983. .link_nodes = { &qnm_gladiator_sodv },
  984. };
  985. static struct qcom_icc_node qns_gnoc_memnoc = {
  986. .name = "qns_gnoc_memnoc",
  987. .channels = 2,
  988. .buswidth = 32,
  989. .num_links = 1,
  990. .link_nodes = { &qnm_apps },
  991. };
  992. static struct qcom_icc_node srvc_gnoc = {
  993. .name = "srvc_gnoc",
  994. .channels = 1,
  995. .buswidth = 4,
  996. };
  997. static struct qcom_icc_node ebi = {
  998. .name = "ebi",
  999. .channels = 4,
  1000. .buswidth = 4,
  1001. };
  1002. static struct qcom_icc_node qhs_mdsp_ms_mpu_cfg = {
  1003. .name = "qhs_mdsp_ms_mpu_cfg",
  1004. .channels = 1,
  1005. .buswidth = 4,
  1006. };
  1007. static struct qcom_icc_node qns_apps_io = {
  1008. .name = "qns_apps_io",
  1009. .channels = 1,
  1010. .buswidth = 32,
  1011. };
  1012. static struct qcom_icc_node qns_llcc = {
  1013. .name = "qns_llcc",
  1014. .channels = 4,
  1015. .buswidth = 16,
  1016. .num_links = 1,
  1017. .link_nodes = { &llcc_mc },
  1018. };
  1019. static struct qcom_icc_node qns_memnoc_snoc = {
  1020. .name = "qns_memnoc_snoc",
  1021. .channels = 1,
  1022. .buswidth = 8,
  1023. .num_links = 1,
  1024. .link_nodes = { &qnm_memnoc },
  1025. };
  1026. static struct qcom_icc_node srvc_memnoc = {
  1027. .name = "srvc_memnoc",
  1028. .channels = 1,
  1029. .buswidth = 4,
  1030. };
  1031. static struct qcom_icc_node qns2_mem_noc = {
  1032. .name = "qns2_mem_noc",
  1033. .channels = 1,
  1034. .buswidth = 32,
  1035. .num_links = 1,
  1036. .link_nodes = { &qnm_mnoc_sf },
  1037. };
  1038. static struct qcom_icc_node qns_mem_noc_hf = {
  1039. .name = "qns_mem_noc_hf",
  1040. .channels = 2,
  1041. .buswidth = 32,
  1042. .num_links = 1,
  1043. .link_nodes = { &qnm_mnoc_hf },
  1044. };
  1045. static struct qcom_icc_node srvc_mnoc = {
  1046. .name = "srvc_mnoc",
  1047. .channels = 1,
  1048. .buswidth = 4,
  1049. };
  1050. static struct qcom_icc_node qhs_apss = {
  1051. .name = "qhs_apss",
  1052. .channels = 1,
  1053. .buswidth = 8,
  1054. };
  1055. static struct qcom_icc_node qns_cnoc = {
  1056. .name = "qns_cnoc",
  1057. .channels = 1,
  1058. .buswidth = 8,
  1059. .num_links = 1,
  1060. .link_nodes = { &qnm_snoc },
  1061. };
  1062. static struct qcom_icc_node qns_memnoc_gc = {
  1063. .name = "qns_memnoc_gc",
  1064. .channels = 1,
  1065. .buswidth = 8,
  1066. .num_links = 1,
  1067. .link_nodes = { &qnm_snoc_gc },
  1068. };
  1069. static struct qcom_icc_node qns_memnoc_sf = {
  1070. .name = "qns_memnoc_sf",
  1071. .channels = 1,
  1072. .buswidth = 16,
  1073. .num_links = 1,
  1074. .link_nodes = { &qnm_snoc_sf },
  1075. };
  1076. static struct qcom_icc_node qxs_imem = {
  1077. .name = "qxs_imem",
  1078. .channels = 1,
  1079. .buswidth = 8,
  1080. };
  1081. static struct qcom_icc_node qxs_pcie = {
  1082. .name = "qxs_pcie",
  1083. .channels = 1,
  1084. .buswidth = 8,
  1085. };
  1086. static struct qcom_icc_node qxs_pcie_gen3 = {
  1087. .name = "qxs_pcie_gen3",
  1088. .channels = 1,
  1089. .buswidth = 8,
  1090. };
  1091. static struct qcom_icc_node qxs_pimem = {
  1092. .name = "qxs_pimem",
  1093. .channels = 1,
  1094. .buswidth = 8,
  1095. };
  1096. static struct qcom_icc_node srvc_snoc = {
  1097. .name = "srvc_snoc",
  1098. .channels = 1,
  1099. .buswidth = 4,
  1100. };
  1101. static struct qcom_icc_node xs_qdss_stm = {
  1102. .name = "xs_qdss_stm",
  1103. .channels = 1,
  1104. .buswidth = 4,
  1105. };
  1106. static struct qcom_icc_node xs_sys_tcu_cfg = {
  1107. .name = "xs_sys_tcu_cfg",
  1108. .channels = 1,
  1109. .buswidth = 8,
  1110. };
  1111. static struct qcom_icc_bcm bcm_acv = {
  1112. .name = "ACV",
  1113. .enable_mask = BIT(3),
  1114. .keepalive = false,
  1115. .num_nodes = 1,
  1116. .nodes = { &ebi },
  1117. };
  1118. static struct qcom_icc_bcm bcm_mc0 = {
  1119. .name = "MC0",
  1120. .keepalive = true,
  1121. .num_nodes = 1,
  1122. .nodes = { &ebi },
  1123. };
  1124. static struct qcom_icc_bcm bcm_sh0 = {
  1125. .name = "SH0",
  1126. .keepalive = true,
  1127. .num_nodes = 1,
  1128. .nodes = { &qns_llcc },
  1129. };
  1130. static struct qcom_icc_bcm bcm_mm0 = {
  1131. .name = "MM0",
  1132. .keepalive = false,
  1133. .num_nodes = 1,
  1134. .nodes = { &qns_mem_noc_hf },
  1135. };
  1136. static struct qcom_icc_bcm bcm_sh1 = {
  1137. .name = "SH1",
  1138. .keepalive = false,
  1139. .num_nodes = 1,
  1140. .nodes = { &qns_apps_io },
  1141. };
  1142. static struct qcom_icc_bcm bcm_mm1 = {
  1143. .name = "MM1",
  1144. .keepalive = true,
  1145. .num_nodes = 7,
  1146. .nodes = { &qxm_camnoc_hf0_uncomp,
  1147. &qxm_camnoc_hf1_uncomp,
  1148. &qxm_camnoc_sf_uncomp,
  1149. &qxm_camnoc_hf0,
  1150. &qxm_camnoc_hf1,
  1151. &qxm_mdp0,
  1152. &qxm_mdp1
  1153. },
  1154. };
  1155. static struct qcom_icc_bcm bcm_sh2 = {
  1156. .name = "SH2",
  1157. .keepalive = false,
  1158. .num_nodes = 1,
  1159. .nodes = { &qns_memnoc_snoc },
  1160. };
  1161. static struct qcom_icc_bcm bcm_mm2 = {
  1162. .name = "MM2",
  1163. .keepalive = false,
  1164. .num_nodes = 1,
  1165. .nodes = { &qns2_mem_noc },
  1166. };
  1167. static struct qcom_icc_bcm bcm_sh3 = {
  1168. .name = "SH3",
  1169. .keepalive = false,
  1170. .num_nodes = 1,
  1171. .nodes = { &acm_tcu },
  1172. };
  1173. static struct qcom_icc_bcm bcm_mm3 = {
  1174. .name = "MM3",
  1175. .keepalive = false,
  1176. .num_nodes = 5,
  1177. .nodes = { &qxm_camnoc_sf, &qxm_rot, &qxm_venus0, &qxm_venus1, &qxm_venus_arm9 },
  1178. };
  1179. static struct qcom_icc_bcm bcm_sh5 = {
  1180. .name = "SH5",
  1181. .keepalive = false,
  1182. .num_nodes = 1,
  1183. .nodes = { &qnm_apps },
  1184. };
  1185. static struct qcom_icc_bcm bcm_sn0 = {
  1186. .name = "SN0",
  1187. .keepalive = true,
  1188. .num_nodes = 1,
  1189. .nodes = { &qns_memnoc_sf },
  1190. };
  1191. static struct qcom_icc_bcm bcm_ce0 = {
  1192. .name = "CE0",
  1193. .keepalive = false,
  1194. .num_nodes = 1,
  1195. .nodes = { &qxm_crypto },
  1196. };
  1197. static struct qcom_icc_bcm bcm_cn0 = {
  1198. .name = "CN0",
  1199. .keepalive = false,
  1200. .num_nodes = 47,
  1201. .nodes = { &qhm_spdm,
  1202. &qhm_tic,
  1203. &qnm_snoc,
  1204. &xm_qdss_dap,
  1205. &qhs_a1_noc_cfg,
  1206. &qhs_a2_noc_cfg,
  1207. &qhs_aop,
  1208. &qhs_aoss,
  1209. &qhs_camera_cfg,
  1210. &qhs_clk_ctl,
  1211. &qhs_compute_dsp_cfg,
  1212. &qhs_cpr_cx,
  1213. &qhs_crypto0_cfg,
  1214. &qhs_dcc_cfg,
  1215. &qhs_ddrss_cfg,
  1216. &qhs_display_cfg,
  1217. &qhs_glm,
  1218. &qhs_gpuss_cfg,
  1219. &qhs_imem_cfg,
  1220. &qhs_ipa,
  1221. &qhs_mnoc_cfg,
  1222. &qhs_pcie0_cfg,
  1223. &qhs_pcie_gen3_cfg,
  1224. &qhs_pdm,
  1225. &qhs_phy_refgen_south,
  1226. &qhs_pimem_cfg,
  1227. &qhs_prng,
  1228. &qhs_qdss_cfg,
  1229. &qhs_qupv3_north,
  1230. &qhs_qupv3_south,
  1231. &qhs_sdc2,
  1232. &qhs_sdc4,
  1233. &qhs_snoc_cfg,
  1234. &qhs_spdm,
  1235. &qhs_spss_cfg,
  1236. &qhs_tcsr,
  1237. &qhs_tlmm_north,
  1238. &qhs_tlmm_south,
  1239. &qhs_tsif,
  1240. &qhs_ufs_card_cfg,
  1241. &qhs_ufs_mem_cfg,
  1242. &qhs_usb3_0,
  1243. &qhs_usb3_1,
  1244. &qhs_venus_cfg,
  1245. &qhs_vsense_ctrl_cfg,
  1246. &qns_cnoc_a2noc,
  1247. &srvc_cnoc
  1248. },
  1249. };
  1250. static struct qcom_icc_bcm bcm_qup0 = {
  1251. .name = "QUP0",
  1252. .keepalive = false,
  1253. .num_nodes = 2,
  1254. .nodes = { &qhm_qup1, &qhm_qup2 },
  1255. };
  1256. static struct qcom_icc_bcm bcm_sn1 = {
  1257. .name = "SN1",
  1258. .keepalive = false,
  1259. .num_nodes = 1,
  1260. .nodes = { &qxs_imem },
  1261. };
  1262. static struct qcom_icc_bcm bcm_sn2 = {
  1263. .name = "SN2",
  1264. .keepalive = false,
  1265. .num_nodes = 1,
  1266. .nodes = { &qns_memnoc_gc },
  1267. };
  1268. static struct qcom_icc_bcm bcm_sn3 = {
  1269. .name = "SN3",
  1270. .keepalive = false,
  1271. .num_nodes = 1,
  1272. .nodes = { &qns_cnoc },
  1273. };
  1274. static struct qcom_icc_bcm bcm_sn4 = {
  1275. .name = "SN4",
  1276. .keepalive = false,
  1277. .num_nodes = 1,
  1278. .nodes = { &qxm_pimem },
  1279. };
  1280. static struct qcom_icc_bcm bcm_sn5 = {
  1281. .name = "SN5",
  1282. .keepalive = false,
  1283. .num_nodes = 1,
  1284. .nodes = { &xs_qdss_stm },
  1285. };
  1286. static struct qcom_icc_bcm bcm_sn6 = {
  1287. .name = "SN6",
  1288. .keepalive = false,
  1289. .num_nodes = 3,
  1290. .nodes = { &qhs_apss, &srvc_snoc, &xs_sys_tcu_cfg },
  1291. };
  1292. static struct qcom_icc_bcm bcm_sn7 = {
  1293. .name = "SN7",
  1294. .keepalive = false,
  1295. .num_nodes = 1,
  1296. .nodes = { &qxs_pcie },
  1297. };
  1298. static struct qcom_icc_bcm bcm_sn8 = {
  1299. .name = "SN8",
  1300. .keepalive = false,
  1301. .num_nodes = 1,
  1302. .nodes = { &qxs_pcie_gen3 },
  1303. };
  1304. static struct qcom_icc_bcm bcm_sn9 = {
  1305. .name = "SN9",
  1306. .keepalive = false,
  1307. .num_nodes = 2,
  1308. .nodes = { &srvc_aggre1_noc, &qnm_aggre1_noc },
  1309. };
  1310. static struct qcom_icc_bcm bcm_sn11 = {
  1311. .name = "SN11",
  1312. .keepalive = false,
  1313. .num_nodes = 2,
  1314. .nodes = { &srvc_aggre2_noc, &qnm_aggre2_noc },
  1315. };
  1316. static struct qcom_icc_bcm bcm_sn12 = {
  1317. .name = "SN12",
  1318. .keepalive = false,
  1319. .num_nodes = 2,
  1320. .nodes = { &qnm_gladiator_sodv, &xm_gic },
  1321. };
  1322. static struct qcom_icc_bcm bcm_sn14 = {
  1323. .name = "SN14",
  1324. .keepalive = false,
  1325. .num_nodes = 1,
  1326. .nodes = { &qnm_pcie_anoc },
  1327. };
  1328. static struct qcom_icc_bcm bcm_sn15 = {
  1329. .name = "SN15",
  1330. .keepalive = false,
  1331. .num_nodes = 1,
  1332. .nodes = { &qnm_memnoc },
  1333. };
  1334. static struct qcom_icc_bcm * const aggre1_noc_bcms[] = {
  1335. &bcm_sn9,
  1336. &bcm_qup0,
  1337. };
  1338. static struct qcom_icc_node * const aggre1_noc_nodes[] = {
  1339. [MASTER_A1NOC_CFG] = &qhm_a1noc_cfg,
  1340. [MASTER_TSIF] = &qhm_tsif,
  1341. [MASTER_SDCC_2] = &xm_sdc2,
  1342. [MASTER_SDCC_4] = &xm_sdc4,
  1343. [MASTER_UFS_CARD] = &xm_ufs_card,
  1344. [MASTER_UFS_MEM] = &xm_ufs_mem,
  1345. [MASTER_PCIE_0] = &xm_pcie_0,
  1346. [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
  1347. [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc,
  1348. [SLAVE_ANOC_PCIE_A1NOC_SNOC] = &qns_pcie_a1noc_snoc,
  1349. [MASTER_QUP_1] = &qhm_qup1,
  1350. };
  1351. static const struct qcom_icc_desc sdm845_aggre1_noc = {
  1352. .nodes = aggre1_noc_nodes,
  1353. .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
  1354. .bcms = aggre1_noc_bcms,
  1355. .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
  1356. };
  1357. static struct qcom_icc_bcm * const aggre2_noc_bcms[] = {
  1358. &bcm_ce0,
  1359. &bcm_sn11,
  1360. &bcm_qup0,
  1361. };
  1362. static struct qcom_icc_node * const aggre2_noc_nodes[] = {
  1363. [MASTER_A2NOC_CFG] = &qhm_a2noc_cfg,
  1364. [MASTER_QDSS_BAM] = &qhm_qdss_bam,
  1365. [MASTER_CNOC_A2NOC] = &qnm_cnoc,
  1366. [MASTER_CRYPTO] = &qxm_crypto,
  1367. [MASTER_IPA] = &qxm_ipa,
  1368. [MASTER_PCIE_1] = &xm_pcie3_1,
  1369. [MASTER_QDSS_ETR] = &xm_qdss_etr,
  1370. [MASTER_USB3_0] = &xm_usb3_0,
  1371. [MASTER_USB3_1] = &xm_usb3_1,
  1372. [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
  1373. [SLAVE_ANOC_PCIE_SNOC] = &qns_pcie_snoc,
  1374. [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc,
  1375. [MASTER_QUP_2] = &qhm_qup2,
  1376. };
  1377. static const struct qcom_icc_desc sdm845_aggre2_noc = {
  1378. .nodes = aggre2_noc_nodes,
  1379. .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
  1380. .bcms = aggre2_noc_bcms,
  1381. .num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
  1382. };
  1383. static struct qcom_icc_bcm * const config_noc_bcms[] = {
  1384. &bcm_cn0,
  1385. };
  1386. static struct qcom_icc_node * const config_noc_nodes[] = {
  1387. [MASTER_SPDM] = &qhm_spdm,
  1388. [MASTER_TIC] = &qhm_tic,
  1389. [MASTER_SNOC_CNOC] = &qnm_snoc,
  1390. [MASTER_QDSS_DAP] = &xm_qdss_dap,
  1391. [SLAVE_A1NOC_CFG] = &qhs_a1_noc_cfg,
  1392. [SLAVE_A2NOC_CFG] = &qhs_a2_noc_cfg,
  1393. [SLAVE_AOP] = &qhs_aop,
  1394. [SLAVE_AOSS] = &qhs_aoss,
  1395. [SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
  1396. [SLAVE_CLK_CTL] = &qhs_clk_ctl,
  1397. [SLAVE_CDSP_CFG] = &qhs_compute_dsp_cfg,
  1398. [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
  1399. [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
  1400. [SLAVE_DCC_CFG] = &qhs_dcc_cfg,
  1401. [SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg,
  1402. [SLAVE_DISPLAY_CFG] = &qhs_display_cfg,
  1403. [SLAVE_GLM] = &qhs_glm,
  1404. [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
  1405. [SLAVE_IMEM_CFG] = &qhs_imem_cfg,
  1406. [SLAVE_IPA_CFG] = &qhs_ipa,
  1407. [SLAVE_CNOC_MNOC_CFG] = &qhs_mnoc_cfg,
  1408. [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
  1409. [SLAVE_PCIE_1_CFG] = &qhs_pcie_gen3_cfg,
  1410. [SLAVE_PDM] = &qhs_pdm,
  1411. [SLAVE_SOUTH_PHY_CFG] = &qhs_phy_refgen_south,
  1412. [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
  1413. [SLAVE_PRNG] = &qhs_prng,
  1414. [SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
  1415. [SLAVE_BLSP_2] = &qhs_qupv3_north,
  1416. [SLAVE_BLSP_1] = &qhs_qupv3_south,
  1417. [SLAVE_SDCC_2] = &qhs_sdc2,
  1418. [SLAVE_SDCC_4] = &qhs_sdc4,
  1419. [SLAVE_SNOC_CFG] = &qhs_snoc_cfg,
  1420. [SLAVE_SPDM_WRAPPER] = &qhs_spdm,
  1421. [SLAVE_SPSS_CFG] = &qhs_spss_cfg,
  1422. [SLAVE_TCSR] = &qhs_tcsr,
  1423. [SLAVE_TLMM_NORTH] = &qhs_tlmm_north,
  1424. [SLAVE_TLMM_SOUTH] = &qhs_tlmm_south,
  1425. [SLAVE_TSIF] = &qhs_tsif,
  1426. [SLAVE_UFS_CARD_CFG] = &qhs_ufs_card_cfg,
  1427. [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
  1428. [SLAVE_USB3_0] = &qhs_usb3_0,
  1429. [SLAVE_USB3_1] = &qhs_usb3_1,
  1430. [SLAVE_VENUS_CFG] = &qhs_venus_cfg,
  1431. [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg,
  1432. [SLAVE_CNOC_A2NOC] = &qns_cnoc_a2noc,
  1433. [SLAVE_SERVICE_CNOC] = &srvc_cnoc,
  1434. };
  1435. static const struct qcom_icc_desc sdm845_config_noc = {
  1436. .nodes = config_noc_nodes,
  1437. .num_nodes = ARRAY_SIZE(config_noc_nodes),
  1438. .bcms = config_noc_bcms,
  1439. .num_bcms = ARRAY_SIZE(config_noc_bcms),
  1440. };
  1441. static struct qcom_icc_bcm * const dc_noc_bcms[] = {
  1442. };
  1443. static struct qcom_icc_node * const dc_noc_nodes[] = {
  1444. [MASTER_CNOC_DC_NOC] = &qhm_cnoc,
  1445. [SLAVE_LLCC_CFG] = &qhs_llcc,
  1446. [SLAVE_MEM_NOC_CFG] = &qhs_memnoc,
  1447. };
  1448. static const struct qcom_icc_desc sdm845_dc_noc = {
  1449. .nodes = dc_noc_nodes,
  1450. .num_nodes = ARRAY_SIZE(dc_noc_nodes),
  1451. .bcms = dc_noc_bcms,
  1452. .num_bcms = ARRAY_SIZE(dc_noc_bcms),
  1453. };
  1454. static struct qcom_icc_bcm * const gladiator_noc_bcms[] = {
  1455. };
  1456. static struct qcom_icc_node * const gladiator_noc_nodes[] = {
  1457. [MASTER_APPSS_PROC] = &acm_l3,
  1458. [MASTER_GNOC_CFG] = &pm_gnoc_cfg,
  1459. [SLAVE_GNOC_SNOC] = &qns_gladiator_sodv,
  1460. [SLAVE_GNOC_MEM_NOC] = &qns_gnoc_memnoc,
  1461. [SLAVE_SERVICE_GNOC] = &srvc_gnoc,
  1462. };
  1463. static const struct qcom_icc_desc sdm845_gladiator_noc = {
  1464. .nodes = gladiator_noc_nodes,
  1465. .num_nodes = ARRAY_SIZE(gladiator_noc_nodes),
  1466. .bcms = gladiator_noc_bcms,
  1467. .num_bcms = ARRAY_SIZE(gladiator_noc_bcms),
  1468. };
  1469. static struct qcom_icc_bcm * const mem_noc_bcms[] = {
  1470. &bcm_mc0,
  1471. &bcm_acv,
  1472. &bcm_sh0,
  1473. &bcm_sh1,
  1474. &bcm_sh2,
  1475. &bcm_sh3,
  1476. &bcm_sh5,
  1477. };
  1478. static struct qcom_icc_node * const mem_noc_nodes[] = {
  1479. [MASTER_TCU_0] = &acm_tcu,
  1480. [MASTER_MEM_NOC_CFG] = &qhm_memnoc_cfg,
  1481. [MASTER_GNOC_MEM_NOC] = &qnm_apps,
  1482. [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
  1483. [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
  1484. [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
  1485. [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
  1486. [MASTER_GFX3D] = &qxm_gpu,
  1487. [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg,
  1488. [SLAVE_MEM_NOC_GNOC] = &qns_apps_io,
  1489. [SLAVE_LLCC] = &qns_llcc,
  1490. [SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc,
  1491. [SLAVE_SERVICE_MEM_NOC] = &srvc_memnoc,
  1492. [MASTER_LLCC] = &llcc_mc,
  1493. [SLAVE_EBI1] = &ebi,
  1494. };
  1495. static const struct qcom_icc_desc sdm845_mem_noc = {
  1496. .nodes = mem_noc_nodes,
  1497. .num_nodes = ARRAY_SIZE(mem_noc_nodes),
  1498. .bcms = mem_noc_bcms,
  1499. .num_bcms = ARRAY_SIZE(mem_noc_bcms),
  1500. };
  1501. static struct qcom_icc_bcm * const mmss_noc_bcms[] = {
  1502. &bcm_mm0,
  1503. &bcm_mm1,
  1504. &bcm_mm2,
  1505. &bcm_mm3,
  1506. };
  1507. static struct qcom_icc_node * const mmss_noc_nodes[] = {
  1508. [MASTER_CNOC_MNOC_CFG] = &qhm_mnoc_cfg,
  1509. [MASTER_CAMNOC_HF0] = &qxm_camnoc_hf0,
  1510. [MASTER_CAMNOC_HF1] = &qxm_camnoc_hf1,
  1511. [MASTER_CAMNOC_SF] = &qxm_camnoc_sf,
  1512. [MASTER_MDP0] = &qxm_mdp0,
  1513. [MASTER_MDP1] = &qxm_mdp1,
  1514. [MASTER_ROTATOR] = &qxm_rot,
  1515. [MASTER_VIDEO_P0] = &qxm_venus0,
  1516. [MASTER_VIDEO_P1] = &qxm_venus1,
  1517. [MASTER_VIDEO_PROC] = &qxm_venus_arm9,
  1518. [SLAVE_MNOC_SF_MEM_NOC] = &qns2_mem_noc,
  1519. [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
  1520. [SLAVE_SERVICE_MNOC] = &srvc_mnoc,
  1521. [MASTER_CAMNOC_HF0_UNCOMP] = &qxm_camnoc_hf0_uncomp,
  1522. [MASTER_CAMNOC_HF1_UNCOMP] = &qxm_camnoc_hf1_uncomp,
  1523. [MASTER_CAMNOC_SF_UNCOMP] = &qxm_camnoc_sf_uncomp,
  1524. [SLAVE_CAMNOC_UNCOMP] = &qns_camnoc_uncomp,
  1525. };
  1526. static const struct qcom_icc_desc sdm845_mmss_noc = {
  1527. .nodes = mmss_noc_nodes,
  1528. .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
  1529. .bcms = mmss_noc_bcms,
  1530. .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
  1531. };
  1532. static struct qcom_icc_bcm * const system_noc_bcms[] = {
  1533. &bcm_sn0,
  1534. &bcm_sn1,
  1535. &bcm_sn2,
  1536. &bcm_sn3,
  1537. &bcm_sn4,
  1538. &bcm_sn5,
  1539. &bcm_sn6,
  1540. &bcm_sn7,
  1541. &bcm_sn8,
  1542. &bcm_sn9,
  1543. &bcm_sn11,
  1544. &bcm_sn12,
  1545. &bcm_sn14,
  1546. &bcm_sn15,
  1547. };
  1548. static struct qcom_icc_node * const system_noc_nodes[] = {
  1549. [MASTER_SNOC_CFG] = &qhm_snoc_cfg,
  1550. [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
  1551. [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
  1552. [MASTER_GNOC_SNOC] = &qnm_gladiator_sodv,
  1553. [MASTER_MEM_NOC_SNOC] = &qnm_memnoc,
  1554. [MASTER_ANOC_PCIE_SNOC] = &qnm_pcie_anoc,
  1555. [MASTER_PIMEM] = &qxm_pimem,
  1556. [MASTER_GIC] = &xm_gic,
  1557. [SLAVE_APPSS] = &qhs_apss,
  1558. [SLAVE_SNOC_CNOC] = &qns_cnoc,
  1559. [SLAVE_SNOC_MEM_NOC_GC] = &qns_memnoc_gc,
  1560. [SLAVE_SNOC_MEM_NOC_SF] = &qns_memnoc_sf,
  1561. [SLAVE_IMEM] = &qxs_imem,
  1562. [SLAVE_PCIE_0] = &qxs_pcie,
  1563. [SLAVE_PCIE_1] = &qxs_pcie_gen3,
  1564. [SLAVE_PIMEM] = &qxs_pimem,
  1565. [SLAVE_SERVICE_SNOC] = &srvc_snoc,
  1566. [SLAVE_QDSS_STM] = &xs_qdss_stm,
  1567. [SLAVE_TCU] = &xs_sys_tcu_cfg,
  1568. };
  1569. static const struct qcom_icc_desc sdm845_system_noc = {
  1570. .nodes = system_noc_nodes,
  1571. .num_nodes = ARRAY_SIZE(system_noc_nodes),
  1572. .bcms = system_noc_bcms,
  1573. .num_bcms = ARRAY_SIZE(system_noc_bcms),
  1574. };
  1575. static const struct of_device_id qnoc_of_match[] = {
  1576. { .compatible = "qcom,sdm845-aggre1-noc",
  1577. .data = &sdm845_aggre1_noc},
  1578. { .compatible = "qcom,sdm845-aggre2-noc",
  1579. .data = &sdm845_aggre2_noc},
  1580. { .compatible = "qcom,sdm845-config-noc",
  1581. .data = &sdm845_config_noc},
  1582. { .compatible = "qcom,sdm845-dc-noc",
  1583. .data = &sdm845_dc_noc},
  1584. { .compatible = "qcom,sdm845-gladiator-noc",
  1585. .data = &sdm845_gladiator_noc},
  1586. { .compatible = "qcom,sdm845-mem-noc",
  1587. .data = &sdm845_mem_noc},
  1588. { .compatible = "qcom,sdm845-mmss-noc",
  1589. .data = &sdm845_mmss_noc},
  1590. { .compatible = "qcom,sdm845-system-noc",
  1591. .data = &sdm845_system_noc},
  1592. { }
  1593. };
  1594. MODULE_DEVICE_TABLE(of, qnoc_of_match);
  1595. static struct platform_driver qnoc_driver = {
  1596. .probe = qcom_icc_rpmh_probe,
  1597. .remove = qcom_icc_rpmh_remove,
  1598. .driver = {
  1599. .name = "qnoc-sdm845",
  1600. .of_match_table = qnoc_of_match,
  1601. .sync_state = icc_sync_state,
  1602. },
  1603. };
  1604. module_platform_driver(qnoc_driver);
  1605. MODULE_AUTHOR("David Dai <daidavid1@codeaurora.org>");
  1606. MODULE_DESCRIPTION("Qualcomm sdm845 NoC driver");
  1607. MODULE_LICENSE("GPL v2");