gaudi2_security.c 138 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright 2020-2022 HabanaLabs, Ltd.
  4. * All Rights Reserved.
  5. */
  6. #include "gaudi2P.h"
  7. #include "../include/gaudi2/asic_reg/gaudi2_regs.h"
  8. #define UNSET_GLBL_SEC_BIT(array, b) ((array)[((b) / 32)] |= (1 << ((b) % 32)))
  9. #define SPECIAL_GLBL_ERR_CAUSE_APB_PRIV_RD PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_APB_PRIV_RD_MASK
  10. #define SPECIAL_GLBL_ERR_CAUSE_APB_SEC_RD PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_APB_SEC_RD_MASK
  11. #define SPECIAL_GLBL_ERR_CAUSE_APB_PRIV_WR PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_APB_PRIV_WR_MASK
  12. #define SPECIAL_GLBL_ERR_CAUSE_APB_SEC_WR PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_APB_SEC_WR_MASK
  13. #define SPECIAL_GLBL_ERR_CAUSE_EXT_SEC_WR PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_EXT_SEC_WR_MASK
  14. #define SPECIAL_GLBL_ERR_CAUSE_APB_UNMAPPED_RD \
  15. PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_APB_UNMAPPED_RD_MASK
  16. #define SPECIAL_GLBL_ERR_CAUSE_APB_UNMAPPED_WR \
  17. PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_APB_UNMAPPED_WR_MASK
  18. #define SPECIAL_GLBL_ERR_CAUSE_EXT_UNMAPPED_WR \
  19. PDMA0_CORE_SPECIAL_GLBL_ERR_CAUSE_EXT_UNMAPPED_WR_MASK
  20. /* LBW RR */
  21. #define SFT_NUM_OF_LBW_RTR 1
  22. #define SFT_LBW_RTR_OFFSET 0
  23. #define RR_LBW_LONG_MASK 0x7FFFFFFull
  24. #define RR_LBW_SHORT_MASK 0x7FFF000ull
  25. /* HBW RR */
  26. #define SFT_NUM_OF_HBW_RTR 2
  27. #define RR_HBW_SHORT_LO_MASK 0xFFFFFFFF000ull
  28. #define RR_HBW_SHORT_HI_MASK 0xF00000000000ull
  29. #define RR_HBW_LONG_LO_MASK 0xFFFFFFFF000ull
  30. #define RR_HBW_LONG_HI_MASK 0xFFFFF00000000000ull
  31. struct rr_config {
  32. u64 min;
  33. u64 max;
  34. u32 index;
  35. u8 type;
  36. };
  37. struct gaudi2_atypical_bp_blocks {
  38. u32 mm_block_base_addr;
  39. u32 block_size;
  40. u32 glbl_sec_offset;
  41. u32 glbl_sec_length;
  42. };
  43. static const struct gaudi2_atypical_bp_blocks gaudi2_pb_dcr0_sm_objs = {
  44. mmDCORE0_SYNC_MNGR_OBJS_BASE,
  45. 128 * 1024,
  46. SM_OBJS_PROT_BITS_OFFS,
  47. 640
  48. };
  49. static const u32 gaudi2_pb_sft0[] = {
  50. mmSFT0_HBW_RTR_IF0_RTR_CTRL_BASE,
  51. mmSFT0_HBW_RTR_IF0_RTR_H3_BASE,
  52. mmSFT0_HBW_RTR_IF0_MSTR_IF_RR_SHRD_HBW_BASE,
  53. mmSFT0_HBW_RTR_IF0_ADDR_DEC_HBW_BASE,
  54. mmSFT0_HBW_RTR_IF1_RTR_CTRL_BASE,
  55. mmSFT0_HBW_RTR_IF1_RTR_H3_BASE,
  56. mmSFT0_HBW_RTR_IF1_MSTR_IF_RR_SHRD_HBW_BASE,
  57. mmSFT0_HBW_RTR_IF1_ADDR_DEC_HBW_BASE,
  58. mmSFT0_LBW_RTR_IF_RTR_CTRL_BASE,
  59. mmSFT0_LBW_RTR_IF_RTR_H3_BASE,
  60. mmSFT0_LBW_RTR_IF_MSTR_IF_RR_SHRD_HBW_BASE,
  61. mmSFT0_LBW_RTR_IF_ADDR_DEC_HBW_BASE,
  62. mmSFT0_BASE,
  63. };
  64. static const u32 gaudi2_pb_dcr0_hif[] = {
  65. mmDCORE0_HIF0_BASE,
  66. };
  67. static const u32 gaudi2_pb_dcr0_rtr0[] = {
  68. mmDCORE0_RTR0_CTRL_BASE,
  69. mmDCORE0_RTR0_H3_BASE,
  70. mmDCORE0_RTR0_MSTR_IF_RR_SHRD_HBW_BASE,
  71. mmDCORE0_RTR0_ADD_DEC_HBW_BASE,
  72. mmDCORE0_RTR0_BASE,
  73. mmDCORE0_RTR0_DBG_ADDR_BASE,
  74. };
  75. static const u32 gaudi2_pb_dcr0_hmmu0[] = {
  76. mmDCORE0_HMMU0_MMU_BASE,
  77. mmDCORE0_HMMU0_MSTR_IF_RR_SHRD_HBW_BASE,
  78. mmDCORE0_HMMU0_SCRAMB_OUT_BASE,
  79. mmDCORE0_HMMU0_STLB_BASE,
  80. };
  81. static const u32 gaudi2_pb_cpu_if[] = {
  82. mmCPU_IF_BASE,
  83. };
  84. static const u32 gaudi2_pb_cpu[] = {
  85. mmCPU_CA53_CFG_BASE,
  86. mmCPU_MSTR_IF_RR_SHRD_HBW_BASE,
  87. };
  88. static const u32 gaudi2_pb_kdma[] = {
  89. mmARC_FARM_KDMA_BASE,
  90. mmARC_FARM_KDMA_MSTR_IF_RR_SHRD_HBW_BASE,
  91. };
  92. static const u32 gaudi2_pb_pdma0[] = {
  93. mmPDMA0_CORE_BASE,
  94. mmPDMA0_MSTR_IF_RR_SHRD_HBW_BASE,
  95. mmPDMA0_QM_BASE,
  96. };
  97. static const u32 gaudi2_pb_pdma0_arc[] = {
  98. mmPDMA0_QM_ARC_AUX_BASE,
  99. };
  100. static const struct range gaudi2_pb_pdma0_arc_unsecured_regs[] = {
  101. {mmPDMA0_QM_ARC_AUX_RUN_HALT_REQ, mmPDMA0_QM_ARC_AUX_RUN_HALT_ACK},
  102. {mmPDMA0_QM_ARC_AUX_CLUSTER_NUM, mmPDMA0_QM_ARC_AUX_WAKE_UP_EVENT},
  103. {mmPDMA0_QM_ARC_AUX_ARC_RST_REQ, mmPDMA0_QM_ARC_AUX_CID_OFFSET_7},
  104. {mmPDMA0_QM_ARC_AUX_SCRATCHPAD_0, mmPDMA0_QM_ARC_AUX_INFLIGHT_LBU_RD_CNT},
  105. {mmPDMA0_QM_ARC_AUX_CBU_EARLY_BRESP_EN, mmPDMA0_QM_ARC_AUX_CBU_EARLY_BRESP_EN},
  106. {mmPDMA0_QM_ARC_AUX_LBU_EARLY_BRESP_EN, mmPDMA0_QM_ARC_AUX_LBU_EARLY_BRESP_EN},
  107. {mmPDMA0_QM_ARC_AUX_DCCM_QUEUE_BASE_ADDR_0, mmPDMA0_QM_ARC_AUX_DCCM_QUEUE_ALERT_MSG},
  108. {mmPDMA0_QM_ARC_AUX_DCCM_Q_PUSH_FIFO_CNT, mmPDMA0_QM_ARC_AUX_QMAN_ARC_CQ_SHADOW_CI},
  109. {mmPDMA0_QM_ARC_AUX_ARC_AXI_ORDERING_WR_IF_CNT, mmPDMA0_QM_ARC_AUX_MME_ARC_UPPER_DCCM_EN},
  110. };
  111. static const u32 gaudi2_pb_pdma0_unsecured_regs[] = {
  112. mmPDMA0_CORE_CTX_AXUSER_HB_WR_REDUCTION,
  113. mmPDMA0_CORE_CTX_WR_COMP_ADDR_HI,
  114. mmPDMA0_CORE_CTX_WR_COMP_ADDR_LO,
  115. mmPDMA0_CORE_CTX_WR_COMP_WDATA,
  116. mmPDMA0_CORE_CTX_SRC_BASE_LO,
  117. mmPDMA0_CORE_CTX_SRC_BASE_HI,
  118. mmPDMA0_CORE_CTX_DST_BASE_LO,
  119. mmPDMA0_CORE_CTX_DST_BASE_HI,
  120. mmPDMA0_CORE_CTX_SRC_TSIZE_0,
  121. mmPDMA0_CORE_CTX_SRC_TSIZE_1,
  122. mmPDMA0_CORE_CTX_SRC_TSIZE_2,
  123. mmPDMA0_CORE_CTX_SRC_TSIZE_3,
  124. mmPDMA0_CORE_CTX_SRC_TSIZE_4,
  125. mmPDMA0_CORE_CTX_SRC_STRIDE_1,
  126. mmPDMA0_CORE_CTX_SRC_STRIDE_2,
  127. mmPDMA0_CORE_CTX_SRC_STRIDE_3,
  128. mmPDMA0_CORE_CTX_SRC_STRIDE_4,
  129. mmPDMA0_CORE_CTX_SRC_OFFSET_LO,
  130. mmPDMA0_CORE_CTX_SRC_OFFSET_HI,
  131. mmPDMA0_CORE_CTX_DST_TSIZE_0,
  132. mmPDMA0_CORE_CTX_DST_TSIZE_1,
  133. mmPDMA0_CORE_CTX_DST_TSIZE_2,
  134. mmPDMA0_CORE_CTX_DST_TSIZE_3,
  135. mmPDMA0_CORE_CTX_DST_TSIZE_4,
  136. mmPDMA0_CORE_CTX_DST_STRIDE_1,
  137. mmPDMA0_CORE_CTX_DST_STRIDE_2,
  138. mmPDMA0_CORE_CTX_DST_STRIDE_3,
  139. mmPDMA0_CORE_CTX_DST_STRIDE_4,
  140. mmPDMA0_CORE_CTX_DST_OFFSET_LO,
  141. mmPDMA0_CORE_CTX_DST_OFFSET_HI,
  142. mmPDMA0_CORE_CTX_COMMIT,
  143. mmPDMA0_CORE_CTX_CTRL,
  144. mmPDMA0_CORE_CTX_TE_NUMROWS,
  145. mmPDMA0_CORE_CTX_IDX,
  146. mmPDMA0_CORE_CTX_IDX_INC,
  147. mmPDMA0_QM_CQ_CFG0_0,
  148. mmPDMA0_QM_CQ_CFG0_1,
  149. mmPDMA0_QM_CQ_CFG0_2,
  150. mmPDMA0_QM_CQ_CFG0_3,
  151. mmPDMA0_QM_CQ_CFG0_4,
  152. mmPDMA0_QM_CP_FENCE0_RDATA_0,
  153. mmPDMA0_QM_CP_FENCE0_RDATA_1,
  154. mmPDMA0_QM_CP_FENCE0_RDATA_2,
  155. mmPDMA0_QM_CP_FENCE0_RDATA_3,
  156. mmPDMA0_QM_CP_FENCE0_RDATA_4,
  157. mmPDMA0_QM_CP_FENCE1_RDATA_0,
  158. mmPDMA0_QM_CP_FENCE1_RDATA_1,
  159. mmPDMA0_QM_CP_FENCE1_RDATA_2,
  160. mmPDMA0_QM_CP_FENCE1_RDATA_3,
  161. mmPDMA0_QM_CP_FENCE1_RDATA_4,
  162. mmPDMA0_QM_CP_FENCE2_RDATA_0,
  163. mmPDMA0_QM_CP_FENCE2_RDATA_1,
  164. mmPDMA0_QM_CP_FENCE2_RDATA_2,
  165. mmPDMA0_QM_CP_FENCE2_RDATA_3,
  166. mmPDMA0_QM_CP_FENCE2_RDATA_4,
  167. mmPDMA0_QM_CP_FENCE3_RDATA_0,
  168. mmPDMA0_QM_CP_FENCE3_RDATA_1,
  169. mmPDMA0_QM_CP_FENCE3_RDATA_2,
  170. mmPDMA0_QM_CP_FENCE3_RDATA_3,
  171. mmPDMA0_QM_CP_FENCE3_RDATA_4,
  172. mmPDMA0_QM_CP_FENCE0_CNT_0,
  173. mmPDMA0_QM_CP_FENCE0_CNT_1,
  174. mmPDMA0_QM_CP_FENCE0_CNT_2,
  175. mmPDMA0_QM_CP_FENCE0_CNT_3,
  176. mmPDMA0_QM_CP_FENCE0_CNT_4,
  177. mmPDMA0_QM_CP_FENCE1_CNT_0,
  178. mmPDMA0_QM_CP_FENCE1_CNT_1,
  179. mmPDMA0_QM_CP_FENCE1_CNT_2,
  180. mmPDMA0_QM_CP_FENCE1_CNT_3,
  181. mmPDMA0_QM_CP_FENCE1_CNT_4,
  182. mmPDMA0_QM_CP_FENCE2_CNT_0,
  183. mmPDMA0_QM_CP_FENCE2_CNT_1,
  184. mmPDMA0_QM_CP_FENCE2_CNT_2,
  185. mmPDMA0_QM_CP_FENCE2_CNT_3,
  186. mmPDMA0_QM_CP_FENCE2_CNT_4,
  187. mmPDMA0_QM_CP_FENCE3_CNT_0,
  188. mmPDMA0_QM_CP_FENCE3_CNT_1,
  189. mmPDMA0_QM_CP_FENCE3_CNT_2,
  190. mmPDMA0_QM_CP_FENCE3_CNT_3,
  191. mmPDMA0_QM_CP_FENCE3_CNT_4,
  192. mmPDMA0_QM_CQ_PTR_LO_0,
  193. mmPDMA0_QM_CQ_PTR_HI_0,
  194. mmPDMA0_QM_CQ_TSIZE_0,
  195. mmPDMA0_QM_CQ_CTL_0,
  196. mmPDMA0_QM_CQ_PTR_LO_1,
  197. mmPDMA0_QM_CQ_PTR_HI_1,
  198. mmPDMA0_QM_CQ_TSIZE_1,
  199. mmPDMA0_QM_CQ_CTL_1,
  200. mmPDMA0_QM_CQ_PTR_LO_2,
  201. mmPDMA0_QM_CQ_PTR_HI_2,
  202. mmPDMA0_QM_CQ_TSIZE_2,
  203. mmPDMA0_QM_CQ_CTL_2,
  204. mmPDMA0_QM_CQ_PTR_LO_3,
  205. mmPDMA0_QM_CQ_PTR_HI_3,
  206. mmPDMA0_QM_CQ_TSIZE_3,
  207. mmPDMA0_QM_CQ_CTL_3,
  208. mmPDMA0_QM_CQ_PTR_LO_4,
  209. mmPDMA0_QM_CQ_PTR_HI_4,
  210. mmPDMA0_QM_CQ_TSIZE_4,
  211. mmPDMA0_QM_CQ_CTL_4,
  212. mmPDMA0_QM_QMAN_WR64_BASE_ADDR0_BASE,
  213. mmPDMA0_QM_QMAN_WR64_BASE_ADDR0_BASE + 4,
  214. mmPDMA0_QM_QMAN_WR64_BASE_ADDR1_BASE,
  215. mmPDMA0_QM_QMAN_WR64_BASE_ADDR1_BASE + 4,
  216. mmPDMA0_QM_QMAN_WR64_BASE_ADDR2_BASE,
  217. mmPDMA0_QM_QMAN_WR64_BASE_ADDR2_BASE + 4,
  218. mmPDMA0_QM_QMAN_WR64_BASE_ADDR3_BASE,
  219. mmPDMA0_QM_QMAN_WR64_BASE_ADDR3_BASE + 4,
  220. mmPDMA0_QM_QMAN_WR64_BASE_ADDR4_BASE,
  221. mmPDMA0_QM_QMAN_WR64_BASE_ADDR4_BASE + 4,
  222. mmPDMA0_QM_QMAN_WR64_BASE_ADDR5_BASE,
  223. mmPDMA0_QM_QMAN_WR64_BASE_ADDR5_BASE + 4,
  224. mmPDMA0_QM_QMAN_WR64_BASE_ADDR6_BASE,
  225. mmPDMA0_QM_QMAN_WR64_BASE_ADDR6_BASE + 4,
  226. mmPDMA0_QM_QMAN_WR64_BASE_ADDR7_BASE,
  227. mmPDMA0_QM_QMAN_WR64_BASE_ADDR7_BASE + 4,
  228. mmPDMA0_QM_QMAN_WR64_BASE_ADDR8_BASE,
  229. mmPDMA0_QM_QMAN_WR64_BASE_ADDR8_BASE + 4,
  230. mmPDMA0_QM_QMAN_WR64_BASE_ADDR9_BASE,
  231. mmPDMA0_QM_QMAN_WR64_BASE_ADDR9_BASE + 4,
  232. mmPDMA0_QM_QMAN_WR64_BASE_ADDR10_BASE,
  233. mmPDMA0_QM_QMAN_WR64_BASE_ADDR10_BASE + 4,
  234. mmPDMA0_QM_QMAN_WR64_BASE_ADDR11_BASE,
  235. mmPDMA0_QM_QMAN_WR64_BASE_ADDR11_BASE + 4,
  236. mmPDMA0_QM_QMAN_WR64_BASE_ADDR12_BASE,
  237. mmPDMA0_QM_QMAN_WR64_BASE_ADDR12_BASE + 4,
  238. mmPDMA0_QM_QMAN_WR64_BASE_ADDR13_BASE,
  239. mmPDMA0_QM_QMAN_WR64_BASE_ADDR13_BASE + 4,
  240. mmPDMA0_QM_QMAN_WR64_BASE_ADDR14_BASE,
  241. mmPDMA0_QM_QMAN_WR64_BASE_ADDR14_BASE + 4,
  242. mmPDMA0_QM_QMAN_WR64_BASE_ADDR15_BASE,
  243. mmPDMA0_QM_QMAN_WR64_BASE_ADDR15_BASE + 4,
  244. mmPDMA0_QM_ARC_CQ_PTR_LO,
  245. mmPDMA0_QM_ARC_CQ_PTR_LO_STS,
  246. mmPDMA0_QM_ARC_CQ_PTR_HI,
  247. mmPDMA0_QM_ARC_CQ_PTR_HI_STS,
  248. mmPDMA0_QM_ARB_CFG_0,
  249. mmPDMA0_QM_ARB_MST_QUIET_PER,
  250. mmPDMA0_QM_ARB_CHOICE_Q_PUSH,
  251. mmPDMA0_QM_ARB_WRR_WEIGHT_0,
  252. mmPDMA0_QM_ARB_WRR_WEIGHT_1,
  253. mmPDMA0_QM_ARB_WRR_WEIGHT_2,
  254. mmPDMA0_QM_ARB_WRR_WEIGHT_3,
  255. mmPDMA0_QM_ARB_BASE_LO,
  256. mmPDMA0_QM_ARB_BASE_HI,
  257. mmPDMA0_QM_ARB_MST_SLAVE_EN,
  258. mmPDMA0_QM_ARB_MST_SLAVE_EN_1,
  259. mmPDMA0_QM_ARB_MST_CRED_INC,
  260. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_0,
  261. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_1,
  262. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_2,
  263. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_3,
  264. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_4,
  265. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_5,
  266. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_6,
  267. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_7,
  268. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_8,
  269. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_9,
  270. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_10,
  271. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_11,
  272. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_12,
  273. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_13,
  274. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_14,
  275. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_15,
  276. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_16,
  277. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_17,
  278. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_18,
  279. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_19,
  280. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_20,
  281. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_21,
  282. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_22,
  283. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_23,
  284. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_24,
  285. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_25,
  286. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_26,
  287. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_27,
  288. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_28,
  289. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_29,
  290. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_30,
  291. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_31,
  292. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_32,
  293. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_33,
  294. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_34,
  295. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_35,
  296. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_36,
  297. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_37,
  298. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_38,
  299. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_39,
  300. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_40,
  301. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_41,
  302. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_42,
  303. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_43,
  304. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_44,
  305. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_45,
  306. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_46,
  307. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_47,
  308. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_48,
  309. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_49,
  310. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_50,
  311. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_51,
  312. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_52,
  313. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_53,
  314. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_54,
  315. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_55,
  316. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_56,
  317. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_57,
  318. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_58,
  319. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_59,
  320. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_60,
  321. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_61,
  322. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_62,
  323. mmPDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_63,
  324. mmPDMA0_QM_ARB_SLV_ID,
  325. mmPDMA0_QM_ARB_SLV_MASTER_INC_CRED_OFST,
  326. mmPDMA0_QM_ARC_CQ_CFG0,
  327. mmPDMA0_QM_CQ_IFIFO_CI_0,
  328. mmPDMA0_QM_CQ_IFIFO_CI_1,
  329. mmPDMA0_QM_CQ_IFIFO_CI_2,
  330. mmPDMA0_QM_CQ_IFIFO_CI_3,
  331. mmPDMA0_QM_CQ_IFIFO_CI_4,
  332. mmPDMA0_QM_ARC_CQ_IFIFO_CI,
  333. mmPDMA0_QM_CQ_CTL_CI_0,
  334. mmPDMA0_QM_CQ_CTL_CI_1,
  335. mmPDMA0_QM_CQ_CTL_CI_2,
  336. mmPDMA0_QM_CQ_CTL_CI_3,
  337. mmPDMA0_QM_CQ_CTL_CI_4,
  338. mmPDMA0_QM_ARC_CQ_CTL_CI,
  339. mmPDMA0_QM_ARC_CQ_TSIZE,
  340. mmPDMA0_QM_ARC_CQ_CTL,
  341. mmPDMA0_QM_CP_SWITCH_WD_SET,
  342. mmPDMA0_QM_CP_EXT_SWITCH,
  343. mmPDMA0_QM_CP_PRED_0,
  344. mmPDMA0_QM_CP_PRED_1,
  345. mmPDMA0_QM_CP_PRED_2,
  346. mmPDMA0_QM_CP_PRED_3,
  347. mmPDMA0_QM_CP_PRED_4,
  348. mmPDMA0_QM_CP_PRED_UPEN_0,
  349. mmPDMA0_QM_CP_PRED_UPEN_1,
  350. mmPDMA0_QM_CP_PRED_UPEN_2,
  351. mmPDMA0_QM_CP_PRED_UPEN_3,
  352. mmPDMA0_QM_CP_PRED_UPEN_4,
  353. mmPDMA0_QM_CP_MSG_BASE0_ADDR_LO_0,
  354. mmPDMA0_QM_CP_MSG_BASE0_ADDR_LO_1,
  355. mmPDMA0_QM_CP_MSG_BASE0_ADDR_LO_2,
  356. mmPDMA0_QM_CP_MSG_BASE0_ADDR_LO_3,
  357. mmPDMA0_QM_CP_MSG_BASE0_ADDR_LO_4,
  358. mmPDMA0_QM_CP_MSG_BASE0_ADDR_HI_0,
  359. mmPDMA0_QM_CP_MSG_BASE0_ADDR_HI_1,
  360. mmPDMA0_QM_CP_MSG_BASE0_ADDR_HI_2,
  361. mmPDMA0_QM_CP_MSG_BASE0_ADDR_HI_3,
  362. mmPDMA0_QM_CP_MSG_BASE0_ADDR_HI_4,
  363. mmPDMA0_QM_CP_MSG_BASE1_ADDR_LO_0,
  364. mmPDMA0_QM_CP_MSG_BASE1_ADDR_LO_1,
  365. mmPDMA0_QM_CP_MSG_BASE1_ADDR_LO_2,
  366. mmPDMA0_QM_CP_MSG_BASE1_ADDR_LO_3,
  367. mmPDMA0_QM_CP_MSG_BASE1_ADDR_LO_4,
  368. mmPDMA0_QM_CP_MSG_BASE1_ADDR_HI_0,
  369. mmPDMA0_QM_CP_MSG_BASE1_ADDR_HI_1,
  370. mmPDMA0_QM_CP_MSG_BASE1_ADDR_HI_2,
  371. mmPDMA0_QM_CP_MSG_BASE1_ADDR_HI_3,
  372. mmPDMA0_QM_CP_MSG_BASE1_ADDR_HI_4,
  373. mmPDMA0_QM_CP_MSG_BASE2_ADDR_LO_0,
  374. mmPDMA0_QM_CP_MSG_BASE2_ADDR_LO_1,
  375. mmPDMA0_QM_CP_MSG_BASE2_ADDR_LO_2,
  376. mmPDMA0_QM_CP_MSG_BASE2_ADDR_LO_3,
  377. mmPDMA0_QM_CP_MSG_BASE2_ADDR_LO_4,
  378. mmPDMA0_QM_CP_MSG_BASE2_ADDR_HI_0,
  379. mmPDMA0_QM_CP_MSG_BASE2_ADDR_HI_1,
  380. mmPDMA0_QM_CP_MSG_BASE2_ADDR_HI_2,
  381. mmPDMA0_QM_CP_MSG_BASE2_ADDR_HI_3,
  382. mmPDMA0_QM_CP_MSG_BASE2_ADDR_HI_4,
  383. mmPDMA0_QM_CP_MSG_BASE3_ADDR_LO_0,
  384. mmPDMA0_QM_CP_MSG_BASE3_ADDR_LO_1,
  385. mmPDMA0_QM_CP_MSG_BASE3_ADDR_LO_2,
  386. mmPDMA0_QM_CP_MSG_BASE3_ADDR_LO_3,
  387. mmPDMA0_QM_CP_MSG_BASE3_ADDR_LO_4,
  388. mmPDMA0_QM_CP_MSG_BASE3_ADDR_HI_0,
  389. mmPDMA0_QM_CP_MSG_BASE3_ADDR_HI_1,
  390. mmPDMA0_QM_CP_MSG_BASE3_ADDR_HI_2,
  391. mmPDMA0_QM_CP_MSG_BASE3_ADDR_HI_3,
  392. mmPDMA0_QM_CP_MSG_BASE3_ADDR_HI_4,
  393. mmPDMA0_QM_ARC_CQ_IFIFO_MSG_BASE_LO,
  394. mmPDMA0_QM_ARC_CQ_CTL_MSG_BASE_LO,
  395. mmPDMA0_QM_CQ_IFIFO_MSG_BASE_LO,
  396. mmPDMA0_QM_CQ_CTL_MSG_BASE_LO
  397. };
  398. static const u32 gaudi2_pb_dcr0_edma0[] = {
  399. mmDCORE0_EDMA0_CORE_BASE,
  400. mmDCORE0_EDMA0_MSTR_IF_RR_SHRD_HBW_BASE,
  401. mmDCORE0_EDMA0_QM_BASE,
  402. };
  403. static const u32 gaudi2_pb_dcr0_edma0_arc[] = {
  404. mmDCORE0_EDMA0_QM_ARC_AUX_BASE,
  405. };
  406. static const struct range gaudi2_pb_dcr0_edma0_arc_unsecured_regs[] = {
  407. {mmDCORE0_EDMA0_QM_ARC_AUX_RUN_HALT_REQ, mmDCORE0_EDMA0_QM_ARC_AUX_RUN_HALT_ACK},
  408. {mmDCORE0_EDMA0_QM_ARC_AUX_CLUSTER_NUM, mmDCORE0_EDMA0_QM_ARC_AUX_WAKE_UP_EVENT},
  409. {mmDCORE0_EDMA0_QM_ARC_AUX_ARC_RST_REQ, mmDCORE0_EDMA0_QM_ARC_AUX_CID_OFFSET_7},
  410. {mmDCORE0_EDMA0_QM_ARC_AUX_SCRATCHPAD_0, mmDCORE0_EDMA0_QM_ARC_AUX_INFLIGHT_LBU_RD_CNT},
  411. {mmDCORE0_EDMA0_QM_ARC_AUX_CBU_EARLY_BRESP_EN,
  412. mmDCORE0_EDMA0_QM_ARC_AUX_CBU_EARLY_BRESP_EN},
  413. {mmDCORE0_EDMA0_QM_ARC_AUX_LBU_EARLY_BRESP_EN,
  414. mmDCORE0_EDMA0_QM_ARC_AUX_LBU_EARLY_BRESP_EN},
  415. {mmDCORE0_EDMA0_QM_ARC_AUX_DCCM_QUEUE_BASE_ADDR_0,
  416. mmDCORE0_EDMA0_QM_ARC_AUX_DCCM_QUEUE_ALERT_MSG},
  417. {mmDCORE0_EDMA0_QM_ARC_AUX_DCCM_Q_PUSH_FIFO_CNT,
  418. mmDCORE0_EDMA0_QM_ARC_AUX_QMAN_ARC_CQ_SHADOW_CI},
  419. {mmDCORE0_EDMA0_QM_ARC_AUX_ARC_AXI_ORDERING_WR_IF_CNT,
  420. mmDCORE0_EDMA0_QM_ARC_AUX_MME_ARC_UPPER_DCCM_EN},
  421. };
  422. static const u32 gaudi2_pb_dcr0_edma0_unsecured_regs[] = {
  423. mmDCORE0_EDMA0_CORE_CTX_AXUSER_HB_WR_REDUCTION,
  424. mmDCORE0_EDMA0_CORE_CTX_WR_COMP_ADDR_HI,
  425. mmDCORE0_EDMA0_CORE_CTX_WR_COMP_ADDR_LO,
  426. mmDCORE0_EDMA0_CORE_CTX_WR_COMP_WDATA,
  427. mmDCORE0_EDMA0_CORE_CTX_SRC_BASE_LO,
  428. mmDCORE0_EDMA0_CORE_CTX_SRC_BASE_HI,
  429. mmDCORE0_EDMA0_CORE_CTX_DST_BASE_LO,
  430. mmDCORE0_EDMA0_CORE_CTX_DST_BASE_HI,
  431. mmDCORE0_EDMA0_CORE_CTX_SRC_TSIZE_0,
  432. mmDCORE0_EDMA0_CORE_CTX_SRC_TSIZE_1,
  433. mmDCORE0_EDMA0_CORE_CTX_SRC_TSIZE_2,
  434. mmDCORE0_EDMA0_CORE_CTX_SRC_TSIZE_3,
  435. mmDCORE0_EDMA0_CORE_CTX_SRC_TSIZE_4,
  436. mmDCORE0_EDMA0_CORE_CTX_SRC_STRIDE_1,
  437. mmDCORE0_EDMA0_CORE_CTX_SRC_STRIDE_2,
  438. mmDCORE0_EDMA0_CORE_CTX_SRC_STRIDE_3,
  439. mmDCORE0_EDMA0_CORE_CTX_SRC_STRIDE_4,
  440. mmDCORE0_EDMA0_CORE_CTX_SRC_OFFSET_LO,
  441. mmDCORE0_EDMA0_CORE_CTX_SRC_OFFSET_HI,
  442. mmDCORE0_EDMA0_CORE_CTX_DST_TSIZE_0,
  443. mmDCORE0_EDMA0_CORE_CTX_DST_TSIZE_1,
  444. mmDCORE0_EDMA0_CORE_CTX_DST_TSIZE_2,
  445. mmDCORE0_EDMA0_CORE_CTX_DST_TSIZE_3,
  446. mmDCORE0_EDMA0_CORE_CTX_DST_TSIZE_4,
  447. mmDCORE0_EDMA0_CORE_CTX_DST_STRIDE_1,
  448. mmDCORE0_EDMA0_CORE_CTX_DST_STRIDE_2,
  449. mmDCORE0_EDMA0_CORE_CTX_DST_STRIDE_3,
  450. mmDCORE0_EDMA0_CORE_CTX_DST_STRIDE_4,
  451. mmDCORE0_EDMA0_CORE_CTX_DST_OFFSET_LO,
  452. mmDCORE0_EDMA0_CORE_CTX_DST_OFFSET_HI,
  453. mmDCORE0_EDMA0_CORE_CTX_COMMIT,
  454. mmDCORE0_EDMA0_CORE_CTX_CTRL,
  455. mmDCORE0_EDMA0_CORE_CTX_TE_NUMROWS,
  456. mmDCORE0_EDMA0_CORE_CTX_IDX,
  457. mmDCORE0_EDMA0_CORE_CTX_IDX_INC,
  458. mmDCORE0_EDMA0_QM_CQ_CFG0_0,
  459. mmDCORE0_EDMA0_QM_CQ_CFG0_1,
  460. mmDCORE0_EDMA0_QM_CQ_CFG0_2,
  461. mmDCORE0_EDMA0_QM_CQ_CFG0_3,
  462. mmDCORE0_EDMA0_QM_CQ_CFG0_4,
  463. mmDCORE0_EDMA0_QM_CP_FENCE0_RDATA_0,
  464. mmDCORE0_EDMA0_QM_CP_FENCE0_RDATA_1,
  465. mmDCORE0_EDMA0_QM_CP_FENCE0_RDATA_2,
  466. mmDCORE0_EDMA0_QM_CP_FENCE0_RDATA_3,
  467. mmDCORE0_EDMA0_QM_CP_FENCE0_RDATA_4,
  468. mmDCORE0_EDMA0_QM_CP_FENCE1_RDATA_0,
  469. mmDCORE0_EDMA0_QM_CP_FENCE1_RDATA_1,
  470. mmDCORE0_EDMA0_QM_CP_FENCE1_RDATA_2,
  471. mmDCORE0_EDMA0_QM_CP_FENCE1_RDATA_3,
  472. mmDCORE0_EDMA0_QM_CP_FENCE1_RDATA_4,
  473. mmDCORE0_EDMA0_QM_CP_FENCE2_RDATA_0,
  474. mmDCORE0_EDMA0_QM_CP_FENCE2_RDATA_1,
  475. mmDCORE0_EDMA0_QM_CP_FENCE2_RDATA_2,
  476. mmDCORE0_EDMA0_QM_CP_FENCE2_RDATA_3,
  477. mmDCORE0_EDMA0_QM_CP_FENCE2_RDATA_4,
  478. mmDCORE0_EDMA0_QM_CP_FENCE3_RDATA_0,
  479. mmDCORE0_EDMA0_QM_CP_FENCE3_RDATA_1,
  480. mmDCORE0_EDMA0_QM_CP_FENCE3_RDATA_2,
  481. mmDCORE0_EDMA0_QM_CP_FENCE3_RDATA_3,
  482. mmDCORE0_EDMA0_QM_CP_FENCE3_RDATA_4,
  483. mmDCORE0_EDMA0_QM_CP_FENCE0_CNT_0,
  484. mmDCORE0_EDMA0_QM_CP_FENCE0_CNT_1,
  485. mmDCORE0_EDMA0_QM_CP_FENCE0_CNT_2,
  486. mmDCORE0_EDMA0_QM_CP_FENCE0_CNT_3,
  487. mmDCORE0_EDMA0_QM_CP_FENCE0_CNT_4,
  488. mmDCORE0_EDMA0_QM_CP_FENCE1_CNT_0,
  489. mmDCORE0_EDMA0_QM_CP_FENCE1_CNT_1,
  490. mmDCORE0_EDMA0_QM_CP_FENCE1_CNT_2,
  491. mmDCORE0_EDMA0_QM_CP_FENCE1_CNT_3,
  492. mmDCORE0_EDMA0_QM_CP_FENCE1_CNT_4,
  493. mmDCORE0_EDMA0_QM_CP_FENCE2_CNT_0,
  494. mmDCORE0_EDMA0_QM_CP_FENCE2_CNT_1,
  495. mmDCORE0_EDMA0_QM_CP_FENCE2_CNT_2,
  496. mmDCORE0_EDMA0_QM_CP_FENCE2_CNT_3,
  497. mmDCORE0_EDMA0_QM_CP_FENCE2_CNT_4,
  498. mmDCORE0_EDMA0_QM_CP_FENCE3_CNT_0,
  499. mmDCORE0_EDMA0_QM_CP_FENCE3_CNT_1,
  500. mmDCORE0_EDMA0_QM_CP_FENCE3_CNT_2,
  501. mmDCORE0_EDMA0_QM_CP_FENCE3_CNT_3,
  502. mmDCORE0_EDMA0_QM_CP_FENCE3_CNT_4,
  503. mmDCORE0_EDMA0_QM_CQ_PTR_LO_0,
  504. mmDCORE0_EDMA0_QM_CQ_PTR_HI_0,
  505. mmDCORE0_EDMA0_QM_CQ_TSIZE_0,
  506. mmDCORE0_EDMA0_QM_CQ_CTL_0,
  507. mmDCORE0_EDMA0_QM_CQ_PTR_LO_1,
  508. mmDCORE0_EDMA0_QM_CQ_PTR_HI_1,
  509. mmDCORE0_EDMA0_QM_CQ_TSIZE_1,
  510. mmDCORE0_EDMA0_QM_CQ_CTL_1,
  511. mmDCORE0_EDMA0_QM_CQ_PTR_LO_2,
  512. mmDCORE0_EDMA0_QM_CQ_PTR_HI_2,
  513. mmDCORE0_EDMA0_QM_CQ_TSIZE_2,
  514. mmDCORE0_EDMA0_QM_CQ_CTL_2,
  515. mmDCORE0_EDMA0_QM_CQ_PTR_LO_3,
  516. mmDCORE0_EDMA0_QM_CQ_PTR_HI_3,
  517. mmDCORE0_EDMA0_QM_CQ_TSIZE_3,
  518. mmDCORE0_EDMA0_QM_CQ_CTL_3,
  519. mmDCORE0_EDMA0_QM_CQ_PTR_LO_4,
  520. mmDCORE0_EDMA0_QM_CQ_PTR_HI_4,
  521. mmDCORE0_EDMA0_QM_CQ_TSIZE_4,
  522. mmDCORE0_EDMA0_QM_CQ_CTL_4,
  523. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR0_BASE,
  524. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR0_BASE + 4,
  525. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR1_BASE,
  526. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR1_BASE + 4,
  527. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR2_BASE,
  528. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR2_BASE + 4,
  529. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR3_BASE,
  530. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR3_BASE + 4,
  531. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR4_BASE,
  532. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR4_BASE + 4,
  533. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR5_BASE,
  534. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR5_BASE + 4,
  535. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR6_BASE,
  536. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR6_BASE + 4,
  537. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR7_BASE,
  538. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR7_BASE + 4,
  539. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR8_BASE,
  540. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR8_BASE + 4,
  541. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR9_BASE,
  542. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR9_BASE + 4,
  543. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR10_BASE,
  544. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR10_BASE + 4,
  545. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR11_BASE,
  546. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR11_BASE + 4,
  547. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR12_BASE,
  548. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR12_BASE + 4,
  549. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR13_BASE,
  550. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR13_BASE + 4,
  551. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR14_BASE,
  552. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR14_BASE + 4,
  553. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR15_BASE,
  554. mmDCORE0_EDMA0_QM_QMAN_WR64_BASE_ADDR15_BASE + 4,
  555. mmDCORE0_EDMA0_QM_ARC_CQ_PTR_LO,
  556. mmDCORE0_EDMA0_QM_ARC_CQ_PTR_LO_STS,
  557. mmDCORE0_EDMA0_QM_ARC_CQ_PTR_HI,
  558. mmDCORE0_EDMA0_QM_ARC_CQ_PTR_HI_STS,
  559. mmDCORE0_EDMA0_QM_ARB_CFG_0,
  560. mmDCORE0_EDMA0_QM_ARB_MST_QUIET_PER,
  561. mmDCORE0_EDMA0_QM_ARB_CHOICE_Q_PUSH,
  562. mmDCORE0_EDMA0_QM_ARB_WRR_WEIGHT_0,
  563. mmDCORE0_EDMA0_QM_ARB_WRR_WEIGHT_1,
  564. mmDCORE0_EDMA0_QM_ARB_WRR_WEIGHT_2,
  565. mmDCORE0_EDMA0_QM_ARB_WRR_WEIGHT_3,
  566. mmDCORE0_EDMA0_QM_ARB_BASE_LO,
  567. mmDCORE0_EDMA0_QM_ARB_BASE_HI,
  568. mmDCORE0_EDMA0_QM_ARB_MST_SLAVE_EN,
  569. mmDCORE0_EDMA0_QM_ARB_MST_SLAVE_EN_1,
  570. mmDCORE0_EDMA0_QM_ARB_MST_CRED_INC,
  571. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_0,
  572. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_1,
  573. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_2,
  574. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_3,
  575. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_4,
  576. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_5,
  577. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_6,
  578. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_7,
  579. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_8,
  580. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_9,
  581. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_10,
  582. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_11,
  583. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_12,
  584. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_13,
  585. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_14,
  586. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_15,
  587. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_16,
  588. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_17,
  589. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_18,
  590. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_19,
  591. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_20,
  592. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_21,
  593. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_22,
  594. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_23,
  595. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_24,
  596. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_25,
  597. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_26,
  598. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_27,
  599. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_28,
  600. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_29,
  601. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_30,
  602. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_31,
  603. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_32,
  604. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_33,
  605. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_34,
  606. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_35,
  607. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_36,
  608. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_37,
  609. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_38,
  610. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_39,
  611. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_40,
  612. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_41,
  613. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_42,
  614. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_43,
  615. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_44,
  616. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_45,
  617. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_46,
  618. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_47,
  619. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_48,
  620. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_49,
  621. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_50,
  622. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_51,
  623. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_52,
  624. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_53,
  625. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_54,
  626. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_55,
  627. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_56,
  628. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_57,
  629. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_58,
  630. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_59,
  631. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_60,
  632. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_61,
  633. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_62,
  634. mmDCORE0_EDMA0_QM_ARB_MST_CHOICE_PUSH_OFST_63,
  635. mmDCORE0_EDMA0_QM_ARB_SLV_ID,
  636. mmDCORE0_EDMA0_QM_ARB_SLV_MASTER_INC_CRED_OFST,
  637. mmDCORE0_EDMA0_QM_ARC_CQ_CFG0,
  638. mmDCORE0_EDMA0_QM_CQ_IFIFO_CI_0,
  639. mmDCORE0_EDMA0_QM_CQ_IFIFO_CI_1,
  640. mmDCORE0_EDMA0_QM_CQ_IFIFO_CI_2,
  641. mmDCORE0_EDMA0_QM_CQ_IFIFO_CI_3,
  642. mmDCORE0_EDMA0_QM_CQ_IFIFO_CI_4,
  643. mmDCORE0_EDMA0_QM_ARC_CQ_IFIFO_CI,
  644. mmDCORE0_EDMA0_QM_CQ_CTL_CI_0,
  645. mmDCORE0_EDMA0_QM_CQ_CTL_CI_1,
  646. mmDCORE0_EDMA0_QM_CQ_CTL_CI_2,
  647. mmDCORE0_EDMA0_QM_CQ_CTL_CI_3,
  648. mmDCORE0_EDMA0_QM_CQ_CTL_CI_4,
  649. mmDCORE0_EDMA0_QM_ARC_CQ_CTL_CI,
  650. mmDCORE0_EDMA0_QM_ARC_CQ_TSIZE,
  651. mmDCORE0_EDMA0_QM_ARC_CQ_CTL,
  652. mmDCORE0_EDMA0_QM_CP_SWITCH_WD_SET,
  653. mmDCORE0_EDMA0_QM_CP_EXT_SWITCH,
  654. mmDCORE0_EDMA0_QM_CP_PRED_0,
  655. mmDCORE0_EDMA0_QM_CP_PRED_1,
  656. mmDCORE0_EDMA0_QM_CP_PRED_2,
  657. mmDCORE0_EDMA0_QM_CP_PRED_3,
  658. mmDCORE0_EDMA0_QM_CP_PRED_4,
  659. mmDCORE0_EDMA0_QM_CP_PRED_UPEN_0,
  660. mmDCORE0_EDMA0_QM_CP_PRED_UPEN_1,
  661. mmDCORE0_EDMA0_QM_CP_PRED_UPEN_2,
  662. mmDCORE0_EDMA0_QM_CP_PRED_UPEN_3,
  663. mmDCORE0_EDMA0_QM_CP_PRED_UPEN_4,
  664. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_LO_0,
  665. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_LO_1,
  666. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_LO_2,
  667. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_LO_3,
  668. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_LO_4,
  669. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_HI_0,
  670. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_HI_1,
  671. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_HI_2,
  672. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_HI_3,
  673. mmDCORE0_EDMA0_QM_CP_MSG_BASE0_ADDR_HI_4,
  674. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_LO_0,
  675. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_LO_1,
  676. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_LO_2,
  677. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_LO_3,
  678. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_LO_4,
  679. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_HI_0,
  680. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_HI_1,
  681. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_HI_2,
  682. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_HI_3,
  683. mmDCORE0_EDMA0_QM_CP_MSG_BASE1_ADDR_HI_4,
  684. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_LO_0,
  685. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_LO_1,
  686. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_LO_2,
  687. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_LO_3,
  688. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_LO_4,
  689. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_HI_0,
  690. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_HI_1,
  691. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_HI_2,
  692. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_HI_3,
  693. mmDCORE0_EDMA0_QM_CP_MSG_BASE2_ADDR_HI_4,
  694. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_LO_0,
  695. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_LO_1,
  696. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_LO_2,
  697. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_LO_3,
  698. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_LO_4,
  699. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_HI_0,
  700. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_HI_1,
  701. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_HI_2,
  702. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_HI_3,
  703. mmDCORE0_EDMA0_QM_CP_MSG_BASE3_ADDR_HI_4,
  704. mmDCORE0_EDMA0_QM_ARC_CQ_IFIFO_MSG_BASE_LO,
  705. mmDCORE0_EDMA0_QM_ARC_CQ_CTL_MSG_BASE_LO,
  706. mmDCORE0_EDMA0_QM_CQ_IFIFO_MSG_BASE_LO,
  707. mmDCORE0_EDMA0_QM_CQ_CTL_MSG_BASE_LO
  708. };
  709. static const u32 gaudi2_pb_dcr0_mme_sbte[] = {
  710. mmDCORE0_MME_SBTE0_BASE,
  711. mmDCORE0_MME_SBTE0_MSTR_IF_RR_SHRD_HBW_BASE,
  712. };
  713. static const u32 gaudi2_pb_dcr0_mme_qm[] = {
  714. mmDCORE0_MME_QM_BASE,
  715. };
  716. static const u32 gaudi2_pb_dcr0_mme_eng[] = {
  717. mmDCORE0_MME_ACC_BASE,
  718. mmDCORE0_MME_CTRL_HI_BASE,
  719. mmDCORE0_MME_CTRL_LO_BASE,
  720. mmDCORE0_MME_CTRL_MSTR_IF_RR_SHRD_HBW_BASE,
  721. mmDCORE0_MME_WB0_MSTR_IF_RR_SHRD_HBW_BASE,
  722. mmDCORE0_MME_WB1_MSTR_IF_RR_SHRD_HBW_BASE,
  723. };
  724. static const u32 gaudi2_pb_dcr0_mme_arc[] = {
  725. mmDCORE0_MME_QM_ARC_AUX_BASE,
  726. mmDCORE0_MME_QM_ARC_DUP_ENG_BASE,
  727. };
  728. static const struct range gaudi2_pb_dcr0_mme_arc_unsecured_regs[] = {
  729. {mmDCORE0_MME_QM_ARC_AUX_RUN_HALT_REQ, mmDCORE0_MME_QM_ARC_AUX_RUN_HALT_ACK},
  730. {mmDCORE0_MME_QM_ARC_AUX_CLUSTER_NUM, mmDCORE0_MME_QM_ARC_AUX_WAKE_UP_EVENT},
  731. {mmDCORE0_MME_QM_ARC_AUX_ARC_RST_REQ, mmDCORE0_MME_QM_ARC_AUX_CID_OFFSET_7},
  732. {mmDCORE0_MME_QM_ARC_AUX_SCRATCHPAD_0, mmDCORE0_MME_QM_ARC_AUX_INFLIGHT_LBU_RD_CNT},
  733. {mmDCORE0_MME_QM_ARC_AUX_CBU_EARLY_BRESP_EN, mmDCORE0_MME_QM_ARC_AUX_CBU_EARLY_BRESP_EN},
  734. {mmDCORE0_MME_QM_ARC_AUX_LBU_EARLY_BRESP_EN, mmDCORE0_MME_QM_ARC_AUX_LBU_EARLY_BRESP_EN},
  735. {mmDCORE0_MME_QM_ARC_AUX_DCCM_QUEUE_BASE_ADDR_0,
  736. mmDCORE0_MME_QM_ARC_AUX_DCCM_QUEUE_ALERT_MSG},
  737. {mmDCORE0_MME_QM_ARC_AUX_DCCM_Q_PUSH_FIFO_CNT,
  738. mmDCORE0_MME_QM_ARC_AUX_QMAN_ARC_CQ_SHADOW_CI},
  739. {mmDCORE0_MME_QM_ARC_AUX_ARC_AXI_ORDERING_WR_IF_CNT,
  740. mmDCORE0_MME_QM_ARC_AUX_MME_ARC_UPPER_DCCM_EN},
  741. {mmDCORE0_MME_QM_ARC_DUP_ENG_DUP_TPC_ENG_ADDR_0,
  742. mmDCORE0_MME_QM_ARC_DUP_ENG_ARC_CID_OFFSET_63},
  743. {mmDCORE0_MME_QM_ARC_DUP_ENG_AXUSER_HB_STRONG_ORDER,
  744. mmDCORE0_MME_QM_ARC_DUP_ENG_AXUSER_LB_OVRD},
  745. };
  746. static const u32 gaudi2_pb_dcr0_mme_qm_unsecured_regs[] = {
  747. mmDCORE0_MME_QM_CQ_CFG0_0,
  748. mmDCORE0_MME_QM_CQ_CFG0_1,
  749. mmDCORE0_MME_QM_CQ_CFG0_2,
  750. mmDCORE0_MME_QM_CQ_CFG0_3,
  751. mmDCORE0_MME_QM_CQ_CFG0_4,
  752. mmDCORE0_MME_QM_CP_FENCE0_RDATA_0,
  753. mmDCORE0_MME_QM_CP_FENCE0_RDATA_1,
  754. mmDCORE0_MME_QM_CP_FENCE0_RDATA_2,
  755. mmDCORE0_MME_QM_CP_FENCE0_RDATA_3,
  756. mmDCORE0_MME_QM_CP_FENCE0_RDATA_4,
  757. mmDCORE0_MME_QM_CP_FENCE1_RDATA_0,
  758. mmDCORE0_MME_QM_CP_FENCE1_RDATA_1,
  759. mmDCORE0_MME_QM_CP_FENCE1_RDATA_2,
  760. mmDCORE0_MME_QM_CP_FENCE1_RDATA_3,
  761. mmDCORE0_MME_QM_CP_FENCE1_RDATA_4,
  762. mmDCORE0_MME_QM_CP_FENCE2_RDATA_0,
  763. mmDCORE0_MME_QM_CP_FENCE2_RDATA_1,
  764. mmDCORE0_MME_QM_CP_FENCE2_RDATA_2,
  765. mmDCORE0_MME_QM_CP_FENCE2_RDATA_3,
  766. mmDCORE0_MME_QM_CP_FENCE2_RDATA_4,
  767. mmDCORE0_MME_QM_CP_FENCE3_RDATA_0,
  768. mmDCORE0_MME_QM_CP_FENCE3_RDATA_1,
  769. mmDCORE0_MME_QM_CP_FENCE3_RDATA_2,
  770. mmDCORE0_MME_QM_CP_FENCE3_RDATA_3,
  771. mmDCORE0_MME_QM_CP_FENCE3_RDATA_4,
  772. mmDCORE0_MME_QM_CP_FENCE0_CNT_0,
  773. mmDCORE0_MME_QM_CP_FENCE0_CNT_1,
  774. mmDCORE0_MME_QM_CP_FENCE0_CNT_2,
  775. mmDCORE0_MME_QM_CP_FENCE0_CNT_3,
  776. mmDCORE0_MME_QM_CP_FENCE0_CNT_4,
  777. mmDCORE0_MME_QM_CP_FENCE1_CNT_0,
  778. mmDCORE0_MME_QM_CP_FENCE1_CNT_1,
  779. mmDCORE0_MME_QM_CP_FENCE1_CNT_2,
  780. mmDCORE0_MME_QM_CP_FENCE1_CNT_3,
  781. mmDCORE0_MME_QM_CP_FENCE1_CNT_4,
  782. mmDCORE0_MME_QM_CP_FENCE2_CNT_0,
  783. mmDCORE0_MME_QM_CP_FENCE2_CNT_1,
  784. mmDCORE0_MME_QM_CP_FENCE2_CNT_2,
  785. mmDCORE0_MME_QM_CP_FENCE2_CNT_3,
  786. mmDCORE0_MME_QM_CP_FENCE2_CNT_4,
  787. mmDCORE0_MME_QM_CP_FENCE3_CNT_0,
  788. mmDCORE0_MME_QM_CP_FENCE3_CNT_1,
  789. mmDCORE0_MME_QM_CP_FENCE3_CNT_2,
  790. mmDCORE0_MME_QM_CP_FENCE3_CNT_3,
  791. mmDCORE0_MME_QM_CP_FENCE3_CNT_4,
  792. mmDCORE0_MME_QM_CQ_PTR_LO_0,
  793. mmDCORE0_MME_QM_CQ_PTR_HI_0,
  794. mmDCORE0_MME_QM_CQ_TSIZE_0,
  795. mmDCORE0_MME_QM_CQ_CTL_0,
  796. mmDCORE0_MME_QM_CQ_PTR_LO_1,
  797. mmDCORE0_MME_QM_CQ_PTR_HI_1,
  798. mmDCORE0_MME_QM_CQ_TSIZE_1,
  799. mmDCORE0_MME_QM_CQ_CTL_1,
  800. mmDCORE0_MME_QM_CQ_PTR_LO_2,
  801. mmDCORE0_MME_QM_CQ_PTR_HI_2,
  802. mmDCORE0_MME_QM_CQ_TSIZE_2,
  803. mmDCORE0_MME_QM_CQ_CTL_2,
  804. mmDCORE0_MME_QM_CQ_PTR_LO_3,
  805. mmDCORE0_MME_QM_CQ_PTR_HI_3,
  806. mmDCORE0_MME_QM_CQ_TSIZE_3,
  807. mmDCORE0_MME_QM_CQ_CTL_3,
  808. mmDCORE0_MME_QM_CQ_PTR_LO_4,
  809. mmDCORE0_MME_QM_CQ_PTR_HI_4,
  810. mmDCORE0_MME_QM_CQ_TSIZE_4,
  811. mmDCORE0_MME_QM_CQ_CTL_4,
  812. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR0_BASE,
  813. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR0_BASE + 4,
  814. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR1_BASE,
  815. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR1_BASE + 4,
  816. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR2_BASE,
  817. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR2_BASE + 4,
  818. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR3_BASE,
  819. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR3_BASE + 4,
  820. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR4_BASE,
  821. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR4_BASE + 4,
  822. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR5_BASE,
  823. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR5_BASE + 4,
  824. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR6_BASE,
  825. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR6_BASE + 4,
  826. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR7_BASE,
  827. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR7_BASE + 4,
  828. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR8_BASE,
  829. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR8_BASE + 4,
  830. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR9_BASE,
  831. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR9_BASE + 4,
  832. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR10_BASE,
  833. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR10_BASE + 4,
  834. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR11_BASE,
  835. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR11_BASE + 4,
  836. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR12_BASE,
  837. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR12_BASE + 4,
  838. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR13_BASE,
  839. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR13_BASE + 4,
  840. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR14_BASE,
  841. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR14_BASE + 4,
  842. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR15_BASE,
  843. mmDCORE0_MME_QM_QMAN_WR64_BASE_ADDR15_BASE + 4,
  844. mmDCORE0_MME_QM_ARC_CQ_PTR_LO,
  845. mmDCORE0_MME_QM_ARC_CQ_PTR_LO_STS,
  846. mmDCORE0_MME_QM_ARC_CQ_PTR_HI,
  847. mmDCORE0_MME_QM_ARC_CQ_PTR_HI_STS,
  848. mmDCORE0_MME_QM_ARB_CFG_0,
  849. mmDCORE0_MME_QM_ARB_MST_QUIET_PER,
  850. mmDCORE0_MME_QM_ARB_CHOICE_Q_PUSH,
  851. mmDCORE0_MME_QM_ARB_WRR_WEIGHT_0,
  852. mmDCORE0_MME_QM_ARB_WRR_WEIGHT_1,
  853. mmDCORE0_MME_QM_ARB_WRR_WEIGHT_2,
  854. mmDCORE0_MME_QM_ARB_WRR_WEIGHT_3,
  855. mmDCORE0_MME_QM_ARB_BASE_LO,
  856. mmDCORE0_MME_QM_ARB_BASE_HI,
  857. mmDCORE0_MME_QM_ARB_MST_SLAVE_EN,
  858. mmDCORE0_MME_QM_ARB_MST_SLAVE_EN_1,
  859. mmDCORE0_MME_QM_ARB_MST_CRED_INC,
  860. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_0,
  861. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_1,
  862. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_2,
  863. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_3,
  864. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_4,
  865. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_5,
  866. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_6,
  867. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_7,
  868. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_8,
  869. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_9,
  870. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_10,
  871. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_11,
  872. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_12,
  873. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_13,
  874. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_14,
  875. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_15,
  876. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_16,
  877. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_17,
  878. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_18,
  879. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_19,
  880. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_20,
  881. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_21,
  882. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_22,
  883. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_23,
  884. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_24,
  885. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_25,
  886. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_26,
  887. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_27,
  888. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_28,
  889. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_29,
  890. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_30,
  891. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_31,
  892. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_32,
  893. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_33,
  894. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_34,
  895. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_35,
  896. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_36,
  897. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_37,
  898. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_38,
  899. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_39,
  900. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_40,
  901. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_41,
  902. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_42,
  903. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_43,
  904. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_44,
  905. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_45,
  906. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_46,
  907. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_47,
  908. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_48,
  909. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_49,
  910. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_50,
  911. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_51,
  912. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_52,
  913. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_53,
  914. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_54,
  915. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_55,
  916. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_56,
  917. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_57,
  918. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_58,
  919. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_59,
  920. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_60,
  921. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_61,
  922. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_62,
  923. mmDCORE0_MME_QM_ARB_MST_CHOICE_PUSH_OFST_63,
  924. mmDCORE0_MME_QM_ARB_SLV_ID,
  925. mmDCORE0_MME_QM_ARB_SLV_MASTER_INC_CRED_OFST,
  926. mmDCORE0_MME_QM_ARC_CQ_CFG0,
  927. mmDCORE0_MME_QM_CQ_IFIFO_CI_0,
  928. mmDCORE0_MME_QM_CQ_IFIFO_CI_1,
  929. mmDCORE0_MME_QM_CQ_IFIFO_CI_2,
  930. mmDCORE0_MME_QM_CQ_IFIFO_CI_3,
  931. mmDCORE0_MME_QM_CQ_IFIFO_CI_4,
  932. mmDCORE0_MME_QM_ARC_CQ_IFIFO_CI,
  933. mmDCORE0_MME_QM_CQ_CTL_CI_0,
  934. mmDCORE0_MME_QM_CQ_CTL_CI_1,
  935. mmDCORE0_MME_QM_CQ_CTL_CI_2,
  936. mmDCORE0_MME_QM_CQ_CTL_CI_3,
  937. mmDCORE0_MME_QM_CQ_CTL_CI_4,
  938. mmDCORE0_MME_QM_ARC_CQ_CTL_CI,
  939. mmDCORE0_MME_QM_ARC_CQ_TSIZE,
  940. mmDCORE0_MME_QM_ARC_CQ_CTL,
  941. mmDCORE0_MME_QM_CP_SWITCH_WD_SET,
  942. mmDCORE0_MME_QM_CP_EXT_SWITCH,
  943. mmDCORE0_MME_QM_CP_PRED_0,
  944. mmDCORE0_MME_QM_CP_PRED_1,
  945. mmDCORE0_MME_QM_CP_PRED_2,
  946. mmDCORE0_MME_QM_CP_PRED_3,
  947. mmDCORE0_MME_QM_CP_PRED_4,
  948. mmDCORE0_MME_QM_CP_PRED_UPEN_0,
  949. mmDCORE0_MME_QM_CP_PRED_UPEN_1,
  950. mmDCORE0_MME_QM_CP_PRED_UPEN_2,
  951. mmDCORE0_MME_QM_CP_PRED_UPEN_3,
  952. mmDCORE0_MME_QM_CP_PRED_UPEN_4,
  953. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_LO_0,
  954. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_LO_1,
  955. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_LO_2,
  956. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_LO_3,
  957. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_LO_4,
  958. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_HI_0,
  959. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_HI_1,
  960. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_HI_2,
  961. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_HI_3,
  962. mmDCORE0_MME_QM_CP_MSG_BASE0_ADDR_HI_4,
  963. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_LO_0,
  964. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_LO_1,
  965. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_LO_2,
  966. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_LO_3,
  967. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_LO_4,
  968. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_HI_0,
  969. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_HI_1,
  970. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_HI_2,
  971. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_HI_3,
  972. mmDCORE0_MME_QM_CP_MSG_BASE1_ADDR_HI_4,
  973. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_LO_0,
  974. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_LO_1,
  975. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_LO_2,
  976. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_LO_3,
  977. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_LO_4,
  978. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_HI_0,
  979. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_HI_1,
  980. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_HI_2,
  981. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_HI_3,
  982. mmDCORE0_MME_QM_CP_MSG_BASE2_ADDR_HI_4,
  983. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_LO_0,
  984. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_LO_1,
  985. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_LO_2,
  986. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_LO_3,
  987. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_LO_4,
  988. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_HI_0,
  989. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_HI_1,
  990. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_HI_2,
  991. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_HI_3,
  992. mmDCORE0_MME_QM_CP_MSG_BASE3_ADDR_HI_4,
  993. mmDCORE0_MME_QM_ARC_CQ_IFIFO_MSG_BASE_LO,
  994. mmDCORE0_MME_QM_ARC_CQ_CTL_MSG_BASE_LO,
  995. mmDCORE0_MME_QM_CQ_IFIFO_MSG_BASE_LO,
  996. mmDCORE0_MME_QM_CQ_CTL_MSG_BASE_LO
  997. };
  998. static const u32 gaudi2_pb_dcr0_mme_eng_unsecured_regs[] = {
  999. mmDCORE0_MME_CTRL_LO_CMD,
  1000. mmDCORE0_MME_CTRL_LO_AGU,
  1001. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_SLAVE_ROI_BASE_OFFSET_0,
  1002. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_SLAVE_ROI_BASE_OFFSET_1,
  1003. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_SLAVE_ROI_BASE_OFFSET_2,
  1004. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_SLAVE_ROI_BASE_OFFSET_3,
  1005. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_SLAVE_ROI_BASE_OFFSET_4,
  1006. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_SLAVE_ROI_BASE_OFFSET_0,
  1007. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_SLAVE_ROI_BASE_OFFSET_1,
  1008. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_SLAVE_ROI_BASE_OFFSET_2,
  1009. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_SLAVE_ROI_BASE_OFFSET_3,
  1010. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_SLAVE_ROI_BASE_OFFSET_4,
  1011. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_BRAINS_LOW,
  1012. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_BRAINS_HIGH,
  1013. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_HEADER_LOW,
  1014. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_HEADER_HIGH,
  1015. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_EUS_MASTER,
  1016. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_EUS_SLAVE,
  1017. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_CONV_KERNEL_SIZE_MINUS_1,
  1018. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_CONV_LOW,
  1019. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_CONV_HIGH,
  1020. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_OUTER_LOOP,
  1021. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_NUM_ITERATIONS_MINUS_1,
  1022. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SB_REPEAT,
  1023. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_FP8_BIAS,
  1024. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_RATE_LIMITER,
  1025. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_USER_DATA,
  1026. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_PERF_EVT_IN,
  1027. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_PERF_EVT_OUT,
  1028. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_PCU,
  1029. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SLAVE_SYNC_OBJ0_ADDR,
  1030. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SLAVE_SYNC_OBJ1_ADDR,
  1031. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_POWER_LOOP,
  1032. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE0_MASTER,
  1033. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE1_MASTER,
  1034. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE2_MASTER,
  1035. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE3_MASTER,
  1036. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE0_SLAVE,
  1037. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE1_SLAVE,
  1038. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE2_SLAVE,
  1039. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_SPARE3_SLAVE,
  1040. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_WKL_ID,
  1041. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_MASTER_ROI_BASE_OFFSET_0,
  1042. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_MASTER_ROI_BASE_OFFSET_1,
  1043. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_MASTER_ROI_BASE_OFFSET_2,
  1044. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_MASTER_ROI_BASE_OFFSET_3,
  1045. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_MASTER_ROI_BASE_OFFSET_4,
  1046. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_MASTER_ROI_BASE_OFFSET_0,
  1047. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_MASTER_ROI_BASE_OFFSET_1,
  1048. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_MASTER_ROI_BASE_OFFSET_2,
  1049. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_MASTER_ROI_BASE_OFFSET_3,
  1050. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_MASTER_ROI_BASE_OFFSET_4,
  1051. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_MASTER_ROI_BASE_OFFSET_0,
  1052. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_MASTER_ROI_BASE_OFFSET_1,
  1053. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_MASTER_ROI_BASE_OFFSET_2,
  1054. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_MASTER_ROI_BASE_OFFSET_3,
  1055. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_MASTER_ROI_BASE_OFFSET_4,
  1056. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_MASTER_ROI_BASE_OFFSET_0,
  1057. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_MASTER_ROI_BASE_OFFSET_1,
  1058. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_MASTER_ROI_BASE_OFFSET_2,
  1059. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_MASTER_ROI_BASE_OFFSET_3,
  1060. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_MASTER_ROI_BASE_OFFSET_4,
  1061. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_SLAVE_ROI_BASE_OFFSET_0,
  1062. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_SLAVE_ROI_BASE_OFFSET_1,
  1063. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_SLAVE_ROI_BASE_OFFSET_2,
  1064. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_SLAVE_ROI_BASE_OFFSET_3,
  1065. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_SLAVE_ROI_BASE_OFFSET_4,
  1066. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_MASTER_ROI_BASE_OFFSET_0,
  1067. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_MASTER_ROI_BASE_OFFSET_1,
  1068. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_MASTER_ROI_BASE_OFFSET_2,
  1069. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_MASTER_ROI_BASE_OFFSET_3,
  1070. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_MASTER_ROI_BASE_OFFSET_4,
  1071. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_VALID_ELEMENTS_0,
  1072. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_VALID_ELEMENTS_1,
  1073. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_VALID_ELEMENTS_2,
  1074. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_VALID_ELEMENTS_3,
  1075. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_VALID_ELEMENTS_4,
  1076. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_LOOP_STRIDE_0,
  1077. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_LOOP_STRIDE_1,
  1078. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_LOOP_STRIDE_2,
  1079. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_LOOP_STRIDE_3,
  1080. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_LOOP_STRIDE_4,
  1081. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_ROI_SIZE_0,
  1082. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_ROI_SIZE_1,
  1083. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_ROI_SIZE_2,
  1084. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_ROI_SIZE_3,
  1085. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_SPATIAL_STRIDES_0,
  1086. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_SPATIAL_STRIDES_1,
  1087. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_SPATIAL_STRIDES_2,
  1088. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_SPATIAL_STRIDES_3,
  1089. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_START_OFFSET_0,
  1090. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_START_OFFSET_1,
  1091. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_START_OFFSET_2,
  1092. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_START_OFFSET_3,
  1093. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_SLAVE_ROI_BASE_OFFSET_0,
  1094. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_SLAVE_ROI_BASE_OFFSET_1,
  1095. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_SLAVE_ROI_BASE_OFFSET_2,
  1096. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_SLAVE_ROI_BASE_OFFSET_3,
  1097. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_SLAVE_ROI_BASE_OFFSET_4,
  1098. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_COUT1_LOW,
  1099. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_COUT1_HIGH,
  1100. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_COUT0_LOW,
  1101. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_COUT0_HIGH,
  1102. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_A_LOW,
  1103. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_A_HIGH,
  1104. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_B_LOW,
  1105. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_B_HIGH,
  1106. mmDCORE0_MME_CTRL_LO_ARCH_STATUS,
  1107. mmDCORE0_MME_CTRL_LO_ARCH_SYNC_OBJ_DW0,
  1108. mmDCORE0_MME_CTRL_LO_ARCH_SYNC_OBJ_ADDR0,
  1109. mmDCORE0_MME_CTRL_LO_ARCH_SYNC_OBJ_VAL0,
  1110. mmDCORE0_MME_CTRL_LO_ARCH_SYNC_OBJ_ADDR1,
  1111. mmDCORE0_MME_CTRL_LO_ARCH_SYNC_OBJ_VAL1,
  1112. mmDCORE0_MME_CTRL_LO_ARCH_A_SS,
  1113. mmDCORE0_MME_CTRL_LO_ARCH_B_SS,
  1114. mmDCORE0_MME_CTRL_LO_ARCH_COUT_SS,
  1115. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_MASTER_ROI_BASE_OFFSET_0,
  1116. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_MASTER_ROI_BASE_OFFSET_1,
  1117. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_MASTER_ROI_BASE_OFFSET_2,
  1118. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_MASTER_ROI_BASE_OFFSET_3,
  1119. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_MASTER_ROI_BASE_OFFSET_4,
  1120. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_MASTER_ROI_BASE_OFFSET_0,
  1121. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_MASTER_ROI_BASE_OFFSET_1,
  1122. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_MASTER_ROI_BASE_OFFSET_2,
  1123. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_MASTER_ROI_BASE_OFFSET_3,
  1124. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_MASTER_ROI_BASE_OFFSET_4,
  1125. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_VALID_ELEMENTS_0,
  1126. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_VALID_ELEMENTS_1,
  1127. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_VALID_ELEMENTS_2,
  1128. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_VALID_ELEMENTS_3,
  1129. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_VALID_ELEMENTS_4,
  1130. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_LOOP_STRIDE_0,
  1131. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_LOOP_STRIDE_1,
  1132. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_LOOP_STRIDE_2,
  1133. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_LOOP_STRIDE_3,
  1134. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_LOOP_STRIDE_4,
  1135. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_ROI_SIZE_0,
  1136. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_ROI_SIZE_1,
  1137. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_ROI_SIZE_2,
  1138. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_ROI_SIZE_3,
  1139. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_SPATIAL_STRIDES_0,
  1140. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_SPATIAL_STRIDES_1,
  1141. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_SPATIAL_STRIDES_2,
  1142. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_SPATIAL_STRIDES_3,
  1143. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_START_OFFSET_0,
  1144. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_START_OFFSET_1,
  1145. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_START_OFFSET_2,
  1146. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_START_OFFSET_3,
  1147. mmDCORE0_MME_CTRL_LO_ARCH_BASE_ADDR_BASE,
  1148. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_START_BASE,
  1149. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_A_BASE,
  1150. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_BASE,
  1151. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_COUT_BASE,
  1152. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_MASTER_BASE,
  1153. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_SLAVE_BASE,
  1154. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_MASTER_BASE,
  1155. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN1_SLAVE_BASE,
  1156. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_MASTER_BASE,
  1157. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN2_SLAVE_BASE,
  1158. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_MASTER_BASE,
  1159. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN3_SLAVE_BASE,
  1160. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_MASTER_BASE,
  1161. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_SLAVE_BASE,
  1162. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_MASTER_BASE,
  1163. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_SLAVE_BASE,
  1164. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_MASTER_BASE,
  1165. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT1_SLAVE_BASE,
  1166. mmDCORE0_MME_CTRL_LO_ARCH_NON_TENSOR_END_BASE,
  1167. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_SLAVE_ROI_BASE_OFFSET_0,
  1168. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_SLAVE_ROI_BASE_OFFSET_1,
  1169. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_SLAVE_ROI_BASE_OFFSET_2,
  1170. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_SLAVE_ROI_BASE_OFFSET_3,
  1171. mmDCORE0_MME_CTRL_LO_ARCH_AGU_COUT0_SLAVE_ROI_BASE_OFFSET_4,
  1172. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_SLAVE_ROI_BASE_OFFSET_0,
  1173. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_SLAVE_ROI_BASE_OFFSET_1,
  1174. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_SLAVE_ROI_BASE_OFFSET_2,
  1175. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_SLAVE_ROI_BASE_OFFSET_3,
  1176. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN4_SLAVE_ROI_BASE_OFFSET_4,
  1177. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_VALID_ELEMENTS_0,
  1178. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_VALID_ELEMENTS_1,
  1179. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_VALID_ELEMENTS_2,
  1180. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_VALID_ELEMENTS_3,
  1181. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_VALID_ELEMENTS_4,
  1182. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_LOOP_STRIDE_0,
  1183. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_LOOP_STRIDE_1,
  1184. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_LOOP_STRIDE_2,
  1185. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_LOOP_STRIDE_3,
  1186. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_LOOP_STRIDE_4,
  1187. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_ROI_SIZE_0,
  1188. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_ROI_SIZE_1,
  1189. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_ROI_SIZE_2,
  1190. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_ROI_SIZE_3,
  1191. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_SPATIAL_STRIDES_0,
  1192. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_SPATIAL_STRIDES_1,
  1193. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_SPATIAL_STRIDES_2,
  1194. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_SPATIAL_STRIDES_3,
  1195. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_START_OFFSET_0,
  1196. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_START_OFFSET_1,
  1197. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_START_OFFSET_2,
  1198. mmDCORE0_MME_CTRL_LO_ARCH_TENSOR_B_START_OFFSET_3,
  1199. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_SLAVE_ROI_BASE_OFFSET_0,
  1200. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_SLAVE_ROI_BASE_OFFSET_1,
  1201. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_SLAVE_ROI_BASE_OFFSET_2,
  1202. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_SLAVE_ROI_BASE_OFFSET_3,
  1203. mmDCORE0_MME_CTRL_LO_ARCH_AGU_IN0_SLAVE_ROI_BASE_OFFSET_4,
  1204. mmDCORE0_MME_ACC_AP_LFSR_POLY,
  1205. mmDCORE0_MME_ACC_AP_LFSR_SEED_WDATA,
  1206. mmDCORE0_MME_ACC_AP_LFSR_SEED_SEL,
  1207. mmDCORE0_MME_ACC_AP_LFSR_SEED_RDATA,
  1208. mmDCORE0_MME_ACC_AP_LFSR_CLOSE_CGATE_DLY,
  1209. mmDCORE0_MME_ACC_WBC_SRC_BP,
  1210. };
  1211. static const u32 gaudi2_pb_dcr0_tpc0[] = {
  1212. mmDCORE0_TPC0_QM_BASE,
  1213. mmDCORE0_TPC0_CFG_BASE,
  1214. mmDCORE0_TPC0_MSTR_IF_RR_SHRD_HBW_BASE,
  1215. };
  1216. static const u32 gaudi2_pb_dcr0_tpc0_arc[] = {
  1217. mmDCORE0_TPC0_QM_ARC_AUX_BASE,
  1218. };
  1219. static const struct range gaudi2_pb_dcr0_tpc0_arc_unsecured_regs[] = {
  1220. {mmDCORE0_TPC0_QM_ARC_AUX_RUN_HALT_REQ, mmDCORE0_TPC0_QM_ARC_AUX_RUN_HALT_ACK},
  1221. {mmDCORE0_TPC0_QM_ARC_AUX_CLUSTER_NUM, mmDCORE0_TPC0_QM_ARC_AUX_WAKE_UP_EVENT},
  1222. {mmDCORE0_TPC0_QM_ARC_AUX_ARC_RST_REQ, mmDCORE0_TPC0_QM_ARC_AUX_CID_OFFSET_7},
  1223. {mmDCORE0_TPC0_QM_ARC_AUX_SCRATCHPAD_0, mmDCORE0_TPC0_QM_ARC_AUX_INFLIGHT_LBU_RD_CNT},
  1224. {mmDCORE0_TPC0_QM_ARC_AUX_CBU_EARLY_BRESP_EN, mmDCORE0_TPC0_QM_ARC_AUX_CBU_EARLY_BRESP_EN},
  1225. {mmDCORE0_TPC0_QM_ARC_AUX_LBU_EARLY_BRESP_EN, mmDCORE0_TPC0_QM_ARC_AUX_LBU_EARLY_BRESP_EN},
  1226. {mmDCORE0_TPC0_QM_ARC_AUX_DCCM_QUEUE_BASE_ADDR_0,
  1227. mmDCORE0_TPC0_QM_ARC_AUX_DCCM_QUEUE_ALERT_MSG},
  1228. {mmDCORE0_TPC0_QM_ARC_AUX_DCCM_Q_PUSH_FIFO_CNT,
  1229. mmDCORE0_TPC0_QM_ARC_AUX_QMAN_ARC_CQ_SHADOW_CI},
  1230. {mmDCORE0_TPC0_QM_ARC_AUX_ARC_AXI_ORDERING_WR_IF_CNT,
  1231. mmDCORE0_TPC0_QM_ARC_AUX_MME_ARC_UPPER_DCCM_EN},
  1232. };
  1233. static const u32 gaudi2_pb_dcr0_tpc0_unsecured_regs[] = {
  1234. mmDCORE0_TPC0_QM_CQ_CFG0_0,
  1235. mmDCORE0_TPC0_QM_CQ_CFG0_1,
  1236. mmDCORE0_TPC0_QM_CQ_CFG0_2,
  1237. mmDCORE0_TPC0_QM_CQ_CFG0_3,
  1238. mmDCORE0_TPC0_QM_CQ_CFG0_4,
  1239. mmDCORE0_TPC0_QM_CP_FENCE0_RDATA_0,
  1240. mmDCORE0_TPC0_QM_CP_FENCE0_RDATA_1,
  1241. mmDCORE0_TPC0_QM_CP_FENCE0_RDATA_2,
  1242. mmDCORE0_TPC0_QM_CP_FENCE0_RDATA_3,
  1243. mmDCORE0_TPC0_QM_CP_FENCE0_RDATA_4,
  1244. mmDCORE0_TPC0_QM_CP_FENCE1_RDATA_0,
  1245. mmDCORE0_TPC0_QM_CP_FENCE1_RDATA_1,
  1246. mmDCORE0_TPC0_QM_CP_FENCE1_RDATA_2,
  1247. mmDCORE0_TPC0_QM_CP_FENCE1_RDATA_3,
  1248. mmDCORE0_TPC0_QM_CP_FENCE1_RDATA_4,
  1249. mmDCORE0_TPC0_QM_CP_FENCE2_RDATA_0,
  1250. mmDCORE0_TPC0_QM_CP_FENCE2_RDATA_1,
  1251. mmDCORE0_TPC0_QM_CP_FENCE2_RDATA_2,
  1252. mmDCORE0_TPC0_QM_CP_FENCE2_RDATA_3,
  1253. mmDCORE0_TPC0_QM_CP_FENCE2_RDATA_4,
  1254. mmDCORE0_TPC0_QM_CP_FENCE3_RDATA_0,
  1255. mmDCORE0_TPC0_QM_CP_FENCE3_RDATA_1,
  1256. mmDCORE0_TPC0_QM_CP_FENCE3_RDATA_2,
  1257. mmDCORE0_TPC0_QM_CP_FENCE3_RDATA_3,
  1258. mmDCORE0_TPC0_QM_CP_FENCE3_RDATA_4,
  1259. mmDCORE0_TPC0_QM_CP_FENCE0_CNT_0,
  1260. mmDCORE0_TPC0_QM_CP_FENCE0_CNT_1,
  1261. mmDCORE0_TPC0_QM_CP_FENCE0_CNT_2,
  1262. mmDCORE0_TPC0_QM_CP_FENCE0_CNT_3,
  1263. mmDCORE0_TPC0_QM_CP_FENCE0_CNT_4,
  1264. mmDCORE0_TPC0_QM_CP_FENCE1_CNT_0,
  1265. mmDCORE0_TPC0_QM_CP_FENCE1_CNT_1,
  1266. mmDCORE0_TPC0_QM_CP_FENCE1_CNT_2,
  1267. mmDCORE0_TPC0_QM_CP_FENCE1_CNT_3,
  1268. mmDCORE0_TPC0_QM_CP_FENCE1_CNT_4,
  1269. mmDCORE0_TPC0_QM_CP_FENCE2_CNT_0,
  1270. mmDCORE0_TPC0_QM_CP_FENCE2_CNT_1,
  1271. mmDCORE0_TPC0_QM_CP_FENCE2_CNT_2,
  1272. mmDCORE0_TPC0_QM_CP_FENCE2_CNT_3,
  1273. mmDCORE0_TPC0_QM_CP_FENCE2_CNT_4,
  1274. mmDCORE0_TPC0_QM_CP_FENCE3_CNT_0,
  1275. mmDCORE0_TPC0_QM_CP_FENCE3_CNT_1,
  1276. mmDCORE0_TPC0_QM_CP_FENCE3_CNT_2,
  1277. mmDCORE0_TPC0_QM_CP_FENCE3_CNT_3,
  1278. mmDCORE0_TPC0_QM_CP_FENCE3_CNT_4,
  1279. mmDCORE0_TPC0_QM_CQ_PTR_LO_0,
  1280. mmDCORE0_TPC0_QM_CQ_PTR_HI_0,
  1281. mmDCORE0_TPC0_QM_CQ_TSIZE_0,
  1282. mmDCORE0_TPC0_QM_CQ_CTL_0,
  1283. mmDCORE0_TPC0_QM_CQ_PTR_LO_1,
  1284. mmDCORE0_TPC0_QM_CQ_PTR_HI_1,
  1285. mmDCORE0_TPC0_QM_CQ_TSIZE_1,
  1286. mmDCORE0_TPC0_QM_CQ_CTL_1,
  1287. mmDCORE0_TPC0_QM_CQ_PTR_LO_2,
  1288. mmDCORE0_TPC0_QM_CQ_PTR_HI_2,
  1289. mmDCORE0_TPC0_QM_CQ_TSIZE_2,
  1290. mmDCORE0_TPC0_QM_CQ_CTL_2,
  1291. mmDCORE0_TPC0_QM_CQ_PTR_LO_3,
  1292. mmDCORE0_TPC0_QM_CQ_PTR_HI_3,
  1293. mmDCORE0_TPC0_QM_CQ_TSIZE_3,
  1294. mmDCORE0_TPC0_QM_CQ_CTL_3,
  1295. mmDCORE0_TPC0_QM_CQ_PTR_LO_4,
  1296. mmDCORE0_TPC0_QM_CQ_PTR_HI_4,
  1297. mmDCORE0_TPC0_QM_CQ_TSIZE_4,
  1298. mmDCORE0_TPC0_QM_CQ_CTL_4,
  1299. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR0_BASE,
  1300. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR0_BASE + 4,
  1301. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR1_BASE,
  1302. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR1_BASE + 4,
  1303. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR2_BASE,
  1304. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR2_BASE + 4,
  1305. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR3_BASE,
  1306. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR3_BASE + 4,
  1307. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR4_BASE,
  1308. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR4_BASE + 4,
  1309. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR5_BASE,
  1310. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR5_BASE + 4,
  1311. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR6_BASE,
  1312. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR6_BASE + 4,
  1313. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR7_BASE,
  1314. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR7_BASE + 4,
  1315. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR8_BASE,
  1316. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR8_BASE + 4,
  1317. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR9_BASE,
  1318. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR9_BASE + 4,
  1319. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR10_BASE,
  1320. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR10_BASE + 4,
  1321. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR11_BASE,
  1322. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR11_BASE + 4,
  1323. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR12_BASE,
  1324. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR12_BASE + 4,
  1325. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR13_BASE,
  1326. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR13_BASE + 4,
  1327. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR14_BASE,
  1328. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR14_BASE + 4,
  1329. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR15_BASE,
  1330. mmDCORE0_TPC0_QM_QMAN_WR64_BASE_ADDR15_BASE + 4,
  1331. mmDCORE0_TPC0_QM_ARC_CQ_PTR_LO,
  1332. mmDCORE0_TPC0_QM_ARC_CQ_PTR_LO_STS,
  1333. mmDCORE0_TPC0_QM_ARC_CQ_PTR_HI,
  1334. mmDCORE0_TPC0_QM_ARC_CQ_PTR_HI_STS,
  1335. mmDCORE0_TPC0_QM_ARB_CFG_0,
  1336. mmDCORE0_TPC0_QM_ARB_MST_QUIET_PER,
  1337. mmDCORE0_TPC0_QM_ARB_CHOICE_Q_PUSH,
  1338. mmDCORE0_TPC0_QM_ARB_WRR_WEIGHT_0,
  1339. mmDCORE0_TPC0_QM_ARB_WRR_WEIGHT_1,
  1340. mmDCORE0_TPC0_QM_ARB_WRR_WEIGHT_2,
  1341. mmDCORE0_TPC0_QM_ARB_WRR_WEIGHT_3,
  1342. mmDCORE0_TPC0_QM_ARB_BASE_LO,
  1343. mmDCORE0_TPC0_QM_ARB_BASE_HI,
  1344. mmDCORE0_TPC0_QM_ARB_MST_SLAVE_EN,
  1345. mmDCORE0_TPC0_QM_ARB_MST_SLAVE_EN_1,
  1346. mmDCORE0_TPC0_QM_ARB_MST_CRED_INC,
  1347. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_0,
  1348. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_1,
  1349. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_2,
  1350. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_3,
  1351. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_4,
  1352. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_5,
  1353. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_6,
  1354. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_7,
  1355. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_8,
  1356. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_9,
  1357. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_10,
  1358. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_11,
  1359. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_12,
  1360. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_13,
  1361. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_14,
  1362. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_15,
  1363. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_16,
  1364. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_17,
  1365. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_18,
  1366. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_19,
  1367. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_20,
  1368. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_21,
  1369. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_22,
  1370. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_23,
  1371. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_24,
  1372. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_25,
  1373. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_26,
  1374. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_27,
  1375. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_28,
  1376. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_29,
  1377. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_30,
  1378. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_31,
  1379. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_32,
  1380. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_33,
  1381. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_34,
  1382. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_35,
  1383. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_36,
  1384. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_37,
  1385. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_38,
  1386. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_39,
  1387. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_40,
  1388. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_41,
  1389. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_42,
  1390. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_43,
  1391. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_44,
  1392. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_45,
  1393. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_46,
  1394. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_47,
  1395. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_48,
  1396. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_49,
  1397. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_50,
  1398. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_51,
  1399. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_52,
  1400. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_53,
  1401. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_54,
  1402. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_55,
  1403. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_56,
  1404. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_57,
  1405. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_58,
  1406. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_59,
  1407. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_60,
  1408. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_61,
  1409. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_62,
  1410. mmDCORE0_TPC0_QM_ARB_MST_CHOICE_PUSH_OFST_63,
  1411. mmDCORE0_TPC0_QM_ARB_SLV_ID,
  1412. mmDCORE0_TPC0_QM_ARB_SLV_MASTER_INC_CRED_OFST,
  1413. mmDCORE0_TPC0_QM_ARC_CQ_CFG0,
  1414. mmDCORE0_TPC0_QM_CQ_IFIFO_CI_0,
  1415. mmDCORE0_TPC0_QM_CQ_IFIFO_CI_1,
  1416. mmDCORE0_TPC0_QM_CQ_IFIFO_CI_2,
  1417. mmDCORE0_TPC0_QM_CQ_IFIFO_CI_3,
  1418. mmDCORE0_TPC0_QM_CQ_IFIFO_CI_4,
  1419. mmDCORE0_TPC0_QM_ARC_CQ_IFIFO_CI,
  1420. mmDCORE0_TPC0_QM_CQ_CTL_CI_0,
  1421. mmDCORE0_TPC0_QM_CQ_CTL_CI_1,
  1422. mmDCORE0_TPC0_QM_CQ_CTL_CI_2,
  1423. mmDCORE0_TPC0_QM_CQ_CTL_CI_3,
  1424. mmDCORE0_TPC0_QM_CQ_CTL_CI_4,
  1425. mmDCORE0_TPC0_QM_ARC_CQ_CTL_CI,
  1426. mmDCORE0_TPC0_QM_ARC_CQ_TSIZE,
  1427. mmDCORE0_TPC0_QM_ARC_CQ_CTL,
  1428. mmDCORE0_TPC0_QM_CP_SWITCH_WD_SET,
  1429. mmDCORE0_TPC0_QM_CP_EXT_SWITCH,
  1430. mmDCORE0_TPC0_QM_CP_PRED_0,
  1431. mmDCORE0_TPC0_QM_CP_PRED_1,
  1432. mmDCORE0_TPC0_QM_CP_PRED_2,
  1433. mmDCORE0_TPC0_QM_CP_PRED_3,
  1434. mmDCORE0_TPC0_QM_CP_PRED_4,
  1435. mmDCORE0_TPC0_QM_CP_PRED_UPEN_0,
  1436. mmDCORE0_TPC0_QM_CP_PRED_UPEN_1,
  1437. mmDCORE0_TPC0_QM_CP_PRED_UPEN_2,
  1438. mmDCORE0_TPC0_QM_CP_PRED_UPEN_3,
  1439. mmDCORE0_TPC0_QM_CP_PRED_UPEN_4,
  1440. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_LO_0,
  1441. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_LO_1,
  1442. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_LO_2,
  1443. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_LO_3,
  1444. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_LO_4,
  1445. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_HI_0,
  1446. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_HI_1,
  1447. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_HI_2,
  1448. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_HI_3,
  1449. mmDCORE0_TPC0_QM_CP_MSG_BASE0_ADDR_HI_4,
  1450. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_LO_0,
  1451. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_LO_1,
  1452. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_LO_2,
  1453. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_LO_3,
  1454. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_LO_4,
  1455. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_HI_0,
  1456. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_HI_1,
  1457. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_HI_2,
  1458. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_HI_3,
  1459. mmDCORE0_TPC0_QM_CP_MSG_BASE1_ADDR_HI_4,
  1460. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_LO_0,
  1461. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_LO_1,
  1462. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_LO_2,
  1463. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_LO_3,
  1464. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_LO_4,
  1465. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_HI_0,
  1466. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_HI_1,
  1467. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_HI_2,
  1468. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_HI_3,
  1469. mmDCORE0_TPC0_QM_CP_MSG_BASE2_ADDR_HI_4,
  1470. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_LO_0,
  1471. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_LO_1,
  1472. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_LO_2,
  1473. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_LO_3,
  1474. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_LO_4,
  1475. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_HI_0,
  1476. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_HI_1,
  1477. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_HI_2,
  1478. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_HI_3,
  1479. mmDCORE0_TPC0_QM_CP_MSG_BASE3_ADDR_HI_4,
  1480. mmDCORE0_TPC0_QM_ARC_CQ_IFIFO_MSG_BASE_LO,
  1481. mmDCORE0_TPC0_QM_ARC_CQ_CTL_MSG_BASE_LO,
  1482. mmDCORE0_TPC0_QM_CQ_IFIFO_MSG_BASE_LO,
  1483. mmDCORE0_TPC0_QM_CQ_CTL_MSG_BASE_LO,
  1484. mmDCORE0_TPC0_CFG_QM_SYNC_OBJECT_MESSAGE,
  1485. mmDCORE0_TPC0_CFG_QM_SYNC_OBJECT_ADDR,
  1486. mmDCORE0_TPC0_CFG_QM_KERNEL_BASE_ADDRESS_LOW,
  1487. mmDCORE0_TPC0_CFG_QM_KERNEL_BASE_ADDRESS_HIGH,
  1488. mmDCORE0_TPC0_CFG_QM_TID_BASE_DIM_0,
  1489. mmDCORE0_TPC0_CFG_QM_TID_SIZE_DIM_0,
  1490. mmDCORE0_TPC0_CFG_QM_TID_BASE_DIM_1,
  1491. mmDCORE0_TPC0_CFG_QM_TID_SIZE_DIM_1,
  1492. mmDCORE0_TPC0_CFG_QM_TID_BASE_DIM_2,
  1493. mmDCORE0_TPC0_CFG_QM_TID_SIZE_DIM_2,
  1494. mmDCORE0_TPC0_CFG_QM_TID_BASE_DIM_3,
  1495. mmDCORE0_TPC0_CFG_QM_TID_SIZE_DIM_3,
  1496. mmDCORE0_TPC0_CFG_QM_TID_BASE_DIM_4,
  1497. mmDCORE0_TPC0_CFG_QM_TID_SIZE_DIM_4,
  1498. mmDCORE0_TPC0_CFG_QM_KERNEL_CONFIG,
  1499. mmDCORE0_TPC0_CFG_QM_KERNEL_ID,
  1500. mmDCORE0_TPC0_CFG_QM_POWER_LOOP,
  1501. mmDCORE0_TPC0_CFG_LUT_FUNC32_BASE2_ADDR_LO,
  1502. mmDCORE0_TPC0_CFG_LUT_FUNC32_BASE2_ADDR_HI,
  1503. mmDCORE0_TPC0_CFG_LUT_FUNC64_BASE2_ADDR_LO,
  1504. mmDCORE0_TPC0_CFG_LUT_FUNC64_BASE2_ADDR_HI,
  1505. mmDCORE0_TPC0_CFG_LUT_FUNC128_BASE2_ADDR_LO,
  1506. mmDCORE0_TPC0_CFG_LUT_FUNC128_BASE2_ADDR_HI,
  1507. mmDCORE0_TPC0_CFG_LUT_FUNC256_BASE2_ADDR_LO,
  1508. mmDCORE0_TPC0_CFG_LUT_FUNC256_BASE2_ADDR_HI,
  1509. mmDCORE0_TPC0_CFG_ROUND_CSR,
  1510. mmDCORE0_TPC0_CFG_CONV_ROUND_CSR,
  1511. mmDCORE0_TPC0_CFG_SEMAPHORE,
  1512. mmDCORE0_TPC0_CFG_LFSR_POLYNOM,
  1513. mmDCORE0_TPC0_CFG_STATUS,
  1514. mmDCORE0_TPC0_CFG_TPC_CMD,
  1515. mmDCORE0_TPC0_CFG_TPC_EXECUTE,
  1516. mmDCORE0_TPC0_CFG_TPC_DCACHE_L0CD,
  1517. mmDCORE0_TPC0_CFG_ICACHE_BASE_ADDERESS_LOW,
  1518. mmDCORE0_TPC0_CFG_ICACHE_BASE_ADDERESS_HIGH,
  1519. mmDCORE0_TPC0_CFG_RD_RATE_LIMIT,
  1520. mmDCORE0_TPC0_CFG_WR_RATE_LIMIT,
  1521. mmDCORE0_TPC0_CFG_LUT_FUNC32_BASE_ADDR_LO,
  1522. mmDCORE0_TPC0_CFG_LUT_FUNC32_BASE_ADDR_HI,
  1523. mmDCORE0_TPC0_CFG_LUT_FUNC64_BASE_ADDR_LO,
  1524. mmDCORE0_TPC0_CFG_LUT_FUNC64_BASE_ADDR_HI,
  1525. mmDCORE0_TPC0_CFG_LUT_FUNC128_BASE_ADDR_LO,
  1526. mmDCORE0_TPC0_CFG_LUT_FUNC128_BASE_ADDR_HI,
  1527. mmDCORE0_TPC0_CFG_LUT_FUNC256_BASE_ADDR_LO,
  1528. mmDCORE0_TPC0_CFG_LUT_FUNC256_BASE_ADDR_HI,
  1529. mmDCORE0_TPC0_CFG_KERNEL_SRF_0,
  1530. mmDCORE0_TPC0_CFG_KERNEL_SRF_1,
  1531. mmDCORE0_TPC0_CFG_KERNEL_SRF_2,
  1532. mmDCORE0_TPC0_CFG_KERNEL_SRF_3,
  1533. mmDCORE0_TPC0_CFG_KERNEL_SRF_4,
  1534. mmDCORE0_TPC0_CFG_KERNEL_SRF_5,
  1535. mmDCORE0_TPC0_CFG_KERNEL_SRF_6,
  1536. mmDCORE0_TPC0_CFG_KERNEL_SRF_7,
  1537. mmDCORE0_TPC0_CFG_KERNEL_SRF_8,
  1538. mmDCORE0_TPC0_CFG_KERNEL_SRF_9,
  1539. mmDCORE0_TPC0_CFG_KERNEL_SRF_10,
  1540. mmDCORE0_TPC0_CFG_KERNEL_SRF_11,
  1541. mmDCORE0_TPC0_CFG_KERNEL_SRF_12,
  1542. mmDCORE0_TPC0_CFG_KERNEL_SRF_13,
  1543. mmDCORE0_TPC0_CFG_KERNEL_SRF_14,
  1544. mmDCORE0_TPC0_CFG_KERNEL_SRF_15,
  1545. mmDCORE0_TPC0_CFG_KERNEL_SRF_16,
  1546. mmDCORE0_TPC0_CFG_KERNEL_SRF_17,
  1547. mmDCORE0_TPC0_CFG_KERNEL_SRF_18,
  1548. mmDCORE0_TPC0_CFG_KERNEL_SRF_19,
  1549. mmDCORE0_TPC0_CFG_KERNEL_SRF_20,
  1550. mmDCORE0_TPC0_CFG_KERNEL_SRF_21,
  1551. mmDCORE0_TPC0_CFG_KERNEL_SRF_22,
  1552. mmDCORE0_TPC0_CFG_KERNEL_SRF_23,
  1553. mmDCORE0_TPC0_CFG_KERNEL_SRF_24,
  1554. mmDCORE0_TPC0_CFG_KERNEL_SRF_25,
  1555. mmDCORE0_TPC0_CFG_KERNEL_SRF_26,
  1556. mmDCORE0_TPC0_CFG_KERNEL_SRF_27,
  1557. mmDCORE0_TPC0_CFG_KERNEL_SRF_28,
  1558. mmDCORE0_TPC0_CFG_KERNEL_SRF_29,
  1559. mmDCORE0_TPC0_CFG_KERNEL_SRF_30,
  1560. mmDCORE0_TPC0_CFG_KERNEL_SRF_31,
  1561. mmDCORE0_TPC0_CFG_TPC_SB_L0CD,
  1562. mmDCORE0_TPC0_CFG_QM_KERNEL_ID_INC,
  1563. mmDCORE0_TPC0_CFG_QM_TID_BASE_SIZE_HIGH_DIM_0,
  1564. mmDCORE0_TPC0_CFG_QM_TID_BASE_SIZE_HIGH_DIM_1,
  1565. mmDCORE0_TPC0_CFG_QM_TID_BASE_SIZE_HIGH_DIM_2,
  1566. mmDCORE0_TPC0_CFG_QM_TID_BASE_SIZE_HIGH_DIM_3,
  1567. mmDCORE0_TPC0_CFG_QM_TID_BASE_SIZE_HIGH_DIM_4,
  1568. mmDCORE0_TPC0_CFG_SPECIAL_GLBL_SPARE_0,
  1569. mmDCORE0_TPC0_CFG_SPECIAL_GLBL_SPARE_1,
  1570. mmDCORE0_TPC0_CFG_SPECIAL_GLBL_SPARE_2,
  1571. mmDCORE0_TPC0_CFG_SPECIAL_GLBL_SPARE_3
  1572. };
  1573. static const u32 gaudi2_pb_dcr0_tpc0_ktensor_unsecured_regs[] = {
  1574. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_BASE_ADDR_LOW,
  1575. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_BASE_ADDR_HIGH,
  1576. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_PADDING_VALUE,
  1577. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_TENSOR_CONFIG,
  1578. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_0_SIZE,
  1579. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_0_STRIDE,
  1580. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_1_SIZE,
  1581. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_1_STRIDE,
  1582. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_2_SIZE,
  1583. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_2_STRIDE,
  1584. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_3_SIZE,
  1585. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_3_STRIDE,
  1586. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_4_SIZE,
  1587. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_4_STRIDE,
  1588. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_PREF_STRIDE,
  1589. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_0_SIZE_STRIDE_HIGH,
  1590. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_1_SIZE_STRIDE_HIGH,
  1591. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_2_SIZE_STRIDE_HIGH,
  1592. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_3_SIZE_STRIDE_HIGH,
  1593. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_DIM_4_SIZE_STRIDE_HIGH,
  1594. };
  1595. static const u32 gaudi2_pb_dcr0_tpc0_qtensor_unsecured_regs[] = {
  1596. mmDCORE0_TPC0_CFG_QM_TENSOR_0_BASE_ADDR_LOW,
  1597. mmDCORE0_TPC0_CFG_QM_TENSOR_0_BASE_ADDR_HIGH,
  1598. mmDCORE0_TPC0_CFG_QM_TENSOR_0_PADDING_VALUE,
  1599. mmDCORE0_TPC0_CFG_QM_TENSOR_0_TENSOR_CONFIG,
  1600. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_0_SIZE,
  1601. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_0_STRIDE,
  1602. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_1_SIZE,
  1603. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_1_STRIDE,
  1604. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_2_SIZE,
  1605. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_2_STRIDE,
  1606. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_3_SIZE,
  1607. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_3_STRIDE,
  1608. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_4_SIZE,
  1609. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_4_STRIDE,
  1610. mmDCORE0_TPC0_CFG_QM_TENSOR_0_PREF_STRIDE,
  1611. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_0_SIZE_STRIDE_HIGH,
  1612. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_1_SIZE_STRIDE_HIGH,
  1613. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_2_SIZE_STRIDE_HIGH,
  1614. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_3_SIZE_STRIDE_HIGH,
  1615. mmDCORE0_TPC0_CFG_QM_TENSOR_0_DIM_4_SIZE_STRIDE_HIGH,
  1616. };
  1617. static const u32 gaudi2_pb_dcr0_sram0[] = {
  1618. mmDCORE0_SRAM0_BANK_BASE,
  1619. mmDCORE0_SRAM0_DBG_CNT_N_HBW_DBG_CNT_BASE,
  1620. mmDCORE0_SRAM0_RTR_BASE,
  1621. };
  1622. static const u32 gaudi2_pb_dcr0_sm_mstr_if[] = {
  1623. mmDCORE0_SYNC_MNGR_MSTR_IF_RR_SHRD_HBW_BASE,
  1624. };
  1625. static const u32 gaudi2_pb_dcr0_sm_glbl[] = {
  1626. mmDCORE0_SYNC_MNGR_GLBL_BASE,
  1627. };
  1628. static const struct range gaudi2_pb_dcr0_sm_glbl_unsecured_regs[] = {
  1629. {mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_L_1, mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_L_63},
  1630. {mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_H_1, mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_H_63},
  1631. {mmDCORE0_SYNC_MNGR_GLBL_CQ_SIZE_LOG2_1, mmDCORE0_SYNC_MNGR_GLBL_CQ_SIZE_LOG2_63},
  1632. {mmDCORE0_SYNC_MNGR_GLBL_CQ_PI_1, mmDCORE0_SYNC_MNGR_GLBL_CQ_PI_63},
  1633. {mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_L_1, mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_L_63},
  1634. {mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_H_1, mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_H_63},
  1635. {mmDCORE0_SYNC_MNGR_GLBL_LBW_DATA_1, mmDCORE0_SYNC_MNGR_GLBL_LBW_DATA_63},
  1636. {mmDCORE0_SYNC_MNGR_GLBL_CQ_INC_MODE_1, mmDCORE0_SYNC_MNGR_GLBL_CQ_INC_MODE_63},
  1637. };
  1638. static const struct range gaudi2_pb_dcr_x_sm_glbl_unsecured_regs[] = {
  1639. {mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_L_0, mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_L_63},
  1640. {mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_H_0, mmDCORE0_SYNC_MNGR_GLBL_CQ_BASE_ADDR_H_63},
  1641. {mmDCORE0_SYNC_MNGR_GLBL_CQ_SIZE_LOG2_0, mmDCORE0_SYNC_MNGR_GLBL_CQ_SIZE_LOG2_63},
  1642. {mmDCORE0_SYNC_MNGR_GLBL_CQ_PI_0, mmDCORE0_SYNC_MNGR_GLBL_CQ_PI_63},
  1643. {mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_L_0, mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_L_63},
  1644. {mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_H_0, mmDCORE0_SYNC_MNGR_GLBL_LBW_ADDR_H_63},
  1645. {mmDCORE0_SYNC_MNGR_GLBL_LBW_DATA_0, mmDCORE0_SYNC_MNGR_GLBL_LBW_DATA_63},
  1646. {mmDCORE0_SYNC_MNGR_GLBL_CQ_INC_MODE_0, mmDCORE0_SYNC_MNGR_GLBL_CQ_INC_MODE_63},
  1647. };
  1648. static const u32 gaudi2_pb_arc_sched[] = {
  1649. mmARC_FARM_ARC0_AUX_BASE,
  1650. mmARC_FARM_ARC0_DUP_ENG_BASE,
  1651. mmARC_FARM_ARC0_ACP_ENG_BASE,
  1652. };
  1653. static const struct range gaudi2_pb_arc_sched_unsecured_regs[] = {
  1654. {mmARC_FARM_ARC0_AUX_RUN_HALT_REQ, mmARC_FARM_ARC0_AUX_RUN_HALT_ACK},
  1655. {mmARC_FARM_ARC0_AUX_CLUSTER_NUM, mmARC_FARM_ARC0_AUX_WAKE_UP_EVENT},
  1656. {mmARC_FARM_ARC0_AUX_ARC_RST_REQ, mmARC_FARM_ARC0_AUX_CID_OFFSET_7},
  1657. {mmARC_FARM_ARC0_AUX_SCRATCHPAD_0, mmARC_FARM_ARC0_AUX_INFLIGHT_LBU_RD_CNT},
  1658. {mmARC_FARM_ARC0_AUX_CBU_EARLY_BRESP_EN, mmARC_FARM_ARC0_AUX_CBU_EARLY_BRESP_EN},
  1659. {mmARC_FARM_ARC0_AUX_LBU_EARLY_BRESP_EN, mmARC_FARM_ARC0_AUX_LBU_EARLY_BRESP_EN},
  1660. {mmARC_FARM_ARC0_AUX_DCCM_QUEUE_BASE_ADDR_0, mmARC_FARM_ARC0_AUX_DCCM_QUEUE_ALERT_MSG},
  1661. {mmARC_FARM_ARC0_AUX_DCCM_Q_PUSH_FIFO_CNT, mmARC_FARM_ARC0_AUX_QMAN_ARC_CQ_SHADOW_CI},
  1662. {mmARC_FARM_ARC0_AUX_ARC_AXI_ORDERING_WR_IF_CNT, mmARC_FARM_ARC0_AUX_MME_ARC_UPPER_DCCM_EN},
  1663. {mmARC_FARM_ARC0_DUP_ENG_DUP_TPC_ENG_ADDR_0, mmARC_FARM_ARC0_DUP_ENG_ARC_CID_OFFSET_63},
  1664. {mmARC_FARM_ARC0_DUP_ENG_AXUSER_HB_STRONG_ORDER, mmARC_FARM_ARC0_DUP_ENG_AXUSER_LB_OVRD},
  1665. {mmARC_FARM_ARC0_ACP_ENG_ACP_PI_REG_0, mmARC_FARM_ARC0_ACP_ENG_ACP_DBG_REG},
  1666. };
  1667. static const u32 gaudi2_pb_xbar_mid[] = {
  1668. mmXBAR_MID_0_BASE,
  1669. };
  1670. static const u32 gaudi2_pb_xbar_mid_unsecured_regs[] = {
  1671. mmXBAR_MID_0_UPSCALE,
  1672. mmXBAR_MID_0_DOWN_CONV,
  1673. mmXBAR_MID_0_DOWN_CONV_LFSR_EN,
  1674. mmXBAR_MID_0_DOWN_CONV_LFSR_SET_VLD,
  1675. mmXBAR_MID_0_DOWN_CONV_LFSR_SET_VALUE,
  1676. mmXBAR_MID_0_DOWN_CONV_LFSR_CFG_POLY,
  1677. };
  1678. static const u32 gaudi2_pb_xbar_edge[] = {
  1679. mmXBAR_EDGE_0_BASE,
  1680. };
  1681. static const u32 gaudi2_pb_xbar_edge_unsecured_regs[] = {
  1682. mmXBAR_EDGE_0_UPSCALE,
  1683. mmXBAR_EDGE_0_DOWN_CONV,
  1684. mmXBAR_EDGE_0_DOWN_CONV_LFSR_EN,
  1685. mmXBAR_EDGE_0_DOWN_CONV_LFSR_SET_VLD,
  1686. mmXBAR_EDGE_0_DOWN_CONV_LFSR_SET_VALUE,
  1687. mmXBAR_EDGE_0_DOWN_CONV_LFSR_CFG_POLY,
  1688. };
  1689. static const u32 gaudi2_pb_nic0[] = {
  1690. mmNIC0_TMR_BASE,
  1691. mmNIC0_RXB_CORE_BASE,
  1692. mmNIC0_RXE0_BASE,
  1693. mmNIC0_RXE1_BASE,
  1694. mmNIC0_RXE0_AXUSER_AXUSER_CQ0_BASE,
  1695. mmNIC0_RXE1_AXUSER_AXUSER_CQ0_BASE,
  1696. mmNIC0_TXS0_BASE,
  1697. mmNIC0_TXS1_BASE,
  1698. mmNIC0_TXE0_BASE,
  1699. mmNIC0_TXE1_BASE,
  1700. mmNIC0_TXB_BASE,
  1701. mmNIC0_MSTR_IF_RR_SHRD_HBW_BASE,
  1702. };
  1703. static const u32 gaudi2_pb_nic0_qm_qpc[] = {
  1704. mmNIC0_QM0_BASE,
  1705. mmNIC0_QPC0_BASE,
  1706. };
  1707. static const u32 gaudi2_pb_nic0_qm_arc_aux0[] = {
  1708. mmNIC0_QM_ARC_AUX0_BASE,
  1709. };
  1710. static const struct range gaudi2_pb_nic0_qm_arc_aux0_unsecured_regs[] = {
  1711. {mmNIC0_QM_ARC_AUX0_RUN_HALT_REQ, mmNIC0_QM_ARC_AUX0_RUN_HALT_ACK},
  1712. {mmNIC0_QM_ARC_AUX0_CLUSTER_NUM, mmNIC0_QM_ARC_AUX0_WAKE_UP_EVENT},
  1713. {mmNIC0_QM_ARC_AUX0_ARC_RST_REQ, mmNIC0_QM_ARC_AUX0_CID_OFFSET_7},
  1714. {mmNIC0_QM_ARC_AUX0_SCRATCHPAD_0, mmNIC0_QM_ARC_AUX0_INFLIGHT_LBU_RD_CNT},
  1715. {mmNIC0_QM_ARC_AUX0_LBU_EARLY_BRESP_EN, mmNIC0_QM_ARC_AUX0_LBU_EARLY_BRESP_EN},
  1716. {mmNIC0_QM_ARC_AUX0_DCCM_QUEUE_BASE_ADDR_0, mmNIC0_QM_ARC_AUX0_DCCM_QUEUE_ALERT_MSG},
  1717. {mmNIC0_QM_ARC_AUX0_DCCM_Q_PUSH_FIFO_CNT, mmNIC0_QM_ARC_AUX0_QMAN_ARC_CQ_SHADOW_CI},
  1718. {mmNIC0_QM_ARC_AUX0_ARC_AXI_ORDERING_WR_IF_CNT, mmNIC0_QM_ARC_AUX0_MME_ARC_UPPER_DCCM_EN},
  1719. };
  1720. static const u32 gaudi2_pb_nic0_umr[] = {
  1721. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE,
  1722. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 1, /* UMR0_1 */
  1723. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 2, /* UMR0_2 */
  1724. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 3, /* UMR0_3 */
  1725. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 4, /* UMR0_4 */
  1726. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 5, /* UMR0_5 */
  1727. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 6, /* UMR0_6 */
  1728. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 7, /* UMR0_7 */
  1729. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 8, /* UMR0_8 */
  1730. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 9, /* UMR0_9 */
  1731. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 10, /* UMR0_10 */
  1732. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 11, /* UMR0_11 */
  1733. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 12, /* UMR0_12 */
  1734. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 13, /* UMR0_13 */
  1735. mmNIC0_UMR0_0_UNSECURE_DOORBELL0_BASE + HL_BLOCK_SIZE * 14, /* UMR0_14 */
  1736. };
  1737. static const struct range gaudi2_pb_nic0_umr_unsecured_regs[] = {
  1738. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32,
  1739. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX},
  1740. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 1, /* UMR0_1 */
  1741. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 1},
  1742. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 2, /* UMR0_2 */
  1743. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 2},
  1744. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 3, /* UMR0_3 */
  1745. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 3},
  1746. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 4, /* UMR0_4 */
  1747. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 4},
  1748. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 5, /* UMR0_5 */
  1749. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 5},
  1750. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 6, /* UMR0_6 */
  1751. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 6},
  1752. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 7, /* UMR0_7 */
  1753. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 7},
  1754. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 8, /* UMR0_8 */
  1755. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 8},
  1756. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 9, /* UMR0_9 */
  1757. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 9},
  1758. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 10, /* UMR0_10 */
  1759. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 10},
  1760. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 11, /* UMR0_11 */
  1761. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 11},
  1762. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 12, /* UMR0_12 */
  1763. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 12},
  1764. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 13, /* UMR0_13 */
  1765. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 13},
  1766. {mmNIC0_UMR0_0_UNSECURE_DOORBELL0_UNSECURE_DB_FIRST32 + HL_BLOCK_SIZE * 14, /* UMR0_14 */
  1767. mmNIC0_UMR0_0_COMPLETION_QUEUE_CI_1_CQ_CONSUMER_INDEX + HL_BLOCK_SIZE * 14},
  1768. };
  1769. /*
  1770. * mmNIC0_QPC0_LINEAR_WQE_QPN and mmNIC0_QPC0_MULTI_STRIDE_WQE_QPN are 32-bit
  1771. * registers and since the user writes in bulks of 64 bits we need to un-secure
  1772. * also the following 32 bits (that's why we added also the next 4 bytes to the
  1773. * table). In the RTL, as part of ECO (2874), writing to the next 4 bytes
  1774. * triggers a write to the SPECIAL_GLBL_SPARE register, hence it's must be
  1775. * unsecured as well.
  1776. */
  1777. #define mmNIC0_QPC0_LINEAR_WQE_RSV (mmNIC0_QPC0_LINEAR_WQE_QPN + 4)
  1778. #define mmNIC0_QPC0_MULTI_STRIDE_WQE_RSV (mmNIC0_QPC0_MULTI_STRIDE_WQE_QPN + 4)
  1779. #define mmNIC0_QPC0_SPECIAL_GLBL_SPARE 0x541FF60
  1780. static const u32 gaudi2_pb_nic0_qm_qpc_unsecured_regs[] = {
  1781. mmNIC0_QPC0_LINEAR_WQE_STATIC_0,
  1782. mmNIC0_QPC0_LINEAR_WQE_STATIC_1,
  1783. mmNIC0_QPC0_LINEAR_WQE_STATIC_2,
  1784. mmNIC0_QPC0_LINEAR_WQE_STATIC_3,
  1785. mmNIC0_QPC0_LINEAR_WQE_STATIC_4,
  1786. mmNIC0_QPC0_LINEAR_WQE_STATIC_5,
  1787. mmNIC0_QPC0_LINEAR_WQE_STATIC_6,
  1788. mmNIC0_QPC0_LINEAR_WQE_STATIC_7,
  1789. mmNIC0_QPC0_LINEAR_WQE_STATIC_8,
  1790. mmNIC0_QPC0_LINEAR_WQE_STATIC_9,
  1791. mmNIC0_QPC0_LINEAR_WQE_DYNAMIC_0,
  1792. mmNIC0_QPC0_LINEAR_WQE_DYNAMIC_1,
  1793. mmNIC0_QPC0_LINEAR_WQE_DYNAMIC_2,
  1794. mmNIC0_QPC0_LINEAR_WQE_DYNAMIC_3,
  1795. mmNIC0_QPC0_LINEAR_WQE_DYNAMIC_4,
  1796. mmNIC0_QPC0_LINEAR_WQE_DYNAMIC_5,
  1797. mmNIC0_QPC0_LINEAR_WQE_QPN,
  1798. mmNIC0_QPC0_LINEAR_WQE_RSV,
  1799. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_0,
  1800. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_1,
  1801. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_2,
  1802. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_3,
  1803. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_4,
  1804. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_5,
  1805. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_6,
  1806. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_7,
  1807. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_8,
  1808. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_9,
  1809. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_10,
  1810. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_11,
  1811. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_12,
  1812. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_13,
  1813. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_14,
  1814. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_15,
  1815. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_16,
  1816. mmNIC0_QPC0_MULTI_STRIDE_WQE_STATIC_17,
  1817. mmNIC0_QPC0_MULTI_STRIDE_WQE_DYNAMIC_0,
  1818. mmNIC0_QPC0_MULTI_STRIDE_WQE_DYNAMIC_1,
  1819. mmNIC0_QPC0_MULTI_STRIDE_WQE_DYNAMIC_2,
  1820. mmNIC0_QPC0_MULTI_STRIDE_WQE_DYNAMIC_3,
  1821. mmNIC0_QPC0_MULTI_STRIDE_WQE_DYNAMIC_4,
  1822. mmNIC0_QPC0_MULTI_STRIDE_WQE_DYNAMIC_5,
  1823. mmNIC0_QPC0_MULTI_STRIDE_WQE_QPN,
  1824. mmNIC0_QPC0_MULTI_STRIDE_WQE_RSV,
  1825. mmNIC0_QPC0_QMAN_DOORBELL,
  1826. mmNIC0_QPC0_QMAN_DOORBELL_QPN,
  1827. mmNIC0_QPC0_SPECIAL_GLBL_SPARE,
  1828. mmNIC0_QM0_CQ_CFG0_0,
  1829. mmNIC0_QM0_CQ_CFG0_1,
  1830. mmNIC0_QM0_CQ_CFG0_2,
  1831. mmNIC0_QM0_CQ_CFG0_3,
  1832. mmNIC0_QM0_CQ_CFG0_4,
  1833. mmNIC0_QM0_CP_FENCE0_RDATA_0,
  1834. mmNIC0_QM0_CP_FENCE0_RDATA_1,
  1835. mmNIC0_QM0_CP_FENCE0_RDATA_2,
  1836. mmNIC0_QM0_CP_FENCE0_RDATA_3,
  1837. mmNIC0_QM0_CP_FENCE0_RDATA_4,
  1838. mmNIC0_QM0_CP_FENCE1_RDATA_0,
  1839. mmNIC0_QM0_CP_FENCE1_RDATA_1,
  1840. mmNIC0_QM0_CP_FENCE1_RDATA_2,
  1841. mmNIC0_QM0_CP_FENCE1_RDATA_3,
  1842. mmNIC0_QM0_CP_FENCE1_RDATA_4,
  1843. mmNIC0_QM0_CP_FENCE2_RDATA_0,
  1844. mmNIC0_QM0_CP_FENCE2_RDATA_1,
  1845. mmNIC0_QM0_CP_FENCE2_RDATA_2,
  1846. mmNIC0_QM0_CP_FENCE2_RDATA_3,
  1847. mmNIC0_QM0_CP_FENCE2_RDATA_4,
  1848. mmNIC0_QM0_CP_FENCE3_RDATA_0,
  1849. mmNIC0_QM0_CP_FENCE3_RDATA_1,
  1850. mmNIC0_QM0_CP_FENCE3_RDATA_2,
  1851. mmNIC0_QM0_CP_FENCE3_RDATA_3,
  1852. mmNIC0_QM0_CP_FENCE3_RDATA_4,
  1853. mmNIC0_QM0_CP_FENCE0_CNT_0,
  1854. mmNIC0_QM0_CP_FENCE0_CNT_1,
  1855. mmNIC0_QM0_CP_FENCE0_CNT_2,
  1856. mmNIC0_QM0_CP_FENCE0_CNT_3,
  1857. mmNIC0_QM0_CP_FENCE0_CNT_4,
  1858. mmNIC0_QM0_CP_FENCE1_CNT_0,
  1859. mmNIC0_QM0_CP_FENCE1_CNT_1,
  1860. mmNIC0_QM0_CP_FENCE1_CNT_2,
  1861. mmNIC0_QM0_CP_FENCE1_CNT_3,
  1862. mmNIC0_QM0_CP_FENCE1_CNT_4,
  1863. mmNIC0_QM0_CP_FENCE2_CNT_0,
  1864. mmNIC0_QM0_CP_FENCE2_CNT_1,
  1865. mmNIC0_QM0_CP_FENCE2_CNT_2,
  1866. mmNIC0_QM0_CP_FENCE2_CNT_3,
  1867. mmNIC0_QM0_CP_FENCE2_CNT_4,
  1868. mmNIC0_QM0_CP_FENCE3_CNT_0,
  1869. mmNIC0_QM0_CP_FENCE3_CNT_1,
  1870. mmNIC0_QM0_CP_FENCE3_CNT_2,
  1871. mmNIC0_QM0_CP_FENCE3_CNT_3,
  1872. mmNIC0_QM0_CP_FENCE3_CNT_4,
  1873. mmNIC0_QM0_CQ_PTR_LO_0,
  1874. mmNIC0_QM0_CQ_PTR_HI_0,
  1875. mmNIC0_QM0_CQ_TSIZE_0,
  1876. mmNIC0_QM0_CQ_CTL_0,
  1877. mmNIC0_QM0_CQ_PTR_LO_1,
  1878. mmNIC0_QM0_CQ_PTR_HI_1,
  1879. mmNIC0_QM0_CQ_TSIZE_1,
  1880. mmNIC0_QM0_CQ_CTL_1,
  1881. mmNIC0_QM0_CQ_PTR_LO_2,
  1882. mmNIC0_QM0_CQ_PTR_HI_2,
  1883. mmNIC0_QM0_CQ_TSIZE_2,
  1884. mmNIC0_QM0_CQ_CTL_2,
  1885. mmNIC0_QM0_CQ_PTR_LO_3,
  1886. mmNIC0_QM0_CQ_PTR_HI_3,
  1887. mmNIC0_QM0_CQ_TSIZE_3,
  1888. mmNIC0_QM0_CQ_CTL_3,
  1889. mmNIC0_QM0_CQ_PTR_LO_4,
  1890. mmNIC0_QM0_CQ_PTR_HI_4,
  1891. mmNIC0_QM0_CQ_TSIZE_4,
  1892. mmNIC0_QM0_CQ_CTL_4,
  1893. mmNIC0_QM0_QMAN_WR64_BASE_ADDR0_BASE,
  1894. mmNIC0_QM0_QMAN_WR64_BASE_ADDR0_BASE + 4,
  1895. mmNIC0_QM0_QMAN_WR64_BASE_ADDR1_BASE,
  1896. mmNIC0_QM0_QMAN_WR64_BASE_ADDR1_BASE + 4,
  1897. mmNIC0_QM0_QMAN_WR64_BASE_ADDR2_BASE,
  1898. mmNIC0_QM0_QMAN_WR64_BASE_ADDR2_BASE + 4,
  1899. mmNIC0_QM0_QMAN_WR64_BASE_ADDR3_BASE,
  1900. mmNIC0_QM0_QMAN_WR64_BASE_ADDR3_BASE + 4,
  1901. mmNIC0_QM0_QMAN_WR64_BASE_ADDR4_BASE,
  1902. mmNIC0_QM0_QMAN_WR64_BASE_ADDR4_BASE + 4,
  1903. mmNIC0_QM0_QMAN_WR64_BASE_ADDR5_BASE,
  1904. mmNIC0_QM0_QMAN_WR64_BASE_ADDR5_BASE + 4,
  1905. mmNIC0_QM0_QMAN_WR64_BASE_ADDR6_BASE,
  1906. mmNIC0_QM0_QMAN_WR64_BASE_ADDR6_BASE + 4,
  1907. mmNIC0_QM0_QMAN_WR64_BASE_ADDR7_BASE,
  1908. mmNIC0_QM0_QMAN_WR64_BASE_ADDR7_BASE + 4,
  1909. mmNIC0_QM0_QMAN_WR64_BASE_ADDR8_BASE,
  1910. mmNIC0_QM0_QMAN_WR64_BASE_ADDR8_BASE + 4,
  1911. mmNIC0_QM0_QMAN_WR64_BASE_ADDR9_BASE,
  1912. mmNIC0_QM0_QMAN_WR64_BASE_ADDR9_BASE + 4,
  1913. mmNIC0_QM0_QMAN_WR64_BASE_ADDR10_BASE,
  1914. mmNIC0_QM0_QMAN_WR64_BASE_ADDR10_BASE + 4,
  1915. mmNIC0_QM0_QMAN_WR64_BASE_ADDR11_BASE,
  1916. mmNIC0_QM0_QMAN_WR64_BASE_ADDR11_BASE + 4,
  1917. mmNIC0_QM0_QMAN_WR64_BASE_ADDR12_BASE,
  1918. mmNIC0_QM0_QMAN_WR64_BASE_ADDR12_BASE + 4,
  1919. mmNIC0_QM0_QMAN_WR64_BASE_ADDR13_BASE,
  1920. mmNIC0_QM0_QMAN_WR64_BASE_ADDR13_BASE + 4,
  1921. mmNIC0_QM0_QMAN_WR64_BASE_ADDR14_BASE,
  1922. mmNIC0_QM0_QMAN_WR64_BASE_ADDR14_BASE + 4,
  1923. mmNIC0_QM0_QMAN_WR64_BASE_ADDR15_BASE,
  1924. mmNIC0_QM0_QMAN_WR64_BASE_ADDR15_BASE + 4,
  1925. mmNIC0_QM0_ARC_CQ_PTR_LO,
  1926. mmNIC0_QM0_ARC_CQ_PTR_LO_STS,
  1927. mmNIC0_QM0_ARC_CQ_PTR_HI,
  1928. mmNIC0_QM0_ARC_CQ_PTR_HI_STS,
  1929. mmNIC0_QM0_ARB_CFG_0,
  1930. mmNIC0_QM0_ARB_MST_QUIET_PER,
  1931. mmNIC0_QM0_ARB_CHOICE_Q_PUSH,
  1932. mmNIC0_QM0_ARB_WRR_WEIGHT_0,
  1933. mmNIC0_QM0_ARB_WRR_WEIGHT_1,
  1934. mmNIC0_QM0_ARB_WRR_WEIGHT_2,
  1935. mmNIC0_QM0_ARB_WRR_WEIGHT_3,
  1936. mmNIC0_QM0_ARB_BASE_LO,
  1937. mmNIC0_QM0_ARB_BASE_HI,
  1938. mmNIC0_QM0_ARB_MST_SLAVE_EN,
  1939. mmNIC0_QM0_ARB_MST_SLAVE_EN_1,
  1940. mmNIC0_QM0_ARB_MST_CRED_INC,
  1941. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_0,
  1942. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_1,
  1943. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_2,
  1944. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_3,
  1945. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_4,
  1946. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_5,
  1947. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_6,
  1948. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_7,
  1949. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_8,
  1950. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_9,
  1951. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_10,
  1952. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_11,
  1953. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_12,
  1954. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_13,
  1955. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_14,
  1956. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_15,
  1957. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_16,
  1958. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_17,
  1959. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_18,
  1960. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_19,
  1961. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_20,
  1962. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_21,
  1963. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_22,
  1964. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_23,
  1965. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_24,
  1966. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_25,
  1967. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_26,
  1968. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_27,
  1969. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_28,
  1970. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_29,
  1971. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_30,
  1972. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_31,
  1973. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_32,
  1974. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_33,
  1975. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_34,
  1976. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_35,
  1977. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_36,
  1978. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_37,
  1979. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_38,
  1980. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_39,
  1981. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_40,
  1982. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_41,
  1983. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_42,
  1984. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_43,
  1985. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_44,
  1986. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_45,
  1987. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_46,
  1988. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_47,
  1989. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_48,
  1990. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_49,
  1991. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_50,
  1992. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_51,
  1993. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_52,
  1994. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_53,
  1995. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_54,
  1996. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_55,
  1997. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_56,
  1998. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_57,
  1999. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_58,
  2000. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_59,
  2001. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_60,
  2002. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_61,
  2003. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_62,
  2004. mmNIC0_QM0_ARB_MST_CHOICE_PUSH_OFST_63,
  2005. mmNIC0_QM0_ARB_SLV_ID,
  2006. mmNIC0_QM0_ARB_SLV_MASTER_INC_CRED_OFST,
  2007. mmNIC0_QM0_ARC_CQ_CFG0,
  2008. mmNIC0_QM0_CQ_IFIFO_CI_0,
  2009. mmNIC0_QM0_CQ_IFIFO_CI_1,
  2010. mmNIC0_QM0_CQ_IFIFO_CI_2,
  2011. mmNIC0_QM0_CQ_IFIFO_CI_3,
  2012. mmNIC0_QM0_CQ_IFIFO_CI_4,
  2013. mmNIC0_QM0_ARC_CQ_IFIFO_CI,
  2014. mmNIC0_QM0_CQ_CTL_CI_0,
  2015. mmNIC0_QM0_CQ_CTL_CI_1,
  2016. mmNIC0_QM0_CQ_CTL_CI_2,
  2017. mmNIC0_QM0_CQ_CTL_CI_3,
  2018. mmNIC0_QM0_CQ_CTL_CI_4,
  2019. mmNIC0_QM0_ARC_CQ_CTL_CI,
  2020. mmNIC0_QM0_ARC_CQ_TSIZE,
  2021. mmNIC0_QM0_ARC_CQ_CTL,
  2022. mmNIC0_QM0_CP_SWITCH_WD_SET,
  2023. mmNIC0_QM0_CP_EXT_SWITCH,
  2024. mmNIC0_QM0_CP_PRED_0,
  2025. mmNIC0_QM0_CP_PRED_1,
  2026. mmNIC0_QM0_CP_PRED_2,
  2027. mmNIC0_QM0_CP_PRED_3,
  2028. mmNIC0_QM0_CP_PRED_4,
  2029. mmNIC0_QM0_CP_PRED_UPEN_0,
  2030. mmNIC0_QM0_CP_PRED_UPEN_1,
  2031. mmNIC0_QM0_CP_PRED_UPEN_2,
  2032. mmNIC0_QM0_CP_PRED_UPEN_3,
  2033. mmNIC0_QM0_CP_PRED_UPEN_4,
  2034. mmNIC0_QM0_CP_MSG_BASE0_ADDR_LO_0,
  2035. mmNIC0_QM0_CP_MSG_BASE0_ADDR_LO_1,
  2036. mmNIC0_QM0_CP_MSG_BASE0_ADDR_LO_2,
  2037. mmNIC0_QM0_CP_MSG_BASE0_ADDR_LO_3,
  2038. mmNIC0_QM0_CP_MSG_BASE0_ADDR_LO_4,
  2039. mmNIC0_QM0_CP_MSG_BASE0_ADDR_HI_0,
  2040. mmNIC0_QM0_CP_MSG_BASE0_ADDR_HI_1,
  2041. mmNIC0_QM0_CP_MSG_BASE0_ADDR_HI_2,
  2042. mmNIC0_QM0_CP_MSG_BASE0_ADDR_HI_3,
  2043. mmNIC0_QM0_CP_MSG_BASE0_ADDR_HI_4,
  2044. mmNIC0_QM0_CP_MSG_BASE1_ADDR_LO_0,
  2045. mmNIC0_QM0_CP_MSG_BASE1_ADDR_LO_1,
  2046. mmNIC0_QM0_CP_MSG_BASE1_ADDR_LO_2,
  2047. mmNIC0_QM0_CP_MSG_BASE1_ADDR_LO_3,
  2048. mmNIC0_QM0_CP_MSG_BASE1_ADDR_LO_4,
  2049. mmNIC0_QM0_CP_MSG_BASE1_ADDR_HI_0,
  2050. mmNIC0_QM0_CP_MSG_BASE1_ADDR_HI_1,
  2051. mmNIC0_QM0_CP_MSG_BASE1_ADDR_HI_2,
  2052. mmNIC0_QM0_CP_MSG_BASE1_ADDR_HI_3,
  2053. mmNIC0_QM0_CP_MSG_BASE1_ADDR_HI_4,
  2054. mmNIC0_QM0_CP_MSG_BASE2_ADDR_LO_0,
  2055. mmNIC0_QM0_CP_MSG_BASE2_ADDR_LO_1,
  2056. mmNIC0_QM0_CP_MSG_BASE2_ADDR_LO_2,
  2057. mmNIC0_QM0_CP_MSG_BASE2_ADDR_LO_3,
  2058. mmNIC0_QM0_CP_MSG_BASE2_ADDR_LO_4,
  2059. mmNIC0_QM0_CP_MSG_BASE2_ADDR_HI_0,
  2060. mmNIC0_QM0_CP_MSG_BASE2_ADDR_HI_1,
  2061. mmNIC0_QM0_CP_MSG_BASE2_ADDR_HI_2,
  2062. mmNIC0_QM0_CP_MSG_BASE2_ADDR_HI_3,
  2063. mmNIC0_QM0_CP_MSG_BASE2_ADDR_HI_4,
  2064. mmNIC0_QM0_CP_MSG_BASE3_ADDR_LO_0,
  2065. mmNIC0_QM0_CP_MSG_BASE3_ADDR_LO_1,
  2066. mmNIC0_QM0_CP_MSG_BASE3_ADDR_LO_2,
  2067. mmNIC0_QM0_CP_MSG_BASE3_ADDR_LO_3,
  2068. mmNIC0_QM0_CP_MSG_BASE3_ADDR_LO_4,
  2069. mmNIC0_QM0_CP_MSG_BASE3_ADDR_HI_0,
  2070. mmNIC0_QM0_CP_MSG_BASE3_ADDR_HI_1,
  2071. mmNIC0_QM0_CP_MSG_BASE3_ADDR_HI_2,
  2072. mmNIC0_QM0_CP_MSG_BASE3_ADDR_HI_3,
  2073. mmNIC0_QM0_CP_MSG_BASE3_ADDR_HI_4,
  2074. mmNIC0_QM0_ARC_CQ_IFIFO_MSG_BASE_LO,
  2075. mmNIC0_QM0_ARC_CQ_CTL_MSG_BASE_LO,
  2076. mmNIC0_QM0_CQ_IFIFO_MSG_BASE_LO,
  2077. mmNIC0_QM0_CQ_CTL_MSG_BASE_LO
  2078. };
  2079. static const u32 gaudi2_pb_rot0[] = {
  2080. mmROT0_BASE,
  2081. mmROT0_MSTR_IF_RR_SHRD_HBW_BASE,
  2082. mmROT0_QM_BASE,
  2083. };
  2084. static const u32 gaudi2_pb_rot0_arc[] = {
  2085. mmROT0_QM_ARC_AUX_BASE
  2086. };
  2087. static const struct range gaudi2_pb_rot0_arc_unsecured_regs[] = {
  2088. {mmROT0_QM_ARC_AUX_RUN_HALT_REQ, mmROT0_QM_ARC_AUX_RUN_HALT_ACK},
  2089. {mmROT0_QM_ARC_AUX_CLUSTER_NUM, mmROT0_QM_ARC_AUX_WAKE_UP_EVENT},
  2090. {mmROT0_QM_ARC_AUX_ARC_RST_REQ, mmROT0_QM_ARC_AUX_CID_OFFSET_7},
  2091. {mmROT0_QM_ARC_AUX_SCRATCHPAD_0, mmROT0_QM_ARC_AUX_INFLIGHT_LBU_RD_CNT},
  2092. {mmROT0_QM_ARC_AUX_CBU_EARLY_BRESP_EN, mmROT0_QM_ARC_AUX_CBU_EARLY_BRESP_EN},
  2093. {mmROT0_QM_ARC_AUX_LBU_EARLY_BRESP_EN, mmROT0_QM_ARC_AUX_LBU_EARLY_BRESP_EN},
  2094. {mmROT0_QM_ARC_AUX_DCCM_QUEUE_BASE_ADDR_0, mmROT0_QM_ARC_AUX_DCCM_QUEUE_ALERT_MSG},
  2095. {mmROT0_QM_ARC_AUX_DCCM_Q_PUSH_FIFO_CNT, mmROT0_QM_ARC_AUX_QMAN_ARC_CQ_SHADOW_CI},
  2096. {mmROT0_QM_ARC_AUX_ARC_AXI_ORDERING_WR_IF_CNT, mmROT0_QM_ARC_AUX_MME_ARC_UPPER_DCCM_EN},
  2097. };
  2098. static const u32 gaudi2_pb_rot0_unsecured_regs[] = {
  2099. mmROT0_QM_CQ_CFG0_0,
  2100. mmROT0_QM_CQ_CFG0_1,
  2101. mmROT0_QM_CQ_CFG0_2,
  2102. mmROT0_QM_CQ_CFG0_3,
  2103. mmROT0_QM_CQ_CFG0_4,
  2104. mmROT0_QM_CP_FENCE0_RDATA_0,
  2105. mmROT0_QM_CP_FENCE0_RDATA_1,
  2106. mmROT0_QM_CP_FENCE0_RDATA_2,
  2107. mmROT0_QM_CP_FENCE0_RDATA_3,
  2108. mmROT0_QM_CP_FENCE0_RDATA_4,
  2109. mmROT0_QM_CP_FENCE1_RDATA_0,
  2110. mmROT0_QM_CP_FENCE1_RDATA_1,
  2111. mmROT0_QM_CP_FENCE1_RDATA_2,
  2112. mmROT0_QM_CP_FENCE1_RDATA_3,
  2113. mmROT0_QM_CP_FENCE1_RDATA_4,
  2114. mmROT0_QM_CP_FENCE2_RDATA_0,
  2115. mmROT0_QM_CP_FENCE2_RDATA_1,
  2116. mmROT0_QM_CP_FENCE2_RDATA_2,
  2117. mmROT0_QM_CP_FENCE2_RDATA_3,
  2118. mmROT0_QM_CP_FENCE2_RDATA_4,
  2119. mmROT0_QM_CP_FENCE3_RDATA_0,
  2120. mmROT0_QM_CP_FENCE3_RDATA_1,
  2121. mmROT0_QM_CP_FENCE3_RDATA_2,
  2122. mmROT0_QM_CP_FENCE3_RDATA_3,
  2123. mmROT0_QM_CP_FENCE3_RDATA_4,
  2124. mmROT0_QM_CP_FENCE0_CNT_0,
  2125. mmROT0_QM_CP_FENCE0_CNT_1,
  2126. mmROT0_QM_CP_FENCE0_CNT_2,
  2127. mmROT0_QM_CP_FENCE0_CNT_3,
  2128. mmROT0_QM_CP_FENCE0_CNT_4,
  2129. mmROT0_QM_CP_FENCE1_CNT_0,
  2130. mmROT0_QM_CP_FENCE1_CNT_1,
  2131. mmROT0_QM_CP_FENCE1_CNT_2,
  2132. mmROT0_QM_CP_FENCE1_CNT_3,
  2133. mmROT0_QM_CP_FENCE1_CNT_4,
  2134. mmROT0_QM_CP_FENCE2_CNT_0,
  2135. mmROT0_QM_CP_FENCE2_CNT_1,
  2136. mmROT0_QM_CP_FENCE2_CNT_2,
  2137. mmROT0_QM_CP_FENCE2_CNT_3,
  2138. mmROT0_QM_CP_FENCE2_CNT_4,
  2139. mmROT0_QM_CP_FENCE3_CNT_0,
  2140. mmROT0_QM_CP_FENCE3_CNT_1,
  2141. mmROT0_QM_CP_FENCE3_CNT_2,
  2142. mmROT0_QM_CP_FENCE3_CNT_3,
  2143. mmROT0_QM_CP_FENCE3_CNT_4,
  2144. mmROT0_QM_CQ_PTR_LO_0,
  2145. mmROT0_QM_CQ_PTR_HI_0,
  2146. mmROT0_QM_CQ_TSIZE_0,
  2147. mmROT0_QM_CQ_CTL_0,
  2148. mmROT0_QM_CQ_PTR_LO_1,
  2149. mmROT0_QM_CQ_PTR_HI_1,
  2150. mmROT0_QM_CQ_TSIZE_1,
  2151. mmROT0_QM_CQ_CTL_1,
  2152. mmROT0_QM_CQ_PTR_LO_2,
  2153. mmROT0_QM_CQ_PTR_HI_2,
  2154. mmROT0_QM_CQ_TSIZE_2,
  2155. mmROT0_QM_CQ_CTL_2,
  2156. mmROT0_QM_CQ_PTR_LO_3,
  2157. mmROT0_QM_CQ_PTR_HI_3,
  2158. mmROT0_QM_CQ_TSIZE_3,
  2159. mmROT0_QM_CQ_CTL_3,
  2160. mmROT0_QM_CQ_PTR_LO_4,
  2161. mmROT0_QM_CQ_PTR_HI_4,
  2162. mmROT0_QM_CQ_TSIZE_4,
  2163. mmROT0_QM_CQ_CTL_4,
  2164. mmROT0_QM_QMAN_WR64_BASE_ADDR0_BASE,
  2165. mmROT0_QM_QMAN_WR64_BASE_ADDR0_BASE + 4,
  2166. mmROT0_QM_QMAN_WR64_BASE_ADDR1_BASE,
  2167. mmROT0_QM_QMAN_WR64_BASE_ADDR1_BASE + 4,
  2168. mmROT0_QM_QMAN_WR64_BASE_ADDR2_BASE,
  2169. mmROT0_QM_QMAN_WR64_BASE_ADDR2_BASE + 4,
  2170. mmROT0_QM_QMAN_WR64_BASE_ADDR3_BASE,
  2171. mmROT0_QM_QMAN_WR64_BASE_ADDR3_BASE + 4,
  2172. mmROT0_QM_QMAN_WR64_BASE_ADDR4_BASE,
  2173. mmROT0_QM_QMAN_WR64_BASE_ADDR4_BASE + 4,
  2174. mmROT0_QM_QMAN_WR64_BASE_ADDR5_BASE,
  2175. mmROT0_QM_QMAN_WR64_BASE_ADDR5_BASE + 4,
  2176. mmROT0_QM_QMAN_WR64_BASE_ADDR6_BASE,
  2177. mmROT0_QM_QMAN_WR64_BASE_ADDR6_BASE + 4,
  2178. mmROT0_QM_QMAN_WR64_BASE_ADDR7_BASE,
  2179. mmROT0_QM_QMAN_WR64_BASE_ADDR7_BASE + 4,
  2180. mmROT0_QM_QMAN_WR64_BASE_ADDR8_BASE,
  2181. mmROT0_QM_QMAN_WR64_BASE_ADDR8_BASE + 4,
  2182. mmROT0_QM_QMAN_WR64_BASE_ADDR9_BASE,
  2183. mmROT0_QM_QMAN_WR64_BASE_ADDR9_BASE + 4,
  2184. mmROT0_QM_QMAN_WR64_BASE_ADDR10_BASE,
  2185. mmROT0_QM_QMAN_WR64_BASE_ADDR10_BASE + 4,
  2186. mmROT0_QM_QMAN_WR64_BASE_ADDR11_BASE,
  2187. mmROT0_QM_QMAN_WR64_BASE_ADDR11_BASE + 4,
  2188. mmROT0_QM_QMAN_WR64_BASE_ADDR12_BASE,
  2189. mmROT0_QM_QMAN_WR64_BASE_ADDR12_BASE + 4,
  2190. mmROT0_QM_QMAN_WR64_BASE_ADDR13_BASE,
  2191. mmROT0_QM_QMAN_WR64_BASE_ADDR13_BASE + 4,
  2192. mmROT0_QM_QMAN_WR64_BASE_ADDR14_BASE,
  2193. mmROT0_QM_QMAN_WR64_BASE_ADDR14_BASE + 4,
  2194. mmROT0_QM_QMAN_WR64_BASE_ADDR15_BASE,
  2195. mmROT0_QM_QMAN_WR64_BASE_ADDR15_BASE + 4,
  2196. mmROT0_QM_ARC_CQ_PTR_LO,
  2197. mmROT0_QM_ARC_CQ_PTR_LO_STS,
  2198. mmROT0_QM_ARC_CQ_PTR_HI,
  2199. mmROT0_QM_ARC_CQ_PTR_HI_STS,
  2200. mmROT0_QM_ARB_CFG_0,
  2201. mmROT0_QM_ARB_MST_QUIET_PER,
  2202. mmROT0_QM_ARB_CHOICE_Q_PUSH,
  2203. mmROT0_QM_ARB_WRR_WEIGHT_0,
  2204. mmROT0_QM_ARB_WRR_WEIGHT_1,
  2205. mmROT0_QM_ARB_WRR_WEIGHT_2,
  2206. mmROT0_QM_ARB_WRR_WEIGHT_3,
  2207. mmROT0_QM_ARB_BASE_LO,
  2208. mmROT0_QM_ARB_BASE_HI,
  2209. mmROT0_QM_ARB_MST_SLAVE_EN,
  2210. mmROT0_QM_ARB_MST_SLAVE_EN_1,
  2211. mmROT0_QM_ARB_MST_CRED_INC,
  2212. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_0,
  2213. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_1,
  2214. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_2,
  2215. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_3,
  2216. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_4,
  2217. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_5,
  2218. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_6,
  2219. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_7,
  2220. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_8,
  2221. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_9,
  2222. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_10,
  2223. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_11,
  2224. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_12,
  2225. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_13,
  2226. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_14,
  2227. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_15,
  2228. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_16,
  2229. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_17,
  2230. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_18,
  2231. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_19,
  2232. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_20,
  2233. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_21,
  2234. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_22,
  2235. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_23,
  2236. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_24,
  2237. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_25,
  2238. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_26,
  2239. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_27,
  2240. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_28,
  2241. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_29,
  2242. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_30,
  2243. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_31,
  2244. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_32,
  2245. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_33,
  2246. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_34,
  2247. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_35,
  2248. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_36,
  2249. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_37,
  2250. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_38,
  2251. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_39,
  2252. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_40,
  2253. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_41,
  2254. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_42,
  2255. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_43,
  2256. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_44,
  2257. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_45,
  2258. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_46,
  2259. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_47,
  2260. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_48,
  2261. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_49,
  2262. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_50,
  2263. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_51,
  2264. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_52,
  2265. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_53,
  2266. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_54,
  2267. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_55,
  2268. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_56,
  2269. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_57,
  2270. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_58,
  2271. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_59,
  2272. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_60,
  2273. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_61,
  2274. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_62,
  2275. mmROT0_QM_ARB_MST_CHOICE_PUSH_OFST_63,
  2276. mmROT0_QM_ARB_SLV_ID,
  2277. mmROT0_QM_ARB_SLV_MASTER_INC_CRED_OFST,
  2278. mmROT0_QM_ARC_CQ_CFG0,
  2279. mmROT0_QM_CQ_IFIFO_CI_0,
  2280. mmROT0_QM_CQ_IFIFO_CI_1,
  2281. mmROT0_QM_CQ_IFIFO_CI_2,
  2282. mmROT0_QM_CQ_IFIFO_CI_3,
  2283. mmROT0_QM_CQ_IFIFO_CI_4,
  2284. mmROT0_QM_ARC_CQ_IFIFO_CI,
  2285. mmROT0_QM_CQ_CTL_CI_0,
  2286. mmROT0_QM_CQ_CTL_CI_1,
  2287. mmROT0_QM_CQ_CTL_CI_2,
  2288. mmROT0_QM_CQ_CTL_CI_3,
  2289. mmROT0_QM_CQ_CTL_CI_4,
  2290. mmROT0_QM_ARC_CQ_CTL_CI,
  2291. mmROT0_QM_ARC_CQ_TSIZE,
  2292. mmROT0_QM_ARC_CQ_CTL,
  2293. mmROT0_QM_CP_SWITCH_WD_SET,
  2294. mmROT0_QM_CP_EXT_SWITCH,
  2295. mmROT0_QM_CP_PRED_0,
  2296. mmROT0_QM_CP_PRED_1,
  2297. mmROT0_QM_CP_PRED_2,
  2298. mmROT0_QM_CP_PRED_3,
  2299. mmROT0_QM_CP_PRED_4,
  2300. mmROT0_QM_CP_PRED_UPEN_0,
  2301. mmROT0_QM_CP_PRED_UPEN_1,
  2302. mmROT0_QM_CP_PRED_UPEN_2,
  2303. mmROT0_QM_CP_PRED_UPEN_3,
  2304. mmROT0_QM_CP_PRED_UPEN_4,
  2305. mmROT0_QM_CP_MSG_BASE0_ADDR_LO_0,
  2306. mmROT0_QM_CP_MSG_BASE0_ADDR_LO_1,
  2307. mmROT0_QM_CP_MSG_BASE0_ADDR_LO_2,
  2308. mmROT0_QM_CP_MSG_BASE0_ADDR_LO_3,
  2309. mmROT0_QM_CP_MSG_BASE0_ADDR_LO_4,
  2310. mmROT0_QM_CP_MSG_BASE0_ADDR_HI_0,
  2311. mmROT0_QM_CP_MSG_BASE0_ADDR_HI_1,
  2312. mmROT0_QM_CP_MSG_BASE0_ADDR_HI_2,
  2313. mmROT0_QM_CP_MSG_BASE0_ADDR_HI_3,
  2314. mmROT0_QM_CP_MSG_BASE0_ADDR_HI_4,
  2315. mmROT0_QM_CP_MSG_BASE1_ADDR_LO_0,
  2316. mmROT0_QM_CP_MSG_BASE1_ADDR_LO_1,
  2317. mmROT0_QM_CP_MSG_BASE1_ADDR_LO_2,
  2318. mmROT0_QM_CP_MSG_BASE1_ADDR_LO_3,
  2319. mmROT0_QM_CP_MSG_BASE1_ADDR_LO_4,
  2320. mmROT0_QM_CP_MSG_BASE1_ADDR_HI_0,
  2321. mmROT0_QM_CP_MSG_BASE1_ADDR_HI_1,
  2322. mmROT0_QM_CP_MSG_BASE1_ADDR_HI_2,
  2323. mmROT0_QM_CP_MSG_BASE1_ADDR_HI_3,
  2324. mmROT0_QM_CP_MSG_BASE1_ADDR_HI_4,
  2325. mmROT0_QM_CP_MSG_BASE2_ADDR_LO_0,
  2326. mmROT0_QM_CP_MSG_BASE2_ADDR_LO_1,
  2327. mmROT0_QM_CP_MSG_BASE2_ADDR_LO_2,
  2328. mmROT0_QM_CP_MSG_BASE2_ADDR_LO_3,
  2329. mmROT0_QM_CP_MSG_BASE2_ADDR_LO_4,
  2330. mmROT0_QM_CP_MSG_BASE2_ADDR_HI_0,
  2331. mmROT0_QM_CP_MSG_BASE2_ADDR_HI_1,
  2332. mmROT0_QM_CP_MSG_BASE2_ADDR_HI_2,
  2333. mmROT0_QM_CP_MSG_BASE2_ADDR_HI_3,
  2334. mmROT0_QM_CP_MSG_BASE2_ADDR_HI_4,
  2335. mmROT0_QM_CP_MSG_BASE3_ADDR_LO_0,
  2336. mmROT0_QM_CP_MSG_BASE3_ADDR_LO_1,
  2337. mmROT0_QM_CP_MSG_BASE3_ADDR_LO_2,
  2338. mmROT0_QM_CP_MSG_BASE3_ADDR_LO_3,
  2339. mmROT0_QM_CP_MSG_BASE3_ADDR_LO_4,
  2340. mmROT0_QM_CP_MSG_BASE3_ADDR_HI_0,
  2341. mmROT0_QM_CP_MSG_BASE3_ADDR_HI_1,
  2342. mmROT0_QM_CP_MSG_BASE3_ADDR_HI_2,
  2343. mmROT0_QM_CP_MSG_BASE3_ADDR_HI_3,
  2344. mmROT0_QM_CP_MSG_BASE3_ADDR_HI_4,
  2345. mmROT0_QM_ARC_CQ_IFIFO_MSG_BASE_LO,
  2346. mmROT0_QM_ARC_CQ_CTL_MSG_BASE_LO,
  2347. mmROT0_QM_CQ_IFIFO_MSG_BASE_LO,
  2348. mmROT0_QM_CQ_CTL_MSG_BASE_LO,
  2349. mmROT0_DESC_CONTEXT_ID,
  2350. mmROT0_DESC_IN_IMG_START_ADDR_L,
  2351. mmROT0_DESC_IN_IMG_START_ADDR_H,
  2352. mmROT0_DESC_OUT_IMG_START_ADDR_L,
  2353. mmROT0_DESC_OUT_IMG_START_ADDR_H,
  2354. mmROT0_DESC_CFG,
  2355. mmROT0_DESC_IM_READ_SLOPE,
  2356. mmROT0_DESC_SIN_D,
  2357. mmROT0_DESC_COS_D,
  2358. mmROT0_DESC_IN_IMG,
  2359. mmROT0_DESC_IN_STRIDE,
  2360. mmROT0_DESC_IN_STRIPE,
  2361. mmROT0_DESC_IN_CENTER,
  2362. mmROT0_DESC_OUT_IMG,
  2363. mmROT0_DESC_OUT_STRIDE,
  2364. mmROT0_DESC_OUT_STRIPE,
  2365. mmROT0_DESC_OUT_CENTER,
  2366. mmROT0_DESC_BACKGROUND,
  2367. mmROT0_DESC_CPL_MSG_EN,
  2368. mmROT0_DESC_IDLE_STATE,
  2369. mmROT0_DESC_CPL_MSG_ADDR,
  2370. mmROT0_DESC_CPL_MSG_DATA,
  2371. mmROT0_DESC_X_I_START_OFFSET,
  2372. mmROT0_DESC_X_I_START_OFFSET_FLIP,
  2373. mmROT0_DESC_X_I_FIRST,
  2374. mmROT0_DESC_Y_I_FIRST,
  2375. mmROT0_DESC_Y_I,
  2376. mmROT0_DESC_OUT_STRIPE_SIZE,
  2377. mmROT0_DESC_RSB_CFG_0,
  2378. mmROT0_DESC_RSB_PAD_VAL,
  2379. mmROT0_DESC_OWM_CFG,
  2380. mmROT0_DESC_CTRL_CFG,
  2381. mmROT0_DESC_PIXEL_PAD,
  2382. mmROT0_DESC_PREC_SHIFT,
  2383. mmROT0_DESC_MAX_VAL,
  2384. mmROT0_DESC_A0_M11,
  2385. mmROT0_DESC_A1_M12,
  2386. mmROT0_DESC_A2,
  2387. mmROT0_DESC_B0_M21,
  2388. mmROT0_DESC_B1_M22,
  2389. mmROT0_DESC_B2,
  2390. mmROT0_DESC_C0,
  2391. mmROT0_DESC_C1,
  2392. mmROT0_DESC_C2,
  2393. mmROT0_DESC_D0,
  2394. mmROT0_DESC_D1,
  2395. mmROT0_DESC_D2,
  2396. mmROT0_DESC_INV_PROC_SIZE_M_1,
  2397. mmROT0_DESC_MESH_IMG_START_ADDR_L,
  2398. mmROT0_DESC_MESH_IMG_START_ADDR_H,
  2399. mmROT0_DESC_MESH_IMG,
  2400. mmROT0_DESC_MESH_STRIDE,
  2401. mmROT0_DESC_MESH_STRIPE,
  2402. mmROT0_DESC_MESH_CTRL,
  2403. mmROT0_DESC_MESH_GH,
  2404. mmROT0_DESC_MESH_GV,
  2405. mmROT0_DESC_MRSB_CFG_0,
  2406. mmROT0_DESC_MRSB_PAD_VAL,
  2407. mmROT0_DESC_BUF_CFG,
  2408. mmROT0_DESC_CID_OFFSET,
  2409. mmROT0_DESC_PUSH_DESC
  2410. };
  2411. static const u32 gaudi2_pb_psoc_global_conf[] = {
  2412. mmPSOC_GLOBAL_CONF_BASE
  2413. };
  2414. static const u32 gaudi2_pb_psoc[] = {
  2415. mmPSOC_EFUSE_BASE,
  2416. mmPSOC_BTL_BASE,
  2417. mmPSOC_CS_TRACE_BASE,
  2418. mmPSOC_DFT_EFUSE_BASE,
  2419. mmPSOC_PID_BASE,
  2420. mmPSOC_ARC0_CFG_BASE,
  2421. mmPSOC_ARC0_MSTR_IF_RR_SHRD_HBW_BASE,
  2422. mmPSOC_ARC0_AUX_BASE,
  2423. mmPSOC_ARC1_CFG_BASE,
  2424. mmPSOC_ARC1_MSTR_IF_RR_SHRD_HBW_BASE,
  2425. mmPSOC_ARC1_AUX_BASE,
  2426. mmJT_MSTR_IF_RR_SHRD_HBW_BASE,
  2427. mmSMI_MSTR_IF_RR_SHRD_HBW_BASE,
  2428. mmI2C_S_MSTR_IF_RR_SHRD_HBW_BASE,
  2429. mmPSOC_SVID0_BASE,
  2430. mmPSOC_SVID1_BASE,
  2431. mmPSOC_SVID2_BASE,
  2432. mmPSOC_AVS0_BASE,
  2433. mmPSOC_AVS1_BASE,
  2434. mmPSOC_AVS2_BASE,
  2435. mmPSOC_PWM0_BASE,
  2436. mmPSOC_PWM1_BASE,
  2437. mmPSOC_MSTR_IF_RR_SHRD_HBW_BASE,
  2438. };
  2439. static const u32 gaudi2_pb_pmmu[] = {
  2440. mmPMMU_HBW_MMU_BASE,
  2441. mmPMMU_HBW_STLB_BASE,
  2442. mmPMMU_HBW_MSTR_IF_RR_SHRD_HBW_BASE,
  2443. mmPMMU_PIF_BASE,
  2444. };
  2445. static const u32 gaudi2_pb_psoc_pll[] = {
  2446. mmPSOC_MME_PLL_CTRL_BASE,
  2447. mmPSOC_CPU_PLL_CTRL_BASE,
  2448. mmPSOC_VID_PLL_CTRL_BASE
  2449. };
  2450. static const u32 gaudi2_pb_pmmu_pll[] = {
  2451. mmPMMU_MME_PLL_CTRL_BASE,
  2452. mmPMMU_VID_PLL_CTRL_BASE
  2453. };
  2454. static const u32 gaudi2_pb_xbar_pll[] = {
  2455. mmDCORE0_XBAR_DMA_PLL_CTRL_BASE,
  2456. mmDCORE0_XBAR_MMU_PLL_CTRL_BASE,
  2457. mmDCORE0_XBAR_IF_PLL_CTRL_BASE,
  2458. mmDCORE0_XBAR_MESH_PLL_CTRL_BASE,
  2459. mmDCORE1_XBAR_DMA_PLL_CTRL_BASE,
  2460. mmDCORE1_XBAR_MMU_PLL_CTRL_BASE,
  2461. mmDCORE1_XBAR_IF_PLL_CTRL_BASE,
  2462. mmDCORE1_XBAR_MESH_PLL_CTRL_BASE,
  2463. mmDCORE1_XBAR_HBM_PLL_CTRL_BASE,
  2464. mmDCORE2_XBAR_DMA_PLL_CTRL_BASE,
  2465. mmDCORE2_XBAR_MMU_PLL_CTRL_BASE,
  2466. mmDCORE2_XBAR_IF_PLL_CTRL_BASE,
  2467. mmDCORE2_XBAR_BANK_PLL_CTRL_BASE,
  2468. mmDCORE2_XBAR_HBM_PLL_CTRL_BASE,
  2469. mmDCORE3_XBAR_DMA_PLL_CTRL_BASE,
  2470. mmDCORE3_XBAR_MMU_PLL_CTRL_BASE,
  2471. mmDCORE3_XBAR_IF_PLL_CTRL_BASE,
  2472. mmDCORE3_XBAR_BANK_PLL_CTRL_BASE
  2473. };
  2474. static const u32 gaudi2_pb_xft_pll[] = {
  2475. mmDCORE0_HBM_PLL_CTRL_BASE,
  2476. mmDCORE0_TPC_PLL_CTRL_BASE,
  2477. mmDCORE0_PCI_PLL_CTRL_BASE,
  2478. mmDCORE1_HBM_PLL_CTRL_BASE,
  2479. mmDCORE1_TPC_PLL_CTRL_BASE,
  2480. mmDCORE1_NIC_PLL_CTRL_BASE,
  2481. mmDCORE2_HBM_PLL_CTRL_BASE,
  2482. mmDCORE2_TPC_PLL_CTRL_BASE,
  2483. mmDCORE3_HBM_PLL_CTRL_BASE,
  2484. mmDCORE3_TPC_PLL_CTRL_BASE,
  2485. mmDCORE3_NIC_PLL_CTRL_BASE,
  2486. };
  2487. static const u32 gaudi2_pb_pcie[] = {
  2488. mmPCIE_ELBI_RR_MSTR_IF_RR_SHRD_HBW_BASE,
  2489. mmPCIE_LBW_RR_MSTR_IF_RR_SHRD_HBW_BASE,
  2490. mmPCIE_MSTR_RR_MSTR_IF_RR_SHRD_HBW_BASE,
  2491. mmPCIE_WRAP_BASE,
  2492. };
  2493. static const u32 gaudi2_pb_pcie_unsecured_regs[] = {
  2494. mmPCIE_WRAP_SPECIAL_GLBL_SPARE_0,
  2495. };
  2496. static const u32 gaudi2_pb_thermal_sensor0[] = {
  2497. mmDCORE0_XFT_BASE,
  2498. mmDCORE0_TSTDVS_BASE,
  2499. };
  2500. static const u32 gaudi2_pb_hbm[] = {
  2501. mmHBM0_MC0_BASE,
  2502. mmHBM0_MC1_BASE,
  2503. };
  2504. static const u32 gaudi2_pb_mme_qm_arc_acp_eng[] = {
  2505. mmDCORE0_MME_QM_ARC_ACP_ENG_BASE,
  2506. };
  2507. static const struct range gaudi2_pb_mme_qm_arc_acp_eng_unsecured_regs[] = {
  2508. {mmDCORE0_MME_QM_ARC_ACP_ENG_ACP_PI_REG_0, mmDCORE0_MME_QM_ARC_ACP_ENG_ACP_DBG_REG},
  2509. };
  2510. struct gaudi2_tpc_pb_data {
  2511. struct hl_block_glbl_sec *glbl_sec;
  2512. u32 block_array_size;
  2513. };
  2514. static void gaudi2_config_tpcs_glbl_sec(struct hl_device *hdev, int dcore, int inst, u32 offset,
  2515. struct iterate_module_ctx *ctx)
  2516. {
  2517. struct gaudi2_tpc_pb_data *pb_data = ctx->data;
  2518. hl_config_glbl_sec(hdev, gaudi2_pb_dcr0_tpc0, pb_data->glbl_sec,
  2519. offset, pb_data->block_array_size);
  2520. }
  2521. static int gaudi2_init_pb_tpc(struct hl_device *hdev)
  2522. {
  2523. u32 stride, kernel_tensor_stride, qm_tensor_stride, block_array_size;
  2524. struct gaudi2_tpc_pb_data tpc_pb_data;
  2525. struct hl_block_glbl_sec *glbl_sec;
  2526. struct iterate_module_ctx tpc_iter;
  2527. int i;
  2528. block_array_size = ARRAY_SIZE(gaudi2_pb_dcr0_tpc0);
  2529. glbl_sec = kcalloc(block_array_size, sizeof(struct hl_block_glbl_sec), GFP_KERNEL);
  2530. if (!glbl_sec)
  2531. return -ENOMEM;
  2532. kernel_tensor_stride = mmDCORE0_TPC0_CFG_KERNEL_TENSOR_1_BASE -
  2533. mmDCORE0_TPC0_CFG_KERNEL_TENSOR_0_BASE;
  2534. qm_tensor_stride = mmDCORE0_TPC0_CFG_QM_TENSOR_1_BASE - mmDCORE0_TPC0_CFG_QM_TENSOR_0_BASE;
  2535. hl_secure_block(hdev, glbl_sec, block_array_size);
  2536. hl_unsecure_registers(hdev, gaudi2_pb_dcr0_tpc0_unsecured_regs,
  2537. ARRAY_SIZE(gaudi2_pb_dcr0_tpc0_unsecured_regs),
  2538. 0, gaudi2_pb_dcr0_tpc0, glbl_sec,
  2539. block_array_size);
  2540. /* Unsecure all TPC kernel tensors */
  2541. for (i = 0 ; i < TPC_NUM_OF_KERNEL_TENSORS ; i++)
  2542. hl_unsecure_registers(hdev,
  2543. gaudi2_pb_dcr0_tpc0_ktensor_unsecured_regs,
  2544. ARRAY_SIZE(gaudi2_pb_dcr0_tpc0_ktensor_unsecured_regs),
  2545. i * kernel_tensor_stride, gaudi2_pb_dcr0_tpc0,
  2546. glbl_sec, block_array_size);
  2547. /* Unsecure all TPC QM tensors */
  2548. for (i = 0 ; i < TPC_NUM_OF_QM_TENSORS ; i++)
  2549. hl_unsecure_registers(hdev,
  2550. gaudi2_pb_dcr0_tpc0_qtensor_unsecured_regs,
  2551. ARRAY_SIZE(gaudi2_pb_dcr0_tpc0_qtensor_unsecured_regs),
  2552. i * qm_tensor_stride,
  2553. gaudi2_pb_dcr0_tpc0, glbl_sec, block_array_size);
  2554. /* unsecure all 32 TPC QM SRF regs */
  2555. stride = mmDCORE0_TPC0_CFG_QM_SRF_1 - mmDCORE0_TPC0_CFG_QM_SRF_0;
  2556. for (i = 0 ; i < 32 ; i++)
  2557. hl_unsecure_register(hdev, mmDCORE0_TPC0_CFG_QM_SRF_0,
  2558. i * stride, gaudi2_pb_dcr0_tpc0, glbl_sec,
  2559. block_array_size);
  2560. /* unsecure the 4 TPC LOCK VALUE regs */
  2561. stride = mmDCORE0_TPC0_CFG_TPC_LOCK_VALUE_1 - mmDCORE0_TPC0_CFG_TPC_LOCK_VALUE_0;
  2562. for (i = 0 ; i < 4 ; i++)
  2563. hl_unsecure_register(hdev, mmDCORE0_TPC0_CFG_TPC_LOCK_VALUE_0,
  2564. i * stride, gaudi2_pb_dcr0_tpc0, glbl_sec,
  2565. block_array_size);
  2566. /* prepare data for TPC iterator */
  2567. tpc_pb_data.glbl_sec = glbl_sec;
  2568. tpc_pb_data.block_array_size = block_array_size;
  2569. tpc_iter.fn = &gaudi2_config_tpcs_glbl_sec;
  2570. tpc_iter.data = &tpc_pb_data;
  2571. gaudi2_iterate_tpcs(hdev, &tpc_iter);
  2572. kfree(glbl_sec);
  2573. return 0;
  2574. }
  2575. struct gaudi2_tpc_arc_pb_data {
  2576. u32 unsecured_regs_arr_size;
  2577. u32 arc_regs_arr_size;
  2578. };
  2579. static void gaudi2_config_tpcs_pb_ranges(struct hl_device *hdev, int dcore, int inst, u32 offset,
  2580. struct iterate_module_ctx *ctx)
  2581. {
  2582. struct gaudi2_tpc_arc_pb_data *pb_data = ctx->data;
  2583. ctx->rc = hl_init_pb_ranges(hdev, HL_PB_SHARED, HL_PB_NA, 1,
  2584. offset, gaudi2_pb_dcr0_tpc0_arc,
  2585. pb_data->arc_regs_arr_size,
  2586. gaudi2_pb_dcr0_tpc0_arc_unsecured_regs,
  2587. pb_data->unsecured_regs_arr_size);
  2588. }
  2589. static int gaudi2_init_pb_tpc_arc(struct hl_device *hdev)
  2590. {
  2591. struct gaudi2_tpc_arc_pb_data tpc_arc_pb_data;
  2592. struct iterate_module_ctx tpc_iter;
  2593. tpc_arc_pb_data.arc_regs_arr_size = ARRAY_SIZE(gaudi2_pb_dcr0_tpc0_arc);
  2594. tpc_arc_pb_data.unsecured_regs_arr_size =
  2595. ARRAY_SIZE(gaudi2_pb_dcr0_tpc0_arc_unsecured_regs);
  2596. tpc_iter.fn = &gaudi2_config_tpcs_pb_ranges;
  2597. tpc_iter.data = &tpc_arc_pb_data;
  2598. gaudi2_iterate_tpcs(hdev, &tpc_iter);
  2599. return tpc_iter.rc;
  2600. }
  2601. static int gaudi2_init_pb_sm_objs(struct hl_device *hdev)
  2602. {
  2603. int i, j, glbl_sec_array_len = gaudi2_pb_dcr0_sm_objs.glbl_sec_length;
  2604. u32 sec_entry, *sec_array, array_base, first_sob, first_mon;
  2605. array_base = gaudi2_pb_dcr0_sm_objs.mm_block_base_addr +
  2606. gaudi2_pb_dcr0_sm_objs.glbl_sec_offset;
  2607. sec_array = kcalloc(glbl_sec_array_len, sizeof(u32), GFP_KERNEL);
  2608. if (!sec_array)
  2609. return -ENOMEM;
  2610. first_sob = GAUDI2_RESERVED_SOB_NUMBER;
  2611. first_mon = GAUDI2_RESERVED_MON_NUMBER;
  2612. /* 8192 SOB_OBJs skipping first GAUDI2_MAX_PENDING_CS of them */
  2613. for (j = i = first_sob ; i < DCORE_NUM_OF_SOB ; i++, j++)
  2614. UNSET_GLBL_SEC_BIT(sec_array, j);
  2615. /* 2048 MON_PAY ADDR_L skipping first GAUDI2_MAX_PENDING_CS of them */
  2616. for (i = first_mon, j += i ; i < DCORE_NUM_OF_MONITORS ; i++, j++)
  2617. UNSET_GLBL_SEC_BIT(sec_array, j);
  2618. /* 2048 MON_PAY ADDR_H skipping first GAUDI2_MAX_PENDING_CS of them */
  2619. for (i = first_mon, j += i ; i < DCORE_NUM_OF_MONITORS ; i++, j++)
  2620. UNSET_GLBL_SEC_BIT(sec_array, j);
  2621. /* 2048 MON_PAY DATA skipping first GAUDI2_MAX_PENDING_CS of them */
  2622. for (i = first_mon, j += i ; i < DCORE_NUM_OF_MONITORS ; i++, j++)
  2623. UNSET_GLBL_SEC_BIT(sec_array, j);
  2624. /* 2048 MON_ARM skipping first GAUDI2_MAX_PENDING_CS of them */
  2625. for (i = first_mon, j += i ; i < DCORE_NUM_OF_MONITORS ; i++, j++)
  2626. UNSET_GLBL_SEC_BIT(sec_array, j);
  2627. /* 2048 MON_CONFIG skipping first GAUDI2_MAX_PENDING_CS of them */
  2628. for (i = first_mon, j += i ; i < DCORE_NUM_OF_MONITORS ; i++, j++)
  2629. UNSET_GLBL_SEC_BIT(sec_array, j);
  2630. /* 2048 MON_STATUS skipping first GAUDI2_MAX_PENDING_CS of them */
  2631. for (i = first_mon, j += i ; i < DCORE_NUM_OF_MONITORS ; i++, j++)
  2632. UNSET_GLBL_SEC_BIT(sec_array, j);
  2633. /* Unsecure selected Dcore0 registers */
  2634. for (i = 0 ; i < glbl_sec_array_len ; i++) {
  2635. sec_entry = array_base + i * sizeof(u32);
  2636. WREG32(sec_entry, sec_array[i]);
  2637. }
  2638. /* Unsecure Dcore1 - Dcore3 registers */
  2639. memset(sec_array, -1, glbl_sec_array_len * sizeof(u32));
  2640. for (i = 1 ; i < NUM_OF_DCORES ; i++) {
  2641. for (j = 0 ; j < glbl_sec_array_len ; j++) {
  2642. sec_entry = DCORE_OFFSET * i + array_base + j * sizeof(u32);
  2643. WREG32(sec_entry, sec_array[j]);
  2644. }
  2645. }
  2646. kfree(sec_array);
  2647. return 0;
  2648. }
  2649. static void gaudi2_write_lbw_range_register(struct hl_device *hdev, u64 base, void *data)
  2650. {
  2651. u32 reg_min_offset, reg_max_offset, write_min, write_max;
  2652. struct rr_config *rr_cfg = (struct rr_config *) data;
  2653. switch (rr_cfg->type) {
  2654. case RR_TYPE_SHORT:
  2655. reg_min_offset = RR_LBW_SEC_RANGE_MIN_SHORT_0_OFFSET;
  2656. reg_max_offset = RR_LBW_SEC_RANGE_MAX_SHORT_0_OFFSET;
  2657. break;
  2658. case RR_TYPE_LONG:
  2659. reg_min_offset = RR_LBW_SEC_RANGE_MIN_0_OFFSET;
  2660. reg_max_offset = RR_LBW_SEC_RANGE_MAX_0_OFFSET;
  2661. break;
  2662. case RR_TYPE_SHORT_PRIV:
  2663. reg_min_offset = RR_LBW_PRIV_RANGE_MIN_SHORT_0_OFFSET;
  2664. reg_max_offset = RR_LBW_PRIV_RANGE_MAX_SHORT_0_OFFSET;
  2665. break;
  2666. case RR_TYPE_LONG_PRIV:
  2667. reg_min_offset = RR_LBW_PRIV_RANGE_MIN_0_OFFSET;
  2668. reg_max_offset = RR_LBW_PRIV_RANGE_MAX_0_OFFSET;
  2669. break;
  2670. default:
  2671. dev_err(hdev->dev, "Invalid LBW RR type %u\n", rr_cfg->type);
  2672. return;
  2673. }
  2674. reg_min_offset += rr_cfg->index * sizeof(u32);
  2675. reg_max_offset += rr_cfg->index * sizeof(u32);
  2676. if (rr_cfg->type == RR_TYPE_SHORT || rr_cfg->type == RR_TYPE_SHORT_PRIV) {
  2677. write_min = FIELD_GET(RR_LBW_SHORT_MASK, lower_32_bits(rr_cfg->min));
  2678. write_max = FIELD_GET(RR_LBW_SHORT_MASK, lower_32_bits(rr_cfg->max));
  2679. } else {
  2680. write_min = FIELD_GET(RR_LBW_LONG_MASK, lower_32_bits(rr_cfg->min));
  2681. write_max = FIELD_GET(RR_LBW_LONG_MASK, lower_32_bits(rr_cfg->max));
  2682. }
  2683. /* Configure LBW RR:
  2684. * Both RR types start blocking from base address 0x1000007FF8000000
  2685. * SHORT RRs address bits [26:12]
  2686. * LONG RRs address bits [26:0]
  2687. */
  2688. WREG32(base + reg_min_offset, write_min);
  2689. WREG32(base + reg_max_offset, write_max);
  2690. }
  2691. void gaudi2_write_rr_to_all_lbw_rtrs(struct hl_device *hdev, u8 rr_type, u32 rr_index, u64 min_val,
  2692. u64 max_val)
  2693. {
  2694. struct dup_block_ctx block_ctx;
  2695. struct rr_config rr_cfg;
  2696. if ((rr_type == RR_TYPE_SHORT || rr_type == RR_TYPE_SHORT_PRIV) &&
  2697. rr_index >= NUM_SHORT_LBW_RR) {
  2698. dev_err(hdev->dev, "invalid short LBW %s range register index: %u",
  2699. rr_type == RR_TYPE_SHORT ? "secure" : "privileged", rr_index);
  2700. return;
  2701. }
  2702. if ((rr_type == RR_TYPE_LONG || rr_type == RR_TYPE_LONG_PRIV) &&
  2703. rr_index >= NUM_LONG_LBW_RR) {
  2704. dev_err(hdev->dev, "invalid long LBW %s range register index: %u",
  2705. rr_type == RR_TYPE_LONG ? "secure" : "privileged", rr_index);
  2706. return;
  2707. }
  2708. rr_cfg.type = rr_type;
  2709. rr_cfg.index = rr_index;
  2710. rr_cfg.min = min_val;
  2711. rr_cfg.max = max_val;
  2712. block_ctx.instance_cfg_fn = &gaudi2_write_lbw_range_register;
  2713. block_ctx.data = &rr_cfg;
  2714. /* SFT */
  2715. block_ctx.base = mmSFT0_LBW_RTR_IF_MSTR_IF_RR_SHRD_LBW_BASE;
  2716. block_ctx.blocks = NUM_OF_SFT;
  2717. block_ctx.block_off = SFT_OFFSET;
  2718. block_ctx.instances = SFT_NUM_OF_LBW_RTR;
  2719. block_ctx.instance_off = SFT_LBW_RTR_OFFSET;
  2720. gaudi2_init_blocks(hdev, &block_ctx);
  2721. /* SIF */
  2722. block_ctx.base = mmDCORE0_RTR0_MSTR_IF_RR_SHRD_LBW_BASE;
  2723. block_ctx.blocks = NUM_OF_DCORES;
  2724. block_ctx.block_off = DCORE_OFFSET;
  2725. block_ctx.instances = NUM_OF_RTR_PER_DCORE;
  2726. block_ctx.instance_off = DCORE_RTR_OFFSET;
  2727. gaudi2_init_blocks(hdev, &block_ctx);
  2728. block_ctx.blocks = 1;
  2729. block_ctx.block_off = 0;
  2730. block_ctx.instances = 1;
  2731. block_ctx.instance_off = 0;
  2732. /* PCIE ELBI */
  2733. block_ctx.base = mmPCIE_ELBI_RR_MSTR_IF_RR_SHRD_LBW_BASE;
  2734. gaudi2_init_blocks(hdev, &block_ctx);
  2735. /* PCIE MSTR */
  2736. block_ctx.base = mmPCIE_MSTR_RR_MSTR_IF_RR_SHRD_LBW_BASE;
  2737. gaudi2_init_blocks(hdev, &block_ctx);
  2738. /* PCIE LBW */
  2739. block_ctx.base = mmPCIE_LBW_RR_MSTR_IF_RR_SHRD_LBW_BASE;
  2740. gaudi2_init_blocks(hdev, &block_ctx);
  2741. }
  2742. static void gaudi2_init_lbw_range_registers_secure(struct hl_device *hdev)
  2743. {
  2744. int i;
  2745. /* Up to 14 14bit-address regs.
  2746. *
  2747. * - range 0: NIC0_CFG
  2748. * - range 1: NIC1_CFG
  2749. * - range 2: NIC2_CFG
  2750. * - range 3: NIC3_CFG
  2751. * - range 4: NIC4_CFG
  2752. * - range 5: NIC5_CFG
  2753. * - range 6: NIC6_CFG
  2754. * - range 7: NIC7_CFG
  2755. * - range 8: NIC8_CFG
  2756. * - range 9: NIC9_CFG
  2757. * - range 10: NIC10_CFG
  2758. * - range 11: NIC11_CFG + *_DBG (not including TPC_DBG)
  2759. *
  2760. * If F/W security is not enabled:
  2761. * - ranges 12,13: PSOC_CFG (excluding PSOC_TIMESTAMP)
  2762. */
  2763. u64 lbw_range_min_short[] = {
  2764. mmNIC0_TX_AXUSER_BASE,
  2765. mmNIC1_TX_AXUSER_BASE,
  2766. mmNIC2_TX_AXUSER_BASE,
  2767. mmNIC3_TX_AXUSER_BASE,
  2768. mmNIC4_TX_AXUSER_BASE,
  2769. mmNIC5_TX_AXUSER_BASE,
  2770. mmNIC6_TX_AXUSER_BASE,
  2771. mmNIC7_TX_AXUSER_BASE,
  2772. mmNIC8_TX_AXUSER_BASE,
  2773. mmNIC9_TX_AXUSER_BASE,
  2774. mmNIC10_TX_AXUSER_BASE,
  2775. mmNIC11_TX_AXUSER_BASE,
  2776. mmPSOC_I2C_M0_BASE,
  2777. mmPSOC_EFUSE_BASE
  2778. };
  2779. u64 lbw_range_max_short[] = {
  2780. mmNIC0_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2781. mmNIC1_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2782. mmNIC2_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2783. mmNIC3_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2784. mmNIC4_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2785. mmNIC5_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2786. mmNIC6_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2787. mmNIC7_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2788. mmNIC8_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2789. mmNIC9_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2790. mmNIC10_MAC_CH3_MAC_PCS_BASE + HL_BLOCK_SIZE,
  2791. mmNIC11_DBG_FUNNEL_NCH_BASE + HL_BLOCK_SIZE,
  2792. mmPSOC_WDOG_BASE + HL_BLOCK_SIZE,
  2793. mmSVID2_AC_BASE + HL_BLOCK_SIZE
  2794. };
  2795. /* Up to 4 26bit-address regs.
  2796. *
  2797. * - range 0: TPC_DBG
  2798. * - range 1: PCIE_DBI.MSIX_DOORBELL_OFF
  2799. * - range 2/3: used in soft reset to block access to several blocks and are cleared here
  2800. */
  2801. u64 lbw_range_min_long[] = {
  2802. mmDCORE0_TPC0_ROM_TABLE_BASE,
  2803. mmPCIE_DBI_MSIX_DOORBELL_OFF,
  2804. 0x0,
  2805. 0x0
  2806. };
  2807. u64 lbw_range_max_long[] = {
  2808. mmDCORE3_TPC5_EML_CS_BASE + HL_BLOCK_SIZE,
  2809. mmPCIE_DBI_MSIX_DOORBELL_OFF + 0x4,
  2810. 0x0,
  2811. 0x0
  2812. };
  2813. /* write short range registers to all lbw rtrs */
  2814. for (i = 0 ; i < ARRAY_SIZE(lbw_range_min_short) ; i++) {
  2815. if ((lbw_range_min_short[i] == mmPSOC_I2C_M0_BASE ||
  2816. lbw_range_min_short[i] == mmPSOC_EFUSE_BASE) &&
  2817. hdev->asic_prop.fw_security_enabled)
  2818. continue;
  2819. gaudi2_write_rr_to_all_lbw_rtrs(hdev, RR_TYPE_SHORT, i,
  2820. lbw_range_min_short[i], lbw_range_max_short[i]);
  2821. }
  2822. /* write long range registers to all lbw rtrs */
  2823. for (i = 0 ; i < ARRAY_SIZE(lbw_range_min_long) ; i++) {
  2824. gaudi2_write_rr_to_all_lbw_rtrs(hdev, RR_TYPE_LONG, i,
  2825. lbw_range_min_long[i], lbw_range_max_long[i]);
  2826. }
  2827. }
  2828. static void gaudi2_init_lbw_range_registers(struct hl_device *hdev)
  2829. {
  2830. gaudi2_init_lbw_range_registers_secure(hdev);
  2831. }
  2832. static void gaudi2_write_hbw_range_register(struct hl_device *hdev, u64 base, void *data)
  2833. {
  2834. u32 min_lo_reg_offset, min_hi_reg_offset, max_lo_reg_offset, max_hi_reg_offset;
  2835. struct rr_config *rr_cfg = (struct rr_config *) data;
  2836. u64 val_min, val_max;
  2837. switch (rr_cfg->type) {
  2838. case RR_TYPE_SHORT:
  2839. min_lo_reg_offset = RR_SHRD_HBW_SEC_RANGE_MIN_SHORT_LO_0_OFFSET;
  2840. min_hi_reg_offset = RR_SHRD_HBW_SEC_RANGE_MIN_SHORT_HI_0_OFFSET;
  2841. max_lo_reg_offset = RR_SHRD_HBW_SEC_RANGE_MAX_SHORT_LO_0_OFFSET;
  2842. max_hi_reg_offset = RR_SHRD_HBW_SEC_RANGE_MAX_SHORT_HI_0_OFFSET;
  2843. break;
  2844. case RR_TYPE_LONG:
  2845. min_lo_reg_offset = RR_SHRD_HBW_SEC_RANGE_MIN_LO_0_OFFSET;
  2846. min_hi_reg_offset = RR_SHRD_HBW_SEC_RANGE_MIN_HI_0_OFFSET;
  2847. max_lo_reg_offset = RR_SHRD_HBW_SEC_RANGE_MAX_LO_0_OFFSET;
  2848. max_hi_reg_offset = RR_SHRD_HBW_SEC_RANGE_MAX_HI_0_OFFSET;
  2849. break;
  2850. case RR_TYPE_SHORT_PRIV:
  2851. min_lo_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MIN_SHORT_LO_0_OFFSET;
  2852. min_hi_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MIN_SHORT_HI_0_OFFSET;
  2853. max_lo_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MAX_SHORT_LO_0_OFFSET;
  2854. max_hi_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MAX_SHORT_HI_0_OFFSET;
  2855. break;
  2856. case RR_TYPE_LONG_PRIV:
  2857. min_lo_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MIN_LO_0_OFFSET;
  2858. min_hi_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MIN_HI_0_OFFSET;
  2859. max_lo_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MAX_LO_0_OFFSET;
  2860. max_hi_reg_offset = RR_SHRD_HBW_PRIV_RANGE_MAX_HI_0_OFFSET;
  2861. break;
  2862. default:
  2863. dev_err(hdev->dev, "Invalid HBW RR type %u\n", rr_cfg->type);
  2864. return;
  2865. }
  2866. min_lo_reg_offset += rr_cfg->index * sizeof(u32);
  2867. min_hi_reg_offset += rr_cfg->index * sizeof(u32);
  2868. max_lo_reg_offset += rr_cfg->index * sizeof(u32);
  2869. max_hi_reg_offset += rr_cfg->index * sizeof(u32);
  2870. if (rr_cfg->type == RR_TYPE_SHORT || rr_cfg->type == RR_TYPE_SHORT_PRIV) {
  2871. val_min = FIELD_GET(RR_HBW_SHORT_HI_MASK, rr_cfg->min) |
  2872. FIELD_GET(RR_HBW_SHORT_LO_MASK, rr_cfg->min);
  2873. val_max = FIELD_GET(RR_HBW_SHORT_HI_MASK, rr_cfg->max) |
  2874. FIELD_GET(RR_HBW_SHORT_LO_MASK, rr_cfg->max);
  2875. } else {
  2876. val_min = FIELD_GET(RR_HBW_LONG_HI_MASK, rr_cfg->min) |
  2877. FIELD_GET(RR_HBW_LONG_LO_MASK, rr_cfg->min);
  2878. val_max = FIELD_GET(RR_HBW_LONG_HI_MASK, rr_cfg->max) |
  2879. FIELD_GET(RR_HBW_LONG_LO_MASK, rr_cfg->max);
  2880. }
  2881. /* Configure HBW RR:
  2882. * SHORT RRs (0x1000_<36bits>000) - HI: address bits [47:44], LO: address bits [43:12]
  2883. * LONG RRs (0x<52bits>000) - HI: address bits [63:44], LO: address bits [43:12]
  2884. */
  2885. WREG32(base + min_lo_reg_offset, lower_32_bits(val_min));
  2886. WREG32(base + min_hi_reg_offset, upper_32_bits(val_min));
  2887. WREG32(base + max_lo_reg_offset, lower_32_bits(val_max));
  2888. WREG32(base + max_hi_reg_offset, upper_32_bits(val_max));
  2889. }
  2890. static void gaudi2_write_hbw_rr_to_all_mstr_if(struct hl_device *hdev, u8 rr_type, u32 rr_index,
  2891. u64 min_val, u64 max_val)
  2892. {
  2893. struct dup_block_ctx block_ctx;
  2894. struct rr_config rr_cfg;
  2895. if ((rr_type == RR_TYPE_SHORT || rr_type == RR_TYPE_SHORT_PRIV) &&
  2896. rr_index >= NUM_SHORT_HBW_RR) {
  2897. dev_err(hdev->dev, "invalid short HBW %s range register index: %u",
  2898. rr_type == RR_TYPE_SHORT ? "secure" : "privileged", rr_index);
  2899. return;
  2900. }
  2901. if ((rr_type == RR_TYPE_LONG || rr_type == RR_TYPE_LONG_PRIV) &&
  2902. rr_index >= NUM_LONG_HBW_RR) {
  2903. dev_err(hdev->dev, "invalid long HBW %s range register index: %u",
  2904. rr_type == RR_TYPE_LONG ? "secure" : "privileged", rr_index);
  2905. return;
  2906. }
  2907. rr_cfg.type = rr_type;
  2908. rr_cfg.index = rr_index;
  2909. rr_cfg.min = min_val;
  2910. rr_cfg.max = max_val;
  2911. block_ctx.instance_cfg_fn = &gaudi2_write_hbw_range_register;
  2912. block_ctx.data = &rr_cfg;
  2913. /* SFT */
  2914. block_ctx.base = mmSFT0_HBW_RTR_IF0_MSTR_IF_RR_SHRD_HBW_BASE;
  2915. block_ctx.blocks = NUM_OF_SFT;
  2916. block_ctx.block_off = SFT_OFFSET;
  2917. block_ctx.instances = SFT_NUM_OF_HBW_RTR;
  2918. block_ctx.instance_off = SFT_IF_RTR_OFFSET;
  2919. gaudi2_init_blocks(hdev, &block_ctx);
  2920. /* SIF */
  2921. block_ctx.base = mmDCORE0_RTR0_MSTR_IF_RR_SHRD_HBW_BASE;
  2922. block_ctx.blocks = NUM_OF_DCORES;
  2923. block_ctx.block_off = DCORE_OFFSET;
  2924. block_ctx.instances = NUM_OF_RTR_PER_DCORE;
  2925. block_ctx.instance_off = DCORE_RTR_OFFSET;
  2926. gaudi2_init_blocks(hdev, &block_ctx);
  2927. /* PCIE MSTR */
  2928. block_ctx.base = mmPCIE_MSTR_RR_MSTR_IF_RR_SHRD_HBW_BASE;
  2929. block_ctx.blocks = 1;
  2930. block_ctx.block_off = 0;
  2931. block_ctx.instances = 1;
  2932. block_ctx.instance_off = 0;
  2933. gaudi2_init_blocks(hdev, &block_ctx);
  2934. }
  2935. static void gaudi2_init_hbw_range_registers(struct hl_device *hdev)
  2936. {
  2937. int i;
  2938. /* Up to 6 short RR (0x1000_<36bits>000) and 4 long RR (0x<52bits>000).
  2939. *
  2940. * - short range 0:
  2941. * SPI Flash, ARC0/1 ICCM/DCCM, Secure Boot ROM, PSOC_FW/Scratchpad/PCIE_FW SRAM
  2942. */
  2943. u64 hbw_range_min_short[] = {
  2944. SPI_FLASH_BASE_ADDR
  2945. };
  2946. u64 hbw_range_max_short[] = {
  2947. PCIE_FW_SRAM_ADDR + PCIE_FW_SRAM_SIZE
  2948. };
  2949. for (i = 0 ; i < ARRAY_SIZE(hbw_range_min_short) ; i++) {
  2950. gaudi2_write_hbw_rr_to_all_mstr_if(hdev, RR_TYPE_SHORT, i, hbw_range_min_short[i],
  2951. hbw_range_max_short[i]);
  2952. }
  2953. }
  2954. static void gaudi2_write_mmu_range_register(struct hl_device *hdev, u64 base,
  2955. struct rr_config *rr_cfg)
  2956. {
  2957. u32 min_lo_reg_offset, min_hi_reg_offset, max_lo_reg_offset, max_hi_reg_offset;
  2958. switch (rr_cfg->type) {
  2959. case RR_TYPE_LONG:
  2960. min_lo_reg_offset = MMU_RR_SEC_MIN_31_0_0_OFFSET;
  2961. min_hi_reg_offset = MMU_RR_SEC_MIN_63_32_0_OFFSET;
  2962. max_lo_reg_offset = MMU_RR_SEC_MAX_31_0_0_OFFSET;
  2963. max_hi_reg_offset = MMU_RR_SEC_MAX_63_32_0_OFFSET;
  2964. break;
  2965. case RR_TYPE_LONG_PRIV:
  2966. min_lo_reg_offset = MMU_RR_PRIV_MIN_31_0_0_OFFSET;
  2967. min_hi_reg_offset = MMU_RR_PRIV_MIN_63_32_0_OFFSET;
  2968. max_lo_reg_offset = MMU_RR_PRIV_MAX_31_0_0_OFFSET;
  2969. max_hi_reg_offset = MMU_RR_PRIV_MAX_63_32_0_OFFSET;
  2970. break;
  2971. default:
  2972. dev_err(hdev->dev, "Invalid MMU RR type %u\n", rr_cfg->type);
  2973. return;
  2974. }
  2975. min_lo_reg_offset += rr_cfg->index * sizeof(u32);
  2976. min_hi_reg_offset += rr_cfg->index * sizeof(u32);
  2977. max_lo_reg_offset += rr_cfg->index * sizeof(u32);
  2978. max_hi_reg_offset += rr_cfg->index * sizeof(u32);
  2979. /* Configure MMU RR (address bits [63:0]) */
  2980. WREG32(base + min_lo_reg_offset, lower_32_bits(rr_cfg->min));
  2981. WREG32(base + min_hi_reg_offset, upper_32_bits(rr_cfg->min));
  2982. WREG32(base + max_lo_reg_offset, lower_32_bits(rr_cfg->max));
  2983. WREG32(base + max_hi_reg_offset, upper_32_bits(rr_cfg->max));
  2984. }
  2985. static void gaudi2_init_mmu_range_registers(struct hl_device *hdev)
  2986. {
  2987. u32 dcore_id, hmmu_id, hmmu_base;
  2988. struct rr_config rr_cfg;
  2989. /* Up to 8 ranges [63:0].
  2990. *
  2991. * - range 0: Reserved HBM area for F/W and driver
  2992. */
  2993. /* The RRs are located after the HMMU so need to use the scrambled addresses */
  2994. rr_cfg.min = hdev->asic_funcs->scramble_addr(hdev, DRAM_PHYS_BASE);
  2995. rr_cfg.max = hdev->asic_funcs->scramble_addr(hdev, hdev->asic_prop.dram_user_base_address);
  2996. rr_cfg.index = 0;
  2997. rr_cfg.type = RR_TYPE_LONG;
  2998. for (dcore_id = 0 ; dcore_id < NUM_OF_DCORES ; dcore_id++) {
  2999. for (hmmu_id = 0 ; hmmu_id < NUM_OF_HMMU_PER_DCORE; hmmu_id++) {
  3000. if (!gaudi2_is_hmmu_enabled(hdev, dcore_id, hmmu_id))
  3001. continue;
  3002. hmmu_base = mmDCORE0_HMMU0_MMU_BASE + dcore_id * DCORE_OFFSET +
  3003. hmmu_id * DCORE_HMMU_OFFSET;
  3004. gaudi2_write_mmu_range_register(hdev, hmmu_base, &rr_cfg);
  3005. }
  3006. }
  3007. }
  3008. /**
  3009. * gaudi2_init_range_registers -
  3010. * Initialize range registers of all initiators
  3011. *
  3012. * @hdev: pointer to hl_device structure
  3013. */
  3014. static void gaudi2_init_range_registers(struct hl_device *hdev)
  3015. {
  3016. gaudi2_init_lbw_range_registers(hdev);
  3017. gaudi2_init_hbw_range_registers(hdev);
  3018. gaudi2_init_mmu_range_registers(hdev);
  3019. }
  3020. /**
  3021. * gaudi2_init_protection_bits -
  3022. * Initialize protection bits of specific registers
  3023. *
  3024. * @hdev: pointer to hl_device structure
  3025. *
  3026. * All protection bits are 1 by default, means not protected. Need to set to 0
  3027. * each bit that belongs to a protected register.
  3028. *
  3029. */
  3030. static int gaudi2_init_protection_bits(struct hl_device *hdev)
  3031. {
  3032. struct asic_fixed_properties *prop = &hdev->asic_prop;
  3033. u32 instance_offset;
  3034. int rc = 0;
  3035. u8 i;
  3036. /* SFT */
  3037. instance_offset = mmSFT1_HBW_RTR_IF0_RTR_CTRL_BASE - mmSFT0_HBW_RTR_IF0_RTR_CTRL_BASE;
  3038. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA, 4, instance_offset,
  3039. gaudi2_pb_sft0, ARRAY_SIZE(gaudi2_pb_sft0),
  3040. NULL, HL_PB_NA);
  3041. /* HIF */
  3042. instance_offset = mmDCORE0_HIF1_BASE - mmDCORE0_HIF0_BASE;
  3043. rc |= hl_init_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3044. NUM_OF_HIF_PER_DCORE, instance_offset,
  3045. gaudi2_pb_dcr0_hif, ARRAY_SIZE(gaudi2_pb_dcr0_hif),
  3046. NULL, HL_PB_NA, prop->hmmu_hif_enabled_mask);
  3047. /* RTR */
  3048. instance_offset = mmDCORE0_RTR1_CTRL_BASE - mmDCORE0_RTR0_CTRL_BASE;
  3049. rc |= hl_init_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, 8, instance_offset,
  3050. gaudi2_pb_dcr0_rtr0, ARRAY_SIZE(gaudi2_pb_dcr0_rtr0),
  3051. NULL, HL_PB_NA);
  3052. /* HMMU */
  3053. rc |= hl_init_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3054. NUM_OF_HMMU_PER_DCORE, DCORE_HMMU_OFFSET,
  3055. gaudi2_pb_dcr0_hmmu0, ARRAY_SIZE(gaudi2_pb_dcr0_hmmu0),
  3056. NULL, HL_PB_NA, prop->hmmu_hif_enabled_mask);
  3057. /* CPU.
  3058. * Except for CPU_IF, skip when security is enabled in F/W, because the blocks are protected
  3059. * by privileged RR.
  3060. */
  3061. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3062. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3063. gaudi2_pb_cpu_if, ARRAY_SIZE(gaudi2_pb_cpu_if),
  3064. NULL, HL_PB_NA);
  3065. if (!hdev->asic_prop.fw_security_enabled)
  3066. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3067. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3068. gaudi2_pb_cpu, ARRAY_SIZE(gaudi2_pb_cpu),
  3069. NULL, HL_PB_NA);
  3070. /* KDMA */
  3071. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3072. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3073. gaudi2_pb_kdma, ARRAY_SIZE(gaudi2_pb_kdma),
  3074. NULL, HL_PB_NA);
  3075. /* PDMA */
  3076. instance_offset = mmPDMA1_CORE_BASE - mmPDMA0_CORE_BASE;
  3077. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA, 2, instance_offset,
  3078. gaudi2_pb_pdma0, ARRAY_SIZE(gaudi2_pb_pdma0),
  3079. gaudi2_pb_pdma0_unsecured_regs,
  3080. ARRAY_SIZE(gaudi2_pb_pdma0_unsecured_regs));
  3081. /* ARC PDMA */
  3082. rc |= hl_init_pb_ranges(hdev, HL_PB_SHARED, HL_PB_NA, 2,
  3083. instance_offset, gaudi2_pb_pdma0_arc,
  3084. ARRAY_SIZE(gaudi2_pb_pdma0_arc),
  3085. gaudi2_pb_pdma0_arc_unsecured_regs,
  3086. ARRAY_SIZE(gaudi2_pb_pdma0_arc_unsecured_regs));
  3087. /* EDMA */
  3088. instance_offset = mmDCORE0_EDMA1_CORE_BASE - mmDCORE0_EDMA0_CORE_BASE;
  3089. rc |= hl_init_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET, 2,
  3090. instance_offset, gaudi2_pb_dcr0_edma0,
  3091. ARRAY_SIZE(gaudi2_pb_dcr0_edma0),
  3092. gaudi2_pb_dcr0_edma0_unsecured_regs,
  3093. ARRAY_SIZE(gaudi2_pb_dcr0_edma0_unsecured_regs),
  3094. prop->edma_enabled_mask);
  3095. /* ARC EDMA */
  3096. rc |= hl_init_pb_ranges_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET, 2,
  3097. instance_offset, gaudi2_pb_dcr0_edma0_arc,
  3098. ARRAY_SIZE(gaudi2_pb_dcr0_edma0_arc),
  3099. gaudi2_pb_dcr0_edma0_arc_unsecured_regs,
  3100. ARRAY_SIZE(gaudi2_pb_dcr0_edma0_arc_unsecured_regs),
  3101. prop->edma_enabled_mask);
  3102. /* MME */
  3103. instance_offset = mmDCORE0_MME_SBTE1_BASE - mmDCORE0_MME_SBTE0_BASE;
  3104. for (i = 0 ; i < NUM_OF_DCORES * NUM_OF_MME_PER_DCORE ; i++) {
  3105. /* MME SBTE */
  3106. rc |= hl_init_pb_single_dcore(hdev, (DCORE_OFFSET * i), 5,
  3107. instance_offset, gaudi2_pb_dcr0_mme_sbte,
  3108. ARRAY_SIZE(gaudi2_pb_dcr0_mme_sbte), NULL,
  3109. HL_PB_NA);
  3110. /* MME */
  3111. rc |= hl_init_pb_single_dcore(hdev, (DCORE_OFFSET * i),
  3112. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3113. gaudi2_pb_dcr0_mme_eng,
  3114. ARRAY_SIZE(gaudi2_pb_dcr0_mme_eng),
  3115. gaudi2_pb_dcr0_mme_eng_unsecured_regs,
  3116. ARRAY_SIZE(gaudi2_pb_dcr0_mme_eng_unsecured_regs));
  3117. }
  3118. /*
  3119. * we have special iteration for case in which we would like to
  3120. * configure stubbed MME's ARC/QMAN
  3121. */
  3122. for (i = 0 ; i < NUM_OF_DCORES * NUM_OF_MME_PER_DCORE ; i++) {
  3123. /* MME QM */
  3124. rc |= hl_init_pb_single_dcore(hdev, (DCORE_OFFSET * i),
  3125. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3126. gaudi2_pb_dcr0_mme_qm,
  3127. ARRAY_SIZE(gaudi2_pb_dcr0_mme_qm),
  3128. gaudi2_pb_dcr0_mme_qm_unsecured_regs,
  3129. ARRAY_SIZE(gaudi2_pb_dcr0_mme_qm_unsecured_regs));
  3130. /* ARC MME */
  3131. rc |= hl_init_pb_ranges_single_dcore(hdev, (DCORE_OFFSET * i),
  3132. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3133. gaudi2_pb_dcr0_mme_arc,
  3134. ARRAY_SIZE(gaudi2_pb_dcr0_mme_arc),
  3135. gaudi2_pb_dcr0_mme_arc_unsecured_regs,
  3136. ARRAY_SIZE(gaudi2_pb_dcr0_mme_arc_unsecured_regs));
  3137. }
  3138. /* MME QM ARC ACP ENG */
  3139. rc |= hl_init_pb_ranges_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3140. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3141. gaudi2_pb_mme_qm_arc_acp_eng,
  3142. ARRAY_SIZE(gaudi2_pb_mme_qm_arc_acp_eng),
  3143. gaudi2_pb_mme_qm_arc_acp_eng_unsecured_regs,
  3144. ARRAY_SIZE(gaudi2_pb_mme_qm_arc_acp_eng_unsecured_regs),
  3145. (BIT(NUM_OF_DCORES * NUM_OF_MME_PER_DCORE) - 1));
  3146. /* TPC */
  3147. rc |= gaudi2_init_pb_tpc(hdev);
  3148. rc |= gaudi2_init_pb_tpc_arc(hdev);
  3149. /* SRAM */
  3150. instance_offset = mmDCORE0_SRAM1_BANK_BASE - mmDCORE0_SRAM0_BANK_BASE;
  3151. rc |= hl_init_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, 8, instance_offset,
  3152. gaudi2_pb_dcr0_sram0, ARRAY_SIZE(gaudi2_pb_dcr0_sram0),
  3153. NULL, HL_PB_NA);
  3154. /* Sync Manager MSTR IF */
  3155. rc |= hl_init_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3156. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3157. gaudi2_pb_dcr0_sm_mstr_if,
  3158. ARRAY_SIZE(gaudi2_pb_dcr0_sm_mstr_if),
  3159. NULL, HL_PB_NA);
  3160. /* Sync Manager GLBL */
  3161. /* Unsecure all CQ registers */
  3162. rc |= hl_init_pb_ranges(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3163. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3164. gaudi2_pb_dcr0_sm_glbl,
  3165. ARRAY_SIZE(gaudi2_pb_dcr0_sm_glbl),
  3166. gaudi2_pb_dcr_x_sm_glbl_unsecured_regs,
  3167. ARRAY_SIZE(gaudi2_pb_dcr_x_sm_glbl_unsecured_regs));
  3168. /* Secure Dcore0 CQ0 registers */
  3169. rc |= hl_init_pb_ranges(hdev, HL_PB_SHARED, HL_PB_NA,
  3170. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3171. gaudi2_pb_dcr0_sm_glbl,
  3172. ARRAY_SIZE(gaudi2_pb_dcr0_sm_glbl),
  3173. gaudi2_pb_dcr0_sm_glbl_unsecured_regs,
  3174. ARRAY_SIZE(gaudi2_pb_dcr0_sm_glbl_unsecured_regs));
  3175. /* PSOC.
  3176. * Except for PSOC_GLOBAL_CONF, skip when security is enabled in F/W, because the blocks are
  3177. * protected by privileged RR.
  3178. */
  3179. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3180. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3181. gaudi2_pb_psoc_global_conf, ARRAY_SIZE(gaudi2_pb_psoc_global_conf),
  3182. NULL, HL_PB_NA);
  3183. if (!hdev->asic_prop.fw_security_enabled)
  3184. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3185. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3186. gaudi2_pb_psoc, ARRAY_SIZE(gaudi2_pb_psoc),
  3187. NULL, HL_PB_NA);
  3188. /* PMMU */
  3189. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3190. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3191. gaudi2_pb_pmmu, ARRAY_SIZE(gaudi2_pb_pmmu),
  3192. NULL, HL_PB_NA);
  3193. /* PLL.
  3194. * Skip PSOC/XFT PLL when security is enabled in F/W, because these blocks are protected by
  3195. * privileged RR.
  3196. */
  3197. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3198. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3199. gaudi2_pb_pmmu_pll, ARRAY_SIZE(gaudi2_pb_pmmu_pll),
  3200. NULL, HL_PB_NA);
  3201. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3202. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3203. gaudi2_pb_xbar_pll, ARRAY_SIZE(gaudi2_pb_xbar_pll),
  3204. NULL, HL_PB_NA);
  3205. if (!hdev->asic_prop.fw_security_enabled) {
  3206. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3207. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3208. gaudi2_pb_psoc_pll, ARRAY_SIZE(gaudi2_pb_psoc_pll),
  3209. NULL, HL_PB_NA);
  3210. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3211. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3212. gaudi2_pb_xft_pll, ARRAY_SIZE(gaudi2_pb_xft_pll),
  3213. NULL, HL_PB_NA);
  3214. }
  3215. /* PCIE */
  3216. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA,
  3217. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3218. gaudi2_pb_pcie, ARRAY_SIZE(gaudi2_pb_pcie),
  3219. gaudi2_pb_pcie_unsecured_regs,
  3220. ARRAY_SIZE(gaudi2_pb_pcie_unsecured_regs));
  3221. /* Thermal Sensor.
  3222. * Skip when security is enabled in F/W, because the blocks are protected by privileged RR.
  3223. */
  3224. if (!hdev->asic_prop.fw_security_enabled) {
  3225. instance_offset = mmDCORE1_XFT_BASE - mmDCORE0_XFT_BASE;
  3226. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA, 4, instance_offset,
  3227. gaudi2_pb_thermal_sensor0,
  3228. ARRAY_SIZE(gaudi2_pb_thermal_sensor0), NULL, HL_PB_NA);
  3229. }
  3230. /* HBM */
  3231. /* Temporarily skip until SW-63348 is solved
  3232. * instance_offset = mmHBM1_MC0_BASE - mmHBM0_MC0_BASE;
  3233. * rc |= hl_init_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, GAUDI2_HBM_NUM,
  3234. * instance_offset, gaudi2_pb_hbm,
  3235. * ARRAY_SIZE(gaudi2_pb_hbm), NULL, HL_PB_NA,
  3236. * prop->dram_enabled_mask);
  3237. */
  3238. /* Scheduler ARCs */
  3239. instance_offset = mmARC_FARM_ARC1_AUX_BASE - mmARC_FARM_ARC0_AUX_BASE;
  3240. rc |= hl_init_pb_ranges(hdev, HL_PB_SHARED, HL_PB_NA,
  3241. NUM_OF_ARC_FARMS_ARC,
  3242. instance_offset, gaudi2_pb_arc_sched,
  3243. ARRAY_SIZE(gaudi2_pb_arc_sched),
  3244. gaudi2_pb_arc_sched_unsecured_regs,
  3245. ARRAY_SIZE(gaudi2_pb_arc_sched_unsecured_regs));
  3246. /* XBAR MIDs */
  3247. instance_offset = mmXBAR_MID_1_BASE - mmXBAR_MID_0_BASE;
  3248. rc |= hl_init_pb(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_XBAR,
  3249. instance_offset, gaudi2_pb_xbar_mid,
  3250. ARRAY_SIZE(gaudi2_pb_xbar_mid),
  3251. gaudi2_pb_xbar_mid_unsecured_regs,
  3252. ARRAY_SIZE(gaudi2_pb_xbar_mid_unsecured_regs));
  3253. /* XBAR EDGEs */
  3254. instance_offset = mmXBAR_EDGE_1_BASE - mmXBAR_EDGE_0_BASE;
  3255. rc |= hl_init_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_XBAR,
  3256. instance_offset, gaudi2_pb_xbar_edge,
  3257. ARRAY_SIZE(gaudi2_pb_xbar_edge),
  3258. gaudi2_pb_xbar_edge_unsecured_regs,
  3259. ARRAY_SIZE(gaudi2_pb_xbar_edge_unsecured_regs),
  3260. prop->xbar_edge_enabled_mask);
  3261. /* NIC */
  3262. rc |= hl_init_pb_with_mask(hdev, NIC_NUMBER_OF_MACROS, NIC_OFFSET,
  3263. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3264. gaudi2_pb_nic0, ARRAY_SIZE(gaudi2_pb_nic0),
  3265. NULL, HL_PB_NA, hdev->nic_ports_mask);
  3266. /* NIC QM and QPC */
  3267. rc |= hl_init_pb_with_mask(hdev, NIC_NUMBER_OF_MACROS, NIC_OFFSET,
  3268. NIC_NUMBER_OF_QM_PER_MACRO, NIC_QM_OFFSET,
  3269. gaudi2_pb_nic0_qm_qpc, ARRAY_SIZE(gaudi2_pb_nic0_qm_qpc),
  3270. gaudi2_pb_nic0_qm_qpc_unsecured_regs,
  3271. ARRAY_SIZE(gaudi2_pb_nic0_qm_qpc_unsecured_regs),
  3272. hdev->nic_ports_mask);
  3273. /* NIC QM ARC */
  3274. rc |= hl_init_pb_ranges_with_mask(hdev, NIC_NUMBER_OF_MACROS,
  3275. NIC_OFFSET, NIC_NUMBER_OF_QM_PER_MACRO, NIC_QM_OFFSET,
  3276. gaudi2_pb_nic0_qm_arc_aux0,
  3277. ARRAY_SIZE(gaudi2_pb_nic0_qm_arc_aux0),
  3278. gaudi2_pb_nic0_qm_arc_aux0_unsecured_regs,
  3279. ARRAY_SIZE(gaudi2_pb_nic0_qm_arc_aux0_unsecured_regs),
  3280. hdev->nic_ports_mask);
  3281. /* NIC UMR */
  3282. rc |= hl_init_pb_ranges_with_mask(hdev, NIC_NUMBER_OF_MACROS,
  3283. NIC_OFFSET, NIC_NUMBER_OF_QM_PER_MACRO, NIC_QM_OFFSET,
  3284. gaudi2_pb_nic0_umr,
  3285. ARRAY_SIZE(gaudi2_pb_nic0_umr),
  3286. gaudi2_pb_nic0_umr_unsecured_regs,
  3287. ARRAY_SIZE(gaudi2_pb_nic0_umr_unsecured_regs),
  3288. hdev->nic_ports_mask);
  3289. /* Rotators */
  3290. instance_offset = mmROT1_BASE - mmROT0_BASE;
  3291. rc |= hl_init_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_ROT,
  3292. instance_offset, gaudi2_pb_rot0,
  3293. ARRAY_SIZE(gaudi2_pb_rot0),
  3294. gaudi2_pb_rot0_unsecured_regs,
  3295. ARRAY_SIZE(gaudi2_pb_rot0_unsecured_regs),
  3296. (BIT(NUM_OF_ROT) - 1));
  3297. /* Rotators ARCS */
  3298. rc |= hl_init_pb_ranges_with_mask(hdev, HL_PB_SHARED,
  3299. HL_PB_NA, NUM_OF_ROT, instance_offset,
  3300. gaudi2_pb_rot0_arc, ARRAY_SIZE(gaudi2_pb_rot0_arc),
  3301. gaudi2_pb_rot0_arc_unsecured_regs,
  3302. ARRAY_SIZE(gaudi2_pb_rot0_arc_unsecured_regs),
  3303. (BIT(NUM_OF_ROT) - 1));
  3304. rc |= gaudi2_init_pb_sm_objs(hdev);
  3305. return rc;
  3306. }
  3307. /**
  3308. * gaudi2_init_security - Initialize security model
  3309. *
  3310. * @hdev: pointer to hl_device structure
  3311. *
  3312. * Initialize the security model of the device
  3313. * That includes range registers and protection bit per register.
  3314. */
  3315. int gaudi2_init_security(struct hl_device *hdev)
  3316. {
  3317. int rc;
  3318. rc = gaudi2_init_protection_bits(hdev);
  3319. if (rc)
  3320. return rc;
  3321. gaudi2_init_range_registers(hdev);
  3322. return 0;
  3323. }
  3324. struct gaudi2_ack_pb_tpc_data {
  3325. u32 tpc_regs_array_size;
  3326. u32 arc_tpc_regs_array_size;
  3327. };
  3328. static void gaudi2_ack_pb_tpc_config(struct hl_device *hdev, int dcore, int inst, u32 offset,
  3329. struct iterate_module_ctx *ctx)
  3330. {
  3331. struct gaudi2_ack_pb_tpc_data *pb_data = ctx->data;
  3332. hl_ack_pb_single_dcore(hdev, offset, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3333. gaudi2_pb_dcr0_tpc0, pb_data->tpc_regs_array_size);
  3334. hl_ack_pb_single_dcore(hdev, offset, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3335. gaudi2_pb_dcr0_tpc0_arc, pb_data->arc_tpc_regs_array_size);
  3336. }
  3337. static void gaudi2_ack_pb_tpc(struct hl_device *hdev)
  3338. {
  3339. struct iterate_module_ctx tpc_iter = {
  3340. .fn = &gaudi2_ack_pb_tpc_config,
  3341. };
  3342. struct gaudi2_ack_pb_tpc_data data;
  3343. data.tpc_regs_array_size = ARRAY_SIZE(gaudi2_pb_dcr0_tpc0);
  3344. data.arc_tpc_regs_array_size = ARRAY_SIZE(gaudi2_pb_dcr0_tpc0_arc);
  3345. tpc_iter.data = &data;
  3346. gaudi2_iterate_tpcs(hdev, &tpc_iter);
  3347. }
  3348. /**
  3349. * gaudi2_ack_protection_bits_errors - scan all blocks having protection bits
  3350. * and for every protection error found, display the appropriate error message
  3351. * and clear the error.
  3352. *
  3353. * @hdev: pointer to hl_device structure
  3354. *
  3355. * All protection bits are 1 by default, means not protected. Need to set to 0
  3356. * each bit that belongs to a protected register.
  3357. *
  3358. */
  3359. void gaudi2_ack_protection_bits_errors(struct hl_device *hdev)
  3360. {
  3361. struct asic_fixed_properties *prop = &hdev->asic_prop;
  3362. u32 instance_offset;
  3363. u8 i;
  3364. /* SFT */
  3365. instance_offset = mmSFT1_HBW_RTR_IF0_RTR_CTRL_BASE - mmSFT0_HBW_RTR_IF0_RTR_CTRL_BASE;
  3366. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, 4, instance_offset,
  3367. gaudi2_pb_sft0, ARRAY_SIZE(gaudi2_pb_sft0));
  3368. /* HIF */
  3369. instance_offset = mmDCORE0_HIF1_BASE - mmDCORE0_HIF0_BASE;
  3370. hl_ack_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3371. NUM_OF_HIF_PER_DCORE, instance_offset,
  3372. gaudi2_pb_dcr0_hif, ARRAY_SIZE(gaudi2_pb_dcr0_hif),
  3373. prop->hmmu_hif_enabled_mask);
  3374. /* RTR */
  3375. instance_offset = mmDCORE0_RTR1_CTRL_BASE - mmDCORE0_RTR0_CTRL_BASE;
  3376. hl_ack_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, 8, instance_offset,
  3377. gaudi2_pb_dcr0_rtr0, ARRAY_SIZE(gaudi2_pb_dcr0_rtr0));
  3378. /* HMMU */
  3379. hl_ack_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3380. NUM_OF_HMMU_PER_DCORE, DCORE_HMMU_OFFSET,
  3381. gaudi2_pb_dcr0_hmmu0, ARRAY_SIZE(gaudi2_pb_dcr0_hmmu0),
  3382. prop->hmmu_hif_enabled_mask);
  3383. /* CPU.
  3384. * Except for CPU_IF, skip when security is enabled in F/W, because the blocks are protected
  3385. * by privileged RR.
  3386. */
  3387. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3388. gaudi2_pb_cpu_if, ARRAY_SIZE(gaudi2_pb_cpu_if));
  3389. if (!hdev->asic_prop.fw_security_enabled)
  3390. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3391. gaudi2_pb_cpu, ARRAY_SIZE(gaudi2_pb_cpu));
  3392. /* KDMA */
  3393. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3394. gaudi2_pb_kdma, ARRAY_SIZE(gaudi2_pb_kdma));
  3395. /* PDMA */
  3396. instance_offset = mmPDMA1_CORE_BASE - mmPDMA0_CORE_BASE;
  3397. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, 2, instance_offset,
  3398. gaudi2_pb_pdma0, ARRAY_SIZE(gaudi2_pb_pdma0));
  3399. /* ARC PDMA */
  3400. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, 2, instance_offset,
  3401. gaudi2_pb_pdma0_arc, ARRAY_SIZE(gaudi2_pb_pdma0_arc));
  3402. /* EDMA */
  3403. instance_offset = mmDCORE0_EDMA1_CORE_BASE - mmDCORE0_EDMA0_CORE_BASE;
  3404. hl_ack_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET, 2,
  3405. instance_offset, gaudi2_pb_dcr0_edma0,
  3406. ARRAY_SIZE(gaudi2_pb_dcr0_edma0),
  3407. prop->edma_enabled_mask);
  3408. /* ARC EDMA */
  3409. hl_ack_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET, 2,
  3410. instance_offset, gaudi2_pb_dcr0_edma0_arc,
  3411. ARRAY_SIZE(gaudi2_pb_dcr0_edma0_arc),
  3412. prop->edma_enabled_mask);
  3413. /* MME */
  3414. instance_offset = mmDCORE0_MME_SBTE1_BASE - mmDCORE0_MME_SBTE0_BASE;
  3415. for (i = 0 ; i < NUM_OF_DCORES * NUM_OF_MME_PER_DCORE ; i++) {
  3416. /* MME SBTE */
  3417. hl_ack_pb_single_dcore(hdev, (DCORE_OFFSET * i), 5,
  3418. instance_offset, gaudi2_pb_dcr0_mme_sbte,
  3419. ARRAY_SIZE(gaudi2_pb_dcr0_mme_sbte));
  3420. /* MME */
  3421. hl_ack_pb_single_dcore(hdev, (DCORE_OFFSET * i),
  3422. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3423. gaudi2_pb_dcr0_mme_eng,
  3424. ARRAY_SIZE(gaudi2_pb_dcr0_mme_eng));
  3425. }
  3426. /*
  3427. * we have special iteration for case in which we would like to
  3428. * configure stubbed MME's ARC/QMAN
  3429. */
  3430. for (i = 0 ; i < NUM_OF_DCORES * NUM_OF_MME_PER_DCORE ; i++) {
  3431. /* MME QM */
  3432. hl_ack_pb_single_dcore(hdev, (DCORE_OFFSET * i),
  3433. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3434. gaudi2_pb_dcr0_mme_qm,
  3435. ARRAY_SIZE(gaudi2_pb_dcr0_mme_qm));
  3436. /* ARC MME */
  3437. hl_ack_pb_single_dcore(hdev, (DCORE_OFFSET * i),
  3438. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3439. gaudi2_pb_dcr0_mme_arc,
  3440. ARRAY_SIZE(gaudi2_pb_dcr0_mme_arc));
  3441. }
  3442. /* MME QM ARC ACP ENG */
  3443. hl_ack_pb_with_mask(hdev, NUM_OF_DCORES, DCORE_OFFSET,
  3444. HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3445. gaudi2_pb_mme_qm_arc_acp_eng,
  3446. ARRAY_SIZE(gaudi2_pb_mme_qm_arc_acp_eng),
  3447. (BIT(NUM_OF_DCORES * NUM_OF_MME_PER_DCORE) - 1));
  3448. /* TPC */
  3449. gaudi2_ack_pb_tpc(hdev);
  3450. /* SRAM */
  3451. instance_offset = mmDCORE0_SRAM1_BANK_BASE - mmDCORE0_SRAM0_BANK_BASE;
  3452. hl_ack_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, 8, instance_offset,
  3453. gaudi2_pb_dcr0_sram0, ARRAY_SIZE(gaudi2_pb_dcr0_sram0));
  3454. /* Sync Manager MSTR IF */
  3455. hl_ack_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3456. gaudi2_pb_dcr0_sm_mstr_if, ARRAY_SIZE(gaudi2_pb_dcr0_sm_mstr_if));
  3457. /* Sync Manager */
  3458. hl_ack_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3459. gaudi2_pb_dcr0_sm_glbl, ARRAY_SIZE(gaudi2_pb_dcr0_sm_glbl));
  3460. hl_ack_pb(hdev, NUM_OF_DCORES, DCORE_OFFSET, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3461. gaudi2_pb_dcr0_sm_mstr_if, ARRAY_SIZE(gaudi2_pb_dcr0_sm_mstr_if));
  3462. /* PSOC.
  3463. * Except for PSOC_GLOBAL_CONF, skip when security is enabled in F/W, because the blocks are
  3464. * protected by privileged RR.
  3465. */
  3466. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3467. gaudi2_pb_psoc_global_conf, ARRAY_SIZE(gaudi2_pb_psoc_global_conf));
  3468. if (!hdev->asic_prop.fw_security_enabled)
  3469. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3470. gaudi2_pb_psoc, ARRAY_SIZE(gaudi2_pb_psoc));
  3471. /* PMMU */
  3472. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3473. gaudi2_pb_pmmu, ARRAY_SIZE(gaudi2_pb_pmmu));
  3474. /* PLL.
  3475. * Skip PSOC/XFT PLL when security is enabled in F/W, because these blocks are protected by
  3476. * privileged RR.
  3477. */
  3478. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3479. gaudi2_pb_pmmu_pll, ARRAY_SIZE(gaudi2_pb_pmmu_pll));
  3480. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3481. gaudi2_pb_xbar_pll, ARRAY_SIZE(gaudi2_pb_xbar_pll));
  3482. if (!hdev->asic_prop.fw_security_enabled) {
  3483. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3484. gaudi2_pb_psoc_pll, ARRAY_SIZE(gaudi2_pb_psoc_pll));
  3485. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3486. gaudi2_pb_xft_pll, ARRAY_SIZE(gaudi2_pb_xft_pll));
  3487. }
  3488. /* PCIE */
  3489. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3490. gaudi2_pb_pcie, ARRAY_SIZE(gaudi2_pb_pcie));
  3491. /* Thermal Sensor.
  3492. * Skip when security is enabled in F/W, because the blocks are protected by privileged RR.
  3493. */
  3494. if (!hdev->asic_prop.fw_security_enabled) {
  3495. instance_offset = mmDCORE1_XFT_BASE - mmDCORE0_XFT_BASE;
  3496. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, 4, instance_offset,
  3497. gaudi2_pb_thermal_sensor0, ARRAY_SIZE(gaudi2_pb_thermal_sensor0));
  3498. }
  3499. /* HBM */
  3500. instance_offset = mmHBM1_MC0_BASE - mmHBM0_MC0_BASE;
  3501. hl_ack_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, GAUDI2_HBM_NUM,
  3502. instance_offset, gaudi2_pb_hbm,
  3503. ARRAY_SIZE(gaudi2_pb_hbm), prop->dram_enabled_mask);
  3504. /* Scheduler ARCs */
  3505. instance_offset = mmARC_FARM_ARC1_AUX_BASE - mmARC_FARM_ARC0_AUX_BASE;
  3506. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_ARC_FARMS_ARC,
  3507. instance_offset, gaudi2_pb_arc_sched,
  3508. ARRAY_SIZE(gaudi2_pb_arc_sched));
  3509. /* XBAR MIDs */
  3510. instance_offset = mmXBAR_MID_1_BASE - mmXBAR_MID_0_BASE;
  3511. hl_ack_pb(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_XBAR,
  3512. instance_offset, gaudi2_pb_xbar_mid,
  3513. ARRAY_SIZE(gaudi2_pb_xbar_mid));
  3514. /* XBAR EDGEs */
  3515. instance_offset = mmXBAR_EDGE_1_BASE - mmXBAR_EDGE_0_BASE;
  3516. hl_ack_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_XBAR,
  3517. instance_offset, gaudi2_pb_xbar_edge,
  3518. ARRAY_SIZE(gaudi2_pb_xbar_edge), prop->xbar_edge_enabled_mask);
  3519. /* NIC */
  3520. hl_ack_pb_with_mask(hdev, NIC_NUMBER_OF_MACROS, NIC_OFFSET, HL_PB_SINGLE_INSTANCE, HL_PB_NA,
  3521. gaudi2_pb_nic0, ARRAY_SIZE(gaudi2_pb_nic0), hdev->nic_ports_mask);
  3522. /* NIC QM and QPC */
  3523. hl_ack_pb_with_mask(hdev, NIC_NUMBER_OF_MACROS, NIC_OFFSET, NIC_NUMBER_OF_QM_PER_MACRO,
  3524. NIC_QM_OFFSET, gaudi2_pb_nic0_qm_qpc, ARRAY_SIZE(gaudi2_pb_nic0_qm_qpc),
  3525. hdev->nic_ports_mask);
  3526. /* NIC QM ARC */
  3527. hl_ack_pb_with_mask(hdev, NIC_NUMBER_OF_MACROS, NIC_OFFSET, NIC_NUMBER_OF_QM_PER_MACRO,
  3528. NIC_QM_OFFSET, gaudi2_pb_nic0_qm_arc_aux0,
  3529. ARRAY_SIZE(gaudi2_pb_nic0_qm_arc_aux0), hdev->nic_ports_mask);
  3530. /* NIC UMR */
  3531. hl_ack_pb_with_mask(hdev, NIC_NUMBER_OF_MACROS, NIC_OFFSET, NIC_NUMBER_OF_QM_PER_MACRO,
  3532. NIC_QM_OFFSET, gaudi2_pb_nic0_umr, ARRAY_SIZE(gaudi2_pb_nic0_umr),
  3533. hdev->nic_ports_mask);
  3534. /* Rotators */
  3535. instance_offset = mmROT1_BASE - mmROT0_BASE;
  3536. hl_ack_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_ROT, instance_offset,
  3537. gaudi2_pb_rot0, ARRAY_SIZE(gaudi2_pb_rot0), (BIT(NUM_OF_ROT) - 1));
  3538. /* Rotators ARCS */
  3539. hl_ack_pb_with_mask(hdev, HL_PB_SHARED, HL_PB_NA, NUM_OF_ROT, instance_offset,
  3540. gaudi2_pb_rot0_arc, ARRAY_SIZE(gaudi2_pb_rot0_arc), (BIT(NUM_OF_ROT) - 1));
  3541. }
  3542. /*
  3543. * Print PB security errors
  3544. */
  3545. void gaudi2_pb_print_security_errors(struct hl_device *hdev, u32 block_addr, u32 cause,
  3546. u32 offended_addr)
  3547. {
  3548. int i = 0;
  3549. const char *error_format =
  3550. "Security error at block 0x%x, offending address 0x%x\n"
  3551. "Cause 0x%x: %s %s %s %s %s %s %s %s\n";
  3552. char *mcause[8] = {"Unknown", "", "", "", "", "", "", "" };
  3553. if (!cause)
  3554. return;
  3555. if (cause & SPECIAL_GLBL_ERR_CAUSE_APB_PRIV_RD)
  3556. mcause[i++] = "APB_PRIV_RD";
  3557. if (cause & SPECIAL_GLBL_ERR_CAUSE_APB_SEC_RD)
  3558. mcause[i++] = "APB_SEC_RD";
  3559. if (cause & SPECIAL_GLBL_ERR_CAUSE_APB_UNMAPPED_RD)
  3560. mcause[i++] = "APB_UNMAPPED_RD";
  3561. if (cause & SPECIAL_GLBL_ERR_CAUSE_APB_PRIV_WR)
  3562. mcause[i++] = "APB_PRIV_WR";
  3563. if (cause & SPECIAL_GLBL_ERR_CAUSE_APB_SEC_WR)
  3564. mcause[i++] = "APB_SEC_WR";
  3565. if (cause & SPECIAL_GLBL_ERR_CAUSE_APB_UNMAPPED_WR)
  3566. mcause[i++] = "APB_UNMAPPED_WR";
  3567. if (cause & SPECIAL_GLBL_ERR_CAUSE_EXT_SEC_WR)
  3568. mcause[i++] = "EXT_SEC_WR";
  3569. if (cause & SPECIAL_GLBL_ERR_CAUSE_EXT_UNMAPPED_WR)
  3570. mcause[i++] = "APB_EXT_UNMAPPED_WR";
  3571. dev_err_ratelimited(hdev->dev, error_format, block_addr, offended_addr,
  3572. cause, mcause[0], mcause[1], mcause[2], mcause[3],
  3573. mcause[4], mcause[5], mcause[6], mcause[7]);
  3574. }