lemans.c 74 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2021-2023, Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #include <asm/div64.h>
  6. #include <dt-bindings/interconnect/qcom,lemans.h>
  7. #include <linux/device.h>
  8. #include <linux/interconnect.h>
  9. #include <linux/interconnect-provider.h>
  10. #include <linux/io.h>
  11. #include <linux/module.h>
  12. #include <linux/of_device.h>
  13. #include <linux/of_platform.h>
  14. #include <linux/platform_device.h>
  15. #include <linux/sort.h>
  16. #include "icc-rpmh.h"
  17. #include "qnoc-qos.h"
  18. enum {
  19. VOTER_IDX_HLOS,
  20. };
  21. static const struct regmap_config icc_regmap_config = {
  22. .reg_bits = 32,
  23. .reg_stride = 4,
  24. .val_bits = 32,
  25. };
  26. static struct qcom_icc_qosbox qxm_qup3_qos = {
  27. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  28. .num_ports = 1,
  29. .offsets = { 0x11000 },
  30. .config = &(struct qos_config) {
  31. .prio_fwd_disable = 1,
  32. .prio = 2,
  33. .urg_fwd = 0,
  34. },
  35. };
  36. static struct qcom_icc_node qxm_qup3 = {
  37. .name = "qxm_qup3",
  38. .id = MASTER_QUP_3,
  39. .channels = 1,
  40. .buswidth = 8,
  41. .noc_ops = &qcom_qnoc4_ops,
  42. .qosbox = &qxm_qup3_qos,
  43. .num_links = 1,
  44. .links = { SLAVE_A1NOC_SNOC },
  45. };
  46. static struct qcom_icc_qosbox xm_emac_0_qos = {
  47. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  48. .num_ports = 1,
  49. .offsets = { 0x12000 },
  50. .config = &(struct qos_config) {
  51. .prio_fwd_disable = 1,
  52. .prio = 2,
  53. .urg_fwd = 0,
  54. },
  55. };
  56. static struct qcom_icc_node xm_emac_0 = {
  57. .name = "xm_emac_0",
  58. .id = MASTER_EMAC,
  59. .channels = 1,
  60. .buswidth = 8,
  61. .noc_ops = &qcom_qnoc4_ops,
  62. .qosbox = &xm_emac_0_qos,
  63. .num_links = 1,
  64. .links = { SLAVE_A1NOC_SNOC },
  65. };
  66. static struct qcom_icc_qosbox xm_emac_1_qos = {
  67. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  68. .num_ports = 1,
  69. .offsets = { 0x13000 },
  70. .config = &(struct qos_config) {
  71. .prio_fwd_disable = 1,
  72. .prio = 2,
  73. .urg_fwd = 0,
  74. },
  75. };
  76. static struct qcom_icc_node xm_emac_1 = {
  77. .name = "xm_emac_1",
  78. .id = MASTER_EMAC_1,
  79. .channels = 1,
  80. .buswidth = 8,
  81. .noc_ops = &qcom_qnoc4_ops,
  82. .qosbox = &xm_emac_1_qos,
  83. .num_links = 1,
  84. .links = { SLAVE_A1NOC_SNOC },
  85. };
  86. static struct qcom_icc_qosbox xm_sdc1_qos = {
  87. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  88. .num_ports = 1,
  89. .offsets = { 0x14000 },
  90. .config = &(struct qos_config) {
  91. .prio_fwd_disable = 1,
  92. .prio = 2,
  93. .urg_fwd = 0,
  94. },
  95. };
  96. static struct qcom_icc_node xm_sdc1 = {
  97. .name = "xm_sdc1",
  98. .id = MASTER_SDC,
  99. .channels = 1,
  100. .buswidth = 8,
  101. .noc_ops = &qcom_qnoc4_ops,
  102. .qosbox = &xm_sdc1_qos,
  103. .num_links = 1,
  104. .links = { SLAVE_A1NOC_SNOC },
  105. };
  106. static struct qcom_icc_qosbox xm_ufs_mem_qos = {
  107. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  108. .num_ports = 1,
  109. .offsets = { 0x15000 },
  110. .config = &(struct qos_config) {
  111. .prio_fwd_disable = 1,
  112. .prio = 2,
  113. .urg_fwd = 0,
  114. },
  115. };
  116. static struct qcom_icc_node xm_ufs_mem = {
  117. .name = "xm_ufs_mem",
  118. .id = MASTER_UFS_MEM,
  119. .channels = 1,
  120. .buswidth = 8,
  121. .noc_ops = &qcom_qnoc4_ops,
  122. .qosbox = &xm_ufs_mem_qos,
  123. .num_links = 1,
  124. .links = { SLAVE_A1NOC_SNOC },
  125. };
  126. static struct qcom_icc_qosbox xm_usb2_2_qos = {
  127. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  128. .num_ports = 1,
  129. .offsets = { 0x16000 },
  130. .config = &(struct qos_config) {
  131. .prio_fwd_disable = 1,
  132. .prio = 2,
  133. .urg_fwd = 0,
  134. },
  135. };
  136. static struct qcom_icc_node xm_usb2_2 = {
  137. .name = "xm_usb2_2",
  138. .id = MASTER_USB2,
  139. .channels = 1,
  140. .buswidth = 8,
  141. .noc_ops = &qcom_qnoc4_ops,
  142. .qosbox = &xm_usb2_2_qos,
  143. .num_links = 1,
  144. .links = { SLAVE_A1NOC_SNOC },
  145. };
  146. static struct qcom_icc_qosbox xm_usb3_0_qos = {
  147. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  148. .num_ports = 1,
  149. .offsets = { 0x17000 },
  150. .config = &(struct qos_config) {
  151. .prio_fwd_disable = 1,
  152. .prio = 2,
  153. .urg_fwd = 0,
  154. },
  155. };
  156. static struct qcom_icc_node xm_usb3_0 = {
  157. .name = "xm_usb3_0",
  158. .id = MASTER_USB3_0,
  159. .channels = 1,
  160. .buswidth = 8,
  161. .noc_ops = &qcom_qnoc4_ops,
  162. .qosbox = &xm_usb3_0_qos,
  163. .num_links = 1,
  164. .links = { SLAVE_A1NOC_SNOC },
  165. };
  166. static struct qcom_icc_qosbox xm_usb3_1_qos = {
  167. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  168. .num_ports = 1,
  169. .offsets = { 0x18000 },
  170. .config = &(struct qos_config) {
  171. .prio_fwd_disable = 1,
  172. .prio = 2,
  173. .urg_fwd = 0,
  174. },
  175. };
  176. static struct qcom_icc_node xm_usb3_1 = {
  177. .name = "xm_usb3_1",
  178. .id = MASTER_USB3_1,
  179. .channels = 1,
  180. .buswidth = 8,
  181. .noc_ops = &qcom_qnoc4_ops,
  182. .qosbox = &xm_usb3_1_qos,
  183. .num_links = 1,
  184. .links = { SLAVE_A1NOC_SNOC },
  185. };
  186. static struct qcom_icc_qosbox qhm_qdss_bam_qos = {
  187. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  188. .num_ports = 1,
  189. .offsets = { 0x14000 },
  190. .config = &(struct qos_config) {
  191. .prio_fwd_disable = 1,
  192. .prio = 2,
  193. .urg_fwd = 0,
  194. },
  195. };
  196. static struct qcom_icc_node qhm_qdss_bam = {
  197. .name = "qhm_qdss_bam",
  198. .id = MASTER_QDSS_BAM,
  199. .channels = 1,
  200. .buswidth = 4,
  201. .noc_ops = &qcom_qnoc4_ops,
  202. .qosbox = &qhm_qdss_bam_qos,
  203. .num_links = 1,
  204. .links = { SLAVE_A2NOC_SNOC },
  205. };
  206. static struct qcom_icc_qosbox qhm_qup0_qos = {
  207. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  208. .num_ports = 1,
  209. .offsets = { 0x17000 },
  210. .config = &(struct qos_config) {
  211. .prio_fwd_disable = 1,
  212. .prio = 2,
  213. .urg_fwd = 0,
  214. },
  215. };
  216. static struct qcom_icc_node qhm_qup0 = {
  217. .name = "qhm_qup0",
  218. .id = MASTER_QUP_0,
  219. .channels = 1,
  220. .buswidth = 4,
  221. .noc_ops = &qcom_qnoc4_ops,
  222. .qosbox = &qhm_qup0_qos,
  223. .num_links = 1,
  224. .links = { SLAVE_A2NOC_SNOC },
  225. };
  226. static struct qcom_icc_qosbox qhm_qup1_qos = {
  227. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  228. .num_ports = 1,
  229. .offsets = { 0x12000 },
  230. .config = &(struct qos_config) {
  231. .prio_fwd_disable = 1,
  232. .prio = 2,
  233. .urg_fwd = 0,
  234. },
  235. };
  236. static struct qcom_icc_node qhm_qup1 = {
  237. .name = "qhm_qup1",
  238. .id = MASTER_QUP_1,
  239. .channels = 1,
  240. .buswidth = 4,
  241. .noc_ops = &qcom_qnoc4_ops,
  242. .qosbox = &qhm_qup1_qos,
  243. .num_links = 1,
  244. .links = { SLAVE_A2NOC_SNOC },
  245. };
  246. static struct qcom_icc_qosbox qhm_qup2_qos = {
  247. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  248. .num_ports = 1,
  249. .offsets = { 0x15000 },
  250. .config = &(struct qos_config) {
  251. .prio_fwd_disable = 1,
  252. .prio = 2,
  253. .urg_fwd = 0,
  254. },
  255. };
  256. static struct qcom_icc_node qhm_qup2 = {
  257. .name = "qhm_qup2",
  258. .id = MASTER_QUP_2,
  259. .channels = 1,
  260. .buswidth = 4,
  261. .noc_ops = &qcom_qnoc4_ops,
  262. .qosbox = &qhm_qup2_qos,
  263. .num_links = 1,
  264. .links = { SLAVE_A2NOC_SNOC },
  265. };
  266. static struct qcom_icc_qosbox qnm_cnoc_datapath_qos = {
  267. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  268. .num_ports = 1,
  269. .offsets = { 0x16000 },
  270. .config = &(struct qos_config) {
  271. .prio_fwd_disable = 1,
  272. .prio = 2,
  273. .urg_fwd = 0,
  274. },
  275. };
  276. static struct qcom_icc_node qnm_cnoc_datapath = {
  277. .name = "qnm_cnoc_datapath",
  278. .id = MASTER_CNOC_A2NOC,
  279. .channels = 1,
  280. .buswidth = 8,
  281. .noc_ops = &qcom_qnoc4_ops,
  282. .qosbox = &qnm_cnoc_datapath_qos,
  283. .num_links = 1,
  284. .links = { SLAVE_A2NOC_SNOC },
  285. };
  286. static struct qcom_icc_qosbox qxm_crypto_0_qos = {
  287. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  288. .num_ports = 1,
  289. .offsets = { 0x18000 },
  290. .config = &(struct qos_config) {
  291. .prio_fwd_disable = 1,
  292. .prio = 2,
  293. .urg_fwd = 0,
  294. },
  295. };
  296. static struct qcom_icc_node qxm_crypto_0 = {
  297. .name = "qxm_crypto_0",
  298. .id = MASTER_CRYPTO_CORE0,
  299. .channels = 1,
  300. .buswidth = 8,
  301. .noc_ops = &qcom_qnoc4_ops,
  302. .qosbox = &qxm_crypto_0_qos,
  303. .num_links = 1,
  304. .links = { SLAVE_A2NOC_SNOC },
  305. };
  306. static struct qcom_icc_qosbox qxm_crypto_1_qos = {
  307. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  308. .num_ports = 1,
  309. .offsets = { 0x1a000 },
  310. .config = &(struct qos_config) {
  311. .prio_fwd_disable = 1,
  312. .prio = 2,
  313. .urg_fwd = 0,
  314. },
  315. };
  316. static struct qcom_icc_node qxm_crypto_1 = {
  317. .name = "qxm_crypto_1",
  318. .id = MASTER_CRYPTO_CORE1,
  319. .channels = 1,
  320. .buswidth = 8,
  321. .noc_ops = &qcom_qnoc4_ops,
  322. .qosbox = &qxm_crypto_1_qos,
  323. .num_links = 1,
  324. .links = { SLAVE_A2NOC_SNOC },
  325. };
  326. static struct qcom_icc_qosbox qxm_ipa_qos = {
  327. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  328. .num_ports = 1,
  329. .offsets = { 0x11000 },
  330. .config = &(struct qos_config) {
  331. .prio_fwd_disable = 1,
  332. .prio = 2,
  333. .urg_fwd = 0,
  334. },
  335. };
  336. static struct qcom_icc_node qxm_ipa = {
  337. .name = "qxm_ipa",
  338. .id = MASTER_IPA,
  339. .channels = 1,
  340. .buswidth = 8,
  341. .noc_ops = &qcom_qnoc4_ops,
  342. .qosbox = &qxm_ipa_qos,
  343. .num_links = 1,
  344. .links = { SLAVE_A2NOC_SNOC },
  345. };
  346. static struct qcom_icc_qosbox xm_qdss_etr_0_qos = {
  347. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  348. .num_ports = 1,
  349. .offsets = { 0x13000 },
  350. .config = &(struct qos_config) {
  351. .prio_fwd_disable = 1,
  352. .prio = 2,
  353. .urg_fwd = 0,
  354. },
  355. };
  356. static struct qcom_icc_node xm_qdss_etr_0 = {
  357. .name = "xm_qdss_etr_0",
  358. .id = MASTER_QDSS_ETR_0,
  359. .channels = 1,
  360. .buswidth = 8,
  361. .noc_ops = &qcom_qnoc4_ops,
  362. .qosbox = &xm_qdss_etr_0_qos,
  363. .num_links = 1,
  364. .links = { SLAVE_A2NOC_SNOC },
  365. };
  366. static struct qcom_icc_qosbox xm_qdss_etr_1_qos = {
  367. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  368. .num_ports = 1,
  369. .offsets = { 0x19000 },
  370. .config = &(struct qos_config) {
  371. .prio_fwd_disable = 1,
  372. .prio = 2,
  373. .urg_fwd = 0,
  374. },
  375. };
  376. static struct qcom_icc_node xm_qdss_etr_1 = {
  377. .name = "xm_qdss_etr_1",
  378. .id = MASTER_QDSS_ETR_1,
  379. .channels = 1,
  380. .buswidth = 8,
  381. .noc_ops = &qcom_qnoc4_ops,
  382. .qosbox = &xm_qdss_etr_1_qos,
  383. .num_links = 1,
  384. .links = { SLAVE_A2NOC_SNOC },
  385. };
  386. static struct qcom_icc_qosbox xm_ufs_card_qos = {
  387. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  388. .num_ports = 1,
  389. .offsets = { 0x1b000 },
  390. .config = &(struct qos_config) {
  391. .prio_fwd_disable = 1,
  392. .prio = 2,
  393. .urg_fwd = 0,
  394. },
  395. };
  396. static struct qcom_icc_node xm_ufs_card = {
  397. .name = "xm_ufs_card",
  398. .id = MASTER_UFS_CARD,
  399. .channels = 1,
  400. .buswidth = 8,
  401. .noc_ops = &qcom_qnoc4_ops,
  402. .qosbox = &xm_ufs_card_qos,
  403. .num_links = 1,
  404. .links = { SLAVE_A2NOC_SNOC },
  405. };
  406. static struct qcom_icc_node qup0_core_master = {
  407. .name = "qup0_core_master",
  408. .id = MASTER_QUP_CORE_0,
  409. .channels = 1,
  410. .buswidth = 4,
  411. .noc_ops = &qcom_qnoc4_ops,
  412. .num_links = 1,
  413. .links = { SLAVE_QUP_CORE_0 },
  414. };
  415. static struct qcom_icc_node qup1_core_master = {
  416. .name = "qup1_core_master",
  417. .id = MASTER_QUP_CORE_1,
  418. .channels = 1,
  419. .buswidth = 4,
  420. .noc_ops = &qcom_qnoc4_ops,
  421. .num_links = 1,
  422. .links = { SLAVE_QUP_CORE_1 },
  423. };
  424. static struct qcom_icc_node qup2_core_master = {
  425. .name = "qup2_core_master",
  426. .id = MASTER_QUP_CORE_2,
  427. .channels = 1,
  428. .buswidth = 4,
  429. .noc_ops = &qcom_qnoc4_ops,
  430. .num_links = 1,
  431. .links = { SLAVE_QUP_CORE_2 },
  432. };
  433. static struct qcom_icc_node qup3_core_master = {
  434. .name = "qup3_core_master",
  435. .id = MASTER_QUP_CORE_3,
  436. .channels = 1,
  437. .buswidth = 4,
  438. .noc_ops = &qcom_qnoc4_ops,
  439. .num_links = 1,
  440. .links = { SLAVE_QUP_CORE_3 },
  441. };
  442. static struct qcom_icc_node qnm_gemnoc_cnoc = {
  443. .name = "qnm_gemnoc_cnoc",
  444. .id = MASTER_GEM_NOC_CNOC,
  445. .channels = 1,
  446. .buswidth = 16,
  447. .noc_ops = &qcom_qnoc4_ops,
  448. .num_links = 82,
  449. .links = { SLAVE_AHB2PHY_0, SLAVE_AHB2PHY_1,
  450. SLAVE_AHB2PHY_2, SLAVE_AHB2PHY_3,
  451. SLAVE_ANOC_THROTTLE_CFG, SLAVE_AOSS,
  452. SLAVE_APPSS, SLAVE_BOOT_ROM,
  453. SLAVE_CAMERA_CFG, SLAVE_CAMERA_NRT_THROTTLE_CFG,
  454. SLAVE_CAMERA_RT_THROTTLE_CFG, SLAVE_CLK_CTL,
  455. SLAVE_CDSP_CFG, SLAVE_CDSP1_CFG,
  456. SLAVE_RBCPR_CX_CFG, SLAVE_RBCPR_MMCX_CFG,
  457. SLAVE_RBCPR_MX_CFG, SLAVE_CPR_NSPCX,
  458. SLAVE_CRYPTO_0_CFG, SLAVE_CX_RDPM,
  459. SLAVE_DISPLAY_CFG, SLAVE_DISPLAY_RT_THROTTLE_CFG,
  460. SLAVE_DISPLAY1_CFG, SLAVE_DISPLAY1_RT_THROTTLE_CFG,
  461. SLAVE_EMAC_CFG, SLAVE_EMAC1_CFG,
  462. SLAVE_GP_DSP0_CFG, SLAVE_GP_DSP1_CFG,
  463. SLAVE_GPDSP0_THROTTLE_CFG, SLAVE_GPDSP1_THROTTLE_CFG,
  464. SLAVE_GPU_TCU_THROTTLE_CFG, SLAVE_GFX3D_CFG,
  465. SLAVE_HWKM, SLAVE_IMEM_CFG,
  466. SLAVE_IPA_CFG, SLAVE_IPC_ROUTER_CFG,
  467. SLAVE_LPASS, SLAVE_LPASS_THROTTLE_CFG,
  468. SLAVE_MX_RDPM, SLAVE_MXC_RDPM,
  469. SLAVE_PCIE_0_CFG, SLAVE_PCIE_1_CFG,
  470. SLAVE_PCIE_RSC_CFG, SLAVE_PCIE_TCU_THROTTLE_CFG,
  471. SLAVE_PCIE_THROTTLE_CFG, SLAVE_PDM,
  472. SLAVE_PIMEM_CFG, SLAVE_PKA_WRAPPER_CFG,
  473. SLAVE_QDSS_CFG, SLAVE_QM_CFG,
  474. SLAVE_QM_MPU_CFG, SLAVE_QUP_0,
  475. SLAVE_QUP_1, SLAVE_QUP_2,
  476. SLAVE_QUP_3, SLAVE_SAIL_THROTTLE_CFG,
  477. SLAVE_SDC1, SLAVE_SECURITY,
  478. SLAVE_SNOC_THROTTLE_CFG, SLAVE_TCSR,
  479. SLAVE_TLMM, SLAVE_TSC_CFG,
  480. SLAVE_UFS_CARD_CFG, SLAVE_UFS_MEM_CFG,
  481. SLAVE_USB2, SLAVE_USB3_0,
  482. SLAVE_USB3_1, SLAVE_VENUS_CFG,
  483. SLAVE_VENUS_CVP_THROTTLE_CFG, SLAVE_VENUS_V_CPU_THROTTLE_CFG,
  484. SLAVE_VENUS_VCODEC_THROTTLE_CFG, SLAVE_DDRSS_CFG,
  485. SLAVE_GPDSP_NOC_CFG, SLAVE_CNOC_MNOC_HF_CFG,
  486. SLAVE_CNOC_MNOC_SF_CFG, SLAVE_PCIE_ANOC_CFG,
  487. SLAVE_SNOC_CFG, SLAVE_BOOT_IMEM,
  488. SLAVE_IMEM, SLAVE_PIMEM,
  489. SLAVE_QDSS_STM, SLAVE_TCU },
  490. };
  491. static struct qcom_icc_node qnm_gemnoc_pcie = {
  492. .name = "qnm_gemnoc_pcie",
  493. .id = MASTER_GEM_NOC_PCIE_SNOC,
  494. .channels = 1,
  495. .buswidth = 16,
  496. .noc_ops = &qcom_qnoc4_ops,
  497. .num_links = 2,
  498. .links = { SLAVE_PCIE_0, SLAVE_PCIE_1 },
  499. };
  500. static struct qcom_icc_node qnm_cnoc_dc_noc = {
  501. .name = "qnm_cnoc_dc_noc",
  502. .id = MASTER_CNOC_DC_NOC,
  503. .channels = 1,
  504. .buswidth = 4,
  505. .noc_ops = &qcom_qnoc4_ops,
  506. .num_links = 2,
  507. .links = { SLAVE_LLCC_CFG, SLAVE_GEM_NOC_CFG },
  508. };
  509. static struct qcom_icc_qosbox alm_gpu_tcu_qos = {
  510. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  511. .num_ports = 1,
  512. .offsets = { 0xb4000 },
  513. .config = &(struct qos_config) {
  514. .prio_fwd_disable = 1,
  515. .prio = 1,
  516. .urg_fwd = 0,
  517. },
  518. };
  519. static struct qcom_icc_node alm_gpu_tcu = {
  520. .name = "alm_gpu_tcu",
  521. .id = MASTER_GPU_TCU,
  522. .channels = 1,
  523. .buswidth = 8,
  524. .noc_ops = &qcom_qnoc4_ops,
  525. .qosbox = &alm_gpu_tcu_qos,
  526. .num_links = 2,
  527. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  528. };
  529. static struct qcom_icc_qosbox alm_pcie_tcu_qos = {
  530. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  531. .num_ports = 1,
  532. .offsets = { 0xb5000 },
  533. .config = &(struct qos_config) {
  534. .prio_fwd_disable = 1,
  535. .prio = 3,
  536. .urg_fwd = 0,
  537. },
  538. };
  539. static struct qcom_icc_node alm_pcie_tcu = {
  540. .name = "alm_pcie_tcu",
  541. .id = MASTER_PCIE_TCU,
  542. .channels = 1,
  543. .buswidth = 8,
  544. .noc_ops = &qcom_qnoc4_ops,
  545. .qosbox = &alm_pcie_tcu_qos,
  546. .num_links = 2,
  547. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  548. };
  549. static struct qcom_icc_qosbox alm_sys_tcu_qos = {
  550. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  551. .num_ports = 1,
  552. .offsets = { 0xb6000 },
  553. .config = &(struct qos_config) {
  554. .prio_fwd_disable = 1,
  555. .prio = 6,
  556. .urg_fwd = 0,
  557. },
  558. };
  559. static struct qcom_icc_node alm_sys_tcu = {
  560. .name = "alm_sys_tcu",
  561. .id = MASTER_SYS_TCU,
  562. .channels = 1,
  563. .buswidth = 8,
  564. .noc_ops = &qcom_qnoc4_ops,
  565. .qosbox = &alm_sys_tcu_qos,
  566. .num_links = 2,
  567. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  568. };
  569. static struct qcom_icc_node chm_apps = {
  570. .name = "chm_apps",
  571. .id = MASTER_APPSS_PROC,
  572. .channels = 4,
  573. .buswidth = 32,
  574. .noc_ops = &qcom_qnoc4_ops,
  575. .num_links = 3,
  576. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC,
  577. SLAVE_GEM_NOC_PCIE_CNOC },
  578. };
  579. static struct qcom_icc_qosbox qnm_cmpnoc0_qos = {
  580. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  581. .num_ports = 2,
  582. .offsets = { 0xf3000, 0xf4000 },
  583. .config = &(struct qos_config) {
  584. .prio_fwd_disable = 1,
  585. .prio = 0,
  586. .urg_fwd = 0,
  587. },
  588. };
  589. static struct qcom_icc_node qnm_cmpnoc0 = {
  590. .name = "qnm_cmpnoc0",
  591. .id = MASTER_COMPUTE_NOC,
  592. .channels = 2,
  593. .buswidth = 32,
  594. .noc_ops = &qcom_qnoc4_ops,
  595. .qosbox = &qnm_cmpnoc0_qos,
  596. .num_links = 2,
  597. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  598. };
  599. static struct qcom_icc_qosbox qnm_cmpnoc1_qos = {
  600. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  601. .num_ports = 2,
  602. .offsets = { 0xf5000, 0xf6000 },
  603. .config = &(struct qos_config) {
  604. .prio_fwd_disable = 1,
  605. .prio = 0,
  606. .urg_fwd = 0,
  607. },
  608. };
  609. static struct qcom_icc_node qnm_cmpnoc1 = {
  610. .name = "qnm_cmpnoc1",
  611. .id = MASTER_COMPUTE_NOC_1,
  612. .channels = 2,
  613. .buswidth = 32,
  614. .noc_ops = &qcom_qnoc4_ops,
  615. .qosbox = &qnm_cmpnoc1_qos,
  616. .num_links = 2,
  617. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  618. };
  619. static struct qcom_icc_node qnm_gemnoc_cfg = {
  620. .name = "qnm_gemnoc_cfg",
  621. .id = MASTER_GEM_NOC_CFG,
  622. .channels = 1,
  623. .buswidth = 4,
  624. .noc_ops = &qcom_qnoc4_ops,
  625. .num_links = 4,
  626. .links = { SLAVE_SERVICE_GEM_NOC_1, SLAVE_SERVICE_GEM_NOC_2,
  627. SLAVE_SERVICE_GEM_NOC, SLAVE_SERVICE_GEM_NOC2 },
  628. };
  629. static struct qcom_icc_node qnm_gpdsp_sail = {
  630. .name = "qnm_gpdsp_sail",
  631. .id = MASTER_GPDSP_SAIL,
  632. .channels = 1,
  633. .buswidth = 16,
  634. .noc_ops = &qcom_qnoc4_ops,
  635. .num_links = 2,
  636. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  637. };
  638. static struct qcom_icc_qosbox qnm_gpu_qos = {
  639. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  640. .num_ports = 2,
  641. .offsets = { 0xed000, 0xee000 },
  642. .config = &(struct qos_config) {
  643. .prio_fwd_disable = 1,
  644. .prio = 0,
  645. .urg_fwd = 0,
  646. },
  647. };
  648. static struct qcom_icc_node qnm_gpu = {
  649. .name = "qnm_gpu",
  650. .id = MASTER_GFX3D,
  651. .channels = 2,
  652. .buswidth = 32,
  653. .noc_ops = &qcom_qnoc4_ops,
  654. .qosbox = &qnm_gpu_qos,
  655. .num_links = 2,
  656. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  657. };
  658. static struct qcom_icc_qosbox qnm_mnoc_hf_qos = {
  659. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  660. .num_ports = 2,
  661. .offsets = { 0xef000, 0xf0000 },
  662. .config = &(struct qos_config) {
  663. .prio_fwd_disable = 0,
  664. .prio = 0,
  665. .urg_fwd = 1,
  666. },
  667. };
  668. static struct qcom_icc_node qnm_mnoc_hf = {
  669. .name = "qnm_mnoc_hf",
  670. .id = MASTER_MNOC_HF_MEM_NOC,
  671. .channels = 2,
  672. .buswidth = 32,
  673. .noc_ops = &qcom_qnoc4_ops,
  674. .qosbox = &qnm_mnoc_hf_qos,
  675. .num_links = 2,
  676. .links = { SLAVE_LLCC, SLAVE_GEM_NOC_PCIE_CNOC },
  677. };
  678. static struct qcom_icc_qosbox qnm_mnoc_sf_qos = {
  679. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  680. .num_ports = 2,
  681. .offsets = { 0xf1000, 0xf2000 },
  682. .config = &(struct qos_config) {
  683. .prio_fwd_disable = 0,
  684. .prio = 0,
  685. .urg_fwd = 1,
  686. },
  687. };
  688. static struct qcom_icc_node qnm_mnoc_sf = {
  689. .name = "qnm_mnoc_sf",
  690. .id = MASTER_MNOC_SF_MEM_NOC,
  691. .channels = 2,
  692. .buswidth = 32,
  693. .noc_ops = &qcom_qnoc4_ops,
  694. .qosbox = &qnm_mnoc_sf_qos,
  695. .num_links = 3,
  696. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC,
  697. SLAVE_GEM_NOC_PCIE_CNOC },
  698. };
  699. static struct qcom_icc_qosbox qnm_pcie_qos = {
  700. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  701. .num_ports = 1,
  702. .offsets = { 0xb8000 },
  703. .config = &(struct qos_config) {
  704. .prio_fwd_disable = 1,
  705. .prio = 2,
  706. .urg_fwd = 0,
  707. },
  708. };
  709. static struct qcom_icc_node qnm_pcie = {
  710. .name = "qnm_pcie",
  711. .id = MASTER_ANOC_PCIE_GEM_NOC,
  712. .channels = 1,
  713. .buswidth = 32,
  714. .noc_ops = &qcom_qnoc4_ops,
  715. .qosbox = &qnm_pcie_qos,
  716. .num_links = 2,
  717. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC },
  718. };
  719. static struct qcom_icc_qosbox qnm_snoc_gc_qos = {
  720. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  721. .num_ports = 1,
  722. .offsets = { 0xb9000 },
  723. .config = &(struct qos_config) {
  724. .prio_fwd_disable = 0,
  725. .prio = 0,
  726. .urg_fwd = 1,
  727. },
  728. };
  729. static struct qcom_icc_node qnm_snoc_gc = {
  730. .name = "qnm_snoc_gc",
  731. .id = MASTER_SNOC_GC_MEM_NOC,
  732. .channels = 1,
  733. .buswidth = 8,
  734. .noc_ops = &qcom_qnoc4_ops,
  735. .qosbox = &qnm_snoc_gc_qos,
  736. .num_links = 1,
  737. .links = { SLAVE_LLCC },
  738. };
  739. static struct qcom_icc_qosbox qnm_snoc_sf_qos = {
  740. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  741. .num_ports = 1,
  742. .offsets = { 0xba000 },
  743. .config = &(struct qos_config) {
  744. .prio_fwd_disable = 0,
  745. .prio = 0,
  746. .urg_fwd = 1,
  747. },
  748. };
  749. static struct qcom_icc_node qnm_snoc_sf = {
  750. .name = "qnm_snoc_sf",
  751. .id = MASTER_SNOC_SF_MEM_NOC,
  752. .channels = 1,
  753. .buswidth = 16,
  754. .noc_ops = &qcom_qnoc4_ops,
  755. .qosbox = &qnm_snoc_sf_qos,
  756. .num_links = 3,
  757. .links = { SLAVE_GEM_NOC_CNOC, SLAVE_LLCC,
  758. SLAVE_GEM_NOC_PCIE_CNOC },
  759. };
  760. static struct qcom_icc_node qxm_dsp0 = {
  761. .name = "qxm_dsp0",
  762. .id = MASTER_DSP0,
  763. .channels = 1,
  764. .buswidth = 16,
  765. .noc_ops = &qcom_qnoc4_ops,
  766. .num_links = 1,
  767. .links = { SLAVE_GP_DSP_SAIL_NOC },
  768. };
  769. static struct qcom_icc_node qxm_dsp1 = {
  770. .name = "qxm_dsp1",
  771. .id = MASTER_DSP1,
  772. .channels = 1,
  773. .buswidth = 16,
  774. .noc_ops = &qcom_qnoc4_ops,
  775. .num_links = 1,
  776. .links = { SLAVE_GP_DSP_SAIL_NOC },
  777. };
  778. static struct qcom_icc_node qhm_config_noc = {
  779. .name = "qhm_config_noc",
  780. .id = MASTER_CNOC_LPASS_AG_NOC,
  781. .channels = 1,
  782. .buswidth = 4,
  783. .noc_ops = &qcom_qnoc4_ops,
  784. .num_links = 6,
  785. .links = { SLAVE_LPASS_CORE_CFG, SLAVE_LPASS_LPI_CFG,
  786. SLAVE_LPASS_MPU_CFG, SLAVE_LPASS_TOP_CFG,
  787. SLAVE_SERVICES_LPASS_AML_NOC, SLAVE_SERVICE_LPASS_AG_NOC },
  788. };
  789. static struct qcom_icc_node qxm_lpass_dsp = {
  790. .name = "qxm_lpass_dsp",
  791. .id = MASTER_LPASS_PROC,
  792. .channels = 1,
  793. .buswidth = 8,
  794. .noc_ops = &qcom_qnoc4_ops,
  795. .num_links = 4,
  796. .links = { SLAVE_LPASS_TOP_CFG, SLAVE_LPASS_SNOC,
  797. SLAVE_SERVICES_LPASS_AML_NOC, SLAVE_SERVICE_LPASS_AG_NOC },
  798. };
  799. static struct qcom_icc_node llcc_mc = {
  800. .name = "llcc_mc",
  801. .id = MASTER_LLCC,
  802. .channels = 8,
  803. .buswidth = 4,
  804. .noc_ops = &qcom_qnoc4_ops,
  805. .num_links = 1,
  806. .links = { SLAVE_EBI1 },
  807. };
  808. static struct qcom_icc_qosbox qnm_camnoc_hf_qos = {
  809. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  810. .num_ports = 1,
  811. .offsets = { 0xa000 },
  812. .config = &(struct qos_config) {
  813. .prio_fwd_disable = 0,
  814. .prio = 0,
  815. .urg_fwd = 1,
  816. },
  817. };
  818. static struct qcom_icc_node qnm_camnoc_hf = {
  819. .name = "qnm_camnoc_hf",
  820. .id = MASTER_CAMNOC_HF,
  821. .channels = 1,
  822. .buswidth = 32,
  823. .noc_ops = &qcom_qnoc4_ops,
  824. .qosbox = &qnm_camnoc_hf_qos,
  825. .num_links = 1,
  826. .links = { SLAVE_MNOC_HF_MEM_NOC },
  827. };
  828. static struct qcom_icc_qosbox qnm_camnoc_icp_qos = {
  829. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  830. .num_ports = 1,
  831. .offsets = { 0x2a000 },
  832. .config = &(struct qos_config) {
  833. .prio_fwd_disable = 0,
  834. .prio = 0,
  835. .urg_fwd = 1,
  836. },
  837. };
  838. static struct qcom_icc_node qnm_camnoc_icp = {
  839. .name = "qnm_camnoc_icp",
  840. .id = MASTER_CAMNOC_ICP,
  841. .channels = 1,
  842. .buswidth = 8,
  843. .noc_ops = &qcom_qnoc4_ops,
  844. .qosbox = &qnm_camnoc_icp_qos,
  845. .num_links = 1,
  846. .links = { SLAVE_MNOC_SF_MEM_NOC },
  847. };
  848. static struct qcom_icc_qosbox qnm_camnoc_sf_qos = {
  849. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  850. .num_ports = 1,
  851. .offsets = { 0x2a080 },
  852. .config = &(struct qos_config) {
  853. .prio_fwd_disable = 0,
  854. .prio = 0,
  855. .urg_fwd = 1,
  856. },
  857. };
  858. static struct qcom_icc_node qnm_camnoc_sf = {
  859. .name = "qnm_camnoc_sf",
  860. .id = MASTER_CAMNOC_SF,
  861. .channels = 1,
  862. .buswidth = 32,
  863. .noc_ops = &qcom_qnoc4_ops,
  864. .qosbox = &qnm_camnoc_sf_qos,
  865. .num_links = 1,
  866. .links = { SLAVE_MNOC_SF_MEM_NOC },
  867. };
  868. static struct qcom_icc_qosbox qnm_mdp0_0_qos = {
  869. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  870. .num_ports = 1,
  871. .offsets = { 0xa080 },
  872. .config = &(struct qos_config) {
  873. .prio_fwd_disable = 0,
  874. .prio = 0,
  875. .urg_fwd = 1,
  876. },
  877. };
  878. static struct qcom_icc_node qnm_mdp0_0 = {
  879. .name = "qnm_mdp0_0",
  880. .id = MASTER_MDP0,
  881. .channels = 1,
  882. .buswidth = 32,
  883. .noc_ops = &qcom_qnoc4_ops,
  884. .qosbox = &qnm_mdp0_0_qos,
  885. .num_links = 1,
  886. .links = { SLAVE_MNOC_HF_MEM_NOC },
  887. };
  888. static struct qcom_icc_qosbox qnm_mdp0_1_qos = {
  889. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  890. .num_ports = 1,
  891. .offsets = { 0xa180 },
  892. .config = &(struct qos_config) {
  893. .prio_fwd_disable = 0,
  894. .prio = 0,
  895. .urg_fwd = 1,
  896. },
  897. };
  898. static struct qcom_icc_node qnm_mdp0_1 = {
  899. .name = "qnm_mdp0_1",
  900. .id = MASTER_MDP1,
  901. .channels = 1,
  902. .buswidth = 32,
  903. .noc_ops = &qcom_qnoc4_ops,
  904. .qosbox = &qnm_mdp0_1_qos,
  905. .num_links = 1,
  906. .links = { SLAVE_MNOC_HF_MEM_NOC },
  907. };
  908. static struct qcom_icc_qosbox qnm_mdp1_0_qos = {
  909. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  910. .num_ports = 1,
  911. .offsets = { 0xa100 },
  912. .config = &(struct qos_config) {
  913. .prio_fwd_disable = 0,
  914. .prio = 0,
  915. .urg_fwd = 1,
  916. },
  917. };
  918. static struct qcom_icc_node qnm_mdp1_0 = {
  919. .name = "qnm_mdp1_0",
  920. .id = MASTER_MDP_CORE1_0,
  921. .channels = 1,
  922. .buswidth = 32,
  923. .noc_ops = &qcom_qnoc4_ops,
  924. .qosbox = &qnm_mdp1_0_qos,
  925. .num_links = 1,
  926. .links = { SLAVE_MNOC_HF_MEM_NOC },
  927. };
  928. static struct qcom_icc_qosbox qnm_mdp1_1_qos = {
  929. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  930. .num_ports = 1,
  931. .offsets = { 0xa200 },
  932. .config = &(struct qos_config) {
  933. .prio_fwd_disable = 0,
  934. .prio = 0,
  935. .urg_fwd = 1,
  936. },
  937. };
  938. static struct qcom_icc_node qnm_mdp1_1 = {
  939. .name = "qnm_mdp1_1",
  940. .id = MASTER_MDP_CORE1_1,
  941. .channels = 1,
  942. .buswidth = 32,
  943. .noc_ops = &qcom_qnoc4_ops,
  944. .qosbox = &qnm_mdp1_1_qos,
  945. .num_links = 1,
  946. .links = { SLAVE_MNOC_HF_MEM_NOC },
  947. };
  948. static struct qcom_icc_node qnm_mnoc_hf_cfg = {
  949. .name = "qnm_mnoc_hf_cfg",
  950. .id = MASTER_CNOC_MNOC_HF_CFG,
  951. .channels = 1,
  952. .buswidth = 4,
  953. .noc_ops = &qcom_qnoc4_ops,
  954. .num_links = 1,
  955. .links = { SLAVE_SERVICE_MNOC_HF },
  956. };
  957. static struct qcom_icc_node qnm_mnoc_sf_cfg = {
  958. .name = "qnm_mnoc_sf_cfg",
  959. .id = MASTER_CNOC_MNOC_SF_CFG,
  960. .channels = 1,
  961. .buswidth = 4,
  962. .noc_ops = &qcom_qnoc4_ops,
  963. .num_links = 1,
  964. .links = { SLAVE_SERVICE_MNOC_SF },
  965. };
  966. static struct qcom_icc_qosbox qnm_video0_qos = {
  967. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  968. .num_ports = 1,
  969. .offsets = { 0x2a100 },
  970. .config = &(struct qos_config) {
  971. .prio_fwd_disable = 0,
  972. .prio = 0,
  973. .urg_fwd = 1,
  974. },
  975. };
  976. static struct qcom_icc_node qnm_video0 = {
  977. .name = "qnm_video0",
  978. .id = MASTER_VIDEO_P0,
  979. .channels = 1,
  980. .buswidth = 32,
  981. .noc_ops = &qcom_qnoc4_ops,
  982. .qosbox = &qnm_video0_qos,
  983. .num_links = 1,
  984. .links = { SLAVE_MNOC_SF_MEM_NOC },
  985. };
  986. static struct qcom_icc_qosbox qnm_video1_qos = {
  987. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  988. .num_ports = 1,
  989. .offsets = { 0x2a180 },
  990. .config = &(struct qos_config) {
  991. .prio_fwd_disable = 0,
  992. .prio = 0,
  993. .urg_fwd = 1,
  994. },
  995. };
  996. static struct qcom_icc_node qnm_video1 = {
  997. .name = "qnm_video1",
  998. .id = MASTER_VIDEO_P1,
  999. .channels = 1,
  1000. .buswidth = 32,
  1001. .noc_ops = &qcom_qnoc4_ops,
  1002. .qosbox = &qnm_video1_qos,
  1003. .num_links = 1,
  1004. .links = { SLAVE_MNOC_SF_MEM_NOC },
  1005. };
  1006. static struct qcom_icc_qosbox qnm_video_cvp_qos = {
  1007. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1008. .num_ports = 1,
  1009. .offsets = { 0x2a200 },
  1010. .config = &(struct qos_config) {
  1011. .prio_fwd_disable = 0,
  1012. .prio = 0,
  1013. .urg_fwd = 1,
  1014. },
  1015. };
  1016. static struct qcom_icc_node qnm_video_cvp = {
  1017. .name = "qnm_video_cvp",
  1018. .id = MASTER_VIDEO_PROC,
  1019. .channels = 1,
  1020. .buswidth = 32,
  1021. .noc_ops = &qcom_qnoc4_ops,
  1022. .qosbox = &qnm_video_cvp_qos,
  1023. .num_links = 1,
  1024. .links = { SLAVE_MNOC_SF_MEM_NOC },
  1025. };
  1026. static struct qcom_icc_qosbox qnm_video_v_cpu_qos = {
  1027. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1028. .num_ports = 1,
  1029. .offsets = { 0x2a280 },
  1030. .config = &(struct qos_config) {
  1031. .prio_fwd_disable = 0,
  1032. .prio = 0,
  1033. .urg_fwd = 1,
  1034. },
  1035. };
  1036. static struct qcom_icc_node qnm_video_v_cpu = {
  1037. .name = "qnm_video_v_cpu",
  1038. .id = MASTER_VIDEO_V_PROC,
  1039. .channels = 1,
  1040. .buswidth = 8,
  1041. .noc_ops = &qcom_qnoc4_ops,
  1042. .qosbox = &qnm_video_v_cpu_qos,
  1043. .num_links = 1,
  1044. .links = { SLAVE_MNOC_SF_MEM_NOC },
  1045. };
  1046. static struct qcom_icc_node qhm_nsp_noc_config = {
  1047. .name = "qhm_nsp_noc_config",
  1048. .id = MASTER_CDSP_NOC_CFG,
  1049. .channels = 1,
  1050. .buswidth = 4,
  1051. .noc_ops = &qcom_qnoc4_ops,
  1052. .num_links = 1,
  1053. .links = { SLAVE_SERVICE_NSP_NOC },
  1054. };
  1055. static struct qcom_icc_node qxm_nsp = {
  1056. .name = "qxm_nsp",
  1057. .id = MASTER_CDSP_PROC,
  1058. .channels = 2,
  1059. .buswidth = 32,
  1060. .noc_ops = &qcom_qnoc4_ops,
  1061. .num_links = 2,
  1062. .links = { SLAVE_HCP_A, SLAVE_CDSP_MEM_NOC },
  1063. };
  1064. static struct qcom_icc_node qhm_nspb_noc_config = {
  1065. .name = "qhm_nspb_noc_config",
  1066. .id = MASTER_CDSPB_NOC_CFG,
  1067. .channels = 1,
  1068. .buswidth = 4,
  1069. .noc_ops = &qcom_qnoc4_ops,
  1070. .num_links = 1,
  1071. .links = { SLAVE_SERVICE_NSPB_NOC },
  1072. };
  1073. static struct qcom_icc_node qxm_nspb = {
  1074. .name = "qxm_nspb",
  1075. .id = MASTER_CDSP_PROC_B,
  1076. .channels = 2,
  1077. .buswidth = 32,
  1078. .noc_ops = &qcom_qnoc4_ops,
  1079. .num_links = 2,
  1080. .links = { SLAVE_HCP_B, SLAVE_CDSPB_MEM_NOC },
  1081. };
  1082. static struct qcom_icc_qosbox xm_pcie3_0_qos = {
  1083. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1084. .num_ports = 1,
  1085. .offsets = { 0xb000 },
  1086. .config = &(struct qos_config) {
  1087. .prio_fwd_disable = 1,
  1088. .prio = 2,
  1089. .urg_fwd = 0,
  1090. },
  1091. };
  1092. static struct qcom_icc_node xm_pcie3_0 = {
  1093. .name = "xm_pcie3_0",
  1094. .id = MASTER_PCIE_0,
  1095. .channels = 1,
  1096. .buswidth = 16,
  1097. .noc_ops = &qcom_qnoc4_ops,
  1098. .qosbox = &xm_pcie3_0_qos,
  1099. .num_links = 1,
  1100. .links = { SLAVE_ANOC_PCIE_GEM_NOC },
  1101. };
  1102. static struct qcom_icc_qosbox xm_pcie3_1_qos = {
  1103. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1104. .num_ports = 1,
  1105. .offsets = { 0xc000 },
  1106. .config = &(struct qos_config) {
  1107. .prio_fwd_disable = 1,
  1108. .prio = 2,
  1109. .urg_fwd = 0,
  1110. },
  1111. };
  1112. static struct qcom_icc_node xm_pcie3_1 = {
  1113. .name = "xm_pcie3_1",
  1114. .id = MASTER_PCIE_1,
  1115. .channels = 1,
  1116. .buswidth = 32,
  1117. .noc_ops = &qcom_qnoc4_ops,
  1118. .qosbox = &xm_pcie3_1_qos,
  1119. .num_links = 1,
  1120. .links = { SLAVE_ANOC_PCIE_GEM_NOC },
  1121. };
  1122. static struct qcom_icc_qosbox qhm_gic_qos = {
  1123. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1124. .num_ports = 1,
  1125. .offsets = { 0x14000 },
  1126. .config = &(struct qos_config) {
  1127. .prio_fwd_disable = 1,
  1128. .prio = 2,
  1129. .urg_fwd = 0,
  1130. },
  1131. };
  1132. static struct qcom_icc_node qhm_gic = {
  1133. .name = "qhm_gic",
  1134. .id = MASTER_GIC_AHB,
  1135. .channels = 1,
  1136. .buswidth = 4,
  1137. .noc_ops = &qcom_qnoc4_ops,
  1138. .qosbox = &qhm_gic_qos,
  1139. .num_links = 1,
  1140. .links = { SLAVE_SNOC_GEM_NOC_SF },
  1141. };
  1142. static struct qcom_icc_node qnm_aggre1_noc = {
  1143. .name = "qnm_aggre1_noc",
  1144. .id = MASTER_A1NOC_SNOC,
  1145. .channels = 1,
  1146. .buswidth = 32,
  1147. .noc_ops = &qcom_qnoc4_ops,
  1148. .num_links = 1,
  1149. .links = { SLAVE_SNOC_GEM_NOC_SF },
  1150. };
  1151. static struct qcom_icc_node qnm_aggre2_noc = {
  1152. .name = "qnm_aggre2_noc",
  1153. .id = MASTER_A2NOC_SNOC,
  1154. .channels = 1,
  1155. .buswidth = 16,
  1156. .noc_ops = &qcom_qnoc4_ops,
  1157. .num_links = 1,
  1158. .links = { SLAVE_SNOC_GEM_NOC_SF },
  1159. };
  1160. static struct qcom_icc_qosbox qnm_lpass_noc_qos = {
  1161. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1162. .num_ports = 1,
  1163. .offsets = { 0x12000 },
  1164. .config = &(struct qos_config) {
  1165. .prio_fwd_disable = 0,
  1166. .prio = 0,
  1167. .urg_fwd = 1,
  1168. },
  1169. };
  1170. static struct qcom_icc_node qnm_lpass_noc = {
  1171. .name = "qnm_lpass_noc",
  1172. .id = MASTER_LPASS_ANOC,
  1173. .channels = 1,
  1174. .buswidth = 16,
  1175. .noc_ops = &qcom_qnoc4_ops,
  1176. .qosbox = &qnm_lpass_noc_qos,
  1177. .num_links = 1,
  1178. .links = { SLAVE_SNOC_GEM_NOC_SF },
  1179. };
  1180. static struct qcom_icc_node qnm_snoc_cfg = {
  1181. .name = "qnm_snoc_cfg",
  1182. .id = MASTER_SNOC_CFG,
  1183. .channels = 1,
  1184. .buswidth = 4,
  1185. .noc_ops = &qcom_qnoc4_ops,
  1186. .num_links = 1,
  1187. .links = { SLAVE_SERVICE_SNOC },
  1188. };
  1189. static struct qcom_icc_qosbox qxm_pimem_qos = {
  1190. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1191. .num_ports = 1,
  1192. .offsets = { 0x13000 },
  1193. .config = &(struct qos_config) {
  1194. .prio_fwd_disable = 1,
  1195. .prio = 2,
  1196. .urg_fwd = 0,
  1197. },
  1198. };
  1199. static struct qcom_icc_node qxm_pimem = {
  1200. .name = "qxm_pimem",
  1201. .id = MASTER_PIMEM,
  1202. .channels = 1,
  1203. .buswidth = 8,
  1204. .noc_ops = &qcom_qnoc4_ops,
  1205. .qosbox = &qxm_pimem_qos,
  1206. .num_links = 1,
  1207. .links = { SLAVE_SNOC_GEM_NOC_GC },
  1208. };
  1209. static struct qcom_icc_qosbox xm_gic_qos = {
  1210. .regs = icc_qnoc_qos_regs[ICC_QNOC_QOSGEN_TYPE_RPMH],
  1211. .num_ports = 1,
  1212. .offsets = { 0x15000 },
  1213. .config = &(struct qos_config) {
  1214. .prio_fwd_disable = 1,
  1215. .prio = 2,
  1216. .urg_fwd = 0,
  1217. },
  1218. };
  1219. static struct qcom_icc_node xm_gic = {
  1220. .name = "xm_gic",
  1221. .id = MASTER_GIC,
  1222. .channels = 1,
  1223. .buswidth = 8,
  1224. .noc_ops = &qcom_qnoc4_ops,
  1225. .qosbox = &xm_gic_qos,
  1226. .num_links = 1,
  1227. .links = { SLAVE_SNOC_GEM_NOC_GC },
  1228. };
  1229. static struct qcom_icc_node qns_a1noc_snoc = {
  1230. .name = "qns_a1noc_snoc",
  1231. .id = SLAVE_A1NOC_SNOC,
  1232. .channels = 1,
  1233. .buswidth = 32,
  1234. .noc_ops = &qcom_qnoc4_ops,
  1235. .num_links = 1,
  1236. .links = { MASTER_A1NOC_SNOC },
  1237. };
  1238. static struct qcom_icc_node qns_a2noc_snoc = {
  1239. .name = "qns_a2noc_snoc",
  1240. .id = SLAVE_A2NOC_SNOC,
  1241. .channels = 1,
  1242. .buswidth = 16,
  1243. .noc_ops = &qcom_qnoc4_ops,
  1244. .num_links = 1,
  1245. .links = { MASTER_A2NOC_SNOC },
  1246. };
  1247. static struct qcom_icc_node qup0_core_slave = {
  1248. .name = "qup0_core_slave",
  1249. .id = SLAVE_QUP_CORE_0,
  1250. .channels = 1,
  1251. .buswidth = 4,
  1252. .noc_ops = &qcom_qnoc4_ops,
  1253. .num_links = 0,
  1254. };
  1255. static struct qcom_icc_node qup1_core_slave = {
  1256. .name = "qup1_core_slave",
  1257. .id = SLAVE_QUP_CORE_1,
  1258. .channels = 1,
  1259. .buswidth = 4,
  1260. .noc_ops = &qcom_qnoc4_ops,
  1261. .num_links = 0,
  1262. };
  1263. static struct qcom_icc_node qup2_core_slave = {
  1264. .name = "qup2_core_slave",
  1265. .id = SLAVE_QUP_CORE_2,
  1266. .channels = 1,
  1267. .buswidth = 4,
  1268. .noc_ops = &qcom_qnoc4_ops,
  1269. .num_links = 0,
  1270. };
  1271. static struct qcom_icc_node qup3_core_slave = {
  1272. .name = "qup3_core_slave",
  1273. .id = SLAVE_QUP_CORE_3,
  1274. .channels = 1,
  1275. .buswidth = 4,
  1276. .noc_ops = &qcom_qnoc4_ops,
  1277. .num_links = 0,
  1278. };
  1279. static struct qcom_icc_node qhs_ahb2phy0 = {
  1280. .name = "qhs_ahb2phy0",
  1281. .id = SLAVE_AHB2PHY_0,
  1282. .channels = 1,
  1283. .buswidth = 4,
  1284. .noc_ops = &qcom_qnoc4_ops,
  1285. .num_links = 0,
  1286. };
  1287. static struct qcom_icc_node qhs_ahb2phy1 = {
  1288. .name = "qhs_ahb2phy1",
  1289. .id = SLAVE_AHB2PHY_1,
  1290. .channels = 1,
  1291. .buswidth = 4,
  1292. .noc_ops = &qcom_qnoc4_ops,
  1293. .num_links = 0,
  1294. };
  1295. static struct qcom_icc_node qhs_ahb2phy2 = {
  1296. .name = "qhs_ahb2phy2",
  1297. .id = SLAVE_AHB2PHY_2,
  1298. .channels = 1,
  1299. .buswidth = 4,
  1300. .noc_ops = &qcom_qnoc4_ops,
  1301. .num_links = 0,
  1302. };
  1303. static struct qcom_icc_node qhs_ahb2phy3 = {
  1304. .name = "qhs_ahb2phy3",
  1305. .id = SLAVE_AHB2PHY_3,
  1306. .channels = 1,
  1307. .buswidth = 4,
  1308. .noc_ops = &qcom_qnoc4_ops,
  1309. .num_links = 0,
  1310. };
  1311. static struct qcom_icc_node qhs_anoc_throttle_cfg = {
  1312. .name = "qhs_anoc_throttle_cfg",
  1313. .id = SLAVE_ANOC_THROTTLE_CFG,
  1314. .channels = 1,
  1315. .buswidth = 4,
  1316. .noc_ops = &qcom_qnoc4_ops,
  1317. .num_links = 0,
  1318. };
  1319. static struct qcom_icc_node qhs_aoss = {
  1320. .name = "qhs_aoss",
  1321. .id = SLAVE_AOSS,
  1322. .channels = 1,
  1323. .buswidth = 4,
  1324. .noc_ops = &qcom_qnoc4_ops,
  1325. .num_links = 0,
  1326. };
  1327. static struct qcom_icc_node qhs_apss = {
  1328. .name = "qhs_apss",
  1329. .id = SLAVE_APPSS,
  1330. .channels = 1,
  1331. .buswidth = 8,
  1332. .noc_ops = &qcom_qnoc4_ops,
  1333. .num_links = 0,
  1334. };
  1335. static struct qcom_icc_node qhs_boot_rom = {
  1336. .name = "qhs_boot_rom",
  1337. .id = SLAVE_BOOT_ROM,
  1338. .channels = 1,
  1339. .buswidth = 4,
  1340. .noc_ops = &qcom_qnoc4_ops,
  1341. .num_links = 0,
  1342. };
  1343. static struct qcom_icc_node qhs_camera_cfg = {
  1344. .name = "qhs_camera_cfg",
  1345. .id = SLAVE_CAMERA_CFG,
  1346. .channels = 1,
  1347. .buswidth = 4,
  1348. .noc_ops = &qcom_qnoc4_ops,
  1349. .num_links = 0,
  1350. };
  1351. static struct qcom_icc_node qhs_camera_nrt_throttle_cfg = {
  1352. .name = "qhs_camera_nrt_throttle_cfg",
  1353. .id = SLAVE_CAMERA_NRT_THROTTLE_CFG,
  1354. .channels = 1,
  1355. .buswidth = 4,
  1356. .noc_ops = &qcom_qnoc4_ops,
  1357. .num_links = 0,
  1358. };
  1359. static struct qcom_icc_node qhs_camera_rt_throttle_cfg = {
  1360. .name = "qhs_camera_rt_throttle_cfg",
  1361. .id = SLAVE_CAMERA_RT_THROTTLE_CFG,
  1362. .channels = 1,
  1363. .buswidth = 4,
  1364. .noc_ops = &qcom_qnoc4_ops,
  1365. .num_links = 0,
  1366. };
  1367. static struct qcom_icc_node qhs_clk_ctl = {
  1368. .name = "qhs_clk_ctl",
  1369. .id = SLAVE_CLK_CTL,
  1370. .channels = 1,
  1371. .buswidth = 4,
  1372. .noc_ops = &qcom_qnoc4_ops,
  1373. .num_links = 0,
  1374. };
  1375. static struct qcom_icc_node qhs_compute0_cfg = {
  1376. .name = "qhs_compute0_cfg",
  1377. .id = SLAVE_CDSP_CFG,
  1378. .channels = 1,
  1379. .buswidth = 4,
  1380. .noc_ops = &qcom_qnoc4_ops,
  1381. .num_links = 1,
  1382. .links = { MASTER_CDSP_NOC_CFG },
  1383. };
  1384. static struct qcom_icc_node qhs_compute1_cfg = {
  1385. .name = "qhs_compute1_cfg",
  1386. .id = SLAVE_CDSP1_CFG,
  1387. .channels = 1,
  1388. .buswidth = 4,
  1389. .noc_ops = &qcom_qnoc4_ops,
  1390. .num_links = 1,
  1391. .links = { MASTER_CDSPB_NOC_CFG },
  1392. };
  1393. static struct qcom_icc_node qhs_cpr_cx = {
  1394. .name = "qhs_cpr_cx",
  1395. .id = SLAVE_RBCPR_CX_CFG,
  1396. .channels = 1,
  1397. .buswidth = 4,
  1398. .noc_ops = &qcom_qnoc4_ops,
  1399. .num_links = 0,
  1400. };
  1401. static struct qcom_icc_node qhs_cpr_mmcx = {
  1402. .name = "qhs_cpr_mmcx",
  1403. .id = SLAVE_RBCPR_MMCX_CFG,
  1404. .channels = 1,
  1405. .buswidth = 4,
  1406. .noc_ops = &qcom_qnoc4_ops,
  1407. .num_links = 0,
  1408. };
  1409. static struct qcom_icc_node qhs_cpr_mx = {
  1410. .name = "qhs_cpr_mx",
  1411. .id = SLAVE_RBCPR_MX_CFG,
  1412. .channels = 1,
  1413. .buswidth = 4,
  1414. .noc_ops = &qcom_qnoc4_ops,
  1415. .num_links = 0,
  1416. };
  1417. static struct qcom_icc_node qhs_cpr_nspcx = {
  1418. .name = "qhs_cpr_nspcx",
  1419. .id = SLAVE_CPR_NSPCX,
  1420. .channels = 1,
  1421. .buswidth = 4,
  1422. .noc_ops = &qcom_qnoc4_ops,
  1423. .num_links = 0,
  1424. };
  1425. static struct qcom_icc_node qhs_crypto0_cfg = {
  1426. .name = "qhs_crypto0_cfg",
  1427. .id = SLAVE_CRYPTO_0_CFG,
  1428. .channels = 1,
  1429. .buswidth = 4,
  1430. .noc_ops = &qcom_qnoc4_ops,
  1431. .num_links = 0,
  1432. };
  1433. static struct qcom_icc_node qhs_cx_rdpm = {
  1434. .name = "qhs_cx_rdpm",
  1435. .id = SLAVE_CX_RDPM,
  1436. .channels = 1,
  1437. .buswidth = 4,
  1438. .noc_ops = &qcom_qnoc4_ops,
  1439. .num_links = 0,
  1440. };
  1441. static struct qcom_icc_node qhs_display0_cfg = {
  1442. .name = "qhs_display0_cfg",
  1443. .id = SLAVE_DISPLAY_CFG,
  1444. .channels = 1,
  1445. .buswidth = 4,
  1446. .noc_ops = &qcom_qnoc4_ops,
  1447. .num_links = 0,
  1448. };
  1449. static struct qcom_icc_node qhs_display0_rt_throttle_cfg = {
  1450. .name = "qhs_display0_rt_throttle_cfg",
  1451. .id = SLAVE_DISPLAY_RT_THROTTLE_CFG,
  1452. .channels = 1,
  1453. .buswidth = 4,
  1454. .noc_ops = &qcom_qnoc4_ops,
  1455. .num_links = 0,
  1456. };
  1457. static struct qcom_icc_node qhs_display1_cfg = {
  1458. .name = "qhs_display1_cfg",
  1459. .id = SLAVE_DISPLAY1_CFG,
  1460. .channels = 1,
  1461. .buswidth = 4,
  1462. .noc_ops = &qcom_qnoc4_ops,
  1463. .num_links = 0,
  1464. };
  1465. static struct qcom_icc_node qhs_display1_rt_throttle_cfg = {
  1466. .name = "qhs_display1_rt_throttle_cfg",
  1467. .id = SLAVE_DISPLAY1_RT_THROTTLE_CFG,
  1468. .channels = 1,
  1469. .buswidth = 4,
  1470. .noc_ops = &qcom_qnoc4_ops,
  1471. .num_links = 0,
  1472. };
  1473. static struct qcom_icc_node qhs_emac0_cfg = {
  1474. .name = "qhs_emac0_cfg",
  1475. .id = SLAVE_EMAC_CFG,
  1476. .channels = 1,
  1477. .buswidth = 4,
  1478. .noc_ops = &qcom_qnoc4_ops,
  1479. .num_links = 0,
  1480. };
  1481. static struct qcom_icc_node qhs_emac1_cfg = {
  1482. .name = "qhs_emac1_cfg",
  1483. .id = SLAVE_EMAC1_CFG,
  1484. .channels = 1,
  1485. .buswidth = 4,
  1486. .noc_ops = &qcom_qnoc4_ops,
  1487. .num_links = 0,
  1488. };
  1489. static struct qcom_icc_node qhs_gp_dsp0_cfg = {
  1490. .name = "qhs_gp_dsp0_cfg",
  1491. .id = SLAVE_GP_DSP0_CFG,
  1492. .channels = 1,
  1493. .buswidth = 4,
  1494. .noc_ops = &qcom_qnoc4_ops,
  1495. .num_links = 0,
  1496. };
  1497. static struct qcom_icc_node qhs_gp_dsp1_cfg = {
  1498. .name = "qhs_gp_dsp1_cfg",
  1499. .id = SLAVE_GP_DSP1_CFG,
  1500. .channels = 1,
  1501. .buswidth = 4,
  1502. .noc_ops = &qcom_qnoc4_ops,
  1503. .num_links = 0,
  1504. };
  1505. static struct qcom_icc_node qhs_gpdsp0_throttle_cfg = {
  1506. .name = "qhs_gpdsp0_throttle_cfg",
  1507. .id = SLAVE_GPDSP0_THROTTLE_CFG,
  1508. .channels = 1,
  1509. .buswidth = 4,
  1510. .noc_ops = &qcom_qnoc4_ops,
  1511. .num_links = 0,
  1512. };
  1513. static struct qcom_icc_node qhs_gpdsp1_throttle_cfg = {
  1514. .name = "qhs_gpdsp1_throttle_cfg",
  1515. .id = SLAVE_GPDSP1_THROTTLE_CFG,
  1516. .channels = 1,
  1517. .buswidth = 4,
  1518. .noc_ops = &qcom_qnoc4_ops,
  1519. .num_links = 0,
  1520. };
  1521. static struct qcom_icc_node qhs_gpu_tcu_throttle_cfg = {
  1522. .name = "qhs_gpu_tcu_throttle_cfg",
  1523. .id = SLAVE_GPU_TCU_THROTTLE_CFG,
  1524. .channels = 1,
  1525. .buswidth = 4,
  1526. .noc_ops = &qcom_qnoc4_ops,
  1527. .num_links = 0,
  1528. };
  1529. static struct qcom_icc_node qhs_gpuss_cfg = {
  1530. .name = "qhs_gpuss_cfg",
  1531. .id = SLAVE_GFX3D_CFG,
  1532. .channels = 1,
  1533. .buswidth = 8,
  1534. .noc_ops = &qcom_qnoc4_ops,
  1535. .num_links = 0,
  1536. };
  1537. static struct qcom_icc_node qhs_hwkm = {
  1538. .name = "qhs_hwkm",
  1539. .id = SLAVE_HWKM,
  1540. .channels = 1,
  1541. .buswidth = 4,
  1542. .noc_ops = &qcom_qnoc4_ops,
  1543. .num_links = 0,
  1544. };
  1545. static struct qcom_icc_node qhs_imem_cfg = {
  1546. .name = "qhs_imem_cfg",
  1547. .id = SLAVE_IMEM_CFG,
  1548. .channels = 1,
  1549. .buswidth = 4,
  1550. .noc_ops = &qcom_qnoc4_ops,
  1551. .num_links = 0,
  1552. };
  1553. static struct qcom_icc_node qhs_ipa = {
  1554. .name = "qhs_ipa",
  1555. .id = SLAVE_IPA_CFG,
  1556. .channels = 1,
  1557. .buswidth = 4,
  1558. .noc_ops = &qcom_qnoc4_ops,
  1559. .num_links = 0,
  1560. };
  1561. static struct qcom_icc_node qhs_ipc_router = {
  1562. .name = "qhs_ipc_router",
  1563. .id = SLAVE_IPC_ROUTER_CFG,
  1564. .channels = 1,
  1565. .buswidth = 4,
  1566. .noc_ops = &qcom_qnoc4_ops,
  1567. .num_links = 0,
  1568. };
  1569. static struct qcom_icc_node qhs_lpass_cfg = {
  1570. .name = "qhs_lpass_cfg",
  1571. .id = SLAVE_LPASS,
  1572. .channels = 1,
  1573. .buswidth = 4,
  1574. .noc_ops = &qcom_qnoc4_ops,
  1575. .num_links = 1,
  1576. .links = { MASTER_CNOC_LPASS_AG_NOC },
  1577. };
  1578. static struct qcom_icc_node qhs_lpass_throttle_cfg = {
  1579. .name = "qhs_lpass_throttle_cfg",
  1580. .id = SLAVE_LPASS_THROTTLE_CFG,
  1581. .channels = 1,
  1582. .buswidth = 4,
  1583. .noc_ops = &qcom_qnoc4_ops,
  1584. .num_links = 0,
  1585. };
  1586. static struct qcom_icc_node qhs_mx_rdpm = {
  1587. .name = "qhs_mx_rdpm",
  1588. .id = SLAVE_MX_RDPM,
  1589. .channels = 1,
  1590. .buswidth = 4,
  1591. .noc_ops = &qcom_qnoc4_ops,
  1592. .num_links = 0,
  1593. };
  1594. static struct qcom_icc_node qhs_mxc_rdpm = {
  1595. .name = "qhs_mxc_rdpm",
  1596. .id = SLAVE_MXC_RDPM,
  1597. .channels = 1,
  1598. .buswidth = 4,
  1599. .noc_ops = &qcom_qnoc4_ops,
  1600. .num_links = 0,
  1601. };
  1602. static struct qcom_icc_node qhs_pcie0_cfg = {
  1603. .name = "qhs_pcie0_cfg",
  1604. .id = SLAVE_PCIE_0_CFG,
  1605. .channels = 1,
  1606. .buswidth = 4,
  1607. .noc_ops = &qcom_qnoc4_ops,
  1608. .num_links = 0,
  1609. };
  1610. static struct qcom_icc_node qhs_pcie1_cfg = {
  1611. .name = "qhs_pcie1_cfg",
  1612. .id = SLAVE_PCIE_1_CFG,
  1613. .channels = 1,
  1614. .buswidth = 4,
  1615. .noc_ops = &qcom_qnoc4_ops,
  1616. .num_links = 0,
  1617. };
  1618. static struct qcom_icc_node qhs_pcie_rsc_cfg = {
  1619. .name = "qhs_pcie_rsc_cfg",
  1620. .id = SLAVE_PCIE_RSC_CFG,
  1621. .channels = 1,
  1622. .buswidth = 4,
  1623. .noc_ops = &qcom_qnoc4_ops,
  1624. .num_links = 0,
  1625. };
  1626. static struct qcom_icc_node qhs_pcie_tcu_throttle_cfg = {
  1627. .name = "qhs_pcie_tcu_throttle_cfg",
  1628. .id = SLAVE_PCIE_TCU_THROTTLE_CFG,
  1629. .channels = 1,
  1630. .buswidth = 4,
  1631. .noc_ops = &qcom_qnoc4_ops,
  1632. .num_links = 0,
  1633. };
  1634. static struct qcom_icc_node qhs_pcie_throttle_cfg = {
  1635. .name = "qhs_pcie_throttle_cfg",
  1636. .id = SLAVE_PCIE_THROTTLE_CFG,
  1637. .channels = 1,
  1638. .buswidth = 4,
  1639. .noc_ops = &qcom_qnoc4_ops,
  1640. .num_links = 0,
  1641. };
  1642. static struct qcom_icc_node qhs_pdm = {
  1643. .name = "qhs_pdm",
  1644. .id = SLAVE_PDM,
  1645. .channels = 1,
  1646. .buswidth = 4,
  1647. .noc_ops = &qcom_qnoc4_ops,
  1648. .num_links = 0,
  1649. };
  1650. static struct qcom_icc_node qhs_pimem_cfg = {
  1651. .name = "qhs_pimem_cfg",
  1652. .id = SLAVE_PIMEM_CFG,
  1653. .channels = 1,
  1654. .buswidth = 4,
  1655. .noc_ops = &qcom_qnoc4_ops,
  1656. .num_links = 0,
  1657. };
  1658. static struct qcom_icc_node qhs_pke_wrapper_cfg = {
  1659. .name = "qhs_pke_wrapper_cfg",
  1660. .id = SLAVE_PKA_WRAPPER_CFG,
  1661. .channels = 1,
  1662. .buswidth = 4,
  1663. .noc_ops = &qcom_qnoc4_ops,
  1664. .num_links = 0,
  1665. };
  1666. static struct qcom_icc_node qhs_qdss_cfg = {
  1667. .name = "qhs_qdss_cfg",
  1668. .id = SLAVE_QDSS_CFG,
  1669. .channels = 1,
  1670. .buswidth = 4,
  1671. .noc_ops = &qcom_qnoc4_ops,
  1672. .num_links = 0,
  1673. };
  1674. static struct qcom_icc_node qhs_qm_cfg = {
  1675. .name = "qhs_qm_cfg",
  1676. .id = SLAVE_QM_CFG,
  1677. .channels = 1,
  1678. .buswidth = 4,
  1679. .noc_ops = &qcom_qnoc4_ops,
  1680. .num_links = 0,
  1681. };
  1682. static struct qcom_icc_node qhs_qm_mpu_cfg = {
  1683. .name = "qhs_qm_mpu_cfg",
  1684. .id = SLAVE_QM_MPU_CFG,
  1685. .channels = 1,
  1686. .buswidth = 4,
  1687. .noc_ops = &qcom_qnoc4_ops,
  1688. .num_links = 0,
  1689. };
  1690. static struct qcom_icc_node qhs_qup0 = {
  1691. .name = "qhs_qup0",
  1692. .id = SLAVE_QUP_0,
  1693. .channels = 1,
  1694. .buswidth = 4,
  1695. .noc_ops = &qcom_qnoc4_ops,
  1696. .num_links = 0,
  1697. };
  1698. static struct qcom_icc_node qhs_qup1 = {
  1699. .name = "qhs_qup1",
  1700. .id = SLAVE_QUP_1,
  1701. .channels = 1,
  1702. .buswidth = 4,
  1703. .noc_ops = &qcom_qnoc4_ops,
  1704. .num_links = 0,
  1705. };
  1706. static struct qcom_icc_node qhs_qup2 = {
  1707. .name = "qhs_qup2",
  1708. .id = SLAVE_QUP_2,
  1709. .channels = 1,
  1710. .buswidth = 4,
  1711. .noc_ops = &qcom_qnoc4_ops,
  1712. .num_links = 0,
  1713. };
  1714. static struct qcom_icc_node qhs_qup3 = {
  1715. .name = "qhs_qup3",
  1716. .id = SLAVE_QUP_3,
  1717. .channels = 1,
  1718. .buswidth = 4,
  1719. .noc_ops = &qcom_qnoc4_ops,
  1720. .num_links = 0,
  1721. };
  1722. static struct qcom_icc_node qhs_sail_throttle_cfg = {
  1723. .name = "qhs_sail_throttle_cfg",
  1724. .id = SLAVE_SAIL_THROTTLE_CFG,
  1725. .channels = 1,
  1726. .buswidth = 4,
  1727. .noc_ops = &qcom_qnoc4_ops,
  1728. .num_links = 0,
  1729. };
  1730. static struct qcom_icc_node qhs_sdc1 = {
  1731. .name = "qhs_sdc1",
  1732. .id = SLAVE_SDC1,
  1733. .channels = 1,
  1734. .buswidth = 4,
  1735. .noc_ops = &qcom_qnoc4_ops,
  1736. .num_links = 0,
  1737. };
  1738. static struct qcom_icc_node qhs_security = {
  1739. .name = "qhs_security",
  1740. .id = SLAVE_SECURITY,
  1741. .channels = 1,
  1742. .buswidth = 4,
  1743. .noc_ops = &qcom_qnoc4_ops,
  1744. .num_links = 0,
  1745. };
  1746. static struct qcom_icc_node qhs_snoc_throttle_cfg = {
  1747. .name = "qhs_snoc_throttle_cfg",
  1748. .id = SLAVE_SNOC_THROTTLE_CFG,
  1749. .channels = 1,
  1750. .buswidth = 4,
  1751. .noc_ops = &qcom_qnoc4_ops,
  1752. .num_links = 0,
  1753. };
  1754. static struct qcom_icc_node qhs_tcsr = {
  1755. .name = "qhs_tcsr",
  1756. .id = SLAVE_TCSR,
  1757. .channels = 1,
  1758. .buswidth = 4,
  1759. .noc_ops = &qcom_qnoc4_ops,
  1760. .num_links = 0,
  1761. };
  1762. static struct qcom_icc_node qhs_tlmm = {
  1763. .name = "qhs_tlmm",
  1764. .id = SLAVE_TLMM,
  1765. .channels = 1,
  1766. .buswidth = 4,
  1767. .noc_ops = &qcom_qnoc4_ops,
  1768. .num_links = 0,
  1769. };
  1770. static struct qcom_icc_node qhs_tsc_cfg = {
  1771. .name = "qhs_tsc_cfg",
  1772. .id = SLAVE_TSC_CFG,
  1773. .channels = 1,
  1774. .buswidth = 4,
  1775. .noc_ops = &qcom_qnoc4_ops,
  1776. .num_links = 0,
  1777. };
  1778. static struct qcom_icc_node qhs_ufs_card_cfg = {
  1779. .name = "qhs_ufs_card_cfg",
  1780. .id = SLAVE_UFS_CARD_CFG,
  1781. .channels = 1,
  1782. .buswidth = 4,
  1783. .noc_ops = &qcom_qnoc4_ops,
  1784. .num_links = 0,
  1785. };
  1786. static struct qcom_icc_node qhs_ufs_mem_cfg = {
  1787. .name = "qhs_ufs_mem_cfg",
  1788. .id = SLAVE_UFS_MEM_CFG,
  1789. .channels = 1,
  1790. .buswidth = 4,
  1791. .noc_ops = &qcom_qnoc4_ops,
  1792. .num_links = 0,
  1793. };
  1794. static struct qcom_icc_node qhs_usb2_0 = {
  1795. .name = "qhs_usb2_0",
  1796. .id = SLAVE_USB2,
  1797. .channels = 1,
  1798. .buswidth = 4,
  1799. .noc_ops = &qcom_qnoc4_ops,
  1800. .num_links = 0,
  1801. };
  1802. static struct qcom_icc_node qhs_usb3_0 = {
  1803. .name = "qhs_usb3_0",
  1804. .id = SLAVE_USB3_0,
  1805. .channels = 1,
  1806. .buswidth = 4,
  1807. .noc_ops = &qcom_qnoc4_ops,
  1808. .num_links = 0,
  1809. };
  1810. static struct qcom_icc_node qhs_usb3_1 = {
  1811. .name = "qhs_usb3_1",
  1812. .id = SLAVE_USB3_1,
  1813. .channels = 1,
  1814. .buswidth = 4,
  1815. .noc_ops = &qcom_qnoc4_ops,
  1816. .num_links = 0,
  1817. };
  1818. static struct qcom_icc_node qhs_venus_cfg = {
  1819. .name = "qhs_venus_cfg",
  1820. .id = SLAVE_VENUS_CFG,
  1821. .channels = 1,
  1822. .buswidth = 4,
  1823. .noc_ops = &qcom_qnoc4_ops,
  1824. .num_links = 0,
  1825. };
  1826. static struct qcom_icc_node qhs_venus_cvp_throttle_cfg = {
  1827. .name = "qhs_venus_cvp_throttle_cfg",
  1828. .id = SLAVE_VENUS_CVP_THROTTLE_CFG,
  1829. .channels = 1,
  1830. .buswidth = 4,
  1831. .noc_ops = &qcom_qnoc4_ops,
  1832. .num_links = 0,
  1833. };
  1834. static struct qcom_icc_node qhs_venus_v_cpu_throttle_cfg = {
  1835. .name = "qhs_venus_v_cpu_throttle_cfg",
  1836. .id = SLAVE_VENUS_V_CPU_THROTTLE_CFG,
  1837. .channels = 1,
  1838. .buswidth = 4,
  1839. .noc_ops = &qcom_qnoc4_ops,
  1840. .num_links = 0,
  1841. };
  1842. static struct qcom_icc_node qhs_venus_vcodec_throttle_cfg = {
  1843. .name = "qhs_venus_vcodec_throttle_cfg",
  1844. .id = SLAVE_VENUS_VCODEC_THROTTLE_CFG,
  1845. .channels = 1,
  1846. .buswidth = 4,
  1847. .noc_ops = &qcom_qnoc4_ops,
  1848. .num_links = 0,
  1849. };
  1850. static struct qcom_icc_node qns_ddrss_cfg = {
  1851. .name = "qns_ddrss_cfg",
  1852. .id = SLAVE_DDRSS_CFG,
  1853. .channels = 1,
  1854. .buswidth = 4,
  1855. .noc_ops = &qcom_qnoc4_ops,
  1856. .num_links = 1,
  1857. .links = { MASTER_CNOC_DC_NOC },
  1858. };
  1859. static struct qcom_icc_node qns_gpdsp_noc_cfg = {
  1860. .name = "qns_gpdsp_noc_cfg",
  1861. .id = SLAVE_GPDSP_NOC_CFG,
  1862. .channels = 1,
  1863. .buswidth = 4,
  1864. .noc_ops = &qcom_qnoc4_ops,
  1865. .num_links = 0,
  1866. };
  1867. static struct qcom_icc_node qns_mnoc_hf_cfg = {
  1868. .name = "qns_mnoc_hf_cfg",
  1869. .id = SLAVE_CNOC_MNOC_HF_CFG,
  1870. .channels = 1,
  1871. .buswidth = 4,
  1872. .noc_ops = &qcom_qnoc4_ops,
  1873. .num_links = 1,
  1874. .links = { MASTER_CNOC_MNOC_HF_CFG },
  1875. };
  1876. static struct qcom_icc_node qns_mnoc_sf_cfg = {
  1877. .name = "qns_mnoc_sf_cfg",
  1878. .id = SLAVE_CNOC_MNOC_SF_CFG,
  1879. .channels = 1,
  1880. .buswidth = 4,
  1881. .noc_ops = &qcom_qnoc4_ops,
  1882. .num_links = 1,
  1883. .links = { MASTER_CNOC_MNOC_SF_CFG },
  1884. };
  1885. static struct qcom_icc_node qns_pcie_anoc_cfg = {
  1886. .name = "qns_pcie_anoc_cfg",
  1887. .id = SLAVE_PCIE_ANOC_CFG,
  1888. .channels = 1,
  1889. .buswidth = 4,
  1890. .noc_ops = &qcom_qnoc4_ops,
  1891. .num_links = 0,
  1892. };
  1893. static struct qcom_icc_node qns_snoc_cfg = {
  1894. .name = "qns_snoc_cfg",
  1895. .id = SLAVE_SNOC_CFG,
  1896. .channels = 1,
  1897. .buswidth = 4,
  1898. .noc_ops = &qcom_qnoc4_ops,
  1899. .num_links = 1,
  1900. .links = { MASTER_SNOC_CFG },
  1901. };
  1902. static struct qcom_icc_node qxs_boot_imem = {
  1903. .name = "qxs_boot_imem",
  1904. .id = SLAVE_BOOT_IMEM,
  1905. .channels = 1,
  1906. .buswidth = 16,
  1907. .noc_ops = &qcom_qnoc4_ops,
  1908. .num_links = 0,
  1909. };
  1910. static struct qcom_icc_node qxs_imem = {
  1911. .name = "qxs_imem",
  1912. .id = SLAVE_IMEM,
  1913. .channels = 1,
  1914. .buswidth = 8,
  1915. .noc_ops = &qcom_qnoc4_ops,
  1916. .num_links = 0,
  1917. };
  1918. static struct qcom_icc_node qxs_pimem = {
  1919. .name = "qxs_pimem",
  1920. .id = SLAVE_PIMEM,
  1921. .channels = 1,
  1922. .buswidth = 8,
  1923. .noc_ops = &qcom_qnoc4_ops,
  1924. .num_links = 0,
  1925. };
  1926. static struct qcom_icc_node xs_pcie_0 = {
  1927. .name = "xs_pcie_0",
  1928. .id = SLAVE_PCIE_0,
  1929. .channels = 1,
  1930. .buswidth = 16,
  1931. .noc_ops = &qcom_qnoc4_ops,
  1932. .num_links = 0,
  1933. };
  1934. static struct qcom_icc_node xs_pcie_1 = {
  1935. .name = "xs_pcie_1",
  1936. .id = SLAVE_PCIE_1,
  1937. .channels = 1,
  1938. .buswidth = 32,
  1939. .noc_ops = &qcom_qnoc4_ops,
  1940. .num_links = 0,
  1941. };
  1942. static struct qcom_icc_node xs_qdss_stm = {
  1943. .name = "xs_qdss_stm",
  1944. .id = SLAVE_QDSS_STM,
  1945. .channels = 1,
  1946. .buswidth = 4,
  1947. .noc_ops = &qcom_qnoc4_ops,
  1948. .num_links = 0,
  1949. };
  1950. static struct qcom_icc_node xs_sys_tcu_cfg = {
  1951. .name = "xs_sys_tcu_cfg",
  1952. .id = SLAVE_TCU,
  1953. .channels = 1,
  1954. .buswidth = 8,
  1955. .noc_ops = &qcom_qnoc4_ops,
  1956. .num_links = 0,
  1957. };
  1958. static struct qcom_icc_node qhs_llcc = {
  1959. .name = "qhs_llcc",
  1960. .id = SLAVE_LLCC_CFG,
  1961. .channels = 1,
  1962. .buswidth = 4,
  1963. .noc_ops = &qcom_qnoc4_ops,
  1964. .num_links = 0,
  1965. };
  1966. static struct qcom_icc_node qns_gemnoc = {
  1967. .name = "qns_gemnoc",
  1968. .id = SLAVE_GEM_NOC_CFG,
  1969. .channels = 1,
  1970. .buswidth = 4,
  1971. .noc_ops = &qcom_qnoc4_ops,
  1972. .num_links = 1,
  1973. .links = { MASTER_GEM_NOC_CFG },
  1974. };
  1975. static struct qcom_icc_node qns_gem_noc_cnoc = {
  1976. .name = "qns_gem_noc_cnoc",
  1977. .id = SLAVE_GEM_NOC_CNOC,
  1978. .channels = 1,
  1979. .buswidth = 16,
  1980. .noc_ops = &qcom_qnoc4_ops,
  1981. .num_links = 1,
  1982. .links = { MASTER_GEM_NOC_CNOC },
  1983. };
  1984. static struct qcom_icc_node qns_llcc = {
  1985. .name = "qns_llcc",
  1986. .id = SLAVE_LLCC,
  1987. .channels = 6,
  1988. .buswidth = 16,
  1989. .noc_ops = &qcom_qnoc4_ops,
  1990. .num_links = 1,
  1991. .links = { MASTER_LLCC },
  1992. };
  1993. static struct qcom_icc_node qns_pcie = {
  1994. .name = "qns_pcie",
  1995. .id = SLAVE_GEM_NOC_PCIE_CNOC,
  1996. .channels = 1,
  1997. .buswidth = 16,
  1998. .noc_ops = &qcom_qnoc4_ops,
  1999. .num_links = 1,
  2000. .links = { MASTER_GEM_NOC_PCIE_SNOC },
  2001. };
  2002. static struct qcom_icc_node srvc_even_gemnoc = {
  2003. .name = "srvc_even_gemnoc",
  2004. .id = SLAVE_SERVICE_GEM_NOC_1,
  2005. .channels = 1,
  2006. .buswidth = 4,
  2007. .noc_ops = &qcom_qnoc4_ops,
  2008. .num_links = 0,
  2009. };
  2010. static struct qcom_icc_node srvc_odd_gemnoc = {
  2011. .name = "srvc_odd_gemnoc",
  2012. .id = SLAVE_SERVICE_GEM_NOC_2,
  2013. .channels = 1,
  2014. .buswidth = 4,
  2015. .noc_ops = &qcom_qnoc4_ops,
  2016. .num_links = 0,
  2017. };
  2018. static struct qcom_icc_node srvc_sys_gemnoc = {
  2019. .name = "srvc_sys_gemnoc",
  2020. .id = SLAVE_SERVICE_GEM_NOC,
  2021. .channels = 1,
  2022. .buswidth = 4,
  2023. .noc_ops = &qcom_qnoc4_ops,
  2024. .num_links = 0,
  2025. };
  2026. static struct qcom_icc_node srvc_sys_gemnoc_2 = {
  2027. .name = "srvc_sys_gemnoc_2",
  2028. .id = SLAVE_SERVICE_GEM_NOC2,
  2029. .channels = 1,
  2030. .buswidth = 4,
  2031. .noc_ops = &qcom_qnoc4_ops,
  2032. .num_links = 0,
  2033. };
  2034. static struct qcom_icc_node qns_gp_dsp_sail_noc = {
  2035. .name = "qns_gp_dsp_sail_noc",
  2036. .id = SLAVE_GP_DSP_SAIL_NOC,
  2037. .channels = 1,
  2038. .buswidth = 16,
  2039. .noc_ops = &qcom_qnoc4_ops,
  2040. .num_links = 1,
  2041. .links = { MASTER_GPDSP_SAIL },
  2042. };
  2043. static struct qcom_icc_node qhs_lpass_core = {
  2044. .name = "qhs_lpass_core",
  2045. .id = SLAVE_LPASS_CORE_CFG,
  2046. .channels = 1,
  2047. .buswidth = 4,
  2048. .noc_ops = &qcom_qnoc4_ops,
  2049. .num_links = 0,
  2050. };
  2051. static struct qcom_icc_node qhs_lpass_lpi = {
  2052. .name = "qhs_lpass_lpi",
  2053. .id = SLAVE_LPASS_LPI_CFG,
  2054. .channels = 1,
  2055. .buswidth = 4,
  2056. .noc_ops = &qcom_qnoc4_ops,
  2057. .num_links = 0,
  2058. };
  2059. static struct qcom_icc_node qhs_lpass_mpu = {
  2060. .name = "qhs_lpass_mpu",
  2061. .id = SLAVE_LPASS_MPU_CFG,
  2062. .channels = 1,
  2063. .buswidth = 4,
  2064. .noc_ops = &qcom_qnoc4_ops,
  2065. .num_links = 0,
  2066. };
  2067. static struct qcom_icc_node qhs_lpass_top = {
  2068. .name = "qhs_lpass_top",
  2069. .id = SLAVE_LPASS_TOP_CFG,
  2070. .channels = 1,
  2071. .buswidth = 4,
  2072. .noc_ops = &qcom_qnoc4_ops,
  2073. .num_links = 0,
  2074. };
  2075. static struct qcom_icc_node qns_sysnoc = {
  2076. .name = "qns_sysnoc",
  2077. .id = SLAVE_LPASS_SNOC,
  2078. .channels = 1,
  2079. .buswidth = 16,
  2080. .noc_ops = &qcom_qnoc4_ops,
  2081. .num_links = 1,
  2082. .links = { MASTER_LPASS_ANOC },
  2083. };
  2084. static struct qcom_icc_node srvc_niu_aml_noc = {
  2085. .name = "srvc_niu_aml_noc",
  2086. .id = SLAVE_SERVICES_LPASS_AML_NOC,
  2087. .channels = 1,
  2088. .buswidth = 4,
  2089. .noc_ops = &qcom_qnoc4_ops,
  2090. .num_links = 0,
  2091. };
  2092. static struct qcom_icc_node srvc_niu_lpass_agnoc = {
  2093. .name = "srvc_niu_lpass_agnoc",
  2094. .id = SLAVE_SERVICE_LPASS_AG_NOC,
  2095. .channels = 1,
  2096. .buswidth = 4,
  2097. .noc_ops = &qcom_qnoc4_ops,
  2098. .num_links = 0,
  2099. };
  2100. static struct qcom_icc_node ebi = {
  2101. .name = "ebi",
  2102. .id = SLAVE_EBI1,
  2103. .channels = 8,
  2104. .buswidth = 4,
  2105. .noc_ops = &qcom_qnoc4_ops,
  2106. .num_links = 0,
  2107. };
  2108. static struct qcom_icc_node qns_mem_noc_hf = {
  2109. .name = "qns_mem_noc_hf",
  2110. .id = SLAVE_MNOC_HF_MEM_NOC,
  2111. .channels = 2,
  2112. .buswidth = 32,
  2113. .noc_ops = &qcom_qnoc4_ops,
  2114. .num_links = 1,
  2115. .links = { MASTER_MNOC_HF_MEM_NOC },
  2116. };
  2117. static struct qcom_icc_node qns_mem_noc_sf = {
  2118. .name = "qns_mem_noc_sf",
  2119. .id = SLAVE_MNOC_SF_MEM_NOC,
  2120. .channels = 2,
  2121. .buswidth = 32,
  2122. .noc_ops = &qcom_qnoc4_ops,
  2123. .num_links = 1,
  2124. .links = { MASTER_MNOC_SF_MEM_NOC },
  2125. };
  2126. static struct qcom_icc_node srvc_mnoc_hf = {
  2127. .name = "srvc_mnoc_hf",
  2128. .id = SLAVE_SERVICE_MNOC_HF,
  2129. .channels = 1,
  2130. .buswidth = 4,
  2131. .noc_ops = &qcom_qnoc4_ops,
  2132. .num_links = 0,
  2133. };
  2134. static struct qcom_icc_node srvc_mnoc_sf = {
  2135. .name = "srvc_mnoc_sf",
  2136. .id = SLAVE_SERVICE_MNOC_SF,
  2137. .channels = 1,
  2138. .buswidth = 4,
  2139. .noc_ops = &qcom_qnoc4_ops,
  2140. .num_links = 0,
  2141. };
  2142. static struct qcom_icc_node qns_hcp = {
  2143. .name = "qns_hcp",
  2144. .id = SLAVE_HCP_A,
  2145. .channels = 2,
  2146. .buswidth = 32,
  2147. .noc_ops = &qcom_qnoc4_ops,
  2148. .num_links = 0,
  2149. };
  2150. static struct qcom_icc_node qns_nsp_gemnoc = {
  2151. .name = "qns_nsp_gemnoc",
  2152. .id = SLAVE_CDSP_MEM_NOC,
  2153. .channels = 2,
  2154. .buswidth = 32,
  2155. .noc_ops = &qcom_qnoc4_ops,
  2156. .num_links = 1,
  2157. .links = { MASTER_COMPUTE_NOC },
  2158. };
  2159. static struct qcom_icc_node service_nsp_noc = {
  2160. .name = "service_nsp_noc",
  2161. .id = SLAVE_SERVICE_NSP_NOC,
  2162. .channels = 1,
  2163. .buswidth = 4,
  2164. .noc_ops = &qcom_qnoc4_ops,
  2165. .num_links = 0,
  2166. };
  2167. static struct qcom_icc_node qns_nspb_gemnoc = {
  2168. .name = "qns_nspb_gemnoc",
  2169. .id = SLAVE_CDSPB_MEM_NOC,
  2170. .channels = 2,
  2171. .buswidth = 32,
  2172. .noc_ops = &qcom_qnoc4_ops,
  2173. .num_links = 1,
  2174. .links = { MASTER_COMPUTE_NOC_1 },
  2175. };
  2176. static struct qcom_icc_node qns_nspb_hcp = {
  2177. .name = "qns_nspb_hcp",
  2178. .id = SLAVE_HCP_B,
  2179. .channels = 2,
  2180. .buswidth = 32,
  2181. .noc_ops = &qcom_qnoc4_ops,
  2182. .num_links = 0,
  2183. };
  2184. static struct qcom_icc_node service_nspb_noc = {
  2185. .name = "service_nspb_noc",
  2186. .id = SLAVE_SERVICE_NSPB_NOC,
  2187. .channels = 1,
  2188. .buswidth = 4,
  2189. .noc_ops = &qcom_qnoc4_ops,
  2190. .num_links = 0,
  2191. };
  2192. static struct qcom_icc_node qns_pcie_mem_noc = {
  2193. .name = "qns_pcie_mem_noc",
  2194. .id = SLAVE_ANOC_PCIE_GEM_NOC,
  2195. .channels = 1,
  2196. .buswidth = 32,
  2197. .noc_ops = &qcom_qnoc4_ops,
  2198. .num_links = 1,
  2199. .links = { MASTER_ANOC_PCIE_GEM_NOC },
  2200. };
  2201. static struct qcom_icc_node qns_gemnoc_gc = {
  2202. .name = "qns_gemnoc_gc",
  2203. .id = SLAVE_SNOC_GEM_NOC_GC,
  2204. .channels = 1,
  2205. .buswidth = 8,
  2206. .noc_ops = &qcom_qnoc4_ops,
  2207. .num_links = 1,
  2208. .links = { MASTER_SNOC_GC_MEM_NOC },
  2209. };
  2210. static struct qcom_icc_node qns_gemnoc_sf = {
  2211. .name = "qns_gemnoc_sf",
  2212. .id = SLAVE_SNOC_GEM_NOC_SF,
  2213. .channels = 1,
  2214. .buswidth = 16,
  2215. .noc_ops = &qcom_qnoc4_ops,
  2216. .num_links = 1,
  2217. .links = { MASTER_SNOC_SF_MEM_NOC },
  2218. };
  2219. static struct qcom_icc_node srvc_snoc = {
  2220. .name = "srvc_snoc",
  2221. .id = SLAVE_SERVICE_SNOC,
  2222. .channels = 1,
  2223. .buswidth = 4,
  2224. .noc_ops = &qcom_qnoc4_ops,
  2225. .num_links = 0,
  2226. };
  2227. static struct qcom_icc_bcm bcm_acv = {
  2228. .name = "ACV",
  2229. .voter_idx = VOTER_IDX_HLOS,
  2230. .enable_mask = 0x8,
  2231. .num_nodes = 1,
  2232. .nodes = { &ebi },
  2233. };
  2234. static struct qcom_icc_bcm bcm_ce0 = {
  2235. .name = "CE0",
  2236. .voter_idx = VOTER_IDX_HLOS,
  2237. .num_nodes = 2,
  2238. .nodes = { &qxm_crypto_0, &qxm_crypto_1 },
  2239. };
  2240. static struct qcom_icc_bcm bcm_cn0 = {
  2241. .name = "CN0",
  2242. .voter_idx = VOTER_IDX_HLOS,
  2243. .keepalive = true,
  2244. .num_nodes = 2,
  2245. .nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie },
  2246. };
  2247. static struct qcom_icc_bcm bcm_cn1 = {
  2248. .name = "CN1",
  2249. .voter_idx = VOTER_IDX_HLOS,
  2250. .num_nodes = 76,
  2251. .nodes = { &qhs_ahb2phy0, &qhs_ahb2phy1,
  2252. &qhs_ahb2phy2, &qhs_ahb2phy3,
  2253. &qhs_anoc_throttle_cfg, &qhs_aoss,
  2254. &qhs_apss, &qhs_boot_rom,
  2255. &qhs_camera_cfg, &qhs_camera_nrt_throttle_cfg,
  2256. &qhs_camera_rt_throttle_cfg, &qhs_clk_ctl,
  2257. &qhs_compute0_cfg, &qhs_compute1_cfg,
  2258. &qhs_cpr_cx, &qhs_cpr_mmcx,
  2259. &qhs_cpr_mx, &qhs_cpr_nspcx,
  2260. &qhs_crypto0_cfg, &qhs_cx_rdpm,
  2261. &qhs_display0_cfg, &qhs_display0_rt_throttle_cfg,
  2262. &qhs_display1_cfg, &qhs_display1_rt_throttle_cfg,
  2263. &qhs_emac0_cfg, &qhs_emac1_cfg,
  2264. &qhs_gp_dsp0_cfg, &qhs_gp_dsp1_cfg,
  2265. &qhs_gpdsp0_throttle_cfg, &qhs_gpdsp1_throttle_cfg,
  2266. &qhs_gpu_tcu_throttle_cfg, &qhs_gpuss_cfg,
  2267. &qhs_hwkm, &qhs_imem_cfg,
  2268. &qhs_ipa, &qhs_ipc_router,
  2269. &qhs_lpass_cfg, &qhs_lpass_throttle_cfg,
  2270. &qhs_mx_rdpm, &qhs_mxc_rdpm,
  2271. &qhs_pcie0_cfg, &qhs_pcie1_cfg,
  2272. &qhs_pcie_rsc_cfg, &qhs_pcie_tcu_throttle_cfg,
  2273. &qhs_pcie_throttle_cfg, &qhs_pdm,
  2274. &qhs_pimem_cfg, &qhs_pke_wrapper_cfg,
  2275. &qhs_qdss_cfg, &qhs_qm_cfg,
  2276. &qhs_qm_mpu_cfg, &qhs_sail_throttle_cfg,
  2277. &qhs_sdc1, &qhs_security,
  2278. &qhs_snoc_throttle_cfg, &qhs_tcsr,
  2279. &qhs_tlmm, &qhs_tsc_cfg,
  2280. &qhs_ufs_card_cfg, &qhs_ufs_mem_cfg,
  2281. &qhs_usb2_0, &qhs_usb3_0,
  2282. &qhs_usb3_1, &qhs_venus_cfg,
  2283. &qhs_venus_cvp_throttle_cfg, &qhs_venus_v_cpu_throttle_cfg,
  2284. &qhs_venus_vcodec_throttle_cfg, &qns_ddrss_cfg,
  2285. &qns_gpdsp_noc_cfg, &qns_mnoc_hf_cfg,
  2286. &qns_mnoc_sf_cfg, &qns_pcie_anoc_cfg,
  2287. &qns_snoc_cfg, &qxs_boot_imem,
  2288. &qxs_imem, &xs_sys_tcu_cfg },
  2289. };
  2290. static struct qcom_icc_bcm bcm_cn2 = {
  2291. .name = "CN2",
  2292. .voter_idx = VOTER_IDX_HLOS,
  2293. .num_nodes = 4,
  2294. .nodes = { &qhs_qup0, &qhs_qup1,
  2295. &qhs_qup2, &qhs_qup3 },
  2296. };
  2297. static struct qcom_icc_bcm bcm_cn3 = {
  2298. .name = "CN3",
  2299. .voter_idx = VOTER_IDX_HLOS,
  2300. .num_nodes = 2,
  2301. .nodes = { &xs_pcie_0, &xs_pcie_1 },
  2302. };
  2303. static struct qcom_icc_bcm bcm_gna0 = {
  2304. .name = "GNA0",
  2305. .voter_idx = VOTER_IDX_HLOS,
  2306. .num_nodes = 1,
  2307. .nodes = { &qxm_dsp0 },
  2308. };
  2309. static struct qcom_icc_bcm bcm_gnb0 = {
  2310. .name = "GNB0",
  2311. .voter_idx = VOTER_IDX_HLOS,
  2312. .num_nodes = 1,
  2313. .nodes = { &qxm_dsp1 },
  2314. };
  2315. static struct qcom_icc_bcm bcm_mc0 = {
  2316. .name = "MC0",
  2317. .voter_idx = VOTER_IDX_HLOS,
  2318. .keepalive = true,
  2319. .num_nodes = 1,
  2320. .nodes = { &ebi },
  2321. };
  2322. static struct qcom_icc_bcm bcm_mm0 = {
  2323. .name = "MM0",
  2324. .voter_idx = VOTER_IDX_HLOS,
  2325. .keepalive = true,
  2326. .num_nodes = 5,
  2327. .nodes = { &qnm_camnoc_hf, &qnm_mdp0_0,
  2328. &qnm_mdp0_1, &qnm_mdp1_0,
  2329. &qns_mem_noc_hf },
  2330. };
  2331. static struct qcom_icc_bcm bcm_mm1 = {
  2332. .name = "MM1",
  2333. .voter_idx = VOTER_IDX_HLOS,
  2334. .num_nodes = 7,
  2335. .nodes = { &qnm_camnoc_icp, &qnm_camnoc_sf,
  2336. &qnm_video0, &qnm_video1,
  2337. &qnm_video_cvp, &qnm_video_v_cpu,
  2338. &qns_mem_noc_sf },
  2339. };
  2340. static struct qcom_icc_bcm bcm_nsa0 = {
  2341. .name = "NSA0",
  2342. .voter_idx = VOTER_IDX_HLOS,
  2343. .num_nodes = 2,
  2344. .nodes = { &qns_hcp, &qns_nsp_gemnoc },
  2345. };
  2346. static struct qcom_icc_bcm bcm_nsa1 = {
  2347. .name = "NSA1",
  2348. .voter_idx = VOTER_IDX_HLOS,
  2349. .num_nodes = 1,
  2350. .nodes = { &qxm_nsp },
  2351. };
  2352. static struct qcom_icc_bcm bcm_nsb0 = {
  2353. .name = "NSB0",
  2354. .voter_idx = VOTER_IDX_HLOS,
  2355. .num_nodes = 2,
  2356. .nodes = { &qns_nspb_gemnoc, &qns_nspb_hcp },
  2357. };
  2358. static struct qcom_icc_bcm bcm_nsb1 = {
  2359. .name = "NSB1",
  2360. .voter_idx = VOTER_IDX_HLOS,
  2361. .num_nodes = 1,
  2362. .nodes = { &qxm_nspb },
  2363. };
  2364. static struct qcom_icc_bcm bcm_pci0 = {
  2365. .name = "PCI0",
  2366. .voter_idx = VOTER_IDX_HLOS,
  2367. .keepalive = true,
  2368. .num_nodes = 1,
  2369. .nodes = { &qns_pcie_mem_noc },
  2370. };
  2371. static struct qcom_icc_bcm bcm_qup0 = {
  2372. .name = "QUP0",
  2373. .voter_idx = VOTER_IDX_HLOS,
  2374. .vote_scale = 1,
  2375. .keepalive = true,
  2376. .num_nodes = 1,
  2377. .nodes = { &qup0_core_slave },
  2378. };
  2379. static struct qcom_icc_bcm bcm_qup1 = {
  2380. .name = "QUP1",
  2381. .voter_idx = VOTER_IDX_HLOS,
  2382. .vote_scale = 1,
  2383. .keepalive = true,
  2384. .num_nodes = 1,
  2385. .nodes = { &qup1_core_slave },
  2386. };
  2387. static struct qcom_icc_bcm bcm_qup2 = {
  2388. .name = "QUP2",
  2389. .voter_idx = VOTER_IDX_HLOS,
  2390. .vote_scale = 1,
  2391. .keepalive = true,
  2392. .num_nodes = 2,
  2393. .nodes = { &qup2_core_slave, &qup3_core_slave },
  2394. };
  2395. static struct qcom_icc_bcm bcm_sh0 = {
  2396. .name = "SH0",
  2397. .voter_idx = VOTER_IDX_HLOS,
  2398. .keepalive = true,
  2399. .num_nodes = 1,
  2400. .nodes = { &qns_llcc },
  2401. };
  2402. static struct qcom_icc_bcm bcm_sh2 = {
  2403. .name = "SH2",
  2404. .voter_idx = VOTER_IDX_HLOS,
  2405. .num_nodes = 1,
  2406. .nodes = { &chm_apps },
  2407. };
  2408. static struct qcom_icc_bcm bcm_sn0 = {
  2409. .name = "SN0",
  2410. .voter_idx = VOTER_IDX_HLOS,
  2411. .keepalive = true,
  2412. .num_nodes = 1,
  2413. .nodes = { &qns_gemnoc_sf },
  2414. };
  2415. static struct qcom_icc_bcm bcm_sn1 = {
  2416. .name = "SN1",
  2417. .voter_idx = VOTER_IDX_HLOS,
  2418. .num_nodes = 1,
  2419. .nodes = { &qns_gemnoc_gc },
  2420. };
  2421. static struct qcom_icc_bcm bcm_sn2 = {
  2422. .name = "SN2",
  2423. .voter_idx = VOTER_IDX_HLOS,
  2424. .num_nodes = 1,
  2425. .nodes = { &qxs_pimem },
  2426. };
  2427. static struct qcom_icc_bcm bcm_sn3 = {
  2428. .name = "SN3",
  2429. .voter_idx = VOTER_IDX_HLOS,
  2430. .num_nodes = 2,
  2431. .nodes = { &qns_a1noc_snoc, &qnm_aggre1_noc },
  2432. };
  2433. static struct qcom_icc_bcm bcm_sn4 = {
  2434. .name = "SN4",
  2435. .voter_idx = VOTER_IDX_HLOS,
  2436. .num_nodes = 2,
  2437. .nodes = { &qns_a2noc_snoc, &qnm_aggre2_noc },
  2438. };
  2439. static struct qcom_icc_bcm bcm_sn9 = {
  2440. .name = "SN9",
  2441. .voter_idx = VOTER_IDX_HLOS,
  2442. .num_nodes = 2,
  2443. .nodes = { &qns_sysnoc, &qnm_lpass_noc },
  2444. };
  2445. static struct qcom_icc_bcm bcm_sn10 = {
  2446. .name = "SN10",
  2447. .voter_idx = VOTER_IDX_HLOS,
  2448. .num_nodes = 1,
  2449. .nodes = { &xs_qdss_stm },
  2450. };
  2451. static struct qcom_icc_bcm *aggre1_noc_bcms[] = {
  2452. &bcm_sn3,
  2453. };
  2454. static struct qcom_icc_node *aggre1_noc_nodes[] = {
  2455. [MASTER_QUP_3] = &qxm_qup3,
  2456. [MASTER_EMAC] = &xm_emac_0,
  2457. [MASTER_EMAC_1] = &xm_emac_1,
  2458. [MASTER_SDC] = &xm_sdc1,
  2459. [MASTER_UFS_MEM] = &xm_ufs_mem,
  2460. [MASTER_USB2] = &xm_usb2_2,
  2461. [MASTER_USB3_0] = &xm_usb3_0,
  2462. [MASTER_USB3_1] = &xm_usb3_1,
  2463. [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc,
  2464. };
  2465. static char *aggre1_noc_voters[] = {
  2466. [VOTER_IDX_HLOS] = "hlos",
  2467. };
  2468. static struct qcom_icc_desc lemans_aggre1_noc = {
  2469. .config = &icc_regmap_config,
  2470. .nodes = aggre1_noc_nodes,
  2471. .num_nodes = ARRAY_SIZE(aggre1_noc_nodes),
  2472. .bcms = aggre1_noc_bcms,
  2473. .num_bcms = ARRAY_SIZE(aggre1_noc_bcms),
  2474. .voters = aggre1_noc_voters,
  2475. .num_voters = ARRAY_SIZE(aggre1_noc_voters),
  2476. };
  2477. static struct qcom_icc_bcm *aggre2_noc_bcms[] = {
  2478. &bcm_ce0,
  2479. &bcm_sn4,
  2480. };
  2481. static struct qcom_icc_node *aggre2_noc_nodes[] = {
  2482. [MASTER_QDSS_BAM] = &qhm_qdss_bam,
  2483. [MASTER_QUP_0] = &qhm_qup0,
  2484. [MASTER_QUP_1] = &qhm_qup1,
  2485. [MASTER_QUP_2] = &qhm_qup2,
  2486. [MASTER_CNOC_A2NOC] = &qnm_cnoc_datapath,
  2487. [MASTER_CRYPTO_CORE0] = &qxm_crypto_0,
  2488. [MASTER_CRYPTO_CORE1] = &qxm_crypto_1,
  2489. [MASTER_IPA] = &qxm_ipa,
  2490. [MASTER_QDSS_ETR_0] = &xm_qdss_etr_0,
  2491. [MASTER_QDSS_ETR_1] = &xm_qdss_etr_1,
  2492. [MASTER_UFS_CARD] = &xm_ufs_card,
  2493. [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc,
  2494. };
  2495. static char *aggre2_noc_voters[] = {
  2496. [VOTER_IDX_HLOS] = "hlos",
  2497. };
  2498. static struct qcom_icc_desc lemans_aggre2_noc = {
  2499. .config = &icc_regmap_config,
  2500. .nodes = aggre2_noc_nodes,
  2501. .num_nodes = ARRAY_SIZE(aggre2_noc_nodes),
  2502. .bcms = aggre2_noc_bcms,
  2503. .num_bcms = ARRAY_SIZE(aggre2_noc_bcms),
  2504. .voters = aggre2_noc_voters,
  2505. .num_voters = ARRAY_SIZE(aggre2_noc_voters),
  2506. };
  2507. static struct qcom_icc_bcm *clk_virt_bcms[] = {
  2508. &bcm_qup0,
  2509. &bcm_qup1,
  2510. &bcm_qup2,
  2511. };
  2512. static struct qcom_icc_node *clk_virt_nodes[] = {
  2513. [MASTER_QUP_CORE_0] = &qup0_core_master,
  2514. [MASTER_QUP_CORE_1] = &qup1_core_master,
  2515. [MASTER_QUP_CORE_2] = &qup2_core_master,
  2516. [MASTER_QUP_CORE_3] = &qup3_core_master,
  2517. [SLAVE_QUP_CORE_0] = &qup0_core_slave,
  2518. [SLAVE_QUP_CORE_1] = &qup1_core_slave,
  2519. [SLAVE_QUP_CORE_2] = &qup2_core_slave,
  2520. [SLAVE_QUP_CORE_3] = &qup3_core_slave,
  2521. };
  2522. static char *clk_virt_voters[] = {
  2523. [VOTER_IDX_HLOS] = "hlos",
  2524. };
  2525. static struct qcom_icc_desc lemans_clk_virt = {
  2526. .config = &icc_regmap_config,
  2527. .nodes = clk_virt_nodes,
  2528. .num_nodes = ARRAY_SIZE(clk_virt_nodes),
  2529. .bcms = clk_virt_bcms,
  2530. .num_bcms = ARRAY_SIZE(clk_virt_bcms),
  2531. .voters = clk_virt_voters,
  2532. .num_voters = ARRAY_SIZE(clk_virt_voters),
  2533. };
  2534. static struct qcom_icc_bcm *config_noc_bcms[] = {
  2535. &bcm_cn0,
  2536. &bcm_cn1,
  2537. &bcm_cn2,
  2538. &bcm_cn3,
  2539. &bcm_sn2,
  2540. &bcm_sn10,
  2541. };
  2542. static struct qcom_icc_node *config_noc_nodes[] = {
  2543. [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc,
  2544. [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie,
  2545. [SLAVE_AHB2PHY_0] = &qhs_ahb2phy0,
  2546. [SLAVE_AHB2PHY_1] = &qhs_ahb2phy1,
  2547. [SLAVE_AHB2PHY_2] = &qhs_ahb2phy2,
  2548. [SLAVE_AHB2PHY_3] = &qhs_ahb2phy3,
  2549. [SLAVE_ANOC_THROTTLE_CFG] = &qhs_anoc_throttle_cfg,
  2550. [SLAVE_AOSS] = &qhs_aoss,
  2551. [SLAVE_APPSS] = &qhs_apss,
  2552. [SLAVE_BOOT_ROM] = &qhs_boot_rom,
  2553. [SLAVE_CAMERA_CFG] = &qhs_camera_cfg,
  2554. [SLAVE_CAMERA_NRT_THROTTLE_CFG] = &qhs_camera_nrt_throttle_cfg,
  2555. [SLAVE_CAMERA_RT_THROTTLE_CFG] = &qhs_camera_rt_throttle_cfg,
  2556. [SLAVE_CLK_CTL] = &qhs_clk_ctl,
  2557. [SLAVE_CDSP_CFG] = &qhs_compute0_cfg,
  2558. [SLAVE_CDSP1_CFG] = &qhs_compute1_cfg,
  2559. [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx,
  2560. [SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx,
  2561. [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx,
  2562. [SLAVE_CPR_NSPCX] = &qhs_cpr_nspcx,
  2563. [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg,
  2564. [SLAVE_CX_RDPM] = &qhs_cx_rdpm,
  2565. [SLAVE_DISPLAY_CFG] = &qhs_display0_cfg,
  2566. [SLAVE_DISPLAY_RT_THROTTLE_CFG] = &qhs_display0_rt_throttle_cfg,
  2567. [SLAVE_DISPLAY1_CFG] = &qhs_display1_cfg,
  2568. [SLAVE_DISPLAY1_RT_THROTTLE_CFG] = &qhs_display1_rt_throttle_cfg,
  2569. [SLAVE_EMAC_CFG] = &qhs_emac0_cfg,
  2570. [SLAVE_EMAC1_CFG] = &qhs_emac1_cfg,
  2571. [SLAVE_GP_DSP0_CFG] = &qhs_gp_dsp0_cfg,
  2572. [SLAVE_GP_DSP1_CFG] = &qhs_gp_dsp1_cfg,
  2573. [SLAVE_GPDSP0_THROTTLE_CFG] = &qhs_gpdsp0_throttle_cfg,
  2574. [SLAVE_GPDSP1_THROTTLE_CFG] = &qhs_gpdsp1_throttle_cfg,
  2575. [SLAVE_GPU_TCU_THROTTLE_CFG] = &qhs_gpu_tcu_throttle_cfg,
  2576. [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg,
  2577. [SLAVE_HWKM] = &qhs_hwkm,
  2578. [SLAVE_IMEM_CFG] = &qhs_imem_cfg,
  2579. [SLAVE_IPA_CFG] = &qhs_ipa,
  2580. [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router,
  2581. [SLAVE_LPASS] = &qhs_lpass_cfg,
  2582. [SLAVE_LPASS_THROTTLE_CFG] = &qhs_lpass_throttle_cfg,
  2583. [SLAVE_MX_RDPM] = &qhs_mx_rdpm,
  2584. [SLAVE_MXC_RDPM] = &qhs_mxc_rdpm,
  2585. [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg,
  2586. [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg,
  2587. [SLAVE_PCIE_RSC_CFG] = &qhs_pcie_rsc_cfg,
  2588. [SLAVE_PCIE_TCU_THROTTLE_CFG] = &qhs_pcie_tcu_throttle_cfg,
  2589. [SLAVE_PCIE_THROTTLE_CFG] = &qhs_pcie_throttle_cfg,
  2590. [SLAVE_PDM] = &qhs_pdm,
  2591. [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg,
  2592. [SLAVE_PKA_WRAPPER_CFG] = &qhs_pke_wrapper_cfg,
  2593. [SLAVE_QDSS_CFG] = &qhs_qdss_cfg,
  2594. [SLAVE_QM_CFG] = &qhs_qm_cfg,
  2595. [SLAVE_QM_MPU_CFG] = &qhs_qm_mpu_cfg,
  2596. [SLAVE_QUP_0] = &qhs_qup0,
  2597. [SLAVE_QUP_1] = &qhs_qup1,
  2598. [SLAVE_QUP_2] = &qhs_qup2,
  2599. [SLAVE_QUP_3] = &qhs_qup3,
  2600. [SLAVE_SAIL_THROTTLE_CFG] = &qhs_sail_throttle_cfg,
  2601. [SLAVE_SDC1] = &qhs_sdc1,
  2602. [SLAVE_SECURITY] = &qhs_security,
  2603. [SLAVE_SNOC_THROTTLE_CFG] = &qhs_snoc_throttle_cfg,
  2604. [SLAVE_TCSR] = &qhs_tcsr,
  2605. [SLAVE_TLMM] = &qhs_tlmm,
  2606. [SLAVE_TSC_CFG] = &qhs_tsc_cfg,
  2607. [SLAVE_UFS_CARD_CFG] = &qhs_ufs_card_cfg,
  2608. [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg,
  2609. [SLAVE_USB2] = &qhs_usb2_0,
  2610. [SLAVE_USB3_0] = &qhs_usb3_0,
  2611. [SLAVE_USB3_1] = &qhs_usb3_1,
  2612. [SLAVE_VENUS_CFG] = &qhs_venus_cfg,
  2613. [SLAVE_VENUS_CVP_THROTTLE_CFG] = &qhs_venus_cvp_throttle_cfg,
  2614. [SLAVE_VENUS_V_CPU_THROTTLE_CFG] = &qhs_venus_v_cpu_throttle_cfg,
  2615. [SLAVE_VENUS_VCODEC_THROTTLE_CFG] = &qhs_venus_vcodec_throttle_cfg,
  2616. [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg,
  2617. [SLAVE_GPDSP_NOC_CFG] = &qns_gpdsp_noc_cfg,
  2618. [SLAVE_CNOC_MNOC_HF_CFG] = &qns_mnoc_hf_cfg,
  2619. [SLAVE_CNOC_MNOC_SF_CFG] = &qns_mnoc_sf_cfg,
  2620. [SLAVE_PCIE_ANOC_CFG] = &qns_pcie_anoc_cfg,
  2621. [SLAVE_SNOC_CFG] = &qns_snoc_cfg,
  2622. [SLAVE_BOOT_IMEM] = &qxs_boot_imem,
  2623. [SLAVE_IMEM] = &qxs_imem,
  2624. [SLAVE_PIMEM] = &qxs_pimem,
  2625. [SLAVE_PCIE_0] = &xs_pcie_0,
  2626. [SLAVE_PCIE_1] = &xs_pcie_1,
  2627. [SLAVE_QDSS_STM] = &xs_qdss_stm,
  2628. [SLAVE_TCU] = &xs_sys_tcu_cfg,
  2629. };
  2630. static char *config_noc_voters[] = {
  2631. [VOTER_IDX_HLOS] = "hlos",
  2632. };
  2633. static struct qcom_icc_desc lemans_config_noc = {
  2634. .config = &icc_regmap_config,
  2635. .nodes = config_noc_nodes,
  2636. .num_nodes = ARRAY_SIZE(config_noc_nodes),
  2637. .bcms = config_noc_bcms,
  2638. .num_bcms = ARRAY_SIZE(config_noc_bcms),
  2639. .voters = config_noc_voters,
  2640. .num_voters = ARRAY_SIZE(config_noc_voters),
  2641. };
  2642. static struct qcom_icc_bcm *dc_noc_bcms[] = {
  2643. };
  2644. static struct qcom_icc_node *dc_noc_nodes[] = {
  2645. [MASTER_CNOC_DC_NOC] = &qnm_cnoc_dc_noc,
  2646. [SLAVE_LLCC_CFG] = &qhs_llcc,
  2647. [SLAVE_GEM_NOC_CFG] = &qns_gemnoc,
  2648. };
  2649. static char *dc_noc_voters[] = {
  2650. [VOTER_IDX_HLOS] = "hlos",
  2651. };
  2652. static struct qcom_icc_desc lemans_dc_noc = {
  2653. .config = &icc_regmap_config,
  2654. .nodes = dc_noc_nodes,
  2655. .num_nodes = ARRAY_SIZE(dc_noc_nodes),
  2656. .bcms = dc_noc_bcms,
  2657. .num_bcms = ARRAY_SIZE(dc_noc_bcms),
  2658. .voters = dc_noc_voters,
  2659. .num_voters = ARRAY_SIZE(dc_noc_voters),
  2660. };
  2661. static struct qcom_icc_bcm *gem_noc_bcms[] = {
  2662. &bcm_sh0,
  2663. &bcm_sh2,
  2664. };
  2665. static struct qcom_icc_node *gem_noc_nodes[] = {
  2666. [MASTER_GPU_TCU] = &alm_gpu_tcu,
  2667. [MASTER_PCIE_TCU] = &alm_pcie_tcu,
  2668. [MASTER_SYS_TCU] = &alm_sys_tcu,
  2669. [MASTER_APPSS_PROC] = &chm_apps,
  2670. [MASTER_COMPUTE_NOC] = &qnm_cmpnoc0,
  2671. [MASTER_COMPUTE_NOC_1] = &qnm_cmpnoc1,
  2672. [MASTER_GEM_NOC_CFG] = &qnm_gemnoc_cfg,
  2673. [MASTER_GPDSP_SAIL] = &qnm_gpdsp_sail,
  2674. [MASTER_GFX3D] = &qnm_gpu,
  2675. [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf,
  2676. [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf,
  2677. [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie,
  2678. [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc,
  2679. [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf,
  2680. [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc,
  2681. [SLAVE_LLCC] = &qns_llcc,
  2682. [SLAVE_GEM_NOC_PCIE_CNOC] = &qns_pcie,
  2683. [SLAVE_SERVICE_GEM_NOC_1] = &srvc_even_gemnoc,
  2684. [SLAVE_SERVICE_GEM_NOC_2] = &srvc_odd_gemnoc,
  2685. [SLAVE_SERVICE_GEM_NOC] = &srvc_sys_gemnoc,
  2686. [SLAVE_SERVICE_GEM_NOC2] = &srvc_sys_gemnoc_2,
  2687. };
  2688. static char *gem_noc_voters[] = {
  2689. [VOTER_IDX_HLOS] = "hlos",
  2690. };
  2691. static struct qcom_icc_desc lemans_gem_noc = {
  2692. .config = &icc_regmap_config,
  2693. .nodes = gem_noc_nodes,
  2694. .num_nodes = ARRAY_SIZE(gem_noc_nodes),
  2695. .bcms = gem_noc_bcms,
  2696. .num_bcms = ARRAY_SIZE(gem_noc_bcms),
  2697. .voters = gem_noc_voters,
  2698. .num_voters = ARRAY_SIZE(gem_noc_voters),
  2699. };
  2700. static struct qcom_icc_bcm *gpdsp_anoc_bcms[] = {
  2701. &bcm_gna0,
  2702. &bcm_gnb0,
  2703. };
  2704. static struct qcom_icc_node *gpdsp_anoc_nodes[] = {
  2705. [MASTER_DSP0] = &qxm_dsp0,
  2706. [MASTER_DSP1] = &qxm_dsp1,
  2707. [SLAVE_GP_DSP_SAIL_NOC] = &qns_gp_dsp_sail_noc,
  2708. };
  2709. static char *gpdsp_anoc_voters[] = {
  2710. [VOTER_IDX_HLOS] = "hlos",
  2711. };
  2712. static struct qcom_icc_desc lemans_gpdsp_anoc = {
  2713. .config = &icc_regmap_config,
  2714. .nodes = gpdsp_anoc_nodes,
  2715. .num_nodes = ARRAY_SIZE(gpdsp_anoc_nodes),
  2716. .bcms = gpdsp_anoc_bcms,
  2717. .num_bcms = ARRAY_SIZE(gpdsp_anoc_bcms),
  2718. .voters = gpdsp_anoc_voters,
  2719. .num_voters = ARRAY_SIZE(gpdsp_anoc_voters),
  2720. };
  2721. static struct qcom_icc_bcm *lpass_ag_noc_bcms[] = {
  2722. &bcm_sn9,
  2723. };
  2724. static struct qcom_icc_node *lpass_ag_noc_nodes[] = {
  2725. [MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc,
  2726. [MASTER_LPASS_PROC] = &qxm_lpass_dsp,
  2727. [SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core,
  2728. [SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi,
  2729. [SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu,
  2730. [SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top,
  2731. [SLAVE_LPASS_SNOC] = &qns_sysnoc,
  2732. [SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc,
  2733. [SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc,
  2734. };
  2735. static char *lpass_ag_noc_voters[] = {
  2736. [VOTER_IDX_HLOS] = "hlos",
  2737. };
  2738. static struct qcom_icc_desc lemans_lpass_ag_noc = {
  2739. .config = &icc_regmap_config,
  2740. .nodes = lpass_ag_noc_nodes,
  2741. .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes),
  2742. .bcms = lpass_ag_noc_bcms,
  2743. .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms),
  2744. .voters = lpass_ag_noc_voters,
  2745. .num_voters = ARRAY_SIZE(lpass_ag_noc_voters),
  2746. };
  2747. static struct qcom_icc_bcm *mc_virt_bcms[] = {
  2748. &bcm_acv,
  2749. &bcm_mc0,
  2750. };
  2751. static struct qcom_icc_node *mc_virt_nodes[] = {
  2752. [MASTER_LLCC] = &llcc_mc,
  2753. [SLAVE_EBI1] = &ebi,
  2754. };
  2755. static char *mc_virt_voters[] = {
  2756. [VOTER_IDX_HLOS] = "hlos",
  2757. };
  2758. static struct qcom_icc_desc lemans_mc_virt = {
  2759. .config = &icc_regmap_config,
  2760. .nodes = mc_virt_nodes,
  2761. .num_nodes = ARRAY_SIZE(mc_virt_nodes),
  2762. .bcms = mc_virt_bcms,
  2763. .num_bcms = ARRAY_SIZE(mc_virt_bcms),
  2764. .voters = mc_virt_voters,
  2765. .num_voters = ARRAY_SIZE(mc_virt_voters),
  2766. };
  2767. static struct qcom_icc_bcm *mmss_noc_bcms[] = {
  2768. &bcm_mm0,
  2769. &bcm_mm1,
  2770. };
  2771. static struct qcom_icc_node *mmss_noc_nodes[] = {
  2772. [MASTER_CAMNOC_HF] = &qnm_camnoc_hf,
  2773. [MASTER_CAMNOC_ICP] = &qnm_camnoc_icp,
  2774. [MASTER_CAMNOC_SF] = &qnm_camnoc_sf,
  2775. [MASTER_MDP0] = &qnm_mdp0_0,
  2776. [MASTER_MDP1] = &qnm_mdp0_1,
  2777. [MASTER_MDP_CORE1_0] = &qnm_mdp1_0,
  2778. [MASTER_MDP_CORE1_1] = &qnm_mdp1_1,
  2779. [MASTER_CNOC_MNOC_HF_CFG] = &qnm_mnoc_hf_cfg,
  2780. [MASTER_CNOC_MNOC_SF_CFG] = &qnm_mnoc_sf_cfg,
  2781. [MASTER_VIDEO_P0] = &qnm_video0,
  2782. [MASTER_VIDEO_P1] = &qnm_video1,
  2783. [MASTER_VIDEO_PROC] = &qnm_video_cvp,
  2784. [MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu,
  2785. [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf,
  2786. [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf,
  2787. [SLAVE_SERVICE_MNOC_HF] = &srvc_mnoc_hf,
  2788. [SLAVE_SERVICE_MNOC_SF] = &srvc_mnoc_sf,
  2789. };
  2790. static char *mmss_noc_voters[] = {
  2791. [VOTER_IDX_HLOS] = "hlos",
  2792. };
  2793. static struct qcom_icc_desc lemans_mmss_noc = {
  2794. .config = &icc_regmap_config,
  2795. .nodes = mmss_noc_nodes,
  2796. .num_nodes = ARRAY_SIZE(mmss_noc_nodes),
  2797. .bcms = mmss_noc_bcms,
  2798. .num_bcms = ARRAY_SIZE(mmss_noc_bcms),
  2799. .voters = mmss_noc_voters,
  2800. .num_voters = ARRAY_SIZE(mmss_noc_voters),
  2801. };
  2802. static struct qcom_icc_bcm *nspa_noc_bcms[] = {
  2803. &bcm_nsa0,
  2804. &bcm_nsa1,
  2805. };
  2806. static struct qcom_icc_node *nspa_noc_nodes[] = {
  2807. [MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config,
  2808. [MASTER_CDSP_PROC] = &qxm_nsp,
  2809. [SLAVE_HCP_A] = &qns_hcp,
  2810. [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc,
  2811. [SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc,
  2812. };
  2813. static char *nspa_noc_voters[] = {
  2814. [VOTER_IDX_HLOS] = "hlos",
  2815. };
  2816. static struct qcom_icc_desc lemans_nspa_noc = {
  2817. .config = &icc_regmap_config,
  2818. .nodes = nspa_noc_nodes,
  2819. .num_nodes = ARRAY_SIZE(nspa_noc_nodes),
  2820. .bcms = nspa_noc_bcms,
  2821. .num_bcms = ARRAY_SIZE(nspa_noc_bcms),
  2822. .voters = nspa_noc_voters,
  2823. .num_voters = ARRAY_SIZE(nspa_noc_voters),
  2824. };
  2825. static struct qcom_icc_bcm *nspb_noc_bcms[] = {
  2826. &bcm_nsb0,
  2827. &bcm_nsb1,
  2828. };
  2829. static struct qcom_icc_node *nspb_noc_nodes[] = {
  2830. [MASTER_CDSPB_NOC_CFG] = &qhm_nspb_noc_config,
  2831. [MASTER_CDSP_PROC_B] = &qxm_nspb,
  2832. [SLAVE_CDSPB_MEM_NOC] = &qns_nspb_gemnoc,
  2833. [SLAVE_HCP_B] = &qns_nspb_hcp,
  2834. [SLAVE_SERVICE_NSPB_NOC] = &service_nspb_noc,
  2835. };
  2836. static char *nspb_noc_voters[] = {
  2837. [VOTER_IDX_HLOS] = "hlos",
  2838. };
  2839. static struct qcom_icc_desc lemans_nspb_noc = {
  2840. .config = &icc_regmap_config,
  2841. .nodes = nspb_noc_nodes,
  2842. .num_nodes = ARRAY_SIZE(nspb_noc_nodes),
  2843. .bcms = nspb_noc_bcms,
  2844. .num_bcms = ARRAY_SIZE(nspb_noc_bcms),
  2845. .voters = nspb_noc_voters,
  2846. .num_voters = ARRAY_SIZE(nspb_noc_voters),
  2847. };
  2848. static struct qcom_icc_bcm *pcie_anoc_bcms[] = {
  2849. &bcm_pci0,
  2850. };
  2851. static struct qcom_icc_node *pcie_anoc_nodes[] = {
  2852. [MASTER_PCIE_0] = &xm_pcie3_0,
  2853. [MASTER_PCIE_1] = &xm_pcie3_1,
  2854. [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc,
  2855. };
  2856. static char *pcie_anoc_voters[] = {
  2857. [VOTER_IDX_HLOS] = "hlos",
  2858. };
  2859. static struct qcom_icc_desc lemans_pcie_anoc = {
  2860. .config = &icc_regmap_config,
  2861. .nodes = pcie_anoc_nodes,
  2862. .num_nodes = ARRAY_SIZE(pcie_anoc_nodes),
  2863. .bcms = pcie_anoc_bcms,
  2864. .num_bcms = ARRAY_SIZE(pcie_anoc_bcms),
  2865. .voters = pcie_anoc_voters,
  2866. .num_voters = ARRAY_SIZE(pcie_anoc_voters),
  2867. };
  2868. static struct qcom_icc_bcm *system_noc_bcms[] = {
  2869. &bcm_sn0,
  2870. &bcm_sn1,
  2871. &bcm_sn3,
  2872. &bcm_sn4,
  2873. &bcm_sn9,
  2874. };
  2875. static struct qcom_icc_node *system_noc_nodes[] = {
  2876. [MASTER_GIC_AHB] = &qhm_gic,
  2877. [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc,
  2878. [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc,
  2879. [MASTER_LPASS_ANOC] = &qnm_lpass_noc,
  2880. [MASTER_SNOC_CFG] = &qnm_snoc_cfg,
  2881. [MASTER_PIMEM] = &qxm_pimem,
  2882. [MASTER_GIC] = &xm_gic,
  2883. [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc,
  2884. [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf,
  2885. [SLAVE_SERVICE_SNOC] = &srvc_snoc,
  2886. };
  2887. static char *system_noc_voters[] = {
  2888. [VOTER_IDX_HLOS] = "hlos",
  2889. };
  2890. static struct qcom_icc_desc lemans_system_noc = {
  2891. .config = &icc_regmap_config,
  2892. .nodes = system_noc_nodes,
  2893. .num_nodes = ARRAY_SIZE(system_noc_nodes),
  2894. .bcms = system_noc_bcms,
  2895. .num_bcms = ARRAY_SIZE(system_noc_bcms),
  2896. .voters = system_noc_voters,
  2897. .num_voters = ARRAY_SIZE(system_noc_voters),
  2898. };
  2899. static int qnoc_probe(struct platform_device *pdev)
  2900. {
  2901. int ret;
  2902. ret = qcom_icc_rpmh_probe(pdev);
  2903. if (ret)
  2904. dev_err(&pdev->dev, "failed to register ICC provider: %d\n", ret);
  2905. else
  2906. dev_info(&pdev->dev, "Registered LEMANS ICC\n");
  2907. return ret;
  2908. }
  2909. static const struct of_device_id qnoc_of_match[] = {
  2910. { .compatible = "qcom,lemans-aggre1_noc",
  2911. .data = &lemans_aggre1_noc},
  2912. { .compatible = "qcom,lemans-aggre2_noc",
  2913. .data = &lemans_aggre2_noc},
  2914. { .compatible = "qcom,lemans-clk_virt",
  2915. .data = &lemans_clk_virt},
  2916. { .compatible = "qcom,lemans-config_noc",
  2917. .data = &lemans_config_noc},
  2918. { .compatible = "qcom,lemans-dc_noc",
  2919. .data = &lemans_dc_noc},
  2920. { .compatible = "qcom,lemans-gem_noc",
  2921. .data = &lemans_gem_noc},
  2922. { .compatible = "qcom,lemans-gpdsp_anoc",
  2923. .data = &lemans_gpdsp_anoc},
  2924. { .compatible = "qcom,lemans-lpass_ag_noc",
  2925. .data = &lemans_lpass_ag_noc},
  2926. { .compatible = "qcom,lemans-mc_virt",
  2927. .data = &lemans_mc_virt},
  2928. { .compatible = "qcom,lemans-mmss_noc",
  2929. .data = &lemans_mmss_noc},
  2930. { .compatible = "qcom,lemans-nspa_noc",
  2931. .data = &lemans_nspa_noc},
  2932. { .compatible = "qcom,lemans-nspb_noc",
  2933. .data = &lemans_nspb_noc},
  2934. { .compatible = "qcom,lemans-pcie_anoc",
  2935. .data = &lemans_pcie_anoc},
  2936. { .compatible = "qcom,lemans-system_noc",
  2937. .data = &lemans_system_noc},
  2938. { }
  2939. };
  2940. MODULE_DEVICE_TABLE(of, qnoc_of_match);
  2941. static struct platform_driver qnoc_driver = {
  2942. .probe = qnoc_probe,
  2943. .remove = qcom_icc_rpmh_remove,
  2944. .driver = {
  2945. .name = "qnoc-lemans",
  2946. .of_match_table = qnoc_of_match,
  2947. .sync_state = qcom_icc_rpmh_sync_state,
  2948. },
  2949. };
  2950. static int __init qnoc_driver_init(void)
  2951. {
  2952. return platform_driver_register(&qnoc_driver);
  2953. }
  2954. core_initcall(qnoc_driver_init);
  2955. MODULE_DESCRIPTION("Lemans NoC driver");
  2956. MODULE_LICENSE("GPL");