sc7180.c 40 KB

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