mtk_dcm_autogen.c 68 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein
  5. * is confidential and proprietary to MediaTek Inc. and/or its licensors.
  6. * Without the prior written permission of MediaTek inc. and/or its licensors,
  7. * any reproduction, modification, use or disclosure of MediaTek Software,
  8. * and information contained herein, in whole or in part, shall be strictly prohibited.
  9. */
  10. /* MediaTek Inc. (C) 2015. All rights reserved.
  11. *
  12. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  13. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  14. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  15. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  18. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  19. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  20. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  21. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  22. * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  23. * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  24. * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  25. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  26. * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  27. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  28. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  29. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  30. */
  31. #include <mtk_dcm.h>
  32. #include <debug.h>
  33. #include <stdlib.h>
  34. #include <string.h>
  35. #include <sys/types.h>
  36. #include <arch/arm.h>
  37. #include <arch/arm/mmu.h>
  38. #include <arch/ops.h>
  39. #include <target/board.h>
  40. #include <platform/mt_reg_base.h>
  41. #include <platform/mt_typedefs.h>
  42. #include <platform/sync_write.h>
  43. #include <mtk_dcm_autogen.h>
  44. #define IOMEM(a) (a)
  45. #define __raw_readl(addr) DRV_Reg32(addr)
  46. extern unsigned long mt_secure_call(unsigned long, unsigned long, unsigned long, unsigned long);
  47. #define MTK_SIP_KERNEL_MCSI_NS_ACCESS 0x8200028B
  48. #define mcsi_reg_read(offset) \
  49. mt_secure_call(MTK_SIP_KERNEL_MCSI_NS_ACCESS, 0, offset, 0)
  50. #define mcsi_reg_write(val, offset) \
  51. mt_secure_call(MTK_SIP_KERNEL_MCSI_NS_ACCESS, 1, offset, val)
  52. #define reg_read(addr) __raw_readl(addr)
  53. #define reg_write(addr, val) mt_reg_sync_writel((val), ((void *)addr))
  54. #define MCUSYS_SMC_WRITE(addr, val) reg_write(addr, val)
  55. #define MCSI_SMC_WRITE(addr, val) mcsi_reg_write(val, (addr##_PHYS & 0xFFFF))
  56. #define MCSI_SMC_READ(addr) mcsi_reg_read(addr##_PHYS & 0xFFFF)
  57. #define INFRACFG_AO_INFRA_BUS_DCM_REG0_MASK ((0x1 << 0) | \
  58. (0x1 << 1) | \
  59. (0x1 << 3) | \
  60. (0x1 << 4) | \
  61. (0x1f << 5) | \
  62. (0x1f << 10) | \
  63. (0x1 << 20) | \
  64. (0x1 << 23) | \
  65. (0x1 << 30))
  66. #define INFRACFG_AO_INFRA_BUS_DCM_REG0_ON ((0x1 << 0) | \
  67. (0x1 << 1) | \
  68. (0x0 << 3) | \
  69. (0x0 << 4) | \
  70. (0x10 << 5) | \
  71. (0x10 << 10) | \
  72. (0x1 << 20) | \
  73. (0x1 << 23) | \
  74. (0x1 << 30))
  75. #define INFRACFG_AO_INFRA_BUS_DCM_REG0_OFF ((0x0 << 0) | \
  76. (0x0 << 1) | \
  77. (0x0 << 3) | \
  78. (0x0 << 4) | \
  79. (0x10 << 5) | \
  80. (0x10 << 10) | \
  81. (0x0 << 20) | \
  82. (0x0 << 23) | \
  83. (0x0 << 30))
  84. bool dcm_infracfg_ao_infra_bus_dcm_is_on(void)
  85. {
  86. bool ret = true;
  87. ret &= ((reg_read(INFRA_BUS_DCM_CTRL) &
  88. INFRACFG_AO_INFRA_BUS_DCM_REG0_MASK) ==
  89. (unsigned int) INFRACFG_AO_INFRA_BUS_DCM_REG0_ON);
  90. return ret;
  91. }
  92. void dcm_infracfg_ao_infra_bus_dcm(int on)
  93. {
  94. if (on) {
  95. /* TINFO = "Turn ON DCM 'infracfg_ao_infra_bus_dcm'" */
  96. reg_write(INFRA_BUS_DCM_CTRL,
  97. (reg_read(INFRA_BUS_DCM_CTRL) &
  98. ~INFRACFG_AO_INFRA_BUS_DCM_REG0_MASK) |
  99. INFRACFG_AO_INFRA_BUS_DCM_REG0_ON);
  100. } else {
  101. /* TINFO = "Turn OFF DCM 'infracfg_ao_infra_bus_dcm'" */
  102. reg_write(INFRA_BUS_DCM_CTRL,
  103. (reg_read(INFRA_BUS_DCM_CTRL) &
  104. ~INFRACFG_AO_INFRA_BUS_DCM_REG0_MASK) |
  105. INFRACFG_AO_INFRA_BUS_DCM_REG0_OFF);
  106. }
  107. }
  108. #define INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_MASK ((0x1 << 27))
  109. #define INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_ON ((0x1 << 27))
  110. #define INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_OFF ((0x0 << 27))
  111. bool dcm_infracfg_ao_infra_emi_local_dcm_is_on(void)
  112. {
  113. bool ret = true;
  114. ret &= ((reg_read(MEM_DCM_CTRL) &
  115. INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_MASK) ==
  116. (unsigned int) INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_ON);
  117. return ret;
  118. }
  119. void dcm_infracfg_ao_infra_emi_local_dcm(int on)
  120. {
  121. if (on) {
  122. /* TINFO = "Turn ON DCM 'infracfg_ao_infra_emi_local_dcm'" */
  123. reg_write(MEM_DCM_CTRL,
  124. (reg_read(MEM_DCM_CTRL) &
  125. ~INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_MASK) |
  126. INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_ON);
  127. } else {
  128. /* TINFO = "Turn OFF DCM 'infracfg_ao_infra_emi_local_dcm'" */
  129. reg_write(MEM_DCM_CTRL,
  130. (reg_read(MEM_DCM_CTRL) &
  131. ~INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_MASK) |
  132. INFRACFG_AO_INFRA_EMI_LOCAL_DCM_REG0_OFF);
  133. }
  134. }
  135. #define INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_MASK ((0xf << 0))
  136. #define INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_ON ((0x0 << 0))
  137. #define INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_OFF ((0xf << 0))
  138. bool dcm_infracfg_ao_infra_rx_p2p_dcm_is_on(void)
  139. {
  140. bool ret = true;
  141. ret &= ((reg_read(P2P_RX_CLK_ON) &
  142. INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_MASK) ==
  143. (unsigned int) INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_ON);
  144. return ret;
  145. }
  146. void dcm_infracfg_ao_infra_rx_p2p_dcm(int on)
  147. {
  148. if (on) {
  149. /* TINFO = "Turn ON DCM 'infracfg_ao_infra_rx_p2p_dcm'" */
  150. reg_write(P2P_RX_CLK_ON,
  151. (reg_read(P2P_RX_CLK_ON) &
  152. ~INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_MASK) |
  153. INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_ON);
  154. } else {
  155. /* TINFO = "Turn OFF DCM 'infracfg_ao_infra_rx_p2p_dcm'" */
  156. reg_write(P2P_RX_CLK_ON,
  157. (reg_read(P2P_RX_CLK_ON) &
  158. ~INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_MASK) |
  159. INFRACFG_AO_INFRA_RX_P2P_DCM_REG0_OFF);
  160. }
  161. }
  162. #define INFRACFG_AO_PERI_BUS_DCM_REG0_MASK ((0x1 << 0) | \
  163. (0x1 << 1) | \
  164. (0x1 << 3) | \
  165. (0x1 << 4) | \
  166. (0x1f << 5) | \
  167. (0x1f << 10) | \
  168. (0x1f << 15) | \
  169. (0x1 << 20) | \
  170. (0x1 << 21))
  171. #define INFRACFG_AO_PERI_BUS_DCM_REG0_ON ((0x1 << 0) | \
  172. (0x1 << 1) | \
  173. (0x0 << 3) | \
  174. (0x0 << 4) | \
  175. (0x1f << 5) | \
  176. (0x0 << 10) | \
  177. (0x1f << 15) | \
  178. (0x1 << 20) | \
  179. (0x1 << 21))
  180. #define INFRACFG_AO_PERI_BUS_DCM_REG0_OFF ((0x0 << 0) | \
  181. (0x0 << 1) | \
  182. (0x0 << 3) | \
  183. (0x0 << 4) | \
  184. (0x1f << 5) | \
  185. (0x1f << 10) | \
  186. (0x0 << 15) | \
  187. (0x0 << 20) | \
  188. (0x0 << 21))
  189. bool dcm_infracfg_ao_peri_bus_dcm_is_on(void)
  190. {
  191. bool ret = true;
  192. ret &= ((reg_read(PERI_BUS_DCM_CTRL) &
  193. INFRACFG_AO_PERI_BUS_DCM_REG0_MASK) ==
  194. (unsigned int) INFRACFG_AO_PERI_BUS_DCM_REG0_ON);
  195. return ret;
  196. }
  197. void dcm_infracfg_ao_peri_bus_dcm(int on)
  198. {
  199. if (on) {
  200. /* TINFO = "Turn ON DCM 'infracfg_ao_peri_bus_dcm'" */
  201. reg_write(PERI_BUS_DCM_CTRL,
  202. (reg_read(PERI_BUS_DCM_CTRL) &
  203. ~INFRACFG_AO_PERI_BUS_DCM_REG0_MASK) |
  204. INFRACFG_AO_PERI_BUS_DCM_REG0_ON);
  205. } else {
  206. /* TINFO = "Turn OFF DCM 'infracfg_ao_peri_bus_dcm'" */
  207. reg_write(PERI_BUS_DCM_CTRL,
  208. (reg_read(PERI_BUS_DCM_CTRL) &
  209. ~INFRACFG_AO_PERI_BUS_DCM_REG0_MASK) |
  210. INFRACFG_AO_PERI_BUS_DCM_REG0_OFF);
  211. }
  212. }
  213. #define INFRACFG_AO_PERI_MODULE_DCM_REG0_MASK ((0x1 << 28) | \
  214. (0x1 << 29) | \
  215. (0x1 << 30) | \
  216. (0x1 << 31))
  217. #define INFRACFG_AO_PERI_MODULE_DCM_REG0_ON ((0x1 << 28) | \
  218. (0x1 << 29) | \
  219. (0x1 << 30) | \
  220. (0x1 << 31))
  221. #define INFRACFG_AO_PERI_MODULE_DCM_REG0_OFF ((0x0 << 28) | \
  222. (0x0 << 29) | \
  223. (0x0 << 30) | \
  224. (0x0 << 31))
  225. bool dcm_infracfg_ao_peri_module_dcm_is_on(void)
  226. {
  227. bool ret = true;
  228. ret &= ((reg_read(PERI_BUS_DCM_CTRL) &
  229. INFRACFG_AO_PERI_MODULE_DCM_REG0_MASK) ==
  230. (unsigned int) INFRACFG_AO_PERI_MODULE_DCM_REG0_ON);
  231. return ret;
  232. }
  233. void dcm_infracfg_ao_peri_module_dcm(int on)
  234. {
  235. if (on) {
  236. /* TINFO = "Turn ON DCM 'infracfg_ao_peri_module_dcm'" */
  237. reg_write(PERI_BUS_DCM_CTRL,
  238. (reg_read(PERI_BUS_DCM_CTRL) &
  239. ~INFRACFG_AO_PERI_MODULE_DCM_REG0_MASK) |
  240. INFRACFG_AO_PERI_MODULE_DCM_REG0_ON);
  241. } else {
  242. /* TINFO = "Turn OFF DCM 'infracfg_ao_peri_module_dcm'" */
  243. reg_write(PERI_BUS_DCM_CTRL,
  244. (reg_read(PERI_BUS_DCM_CTRL) &
  245. ~INFRACFG_AO_PERI_MODULE_DCM_REG0_MASK) |
  246. INFRACFG_AO_PERI_MODULE_DCM_REG0_OFF);
  247. }
  248. }
  249. #define PWRAP_PMIC_WRAP_REG0_MASK ((0x1 << 0) | \
  250. (0x1 << 1) | \
  251. (0x1 << 2) | \
  252. (0x1 << 3) | \
  253. (0x1 << 4) | \
  254. (0x1 << 5) | \
  255. (0x1 << 6) | \
  256. (0x1 << 7) | \
  257. (0x1 << 8) | \
  258. (0x1 << 9) | \
  259. (0x1 << 10) | \
  260. (0x1 << 11) | \
  261. (0x1 << 12) | \
  262. (0x1 << 13) | \
  263. (0x1 << 14) | \
  264. (0x1 << 15) | \
  265. (0x1 << 16) | \
  266. (0x1 << 17))
  267. #define PWRAP_PMIC_WRAP_REG0_ON ((0x1 << 0) | \
  268. (0x1 << 1) | \
  269. (0x1 << 2) | \
  270. (0x1 << 3) | \
  271. (0x1 << 4) | \
  272. (0x1 << 5) | \
  273. (0x1 << 6) | \
  274. (0x1 << 7) | \
  275. (0x1 << 8) | \
  276. (0x1 << 9) | \
  277. (0x1 << 10) | \
  278. (0x1 << 11) | \
  279. (0x1 << 12) | \
  280. (0x1 << 13) | \
  281. (0x1 << 14) | \
  282. (0x1 << 15) | \
  283. (0x1 << 16) | \
  284. (0x1 << 17))
  285. #define PWRAP_PMIC_WRAP_REG0_OFF ((0x0 << 0) | \
  286. (0x0 << 1) | \
  287. (0x0 << 2) | \
  288. (0x0 << 3) | \
  289. (0x0 << 4) | \
  290. (0x0 << 5) | \
  291. (0x0 << 6) | \
  292. (0x0 << 7) | \
  293. (0x0 << 8) | \
  294. (0x0 << 9) | \
  295. (0x0 << 10) | \
  296. (0x0 << 11) | \
  297. (0x0 << 12) | \
  298. (0x0 << 13) | \
  299. (0x0 << 14) | \
  300. (0x0 << 15) | \
  301. (0x0 << 16) | \
  302. (0x0 << 17))
  303. bool dcm_pwrap_pmic_wrap_is_on(void)
  304. {
  305. bool ret = true;
  306. return ret;
  307. }
  308. void dcm_pwrap_pmic_wrap(int on)
  309. {
  310. return;
  311. }
  312. #define EMI_DCM_EMI_GROUP_REG0_MASK ((0xff << 24))
  313. #define EMI_DCM_EMI_GROUP_REG1_MASK ((0xff << 24))
  314. #define EMI_DCM_EMI_GROUP_REG0_ON ((0x0 << 24))
  315. #define EMI_DCM_EMI_GROUP_REG1_ON ((0x0 << 24))
  316. #define EMI_DCM_EMI_GROUP_REG0_OFF ((0xff << 24))
  317. #define EMI_DCM_EMI_GROUP_REG1_OFF ((0xff << 24))
  318. bool dcm_emi_dcm_emi_group_is_on(void)
  319. {
  320. bool ret = true;
  321. ret &= ((reg_read(EMI_CONM) &
  322. EMI_DCM_EMI_GROUP_REG0_MASK) ==
  323. (unsigned int) EMI_DCM_EMI_GROUP_REG0_ON);
  324. ret &= ((reg_read(EMI_CONN) &
  325. EMI_DCM_EMI_GROUP_REG1_MASK) ==
  326. (unsigned int) EMI_DCM_EMI_GROUP_REG1_ON);
  327. return ret;
  328. }
  329. void dcm_emi_dcm_emi_group(int on)
  330. {
  331. if (on) {
  332. /* TINFO = "Turn ON DCM 'emi_dcm_emi_group'" */
  333. reg_write(EMI_CONM,
  334. (reg_read(EMI_CONM) &
  335. ~EMI_DCM_EMI_GROUP_REG0_MASK) |
  336. EMI_DCM_EMI_GROUP_REG0_ON);
  337. reg_write(EMI_CONN,
  338. (reg_read(EMI_CONN) &
  339. ~EMI_DCM_EMI_GROUP_REG1_MASK) |
  340. EMI_DCM_EMI_GROUP_REG1_ON);
  341. } else {
  342. /* TINFO = "Turn OFF DCM 'emi_dcm_emi_group'" */
  343. reg_write(EMI_CONM,
  344. (reg_read(EMI_CONM) &
  345. ~EMI_DCM_EMI_GROUP_REG0_MASK) |
  346. EMI_DCM_EMI_GROUP_REG0_OFF);
  347. reg_write(EMI_CONN,
  348. (reg_read(EMI_CONN) &
  349. ~EMI_DCM_EMI_GROUP_REG1_MASK) |
  350. EMI_DCM_EMI_GROUP_REG1_OFF);
  351. }
  352. }
  353. #define DRAMC_CH0_TOP0_DDRPHY_REG0_MASK ((0x1 << 9) | \
  354. (0x1 << 10) | \
  355. (0x1 << 11) | \
  356. (0x1 << 12) | \
  357. (0x1 << 13) | \
  358. (0x1 << 14) | \
  359. (0x1 << 15) | \
  360. (0x1 << 16) | \
  361. (0x1 << 17) | \
  362. (0x1 << 19))
  363. #define DRAMC_CH0_TOP0_DDRPHY_REG1_MASK ((0x1 << 6) | \
  364. (0x1 << 7) | \
  365. (0x1f << 21) | \
  366. (0x1 << 26))
  367. #define DRAMC_CH0_TOP0_DDRPHY_REG2_MASK ((0x1 << 26) | \
  368. (0x1 << 27))
  369. #define DRAMC_CH0_TOP0_DDRPHY_REG3_MASK ((0x1 << 19) | \
  370. (0x1 << 20) | \
  371. (0x1 << 22) | \
  372. (0x1 << 23) | \
  373. (0x1 << 24) | \
  374. (0x1 << 25) | \
  375. (0x1 << 26) | \
  376. (0x1 << 27) | \
  377. (0x1 << 28) | \
  378. (0x1 << 29) | \
  379. (0x1 << 30) | \
  380. (0x1 << 31))
  381. #define DRAMC_CH0_TOP0_DDRPHY_REG4_MASK ((0x1 << 19) | \
  382. (0x1 << 20) | \
  383. (0x1 << 22) | \
  384. (0x1 << 23) | \
  385. (0x1 << 24) | \
  386. (0x1 << 25) | \
  387. (0x1 << 26) | \
  388. (0x1 << 27) | \
  389. (0x1 << 28) | \
  390. (0x1 << 29) | \
  391. (0x1 << 30) | \
  392. (0x1 << 31))
  393. #define DRAMC_CH0_TOP0_DDRPHY_REG5_MASK ((0x1 << 19) | \
  394. (0x1 << 20) | \
  395. (0x1 << 22) | \
  396. (0x1 << 23) | \
  397. (0x1 << 24) | \
  398. (0x1 << 25) | \
  399. (0x1 << 26) | \
  400. (0x1 << 27) | \
  401. (0x1 << 28) | \
  402. (0x1 << 29) | \
  403. (0x1 << 30) | \
  404. (0x1 << 31))
  405. #define DRAMC_CH0_TOP0_DDRPHY_REG6_MASK ((0x1 << 19) | \
  406. (0x1 << 20) | \
  407. (0x1 << 22) | \
  408. (0x1 << 23) | \
  409. (0x1 << 24) | \
  410. (0x1 << 25) | \
  411. (0x1 << 26) | \
  412. (0x1 << 27) | \
  413. (0x1 << 28) | \
  414. (0x1 << 29) | \
  415. (0x1 << 30) | \
  416. (0x1 << 31))
  417. #define DRAMC_CH0_TOP0_DDRPHY_REG7_MASK ((0x1 << 19) | \
  418. (0x1 << 20) | \
  419. (0x1 << 22) | \
  420. (0x1 << 23) | \
  421. (0x1 << 24) | \
  422. (0x1 << 25) | \
  423. (0x1 << 26) | \
  424. (0x1 << 27) | \
  425. (0x1 << 28) | \
  426. (0x1 << 29) | \
  427. (0x1 << 30) | \
  428. (0x1 << 31))
  429. #define DRAMC_CH0_TOP0_DDRPHY_REG8_MASK ((0x1 << 19) | \
  430. (0x1 << 20) | \
  431. (0x1 << 22) | \
  432. (0x1 << 23) | \
  433. (0x1 << 24) | \
  434. (0x1 << 25) | \
  435. (0x1 << 26) | \
  436. (0x1 << 27) | \
  437. (0x1 << 28) | \
  438. (0x1 << 29) | \
  439. (0x1 << 30) | \
  440. (0x1 << 31))
  441. #define DRAMC_CH0_TOP0_DDRPHY_REG9_MASK ((0x1 << 19) | \
  442. (0x1 << 20) | \
  443. (0x1 << 22) | \
  444. (0x1 << 23) | \
  445. (0x1 << 24) | \
  446. (0x1 << 25) | \
  447. (0x1 << 26) | \
  448. (0x1 << 27) | \
  449. (0x1 << 28) | \
  450. (0x1 << 29) | \
  451. (0x1 << 30) | \
  452. (0x1 << 31))
  453. #define DRAMC_CH0_TOP0_DDRPHY_REG10_MASK ((0x1 << 19) | \
  454. (0x1 << 20) | \
  455. (0x1 << 22) | \
  456. (0x1 << 23) | \
  457. (0x1 << 24) | \
  458. (0x1 << 25) | \
  459. (0x1 << 26) | \
  460. (0x1 << 27) | \
  461. (0x1 << 28) | \
  462. (0x1 << 29) | \
  463. (0x1 << 30) | \
  464. (0x1 << 31))
  465. #define DRAMC_CH0_TOP0_DDRPHY_REG11_MASK ((0x1 << 19) | \
  466. (0x1 << 20) | \
  467. (0x1 << 22) | \
  468. (0x1 << 23) | \
  469. (0x1 << 24) | \
  470. (0x1 << 25) | \
  471. (0x1 << 26) | \
  472. (0x1 << 27) | \
  473. (0x1 << 28) | \
  474. (0x1 << 29) | \
  475. (0x1 << 30) | \
  476. (0x1 << 31))
  477. #define DRAMC_CH0_TOP0_DDRPHY_REG12_MASK ((0x1 << 19) | \
  478. (0x1 << 20) | \
  479. (0x1 << 22) | \
  480. (0x1 << 23) | \
  481. (0x1 << 24) | \
  482. (0x1 << 25) | \
  483. (0x1 << 26) | \
  484. (0x1 << 27) | \
  485. (0x1 << 28) | \
  486. (0x1 << 29) | \
  487. (0x1 << 30) | \
  488. (0x1 << 31))
  489. #define DRAMC_CH0_TOP0_DDRPHY_REG13_MASK ((0x1 << 19) | \
  490. (0x1 << 20) | \
  491. (0x1 << 22) | \
  492. (0x1 << 23) | \
  493. (0x1 << 24) | \
  494. (0x1 << 25) | \
  495. (0x1 << 26) | \
  496. (0x1 << 27) | \
  497. (0x1 << 28) | \
  498. (0x1 << 29) | \
  499. (0x1 << 30) | \
  500. (0x1 << 31))
  501. #define DRAMC_CH0_TOP0_DDRPHY_REG14_MASK ((0x1 << 19) | \
  502. (0x1 << 20) | \
  503. (0x1 << 22) | \
  504. (0x1 << 23) | \
  505. (0x1 << 24) | \
  506. (0x1 << 25) | \
  507. (0x1 << 26) | \
  508. (0x1 << 27) | \
  509. (0x1 << 28) | \
  510. (0x1 << 29) | \
  511. (0x1 << 30) | \
  512. (0x1 << 31))
  513. #define DRAMC_CH0_TOP0_DDRPHY_REG0_ON ((0x0 << 9) | \
  514. (0x0 << 10) | \
  515. (0x0 << 11) | \
  516. (0x0 << 12) | \
  517. (0x0 << 13) | \
  518. (0x0 << 14) | \
  519. (0x0 << 15) | \
  520. (0x0 << 16) | \
  521. (0x0 << 17) | \
  522. (0x0 << 19))
  523. #define DRAMC_CH0_TOP0_DDRPHY_REG1_ON ((0x0 << 6) | \
  524. (0x0 << 7) | \
  525. (0x8 << 21) | \
  526. (0x0 << 26))
  527. #define DRAMC_CH0_TOP0_DDRPHY_REG2_ON ((0x0 << 26) | \
  528. (0x0 << 27))
  529. #define DRAMC_CH0_TOP0_DDRPHY_REG3_ON ((0x0 << 19) | \
  530. (0x0 << 20) | \
  531. (0x0 << 22) | \
  532. (0x0 << 23) | \
  533. (0x0 << 24) | \
  534. (0x0 << 25) | \
  535. (0x0 << 26) | \
  536. (0x0 << 27) | \
  537. (0x0 << 28) | \
  538. (0x0 << 29) | \
  539. (0x0 << 30) | \
  540. (0x0 << 31))
  541. #define DRAMC_CH0_TOP0_DDRPHY_REG4_ON ((0x0 << 19) | \
  542. (0x0 << 20) | \
  543. (0x0 << 22) | \
  544. (0x0 << 23) | \
  545. (0x0 << 24) | \
  546. (0x0 << 25) | \
  547. (0x0 << 26) | \
  548. (0x0 << 27) | \
  549. (0x0 << 28) | \
  550. (0x0 << 29) | \
  551. (0x0 << 30) | \
  552. (0x0 << 31))
  553. #define DRAMC_CH0_TOP0_DDRPHY_REG5_ON ((0x0 << 19) | \
  554. (0x0 << 20) | \
  555. (0x0 << 22) | \
  556. (0x0 << 23) | \
  557. (0x0 << 24) | \
  558. (0x0 << 25) | \
  559. (0x0 << 26) | \
  560. (0x0 << 27) | \
  561. (0x0 << 28) | \
  562. (0x0 << 29) | \
  563. (0x0 << 30) | \
  564. (0x0 << 31))
  565. #define DRAMC_CH0_TOP0_DDRPHY_REG6_ON ((0x0 << 19) | \
  566. (0x0 << 20) | \
  567. (0x0 << 22) | \
  568. (0x0 << 23) | \
  569. (0x0 << 24) | \
  570. (0x0 << 25) | \
  571. (0x0 << 26) | \
  572. (0x0 << 27) | \
  573. (0x0 << 28) | \
  574. (0x0 << 29) | \
  575. (0x0 << 30) | \
  576. (0x0 << 31))
  577. #define DRAMC_CH0_TOP0_DDRPHY_REG7_ON ((0x0 << 19) | \
  578. (0x0 << 20) | \
  579. (0x0 << 22) | \
  580. (0x0 << 23) | \
  581. (0x0 << 24) | \
  582. (0x0 << 25) | \
  583. (0x0 << 26) | \
  584. (0x0 << 27) | \
  585. (0x0 << 28) | \
  586. (0x0 << 29) | \
  587. (0x0 << 30) | \
  588. (0x0 << 31))
  589. #define DRAMC_CH0_TOP0_DDRPHY_REG8_ON ((0x0 << 19) | \
  590. (0x0 << 20) | \
  591. (0x0 << 22) | \
  592. (0x0 << 23) | \
  593. (0x0 << 24) | \
  594. (0x0 << 25) | \
  595. (0x0 << 26) | \
  596. (0x0 << 27) | \
  597. (0x0 << 28) | \
  598. (0x0 << 29) | \
  599. (0x0 << 30) | \
  600. (0x0 << 31))
  601. #define DRAMC_CH0_TOP0_DDRPHY_REG9_ON ((0x0 << 19) | \
  602. (0x0 << 20) | \
  603. (0x0 << 22) | \
  604. (0x0 << 23) | \
  605. (0x0 << 24) | \
  606. (0x0 << 25) | \
  607. (0x0 << 26) | \
  608. (0x0 << 27) | \
  609. (0x0 << 28) | \
  610. (0x0 << 29) | \
  611. (0x0 << 30) | \
  612. (0x0 << 31))
  613. #define DRAMC_CH0_TOP0_DDRPHY_REG10_ON ((0x0 << 19) | \
  614. (0x0 << 20) | \
  615. (0x0 << 22) | \
  616. (0x0 << 23) | \
  617. (0x0 << 24) | \
  618. (0x0 << 25) | \
  619. (0x0 << 26) | \
  620. (0x0 << 27) | \
  621. (0x0 << 28) | \
  622. (0x0 << 29) | \
  623. (0x0 << 30) | \
  624. (0x0 << 31))
  625. #define DRAMC_CH0_TOP0_DDRPHY_REG11_ON ((0x0 << 19) | \
  626. (0x0 << 20) | \
  627. (0x0 << 22) | \
  628. (0x0 << 23) | \
  629. (0x0 << 24) | \
  630. (0x0 << 25) | \
  631. (0x0 << 26) | \
  632. (0x0 << 27) | \
  633. (0x0 << 28) | \
  634. (0x0 << 29) | \
  635. (0x0 << 30) | \
  636. (0x0 << 31))
  637. #define DRAMC_CH0_TOP0_DDRPHY_REG12_ON ((0x0 << 19) | \
  638. (0x0 << 20) | \
  639. (0x0 << 22) | \
  640. (0x0 << 23) | \
  641. (0x0 << 24) | \
  642. (0x0 << 25) | \
  643. (0x0 << 26) | \
  644. (0x0 << 27) | \
  645. (0x0 << 28) | \
  646. (0x0 << 29) | \
  647. (0x0 << 30) | \
  648. (0x0 << 31))
  649. #define DRAMC_CH0_TOP0_DDRPHY_REG13_ON ((0x0 << 19) | \
  650. (0x0 << 20) | \
  651. (0x0 << 22) | \
  652. (0x0 << 23) | \
  653. (0x0 << 24) | \
  654. (0x0 << 25) | \
  655. (0x0 << 26) | \
  656. (0x0 << 27) | \
  657. (0x0 << 28) | \
  658. (0x0 << 29) | \
  659. (0x0 << 30) | \
  660. (0x0 << 31))
  661. #define DRAMC_CH0_TOP0_DDRPHY_REG14_ON ((0x0 << 19) | \
  662. (0x0 << 20) | \
  663. (0x0 << 22) | \
  664. (0x0 << 23) | \
  665. (0x0 << 24) | \
  666. (0x0 << 25) | \
  667. (0x0 << 26) | \
  668. (0x0 << 27) | \
  669. (0x0 << 28) | \
  670. (0x0 << 29) | \
  671. (0x0 << 30) | \
  672. (0x0 << 31))
  673. #define DRAMC_CH0_TOP0_DDRPHY_REG0_OFF ((0x1 << 9) | \
  674. (0x1 << 10) | \
  675. (0x1 << 11) | \
  676. (0x1 << 12) | \
  677. (0x1 << 13) | \
  678. (0x1 << 14) | \
  679. (0x1 << 15) | \
  680. (0x1 << 16) | \
  681. (0x1 << 17) | \
  682. (0x1 << 19))
  683. #define DRAMC_CH0_TOP0_DDRPHY_REG1_OFF ((0x1 << 6) | \
  684. (0x1 << 7) | \
  685. (0x0 << 21) | \
  686. (0x0 << 26))
  687. #define DRAMC_CH0_TOP0_DDRPHY_REG2_OFF ((0x1 << 26) | \
  688. (0x1 << 27))
  689. #define DRAMC_CH0_TOP0_DDRPHY_REG3_OFF ((0x1 << 19) | \
  690. (0x1 << 20) | \
  691. (0x1 << 22) | \
  692. (0x1 << 23) | \
  693. (0x1 << 24) | \
  694. (0x1 << 25) | \
  695. (0x1 << 26) | \
  696. (0x1 << 27) | \
  697. (0x1 << 28) | \
  698. (0x1 << 29) | \
  699. (0x1 << 30) | \
  700. (0x1 << 31))
  701. #define DRAMC_CH0_TOP0_DDRPHY_REG4_OFF ((0x1 << 19) | \
  702. (0x1 << 20) | \
  703. (0x1 << 22) | \
  704. (0x1 << 23) | \
  705. (0x1 << 24) | \
  706. (0x1 << 25) | \
  707. (0x1 << 26) | \
  708. (0x1 << 27) | \
  709. (0x1 << 28) | \
  710. (0x1 << 29) | \
  711. (0x1 << 30) | \
  712. (0x1 << 31))
  713. #define DRAMC_CH0_TOP0_DDRPHY_REG5_OFF ((0x1 << 19) | \
  714. (0x1 << 20) | \
  715. (0x1 << 22) | \
  716. (0x1 << 23) | \
  717. (0x1 << 24) | \
  718. (0x1 << 25) | \
  719. (0x1 << 26) | \
  720. (0x1 << 27) | \
  721. (0x1 << 28) | \
  722. (0x1 << 29) | \
  723. (0x1 << 30) | \
  724. (0x1 << 31))
  725. #define DRAMC_CH0_TOP0_DDRPHY_REG6_OFF ((0x1 << 19) | \
  726. (0x1 << 20) | \
  727. (0x1 << 22) | \
  728. (0x1 << 23) | \
  729. (0x1 << 24) | \
  730. (0x1 << 25) | \
  731. (0x1 << 26) | \
  732. (0x1 << 27) | \
  733. (0x1 << 28) | \
  734. (0x1 << 29) | \
  735. (0x1 << 30) | \
  736. (0x1 << 31))
  737. #define DRAMC_CH0_TOP0_DDRPHY_REG7_OFF ((0x1 << 19) | \
  738. (0x1 << 20) | \
  739. (0x1 << 22) | \
  740. (0x1 << 23) | \
  741. (0x1 << 24) | \
  742. (0x1 << 25) | \
  743. (0x1 << 26) | \
  744. (0x1 << 27) | \
  745. (0x1 << 28) | \
  746. (0x1 << 29) | \
  747. (0x1 << 30) | \
  748. (0x1 << 31))
  749. #define DRAMC_CH0_TOP0_DDRPHY_REG8_OFF ((0x1 << 19) | \
  750. (0x1 << 20) | \
  751. (0x1 << 22) | \
  752. (0x1 << 23) | \
  753. (0x1 << 24) | \
  754. (0x1 << 25) | \
  755. (0x1 << 26) | \
  756. (0x1 << 27) | \
  757. (0x1 << 28) | \
  758. (0x1 << 29) | \
  759. (0x1 << 30) | \
  760. (0x1 << 31))
  761. #define DRAMC_CH0_TOP0_DDRPHY_REG9_OFF ((0x1 << 19) | \
  762. (0x1 << 20) | \
  763. (0x1 << 22) | \
  764. (0x1 << 23) | \
  765. (0x1 << 24) | \
  766. (0x1 << 25) | \
  767. (0x1 << 26) | \
  768. (0x1 << 27) | \
  769. (0x1 << 28) | \
  770. (0x1 << 29) | \
  771. (0x1 << 30) | \
  772. (0x1 << 31))
  773. #define DRAMC_CH0_TOP0_DDRPHY_REG10_OFF ((0x1 << 19) | \
  774. (0x1 << 20) | \
  775. (0x1 << 22) | \
  776. (0x1 << 23) | \
  777. (0x1 << 24) | \
  778. (0x1 << 25) | \
  779. (0x1 << 26) | \
  780. (0x1 << 27) | \
  781. (0x1 << 28) | \
  782. (0x1 << 29) | \
  783. (0x1 << 30) | \
  784. (0x1 << 31))
  785. #define DRAMC_CH0_TOP0_DDRPHY_REG11_OFF ((0x1 << 19) | \
  786. (0x1 << 20) | \
  787. (0x1 << 22) | \
  788. (0x1 << 23) | \
  789. (0x1 << 24) | \
  790. (0x1 << 25) | \
  791. (0x1 << 26) | \
  792. (0x1 << 27) | \
  793. (0x1 << 28) | \
  794. (0x1 << 29) | \
  795. (0x1 << 30) | \
  796. (0x1 << 31))
  797. #define DRAMC_CH0_TOP0_DDRPHY_REG12_OFF ((0x1 << 19) | \
  798. (0x1 << 20) | \
  799. (0x1 << 22) | \
  800. (0x1 << 23) | \
  801. (0x1 << 24) | \
  802. (0x1 << 25) | \
  803. (0x1 << 26) | \
  804. (0x1 << 27) | \
  805. (0x1 << 28) | \
  806. (0x1 << 29) | \
  807. (0x1 << 30) | \
  808. (0x1 << 31))
  809. #define DRAMC_CH0_TOP0_DDRPHY_REG13_OFF ((0x1 << 19) | \
  810. (0x1 << 20) | \
  811. (0x1 << 22) | \
  812. (0x1 << 23) | \
  813. (0x1 << 24) | \
  814. (0x1 << 25) | \
  815. (0x1 << 26) | \
  816. (0x1 << 27) | \
  817. (0x1 << 28) | \
  818. (0x1 << 29) | \
  819. (0x1 << 30) | \
  820. (0x1 << 31))
  821. #define DRAMC_CH0_TOP0_DDRPHY_REG14_OFF ((0x1 << 19) | \
  822. (0x1 << 20) | \
  823. (0x1 << 22) | \
  824. (0x1 << 23) | \
  825. (0x1 << 24) | \
  826. (0x1 << 25) | \
  827. (0x1 << 26) | \
  828. (0x1 << 27) | \
  829. (0x1 << 28) | \
  830. (0x1 << 29) | \
  831. (0x1 << 30) | \
  832. (0x1 << 31))
  833. bool dcm_dramc_ch0_top0_ddrphy_is_on(void)
  834. {
  835. bool ret = true;
  836. ret &= ((reg_read(DRAMC_CH0_TOP0_MISC_CG_CTRL0) &
  837. DRAMC_CH0_TOP0_DDRPHY_REG0_MASK) ==
  838. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG0_ON);
  839. ret &= ((reg_read(DRAMC_CH0_TOP0_MISC_CG_CTRL2) &
  840. DRAMC_CH0_TOP0_DDRPHY_REG1_MASK) ==
  841. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG1_ON);
  842. ret &= ((reg_read(DRAMC_CH0_TOP0_MISC_CTRL3) &
  843. DRAMC_CH0_TOP0_DDRPHY_REG2_MASK) ==
  844. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG2_ON);
  845. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU1_B0_DQ8) &
  846. DRAMC_CH0_TOP0_DDRPHY_REG3_MASK) ==
  847. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG3_ON);
  848. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU1_B1_DQ8) &
  849. DRAMC_CH0_TOP0_DDRPHY_REG4_MASK) ==
  850. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG4_ON);
  851. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU1_CA_CMD8) &
  852. DRAMC_CH0_TOP0_DDRPHY_REG5_MASK) ==
  853. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG5_ON);
  854. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU2_B0_DQ8) &
  855. DRAMC_CH0_TOP0_DDRPHY_REG6_MASK) ==
  856. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG6_ON);
  857. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU2_B1_DQ8) &
  858. DRAMC_CH0_TOP0_DDRPHY_REG7_MASK) ==
  859. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG7_ON);
  860. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU2_CA_CMD8) &
  861. DRAMC_CH0_TOP0_DDRPHY_REG8_MASK) ==
  862. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG8_ON);
  863. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU3_B0_DQ8) &
  864. DRAMC_CH0_TOP0_DDRPHY_REG9_MASK) ==
  865. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG9_ON);
  866. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU3_B1_DQ8) &
  867. DRAMC_CH0_TOP0_DDRPHY_REG10_MASK) ==
  868. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG10_ON);
  869. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU3_CA_CMD8) &
  870. DRAMC_CH0_TOP0_DDRPHY_REG11_MASK) ==
  871. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG11_ON);
  872. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU4_B0_DQ8) &
  873. DRAMC_CH0_TOP0_DDRPHY_REG12_MASK) ==
  874. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG12_ON);
  875. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU4_B1_DQ8) &
  876. DRAMC_CH0_TOP0_DDRPHY_REG13_MASK) ==
  877. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG13_ON);
  878. ret &= ((reg_read(DRAMC_CH0_TOP0_SHU4_CA_CMD8) &
  879. DRAMC_CH0_TOP0_DDRPHY_REG14_MASK) ==
  880. (unsigned int) DRAMC_CH0_TOP0_DDRPHY_REG14_ON);
  881. return ret;
  882. }
  883. void dcm_dramc_ch0_top0_ddrphy(int on)
  884. {
  885. if (on) {
  886. /* TINFO = "Turn ON DCM 'dramc_ch0_top0_ddrphy'" */
  887. reg_write(DRAMC_CH0_TOP0_MISC_CG_CTRL0,
  888. (reg_read(DRAMC_CH0_TOP0_MISC_CG_CTRL0) &
  889. ~DRAMC_CH0_TOP0_DDRPHY_REG0_MASK) |
  890. DRAMC_CH0_TOP0_DDRPHY_REG0_ON);
  891. reg_write(DRAMC_CH0_TOP0_MISC_CG_CTRL2,
  892. (reg_read(DRAMC_CH0_TOP0_MISC_CG_CTRL2) &
  893. ~DRAMC_CH0_TOP0_DDRPHY_REG1_MASK) |
  894. DRAMC_CH0_TOP0_DDRPHY_REG1_ON);
  895. reg_write(DRAMC_CH0_TOP0_MISC_CTRL3,
  896. (reg_read(DRAMC_CH0_TOP0_MISC_CTRL3) &
  897. ~DRAMC_CH0_TOP0_DDRPHY_REG2_MASK) |
  898. DRAMC_CH0_TOP0_DDRPHY_REG2_ON);
  899. reg_write(DRAMC_CH0_TOP0_SHU1_B0_DQ8,
  900. (reg_read(DRAMC_CH0_TOP0_SHU1_B0_DQ8) &
  901. ~DRAMC_CH0_TOP0_DDRPHY_REG3_MASK) |
  902. DRAMC_CH0_TOP0_DDRPHY_REG3_ON);
  903. reg_write(DRAMC_CH0_TOP0_SHU1_B1_DQ8,
  904. (reg_read(DRAMC_CH0_TOP0_SHU1_B1_DQ8) &
  905. ~DRAMC_CH0_TOP0_DDRPHY_REG4_MASK) |
  906. DRAMC_CH0_TOP0_DDRPHY_REG4_ON);
  907. reg_write(DRAMC_CH0_TOP0_SHU1_CA_CMD8,
  908. (reg_read(DRAMC_CH0_TOP0_SHU1_CA_CMD8) &
  909. ~DRAMC_CH0_TOP0_DDRPHY_REG5_MASK) |
  910. DRAMC_CH0_TOP0_DDRPHY_REG5_ON);
  911. reg_write(DRAMC_CH0_TOP0_SHU2_B0_DQ8,
  912. (reg_read(DRAMC_CH0_TOP0_SHU2_B0_DQ8) &
  913. ~DRAMC_CH0_TOP0_DDRPHY_REG6_MASK) |
  914. DRAMC_CH0_TOP0_DDRPHY_REG6_ON);
  915. reg_write(DRAMC_CH0_TOP0_SHU2_B1_DQ8,
  916. (reg_read(DRAMC_CH0_TOP0_SHU2_B1_DQ8) &
  917. ~DRAMC_CH0_TOP0_DDRPHY_REG7_MASK) |
  918. DRAMC_CH0_TOP0_DDRPHY_REG7_ON);
  919. reg_write(DRAMC_CH0_TOP0_SHU2_CA_CMD8,
  920. (reg_read(DRAMC_CH0_TOP0_SHU2_CA_CMD8) &
  921. ~DRAMC_CH0_TOP0_DDRPHY_REG8_MASK) |
  922. DRAMC_CH0_TOP0_DDRPHY_REG8_ON);
  923. reg_write(DRAMC_CH0_TOP0_SHU3_B0_DQ8,
  924. (reg_read(DRAMC_CH0_TOP0_SHU3_B0_DQ8) &
  925. ~DRAMC_CH0_TOP0_DDRPHY_REG9_MASK) |
  926. DRAMC_CH0_TOP0_DDRPHY_REG9_ON);
  927. reg_write(DRAMC_CH0_TOP0_SHU3_B1_DQ8,
  928. (reg_read(DRAMC_CH0_TOP0_SHU3_B1_DQ8) &
  929. ~DRAMC_CH0_TOP0_DDRPHY_REG10_MASK) |
  930. DRAMC_CH0_TOP0_DDRPHY_REG10_ON);
  931. reg_write(DRAMC_CH0_TOP0_SHU3_CA_CMD8,
  932. (reg_read(DRAMC_CH0_TOP0_SHU3_CA_CMD8) &
  933. ~DRAMC_CH0_TOP0_DDRPHY_REG11_MASK) |
  934. DRAMC_CH0_TOP0_DDRPHY_REG11_ON);
  935. reg_write(DRAMC_CH0_TOP0_SHU4_B0_DQ8,
  936. (reg_read(DRAMC_CH0_TOP0_SHU4_B0_DQ8) &
  937. ~DRAMC_CH0_TOP0_DDRPHY_REG12_MASK) |
  938. DRAMC_CH0_TOP0_DDRPHY_REG12_ON);
  939. reg_write(DRAMC_CH0_TOP0_SHU4_B1_DQ8,
  940. (reg_read(DRAMC_CH0_TOP0_SHU4_B1_DQ8) &
  941. ~DRAMC_CH0_TOP0_DDRPHY_REG13_MASK) |
  942. DRAMC_CH0_TOP0_DDRPHY_REG13_ON);
  943. reg_write(DRAMC_CH0_TOP0_SHU4_CA_CMD8,
  944. (reg_read(DRAMC_CH0_TOP0_SHU4_CA_CMD8) &
  945. ~DRAMC_CH0_TOP0_DDRPHY_REG14_MASK) |
  946. DRAMC_CH0_TOP0_DDRPHY_REG14_ON);
  947. } else {
  948. /* TINFO = "Turn OFF DCM 'dramc_ch0_top0_ddrphy'" */
  949. reg_write(DRAMC_CH0_TOP0_MISC_CG_CTRL0,
  950. (reg_read(DRAMC_CH0_TOP0_MISC_CG_CTRL0) &
  951. ~DRAMC_CH0_TOP0_DDRPHY_REG0_MASK) |
  952. DRAMC_CH0_TOP0_DDRPHY_REG0_OFF);
  953. reg_write(DRAMC_CH0_TOP0_MISC_CG_CTRL2,
  954. (reg_read(DRAMC_CH0_TOP0_MISC_CG_CTRL2) &
  955. ~DRAMC_CH0_TOP0_DDRPHY_REG1_MASK) |
  956. DRAMC_CH0_TOP0_DDRPHY_REG1_OFF);
  957. reg_write(DRAMC_CH0_TOP0_MISC_CTRL3,
  958. (reg_read(DRAMC_CH0_TOP0_MISC_CTRL3) &
  959. ~DRAMC_CH0_TOP0_DDRPHY_REG2_MASK) |
  960. DRAMC_CH0_TOP0_DDRPHY_REG2_OFF);
  961. reg_write(DRAMC_CH0_TOP0_SHU1_B0_DQ8,
  962. (reg_read(DRAMC_CH0_TOP0_SHU1_B0_DQ8) &
  963. ~DRAMC_CH0_TOP0_DDRPHY_REG3_MASK) |
  964. DRAMC_CH0_TOP0_DDRPHY_REG3_OFF);
  965. reg_write(DRAMC_CH0_TOP0_SHU1_B1_DQ8,
  966. (reg_read(DRAMC_CH0_TOP0_SHU1_B1_DQ8) &
  967. ~DRAMC_CH0_TOP0_DDRPHY_REG4_MASK) |
  968. DRAMC_CH0_TOP0_DDRPHY_REG4_OFF);
  969. reg_write(DRAMC_CH0_TOP0_SHU1_CA_CMD8,
  970. (reg_read(DRAMC_CH0_TOP0_SHU1_CA_CMD8) &
  971. ~DRAMC_CH0_TOP0_DDRPHY_REG5_MASK) |
  972. DRAMC_CH0_TOP0_DDRPHY_REG5_OFF);
  973. reg_write(DRAMC_CH0_TOP0_SHU2_B0_DQ8,
  974. (reg_read(DRAMC_CH0_TOP0_SHU2_B0_DQ8) &
  975. ~DRAMC_CH0_TOP0_DDRPHY_REG6_MASK) |
  976. DRAMC_CH0_TOP0_DDRPHY_REG6_OFF);
  977. reg_write(DRAMC_CH0_TOP0_SHU2_B1_DQ8,
  978. (reg_read(DRAMC_CH0_TOP0_SHU2_B1_DQ8) &
  979. ~DRAMC_CH0_TOP0_DDRPHY_REG7_MASK) |
  980. DRAMC_CH0_TOP0_DDRPHY_REG7_OFF);
  981. reg_write(DRAMC_CH0_TOP0_SHU2_CA_CMD8,
  982. (reg_read(DRAMC_CH0_TOP0_SHU2_CA_CMD8) &
  983. ~DRAMC_CH0_TOP0_DDRPHY_REG8_MASK) |
  984. DRAMC_CH0_TOP0_DDRPHY_REG8_OFF);
  985. reg_write(DRAMC_CH0_TOP0_SHU3_B0_DQ8,
  986. (reg_read(DRAMC_CH0_TOP0_SHU3_B0_DQ8) &
  987. ~DRAMC_CH0_TOP0_DDRPHY_REG9_MASK) |
  988. DRAMC_CH0_TOP0_DDRPHY_REG9_OFF);
  989. reg_write(DRAMC_CH0_TOP0_SHU3_B1_DQ8,
  990. (reg_read(DRAMC_CH0_TOP0_SHU3_B1_DQ8) &
  991. ~DRAMC_CH0_TOP0_DDRPHY_REG10_MASK) |
  992. DRAMC_CH0_TOP0_DDRPHY_REG10_OFF);
  993. reg_write(DRAMC_CH0_TOP0_SHU3_CA_CMD8,
  994. (reg_read(DRAMC_CH0_TOP0_SHU3_CA_CMD8) &
  995. ~DRAMC_CH0_TOP0_DDRPHY_REG11_MASK) |
  996. DRAMC_CH0_TOP0_DDRPHY_REG11_OFF);
  997. reg_write(DRAMC_CH0_TOP0_SHU4_B0_DQ8,
  998. (reg_read(DRAMC_CH0_TOP0_SHU4_B0_DQ8) &
  999. ~DRAMC_CH0_TOP0_DDRPHY_REG12_MASK) |
  1000. DRAMC_CH0_TOP0_DDRPHY_REG12_OFF);
  1001. reg_write(DRAMC_CH0_TOP0_SHU4_B1_DQ8,
  1002. (reg_read(DRAMC_CH0_TOP0_SHU4_B1_DQ8) &
  1003. ~DRAMC_CH0_TOP0_DDRPHY_REG13_MASK) |
  1004. DRAMC_CH0_TOP0_DDRPHY_REG13_OFF);
  1005. reg_write(DRAMC_CH0_TOP0_SHU4_CA_CMD8,
  1006. (reg_read(DRAMC_CH0_TOP0_SHU4_CA_CMD8) &
  1007. ~DRAMC_CH0_TOP0_DDRPHY_REG14_MASK) |
  1008. DRAMC_CH0_TOP0_DDRPHY_REG14_OFF);
  1009. }
  1010. }
  1011. #define DRAMC_CH0_TOP1_DRAMC_DCM_REG0_MASK ((0x1 << 0) | \
  1012. (0x1 << 1) | \
  1013. (0x1 << 2) | \
  1014. (0x1 << 26) | \
  1015. (0x1 << 30) | \
  1016. (0x1 << 31))
  1017. #define DRAMC_CH0_TOP1_DRAMC_DCM_REG1_MASK ((0x1 << 31))
  1018. #define DRAMC_CH0_TOP1_DRAMC_DCM_REG0_ON ((0x1 << 0) | \
  1019. (0x1 << 1) | \
  1020. (0x1 << 2) | \
  1021. (0x0 << 26) | \
  1022. (0x1 << 30) | \
  1023. (0x1 << 31))
  1024. #define DRAMC_CH0_TOP1_DRAMC_DCM_REG1_ON ((0x1 << 31))
  1025. #define DRAMC_CH0_TOP1_DRAMC_DCM_REG0_OFF ((0x0 << 0) | \
  1026. (0x0 << 1) | \
  1027. (0x0 << 2) | \
  1028. (0x1 << 26) | \
  1029. (0x0 << 30) | \
  1030. (0x0 << 31))
  1031. #define DRAMC_CH0_TOP1_DRAMC_DCM_REG1_OFF ((0x0 << 31))
  1032. bool dcm_dramc_ch0_top1_dramc_dcm_is_on(void)
  1033. {
  1034. bool ret = true;
  1035. ret &= ((reg_read(DRAMC_CH0_TOP1_DRAMC_PD_CTRL) &
  1036. DRAMC_CH0_TOP1_DRAMC_DCM_REG0_MASK) ==
  1037. (unsigned int) DRAMC_CH0_TOP1_DRAMC_DCM_REG0_ON);
  1038. ret &= ((reg_read(DRAMC_CH0_TOP1_CLKAR) &
  1039. DRAMC_CH0_TOP1_DRAMC_DCM_REG1_MASK) ==
  1040. (unsigned int) DRAMC_CH0_TOP1_DRAMC_DCM_REG1_ON);
  1041. return ret;
  1042. }
  1043. void dcm_dramc_ch0_top1_dramc_dcm(int on)
  1044. {
  1045. if (on) {
  1046. /* TINFO = "Turn ON DCM 'dramc_ch0_top1_dramc_dcm'" */
  1047. reg_write(DRAMC_CH0_TOP1_DRAMC_PD_CTRL,
  1048. (reg_read(DRAMC_CH0_TOP1_DRAMC_PD_CTRL) &
  1049. ~DRAMC_CH0_TOP1_DRAMC_DCM_REG0_MASK) |
  1050. DRAMC_CH0_TOP1_DRAMC_DCM_REG0_ON);
  1051. reg_write(DRAMC_CH0_TOP1_CLKAR,
  1052. (reg_read(DRAMC_CH0_TOP1_CLKAR) &
  1053. ~DRAMC_CH0_TOP1_DRAMC_DCM_REG1_MASK) |
  1054. DRAMC_CH0_TOP1_DRAMC_DCM_REG1_ON);
  1055. } else {
  1056. /* TINFO = "Turn OFF DCM 'dramc_ch0_top1_dramc_dcm'" */
  1057. reg_write(DRAMC_CH0_TOP1_DRAMC_PD_CTRL,
  1058. (reg_read(DRAMC_CH0_TOP1_DRAMC_PD_CTRL) &
  1059. ~DRAMC_CH0_TOP1_DRAMC_DCM_REG0_MASK) |
  1060. DRAMC_CH0_TOP1_DRAMC_DCM_REG0_OFF);
  1061. reg_write(DRAMC_CH0_TOP1_CLKAR,
  1062. (reg_read(DRAMC_CH0_TOP1_CLKAR) &
  1063. ~DRAMC_CH0_TOP1_DRAMC_DCM_REG1_MASK) |
  1064. DRAMC_CH0_TOP1_DRAMC_DCM_REG1_OFF);
  1065. }
  1066. }
  1067. #define CHN0_EMI_DCM_EMI_GROUP_REG0_MASK ((0xff << 24))
  1068. #define CHN0_EMI_DCM_EMI_GROUP_REG0_ON ((0x0 << 24))
  1069. #define CHN0_EMI_DCM_EMI_GROUP_REG0_OFF ((0xff << 24))
  1070. bool dcm_chn0_emi_dcm_emi_group_is_on(void)
  1071. {
  1072. bool ret = true;
  1073. ret &= ((reg_read(CHN0_EMI_CHN_EMI_CONB) &
  1074. CHN0_EMI_DCM_EMI_GROUP_REG0_MASK) ==
  1075. (unsigned int) CHN0_EMI_DCM_EMI_GROUP_REG0_ON);
  1076. return ret;
  1077. }
  1078. void dcm_chn0_emi_dcm_emi_group(int on)
  1079. {
  1080. if (on) {
  1081. /* TINFO = "Turn ON DCM 'chn0_emi_dcm_emi_group'" */
  1082. reg_write(CHN0_EMI_CHN_EMI_CONB,
  1083. (reg_read(CHN0_EMI_CHN_EMI_CONB) &
  1084. ~CHN0_EMI_DCM_EMI_GROUP_REG0_MASK) |
  1085. CHN0_EMI_DCM_EMI_GROUP_REG0_ON);
  1086. } else {
  1087. /* TINFO = "Turn OFF DCM 'chn0_emi_dcm_emi_group'" */
  1088. reg_write(CHN0_EMI_CHN_EMI_CONB,
  1089. (reg_read(CHN0_EMI_CHN_EMI_CONB) &
  1090. ~CHN0_EMI_DCM_EMI_GROUP_REG0_MASK) |
  1091. CHN0_EMI_DCM_EMI_GROUP_REG0_OFF);
  1092. }
  1093. }
  1094. #define DRAMC_CH1_TOP0_DDRPHY_REG0_MASK ((0x1 << 9) | \
  1095. (0x1 << 10) | \
  1096. (0x1 << 11) | \
  1097. (0x1 << 12) | \
  1098. (0x1 << 13) | \
  1099. (0x1 << 14) | \
  1100. (0x1 << 15) | \
  1101. (0x1 << 16) | \
  1102. (0x1 << 17) | \
  1103. (0x1 << 19))
  1104. #define DRAMC_CH1_TOP0_DDRPHY_REG1_MASK ((0x1 << 6) | \
  1105. (0x1 << 7) | \
  1106. (0x1f << 21) | \
  1107. (0x1 << 26))
  1108. #define DRAMC_CH1_TOP0_DDRPHY_REG2_MASK ((0x1 << 26) | \
  1109. (0x1 << 27))
  1110. #define DRAMC_CH1_TOP0_DDRPHY_REG3_MASK ((0x1 << 19) | \
  1111. (0x1 << 20) | \
  1112. (0x1 << 22) | \
  1113. (0x1 << 23) | \
  1114. (0x1 << 24) | \
  1115. (0x1 << 25) | \
  1116. (0x1 << 26) | \
  1117. (0x1 << 27) | \
  1118. (0x1 << 28) | \
  1119. (0x1 << 29) | \
  1120. (0x1 << 30) | \
  1121. (0x1 << 31))
  1122. #define DRAMC_CH1_TOP0_DDRPHY_REG4_MASK ((0x1 << 19) | \
  1123. (0x1 << 20) | \
  1124. (0x1 << 22) | \
  1125. (0x1 << 23) | \
  1126. (0x1 << 24) | \
  1127. (0x1 << 25) | \
  1128. (0x1 << 26) | \
  1129. (0x1 << 27) | \
  1130. (0x1 << 28) | \
  1131. (0x1 << 29) | \
  1132. (0x1 << 30) | \
  1133. (0x1 << 31))
  1134. #define DRAMC_CH1_TOP0_DDRPHY_REG5_MASK ((0x1 << 19) | \
  1135. (0x1 << 20) | \
  1136. (0x1 << 22) | \
  1137. (0x1 << 23) | \
  1138. (0x1 << 24) | \
  1139. (0x1 << 25) | \
  1140. (0x1 << 26) | \
  1141. (0x1 << 27) | \
  1142. (0x1 << 28) | \
  1143. (0x1 << 29) | \
  1144. (0x1 << 30) | \
  1145. (0x1 << 31))
  1146. #define DRAMC_CH1_TOP0_DDRPHY_REG6_MASK ((0x1 << 19) | \
  1147. (0x1 << 20) | \
  1148. (0x1 << 22) | \
  1149. (0x1 << 23) | \
  1150. (0x1 << 24) | \
  1151. (0x1 << 25) | \
  1152. (0x1 << 26) | \
  1153. (0x1 << 27) | \
  1154. (0x1 << 28) | \
  1155. (0x1 << 29) | \
  1156. (0x1 << 30) | \
  1157. (0x1 << 31))
  1158. #define DRAMC_CH1_TOP0_DDRPHY_REG7_MASK ((0x1 << 19) | \
  1159. (0x1 << 20) | \
  1160. (0x1 << 22) | \
  1161. (0x1 << 23) | \
  1162. (0x1 << 24) | \
  1163. (0x1 << 25) | \
  1164. (0x1 << 26) | \
  1165. (0x1 << 27) | \
  1166. (0x1 << 28) | \
  1167. (0x1 << 29) | \
  1168. (0x1 << 30) | \
  1169. (0x1 << 31))
  1170. #define DRAMC_CH1_TOP0_DDRPHY_REG8_MASK ((0x1 << 19) | \
  1171. (0x1 << 20) | \
  1172. (0x1 << 22) | \
  1173. (0x1 << 23) | \
  1174. (0x1 << 24) | \
  1175. (0x1 << 25) | \
  1176. (0x1 << 26) | \
  1177. (0x1 << 27) | \
  1178. (0x1 << 28) | \
  1179. (0x1 << 29) | \
  1180. (0x1 << 30) | \
  1181. (0x1 << 31))
  1182. #define DRAMC_CH1_TOP0_DDRPHY_REG9_MASK ((0x1 << 19) | \
  1183. (0x1 << 20) | \
  1184. (0x1 << 22) | \
  1185. (0x1 << 23) | \
  1186. (0x1 << 24) | \
  1187. (0x1 << 25) | \
  1188. (0x1 << 26) | \
  1189. (0x1 << 27) | \
  1190. (0x1 << 28) | \
  1191. (0x1 << 29) | \
  1192. (0x1 << 30) | \
  1193. (0x1 << 31))
  1194. #define DRAMC_CH1_TOP0_DDRPHY_REG10_MASK ((0x1 << 19) | \
  1195. (0x1 << 20) | \
  1196. (0x1 << 22) | \
  1197. (0x1 << 23) | \
  1198. (0x1 << 24) | \
  1199. (0x1 << 25) | \
  1200. (0x1 << 26) | \
  1201. (0x1 << 27) | \
  1202. (0x1 << 28) | \
  1203. (0x1 << 29) | \
  1204. (0x1 << 30) | \
  1205. (0x1 << 31))
  1206. #define DRAMC_CH1_TOP0_DDRPHY_REG11_MASK ((0xf << 0))
  1207. #define DRAMC_CH1_TOP0_DDRPHY_REG12_MASK ((0x1 << 20) | \
  1208. (0x1 << 21) | \
  1209. (0x1 << 23) | \
  1210. (0x1 << 24) | \
  1211. (0x1 << 25) | \
  1212. (0x1 << 26) | \
  1213. (0x1 << 27) | \
  1214. (0x1 << 28) | \
  1215. (0x1 << 29) | \
  1216. (0x1 << 30) | \
  1217. (0x1 << 31))
  1218. #define DRAMC_CH1_TOP0_DDRPHY_REG13_MASK ((0x1 << 19) | \
  1219. (0x1 << 20) | \
  1220. (0x1 << 22) | \
  1221. (0x1 << 23) | \
  1222. (0x1 << 24) | \
  1223. (0x1 << 25) | \
  1224. (0x1 << 26) | \
  1225. (0x1 << 27) | \
  1226. (0x1 << 28) | \
  1227. (0x1 << 29) | \
  1228. (0x1 << 30) | \
  1229. (0x1 << 31))
  1230. #define DRAMC_CH1_TOP0_DDRPHY_REG14_MASK ((0x1 << 19) | \
  1231. (0x1 << 20) | \
  1232. (0x1 << 22) | \
  1233. (0x1 << 23) | \
  1234. (0x1 << 24) | \
  1235. (0x1 << 25) | \
  1236. (0x1 << 26) | \
  1237. (0x1 << 27) | \
  1238. (0x1 << 28) | \
  1239. (0x1 << 29) | \
  1240. (0x1 << 30) | \
  1241. (0x1 << 31))
  1242. #define DRAMC_CH1_TOP0_DDRPHY_REG15_MASK ((0x1 << 19) | \
  1243. (0x1 << 20) | \
  1244. (0x1 << 22) | \
  1245. (0x1 << 23) | \
  1246. (0x1 << 24) | \
  1247. (0x1 << 25) | \
  1248. (0x1 << 26) | \
  1249. (0x1 << 27) | \
  1250. (0x1 << 28) | \
  1251. (0x1 << 29) | \
  1252. (0x1 << 30) | \
  1253. (0x1 << 31))
  1254. #define DRAMC_CH1_TOP0_DDRPHY_REG0_ON ((0x0 << 9) | \
  1255. (0x0 << 10) | \
  1256. (0x0 << 11) | \
  1257. (0x0 << 12) | \
  1258. (0x0 << 13) | \
  1259. (0x0 << 14) | \
  1260. (0x0 << 15) | \
  1261. (0x0 << 16) | \
  1262. (0x0 << 17) | \
  1263. (0x0 << 19))
  1264. #define DRAMC_CH1_TOP0_DDRPHY_REG1_ON ((0x0 << 6) | \
  1265. (0x0 << 7) | \
  1266. (0x8 << 21) | \
  1267. (0x0 << 26))
  1268. #define DRAMC_CH1_TOP0_DDRPHY_REG2_ON ((0x0 << 26) | \
  1269. (0x0 << 27))
  1270. #define DRAMC_CH1_TOP0_DDRPHY_REG3_ON ((0x0 << 19) | \
  1271. (0x0 << 20) | \
  1272. (0x0 << 22) | \
  1273. (0x0 << 23) | \
  1274. (0x0 << 24) | \
  1275. (0x0 << 25) | \
  1276. (0x0 << 26) | \
  1277. (0x0 << 27) | \
  1278. (0x0 << 28) | \
  1279. (0x0 << 29) | \
  1280. (0x0 << 30) | \
  1281. (0x0 << 31))
  1282. #define DRAMC_CH1_TOP0_DDRPHY_REG4_ON ((0x0 << 19) | \
  1283. (0x0 << 20) | \
  1284. (0x0 << 22) | \
  1285. (0x0 << 23) | \
  1286. (0x0 << 24) | \
  1287. (0x0 << 25) | \
  1288. (0x0 << 26) | \
  1289. (0x0 << 27) | \
  1290. (0x0 << 28) | \
  1291. (0x0 << 29) | \
  1292. (0x0 << 30) | \
  1293. (0x0 << 31))
  1294. #define DRAMC_CH1_TOP0_DDRPHY_REG5_ON ((0x0 << 19) | \
  1295. (0x0 << 20) | \
  1296. (0x0 << 22) | \
  1297. (0x0 << 23) | \
  1298. (0x0 << 24) | \
  1299. (0x0 << 25) | \
  1300. (0x0 << 26) | \
  1301. (0x0 << 27) | \
  1302. (0x0 << 28) | \
  1303. (0x0 << 29) | \
  1304. (0x0 << 30) | \
  1305. (0x0 << 31))
  1306. #define DRAMC_CH1_TOP0_DDRPHY_REG6_ON ((0x0 << 19) | \
  1307. (0x0 << 20) | \
  1308. (0x0 << 22) | \
  1309. (0x0 << 23) | \
  1310. (0x0 << 24) | \
  1311. (0x0 << 25) | \
  1312. (0x0 << 26) | \
  1313. (0x0 << 27) | \
  1314. (0x0 << 28) | \
  1315. (0x0 << 29) | \
  1316. (0x0 << 30) | \
  1317. (0x0 << 31))
  1318. #define DRAMC_CH1_TOP0_DDRPHY_REG7_ON ((0x0 << 19) | \
  1319. (0x0 << 20) | \
  1320. (0x0 << 22) | \
  1321. (0x0 << 23) | \
  1322. (0x0 << 24) | \
  1323. (0x0 << 25) | \
  1324. (0x0 << 26) | \
  1325. (0x0 << 27) | \
  1326. (0x0 << 28) | \
  1327. (0x0 << 29) | \
  1328. (0x0 << 30) | \
  1329. (0x0 << 31))
  1330. #define DRAMC_CH1_TOP0_DDRPHY_REG8_ON ((0x0 << 19) | \
  1331. (0x0 << 20) | \
  1332. (0x0 << 22) | \
  1333. (0x0 << 23) | \
  1334. (0x0 << 24) | \
  1335. (0x0 << 25) | \
  1336. (0x0 << 26) | \
  1337. (0x0 << 27) | \
  1338. (0x0 << 28) | \
  1339. (0x0 << 29) | \
  1340. (0x0 << 30) | \
  1341. (0x0 << 31))
  1342. #define DRAMC_CH1_TOP0_DDRPHY_REG9_ON ((0x0 << 19) | \
  1343. (0x0 << 20) | \
  1344. (0x0 << 22) | \
  1345. (0x0 << 23) | \
  1346. (0x0 << 24) | \
  1347. (0x0 << 25) | \
  1348. (0x0 << 26) | \
  1349. (0x0 << 27) | \
  1350. (0x0 << 28) | \
  1351. (0x0 << 29) | \
  1352. (0x0 << 30) | \
  1353. (0x0 << 31))
  1354. #define DRAMC_CH1_TOP0_DDRPHY_REG10_ON ((0x0 << 19) | \
  1355. (0x0 << 20) | \
  1356. (0x0 << 22) | \
  1357. (0x0 << 23) | \
  1358. (0x0 << 24) | \
  1359. (0x0 << 25) | \
  1360. (0x0 << 26) | \
  1361. (0x0 << 27) | \
  1362. (0x0 << 28) | \
  1363. (0x0 << 29) | \
  1364. (0x0 << 30) | \
  1365. (0x0 << 31))
  1366. #define DRAMC_CH1_TOP0_DDRPHY_REG11_ON ((0x0 << 0))
  1367. #define DRAMC_CH1_TOP0_DDRPHY_REG12_ON ((0x0 << 20) | \
  1368. (0x0 << 21) | \
  1369. (0x0 << 23) | \
  1370. (0x0 << 24) | \
  1371. (0x0 << 25) | \
  1372. (0x0 << 26) | \
  1373. (0x0 << 27) | \
  1374. (0x0 << 28) | \
  1375. (0x0 << 29) | \
  1376. (0x0 << 30) | \
  1377. (0x0 << 31))
  1378. #define DRAMC_CH1_TOP0_DDRPHY_REG13_ON ((0x0 << 19) | \
  1379. (0x0 << 20) | \
  1380. (0x0 << 22) | \
  1381. (0x0 << 23) | \
  1382. (0x0 << 24) | \
  1383. (0x0 << 25) | \
  1384. (0x0 << 26) | \
  1385. (0x0 << 27) | \
  1386. (0x0 << 28) | \
  1387. (0x0 << 29) | \
  1388. (0x0 << 30) | \
  1389. (0x0 << 31))
  1390. #define DRAMC_CH1_TOP0_DDRPHY_REG14_ON ((0x0 << 19) | \
  1391. (0x0 << 20) | \
  1392. (0x0 << 22) | \
  1393. (0x0 << 23) | \
  1394. (0x0 << 24) | \
  1395. (0x0 << 25) | \
  1396. (0x0 << 26) | \
  1397. (0x0 << 27) | \
  1398. (0x0 << 28) | \
  1399. (0x0 << 29) | \
  1400. (0x0 << 30) | \
  1401. (0x0 << 31))
  1402. #define DRAMC_CH1_TOP0_DDRPHY_REG15_ON ((0x0 << 19) | \
  1403. (0x0 << 20) | \
  1404. (0x0 << 22) | \
  1405. (0x0 << 23) | \
  1406. (0x0 << 24) | \
  1407. (0x0 << 25) | \
  1408. (0x0 << 26) | \
  1409. (0x0 << 27) | \
  1410. (0x0 << 28) | \
  1411. (0x0 << 29) | \
  1412. (0x0 << 30) | \
  1413. (0x0 << 31))
  1414. #define DRAMC_CH1_TOP0_DDRPHY_REG0_OFF ((0x1 << 9) | \
  1415. (0x1 << 10) | \
  1416. (0x1 << 11) | \
  1417. (0x1 << 12) | \
  1418. (0x1 << 13) | \
  1419. (0x1 << 14) | \
  1420. (0x1 << 15) | \
  1421. (0x1 << 16) | \
  1422. (0x1 << 17) | \
  1423. (0x1 << 19))
  1424. #define DRAMC_CH1_TOP0_DDRPHY_REG1_OFF ((0x1 << 6) | \
  1425. (0x1 << 7) | \
  1426. (0x0 << 21) | \
  1427. (0x0 << 26))
  1428. #define DRAMC_CH1_TOP0_DDRPHY_REG2_OFF ((0x1 << 26) | \
  1429. (0x1 << 27))
  1430. #define DRAMC_CH1_TOP0_DDRPHY_REG3_OFF ((0x1 << 19) | \
  1431. (0x1 << 20) | \
  1432. (0x1 << 22) | \
  1433. (0x1 << 23) | \
  1434. (0x1 << 24) | \
  1435. (0x1 << 25) | \
  1436. (0x1 << 26) | \
  1437. (0x1 << 27) | \
  1438. (0x1 << 28) | \
  1439. (0x1 << 29) | \
  1440. (0x1 << 30) | \
  1441. (0x1 << 31))
  1442. #define DRAMC_CH1_TOP0_DDRPHY_REG4_OFF ((0x1 << 19) | \
  1443. (0x1 << 20) | \
  1444. (0x1 << 22) | \
  1445. (0x1 << 23) | \
  1446. (0x1 << 24) | \
  1447. (0x1 << 25) | \
  1448. (0x1 << 26) | \
  1449. (0x1 << 27) | \
  1450. (0x1 << 28) | \
  1451. (0x1 << 29) | \
  1452. (0x1 << 30) | \
  1453. (0x1 << 31))
  1454. #define DRAMC_CH1_TOP0_DDRPHY_REG5_OFF ((0x1 << 19) | \
  1455. (0x1 << 20) | \
  1456. (0x1 << 22) | \
  1457. (0x1 << 23) | \
  1458. (0x1 << 24) | \
  1459. (0x1 << 25) | \
  1460. (0x1 << 26) | \
  1461. (0x1 << 27) | \
  1462. (0x1 << 28) | \
  1463. (0x1 << 29) | \
  1464. (0x1 << 30) | \
  1465. (0x1 << 31))
  1466. #define DRAMC_CH1_TOP0_DDRPHY_REG6_OFF ((0x1 << 19) | \
  1467. (0x1 << 20) | \
  1468. (0x1 << 22) | \
  1469. (0x1 << 23) | \
  1470. (0x1 << 24) | \
  1471. (0x1 << 25) | \
  1472. (0x1 << 26) | \
  1473. (0x1 << 27) | \
  1474. (0x1 << 28) | \
  1475. (0x1 << 29) | \
  1476. (0x1 << 30) | \
  1477. (0x1 << 31))
  1478. #define DRAMC_CH1_TOP0_DDRPHY_REG7_OFF ((0x1 << 19) | \
  1479. (0x1 << 20) | \
  1480. (0x1 << 22) | \
  1481. (0x1 << 23) | \
  1482. (0x1 << 24) | \
  1483. (0x1 << 25) | \
  1484. (0x1 << 26) | \
  1485. (0x1 << 27) | \
  1486. (0x1 << 28) | \
  1487. (0x1 << 29) | \
  1488. (0x1 << 30) | \
  1489. (0x1 << 31))
  1490. #define DRAMC_CH1_TOP0_DDRPHY_REG8_OFF ((0x1 << 19) | \
  1491. (0x1 << 20) | \
  1492. (0x1 << 22) | \
  1493. (0x1 << 23) | \
  1494. (0x1 << 24) | \
  1495. (0x1 << 25) | \
  1496. (0x1 << 26) | \
  1497. (0x1 << 27) | \
  1498. (0x1 << 28) | \
  1499. (0x1 << 29) | \
  1500. (0x1 << 30) | \
  1501. (0x1 << 31))
  1502. #define DRAMC_CH1_TOP0_DDRPHY_REG9_OFF ((0x1 << 19) | \
  1503. (0x1 << 20) | \
  1504. (0x1 << 22) | \
  1505. (0x1 << 23) | \
  1506. (0x1 << 24) | \
  1507. (0x1 << 25) | \
  1508. (0x1 << 26) | \
  1509. (0x1 << 27) | \
  1510. (0x1 << 28) | \
  1511. (0x1 << 29) | \
  1512. (0x1 << 30) | \
  1513. (0x1 << 31))
  1514. #define DRAMC_CH1_TOP0_DDRPHY_REG10_OFF ((0x1 << 19) | \
  1515. (0x1 << 20) | \
  1516. (0x1 << 22) | \
  1517. (0x1 << 23) | \
  1518. (0x1 << 24) | \
  1519. (0x1 << 25) | \
  1520. (0x1 << 26) | \
  1521. (0x1 << 27) | \
  1522. (0x1 << 28) | \
  1523. (0x1 << 29) | \
  1524. (0x1 << 30) | \
  1525. (0x1 << 31))
  1526. #define DRAMC_CH1_TOP0_DDRPHY_REG11_OFF ((0x1 << 0))
  1527. #define DRAMC_CH1_TOP0_DDRPHY_REG12_OFF ((0x1 << 20) | \
  1528. (0x1 << 21) | \
  1529. (0x1 << 23) | \
  1530. (0x1 << 24) | \
  1531. (0x1 << 25) | \
  1532. (0x1 << 26) | \
  1533. (0x1 << 27) | \
  1534. (0x1 << 28) | \
  1535. (0x1 << 29) | \
  1536. (0x1 << 30) | \
  1537. (0x1 << 31))
  1538. #define DRAMC_CH1_TOP0_DDRPHY_REG13_OFF ((0x1 << 19) | \
  1539. (0x1 << 20) | \
  1540. (0x1 << 22) | \
  1541. (0x1 << 23) | \
  1542. (0x1 << 24) | \
  1543. (0x1 << 25) | \
  1544. (0x1 << 26) | \
  1545. (0x1 << 27) | \
  1546. (0x1 << 28) | \
  1547. (0x1 << 29) | \
  1548. (0x1 << 30) | \
  1549. (0x1 << 31))
  1550. #define DRAMC_CH1_TOP0_DDRPHY_REG14_OFF ((0x1 << 19) | \
  1551. (0x1 << 20) | \
  1552. (0x1 << 22) | \
  1553. (0x1 << 23) | \
  1554. (0x1 << 24) | \
  1555. (0x1 << 25) | \
  1556. (0x1 << 26) | \
  1557. (0x1 << 27) | \
  1558. (0x1 << 28) | \
  1559. (0x1 << 29) | \
  1560. (0x1 << 30) | \
  1561. (0x1 << 31))
  1562. #define DRAMC_CH1_TOP0_DDRPHY_REG15_OFF ((0x1 << 19) | \
  1563. (0x1 << 20) | \
  1564. (0x1 << 22) | \
  1565. (0x1 << 23) | \
  1566. (0x1 << 24) | \
  1567. (0x1 << 25) | \
  1568. (0x1 << 26) | \
  1569. (0x1 << 27) | \
  1570. (0x1 << 28) | \
  1571. (0x1 << 29) | \
  1572. (0x1 << 30) | \
  1573. (0x1 << 31))
  1574. bool dcm_dramc_ch1_top0_ddrphy_is_on(void)
  1575. {
  1576. bool ret = true;
  1577. ret &= ((reg_read(DRAMC_CH1_TOP0_MISC_CG_CTRL0) &
  1578. DRAMC_CH1_TOP0_DDRPHY_REG0_MASK) ==
  1579. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG0_ON);
  1580. ret &= ((reg_read(DRAMC_CH1_TOP0_MISC_CG_CTRL2) &
  1581. DRAMC_CH1_TOP0_DDRPHY_REG1_MASK) ==
  1582. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG1_ON);
  1583. ret &= ((reg_read(DRAMC_CH1_TOP0_MISC_CTRL3) &
  1584. DRAMC_CH1_TOP0_DDRPHY_REG2_MASK) ==
  1585. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG2_ON);
  1586. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU1_B0_DQ8) &
  1587. DRAMC_CH1_TOP0_DDRPHY_REG3_MASK) ==
  1588. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG3_ON);
  1589. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU1_B1_DQ8) &
  1590. DRAMC_CH1_TOP0_DDRPHY_REG4_MASK) ==
  1591. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG4_ON);
  1592. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU1_CA_CMD8) &
  1593. DRAMC_CH1_TOP0_DDRPHY_REG5_MASK) ==
  1594. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG5_ON);
  1595. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU2_B0_DQ8) &
  1596. DRAMC_CH1_TOP0_DDRPHY_REG6_MASK) ==
  1597. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG6_ON);
  1598. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU2_B1_DQ8) &
  1599. DRAMC_CH1_TOP0_DDRPHY_REG7_MASK) ==
  1600. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG7_ON);
  1601. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU2_CA_CMD8) &
  1602. DRAMC_CH1_TOP0_DDRPHY_REG8_MASK) ==
  1603. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG8_ON);
  1604. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU3_B0_DQ8) &
  1605. DRAMC_CH1_TOP0_DDRPHY_REG9_MASK) ==
  1606. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG9_ON);
  1607. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU3_B1_DQ8) &
  1608. DRAMC_CH1_TOP0_DDRPHY_REG10_MASK) ==
  1609. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG10_ON);
  1610. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU3_CA_CMD7) &
  1611. DRAMC_CH1_TOP0_DDRPHY_REG11_MASK) ==
  1612. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG11_ON);
  1613. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU3_CA_CMD8) &
  1614. DRAMC_CH1_TOP0_DDRPHY_REG12_MASK) ==
  1615. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG12_ON);
  1616. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU4_B0_DQ8) &
  1617. DRAMC_CH1_TOP0_DDRPHY_REG13_MASK) ==
  1618. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG13_ON);
  1619. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU4_B1_DQ8) &
  1620. DRAMC_CH1_TOP0_DDRPHY_REG14_MASK) ==
  1621. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG14_ON);
  1622. ret &= ((reg_read(DRAMC_CH1_TOP0_SHU4_CA_CMD8) &
  1623. DRAMC_CH1_TOP0_DDRPHY_REG15_MASK) ==
  1624. (unsigned int) DRAMC_CH1_TOP0_DDRPHY_REG15_ON);
  1625. return ret;
  1626. }
  1627. void dcm_dramc_ch1_top0_ddrphy(int on)
  1628. {
  1629. if (on) {
  1630. /* TINFO = "Turn ON DCM 'dramc_ch1_top0_ddrphy'" */
  1631. reg_write(DRAMC_CH1_TOP0_MISC_CG_CTRL0,
  1632. (reg_read(DRAMC_CH1_TOP0_MISC_CG_CTRL0) &
  1633. ~DRAMC_CH1_TOP0_DDRPHY_REG0_MASK) |
  1634. DRAMC_CH1_TOP0_DDRPHY_REG0_ON);
  1635. reg_write(DRAMC_CH1_TOP0_MISC_CG_CTRL2,
  1636. (reg_read(DRAMC_CH1_TOP0_MISC_CG_CTRL2) &
  1637. ~DRAMC_CH1_TOP0_DDRPHY_REG1_MASK) |
  1638. DRAMC_CH1_TOP0_DDRPHY_REG1_ON);
  1639. reg_write(DRAMC_CH1_TOP0_MISC_CTRL3,
  1640. (reg_read(DRAMC_CH1_TOP0_MISC_CTRL3) &
  1641. ~DRAMC_CH1_TOP0_DDRPHY_REG2_MASK) |
  1642. DRAMC_CH1_TOP0_DDRPHY_REG2_ON);
  1643. reg_write(DRAMC_CH1_TOP0_SHU1_B0_DQ8,
  1644. (reg_read(DRAMC_CH1_TOP0_SHU1_B0_DQ8) &
  1645. ~DRAMC_CH1_TOP0_DDRPHY_REG3_MASK) |
  1646. DRAMC_CH1_TOP0_DDRPHY_REG3_ON);
  1647. reg_write(DRAMC_CH1_TOP0_SHU1_B1_DQ8,
  1648. (reg_read(DRAMC_CH1_TOP0_SHU1_B1_DQ8) &
  1649. ~DRAMC_CH1_TOP0_DDRPHY_REG4_MASK) |
  1650. DRAMC_CH1_TOP0_DDRPHY_REG4_ON);
  1651. reg_write(DRAMC_CH1_TOP0_SHU1_CA_CMD8,
  1652. (reg_read(DRAMC_CH1_TOP0_SHU1_CA_CMD8) &
  1653. ~DRAMC_CH1_TOP0_DDRPHY_REG5_MASK) |
  1654. DRAMC_CH1_TOP0_DDRPHY_REG5_ON);
  1655. reg_write(DRAMC_CH1_TOP0_SHU2_B0_DQ8,
  1656. (reg_read(DRAMC_CH1_TOP0_SHU2_B0_DQ8) &
  1657. ~DRAMC_CH1_TOP0_DDRPHY_REG6_MASK) |
  1658. DRAMC_CH1_TOP0_DDRPHY_REG6_ON);
  1659. reg_write(DRAMC_CH1_TOP0_SHU2_B1_DQ8,
  1660. (reg_read(DRAMC_CH1_TOP0_SHU2_B1_DQ8) &
  1661. ~DRAMC_CH1_TOP0_DDRPHY_REG7_MASK) |
  1662. DRAMC_CH1_TOP0_DDRPHY_REG7_ON);
  1663. reg_write(DRAMC_CH1_TOP0_SHU2_CA_CMD8,
  1664. (reg_read(DRAMC_CH1_TOP0_SHU2_CA_CMD8) &
  1665. ~DRAMC_CH1_TOP0_DDRPHY_REG8_MASK) |
  1666. DRAMC_CH1_TOP0_DDRPHY_REG8_ON);
  1667. reg_write(DRAMC_CH1_TOP0_SHU3_B0_DQ8,
  1668. (reg_read(DRAMC_CH1_TOP0_SHU3_B0_DQ8) &
  1669. ~DRAMC_CH1_TOP0_DDRPHY_REG9_MASK) |
  1670. DRAMC_CH1_TOP0_DDRPHY_REG9_ON);
  1671. reg_write(DRAMC_CH1_TOP0_SHU3_B1_DQ8,
  1672. (reg_read(DRAMC_CH1_TOP0_SHU3_B1_DQ8) &
  1673. ~DRAMC_CH1_TOP0_DDRPHY_REG10_MASK) |
  1674. DRAMC_CH1_TOP0_DDRPHY_REG10_ON);
  1675. reg_write(DRAMC_CH1_TOP0_SHU3_CA_CMD7,
  1676. (reg_read(DRAMC_CH1_TOP0_SHU3_CA_CMD7) &
  1677. ~DRAMC_CH1_TOP0_DDRPHY_REG11_MASK) |
  1678. DRAMC_CH1_TOP0_DDRPHY_REG11_ON);
  1679. reg_write(DRAMC_CH1_TOP0_SHU3_CA_CMD8,
  1680. (reg_read(DRAMC_CH1_TOP0_SHU3_CA_CMD8) &
  1681. ~DRAMC_CH1_TOP0_DDRPHY_REG12_MASK) |
  1682. DRAMC_CH1_TOP0_DDRPHY_REG12_ON);
  1683. reg_write(DRAMC_CH1_TOP0_SHU4_B0_DQ8,
  1684. (reg_read(DRAMC_CH1_TOP0_SHU4_B0_DQ8) &
  1685. ~DRAMC_CH1_TOP0_DDRPHY_REG13_MASK) |
  1686. DRAMC_CH1_TOP0_DDRPHY_REG13_ON);
  1687. reg_write(DRAMC_CH1_TOP0_SHU4_B1_DQ8,
  1688. (reg_read(DRAMC_CH1_TOP0_SHU4_B1_DQ8) &
  1689. ~DRAMC_CH1_TOP0_DDRPHY_REG14_MASK) |
  1690. DRAMC_CH1_TOP0_DDRPHY_REG14_ON);
  1691. reg_write(DRAMC_CH1_TOP0_SHU4_CA_CMD8,
  1692. (reg_read(DRAMC_CH1_TOP0_SHU4_CA_CMD8) &
  1693. ~DRAMC_CH1_TOP0_DDRPHY_REG15_MASK) |
  1694. DRAMC_CH1_TOP0_DDRPHY_REG15_ON);
  1695. } else {
  1696. /* TINFO = "Turn OFF DCM 'dramc_ch1_top0_ddrphy'" */
  1697. reg_write(DRAMC_CH1_TOP0_MISC_CG_CTRL0,
  1698. (reg_read(DRAMC_CH1_TOP0_MISC_CG_CTRL0) &
  1699. ~DRAMC_CH1_TOP0_DDRPHY_REG0_MASK) |
  1700. DRAMC_CH1_TOP0_DDRPHY_REG0_OFF);
  1701. reg_write(DRAMC_CH1_TOP0_MISC_CG_CTRL2,
  1702. (reg_read(DRAMC_CH1_TOP0_MISC_CG_CTRL2) &
  1703. ~DRAMC_CH1_TOP0_DDRPHY_REG1_MASK) |
  1704. DRAMC_CH1_TOP0_DDRPHY_REG1_OFF);
  1705. reg_write(DRAMC_CH1_TOP0_MISC_CTRL3,
  1706. (reg_read(DRAMC_CH1_TOP0_MISC_CTRL3) &
  1707. ~DRAMC_CH1_TOP0_DDRPHY_REG2_MASK) |
  1708. DRAMC_CH1_TOP0_DDRPHY_REG2_OFF);
  1709. reg_write(DRAMC_CH1_TOP0_SHU1_B0_DQ8,
  1710. (reg_read(DRAMC_CH1_TOP0_SHU1_B0_DQ8) &
  1711. ~DRAMC_CH1_TOP0_DDRPHY_REG3_MASK) |
  1712. DRAMC_CH1_TOP0_DDRPHY_REG3_OFF);
  1713. reg_write(DRAMC_CH1_TOP0_SHU1_B1_DQ8,
  1714. (reg_read(DRAMC_CH1_TOP0_SHU1_B1_DQ8) &
  1715. ~DRAMC_CH1_TOP0_DDRPHY_REG4_MASK) |
  1716. DRAMC_CH1_TOP0_DDRPHY_REG4_OFF);
  1717. reg_write(DRAMC_CH1_TOP0_SHU1_CA_CMD8,
  1718. (reg_read(DRAMC_CH1_TOP0_SHU1_CA_CMD8) &
  1719. ~DRAMC_CH1_TOP0_DDRPHY_REG5_MASK) |
  1720. DRAMC_CH1_TOP0_DDRPHY_REG5_OFF);
  1721. reg_write(DRAMC_CH1_TOP0_SHU2_B0_DQ8,
  1722. (reg_read(DRAMC_CH1_TOP0_SHU2_B0_DQ8) &
  1723. ~DRAMC_CH1_TOP0_DDRPHY_REG6_MASK) |
  1724. DRAMC_CH1_TOP0_DDRPHY_REG6_OFF);
  1725. reg_write(DRAMC_CH1_TOP0_SHU2_B1_DQ8,
  1726. (reg_read(DRAMC_CH1_TOP0_SHU2_B1_DQ8) &
  1727. ~DRAMC_CH1_TOP0_DDRPHY_REG7_MASK) |
  1728. DRAMC_CH1_TOP0_DDRPHY_REG7_OFF);
  1729. reg_write(DRAMC_CH1_TOP0_SHU2_CA_CMD8,
  1730. (reg_read(DRAMC_CH1_TOP0_SHU2_CA_CMD8) &
  1731. ~DRAMC_CH1_TOP0_DDRPHY_REG8_MASK) |
  1732. DRAMC_CH1_TOP0_DDRPHY_REG8_OFF);
  1733. reg_write(DRAMC_CH1_TOP0_SHU3_B0_DQ8,
  1734. (reg_read(DRAMC_CH1_TOP0_SHU3_B0_DQ8) &
  1735. ~DRAMC_CH1_TOP0_DDRPHY_REG9_MASK) |
  1736. DRAMC_CH1_TOP0_DDRPHY_REG9_OFF);
  1737. reg_write(DRAMC_CH1_TOP0_SHU3_B1_DQ8,
  1738. (reg_read(DRAMC_CH1_TOP0_SHU3_B1_DQ8) &
  1739. ~DRAMC_CH1_TOP0_DDRPHY_REG10_MASK) |
  1740. DRAMC_CH1_TOP0_DDRPHY_REG10_OFF);
  1741. reg_write(DRAMC_CH1_TOP0_SHU3_CA_CMD7,
  1742. (reg_read(DRAMC_CH1_TOP0_SHU3_CA_CMD7) &
  1743. ~DRAMC_CH1_TOP0_DDRPHY_REG11_MASK) |
  1744. DRAMC_CH1_TOP0_DDRPHY_REG11_OFF);
  1745. reg_write(DRAMC_CH1_TOP0_SHU3_CA_CMD8,
  1746. (reg_read(DRAMC_CH1_TOP0_SHU3_CA_CMD8) &
  1747. ~DRAMC_CH1_TOP0_DDRPHY_REG12_MASK) |
  1748. DRAMC_CH1_TOP0_DDRPHY_REG12_OFF);
  1749. reg_write(DRAMC_CH1_TOP0_SHU4_B0_DQ8,
  1750. (reg_read(DRAMC_CH1_TOP0_SHU4_B0_DQ8) &
  1751. ~DRAMC_CH1_TOP0_DDRPHY_REG13_MASK) |
  1752. DRAMC_CH1_TOP0_DDRPHY_REG13_OFF);
  1753. reg_write(DRAMC_CH1_TOP0_SHU4_B1_DQ8,
  1754. (reg_read(DRAMC_CH1_TOP0_SHU4_B1_DQ8) &
  1755. ~DRAMC_CH1_TOP0_DDRPHY_REG14_MASK) |
  1756. DRAMC_CH1_TOP0_DDRPHY_REG14_OFF);
  1757. reg_write(DRAMC_CH1_TOP0_SHU4_CA_CMD8,
  1758. (reg_read(DRAMC_CH1_TOP0_SHU4_CA_CMD8) &
  1759. ~DRAMC_CH1_TOP0_DDRPHY_REG15_MASK) |
  1760. DRAMC_CH1_TOP0_DDRPHY_REG15_OFF);
  1761. }
  1762. }
  1763. #define DRAMC_CH1_TOP1_DRAMC_DCM_REG0_MASK ((0x1 << 0) | \
  1764. (0x1 << 1) | \
  1765. (0x1 << 2) | \
  1766. (0x1 << 26) | \
  1767. (0x1 << 30) | \
  1768. (0x1 << 31))
  1769. #define DRAMC_CH1_TOP1_DRAMC_DCM_REG1_MASK ((0x1 << 31))
  1770. #define DRAMC_CH1_TOP1_DRAMC_DCM_REG0_ON ((0x1 << 0) | \
  1771. (0x1 << 1) | \
  1772. (0x1 << 2) | \
  1773. (0x0 << 26) | \
  1774. (0x1 << 30) | \
  1775. (0x1 << 31))
  1776. #define DRAMC_CH1_TOP1_DRAMC_DCM_REG1_ON ((0x1 << 31))
  1777. #define DRAMC_CH1_TOP1_DRAMC_DCM_REG0_OFF ((0x0 << 0) | \
  1778. (0x0 << 1) | \
  1779. (0x0 << 2) | \
  1780. (0x1 << 26) | \
  1781. (0x0 << 30) | \
  1782. (0x0 << 31))
  1783. #define DRAMC_CH1_TOP1_DRAMC_DCM_REG1_OFF ((0x0 << 31))
  1784. bool dcm_dramc_ch1_top1_dramc_dcm_is_on(void)
  1785. {
  1786. bool ret = true;
  1787. ret &= ((reg_read(DRAMC_CH1_TOP1_DRAMC_PD_CTRL) &
  1788. DRAMC_CH1_TOP1_DRAMC_DCM_REG0_MASK) ==
  1789. (unsigned int) DRAMC_CH1_TOP1_DRAMC_DCM_REG0_ON);
  1790. ret &= ((reg_read(DRAMC_CH1_TOP1_CLKAR) &
  1791. DRAMC_CH1_TOP1_DRAMC_DCM_REG1_MASK) ==
  1792. (unsigned int) DRAMC_CH1_TOP1_DRAMC_DCM_REG1_ON);
  1793. return ret;
  1794. }
  1795. void dcm_dramc_ch1_top1_dramc_dcm(int on)
  1796. {
  1797. if (on) {
  1798. /* TINFO = "Turn ON DCM 'dramc_ch1_top1_dramc_dcm'" */
  1799. reg_write(DRAMC_CH1_TOP1_DRAMC_PD_CTRL,
  1800. (reg_read(DRAMC_CH1_TOP1_DRAMC_PD_CTRL) &
  1801. ~DRAMC_CH1_TOP1_DRAMC_DCM_REG0_MASK) |
  1802. DRAMC_CH1_TOP1_DRAMC_DCM_REG0_ON);
  1803. reg_write(DRAMC_CH1_TOP1_CLKAR,
  1804. (reg_read(DRAMC_CH1_TOP1_CLKAR) &
  1805. ~DRAMC_CH1_TOP1_DRAMC_DCM_REG1_MASK) |
  1806. DRAMC_CH1_TOP1_DRAMC_DCM_REG1_ON);
  1807. } else {
  1808. /* TINFO = "Turn OFF DCM 'dramc_ch1_top1_dramc_dcm'" */
  1809. reg_write(DRAMC_CH1_TOP1_DRAMC_PD_CTRL,
  1810. (reg_read(DRAMC_CH1_TOP1_DRAMC_PD_CTRL) &
  1811. ~DRAMC_CH1_TOP1_DRAMC_DCM_REG0_MASK) |
  1812. DRAMC_CH1_TOP1_DRAMC_DCM_REG0_OFF);
  1813. reg_write(DRAMC_CH1_TOP1_CLKAR,
  1814. (reg_read(DRAMC_CH1_TOP1_CLKAR) &
  1815. ~DRAMC_CH1_TOP1_DRAMC_DCM_REG1_MASK) |
  1816. DRAMC_CH1_TOP1_DRAMC_DCM_REG1_OFF);
  1817. }
  1818. }
  1819. #define CHN1_EMI_DCM_EMI_GROUP_REG0_MASK ((0xff << 24))
  1820. #define CHN1_EMI_DCM_EMI_GROUP_REG0_ON ((0x0 << 24))
  1821. #define CHN1_EMI_DCM_EMI_GROUP_REG0_OFF ((0xff << 24))
  1822. bool dcm_chn1_emi_dcm_emi_group_is_on(void)
  1823. {
  1824. bool ret = true;
  1825. ret &= ((reg_read(CHN1_EMI_CHN_EMI_CONB) &
  1826. CHN1_EMI_DCM_EMI_GROUP_REG0_MASK) ==
  1827. (unsigned int) CHN1_EMI_DCM_EMI_GROUP_REG0_ON);
  1828. return ret;
  1829. }
  1830. void dcm_chn1_emi_dcm_emi_group(int on)
  1831. {
  1832. if (on) {
  1833. /* TINFO = "Turn ON DCM 'chn1_emi_dcm_emi_group'" */
  1834. reg_write(CHN1_EMI_CHN_EMI_CONB,
  1835. (reg_read(CHN1_EMI_CHN_EMI_CONB) &
  1836. ~CHN1_EMI_DCM_EMI_GROUP_REG0_MASK) |
  1837. CHN1_EMI_DCM_EMI_GROUP_REG0_ON);
  1838. } else {
  1839. /* TINFO = "Turn OFF DCM 'chn1_emi_dcm_emi_group'" */
  1840. reg_write(CHN1_EMI_CHN_EMI_CONB,
  1841. (reg_read(CHN1_EMI_CHN_EMI_CONB) &
  1842. ~CHN1_EMI_DCM_EMI_GROUP_REG0_MASK) |
  1843. CHN1_EMI_DCM_EMI_GROUP_REG0_OFF);
  1844. }
  1845. }
  1846. #define MP0_CPUCFG_MP0_RGU_DCM_REG0_MASK ((0x1 << 0))
  1847. #define MP0_CPUCFG_MP0_RGU_DCM_REG0_ON ((0x1 << 0))
  1848. #define MP0_CPUCFG_MP0_RGU_DCM_REG0_OFF ((0x0 << 0))
  1849. bool dcm_mp0_cpucfg_mp0_rgu_dcm_is_on(void)
  1850. {
  1851. bool ret = true;
  1852. ret &= ((reg_read(CPUSYS_RGU_SYNC_DCM) &
  1853. MP0_CPUCFG_MP0_RGU_DCM_REG0_MASK) ==
  1854. (unsigned int) MP0_CPUCFG_MP0_RGU_DCM_REG0_ON);
  1855. return ret;
  1856. }
  1857. void dcm_mp0_cpucfg_mp0_rgu_dcm(int on)
  1858. {
  1859. if (on) {
  1860. /* TINFO = "Turn ON DCM 'mp0_cpucfg_mp0_rgu_dcm'" */
  1861. reg_write(CPUSYS_RGU_SYNC_DCM,
  1862. (reg_read(CPUSYS_RGU_SYNC_DCM) &
  1863. ~MP0_CPUCFG_MP0_RGU_DCM_REG0_MASK) |
  1864. MP0_CPUCFG_MP0_RGU_DCM_REG0_ON);
  1865. } else {
  1866. /* TINFO = "Turn OFF DCM 'mp0_cpucfg_mp0_rgu_dcm'" */
  1867. reg_write(CPUSYS_RGU_SYNC_DCM,
  1868. (reg_read(CPUSYS_RGU_SYNC_DCM) &
  1869. ~MP0_CPUCFG_MP0_RGU_DCM_REG0_MASK) |
  1870. MP0_CPUCFG_MP0_RGU_DCM_REG0_OFF);
  1871. }
  1872. }
  1873. #define MCU_MISCCFG_ADB400_DCM_REG0_MASK ((0x1 << 0) | \
  1874. (0x1 << 1) | \
  1875. (0x1 << 2) | \
  1876. (0x1 << 3) | \
  1877. (0x1 << 4) | \
  1878. (0x1 << 5) | \
  1879. (0x1 << 6) | \
  1880. (0x1 << 11))
  1881. #define MCU_MISCCFG_ADB400_DCM_REG0_ON ((0x1 << 0) | \
  1882. (0x1 << 1) | \
  1883. (0x1 << 2) | \
  1884. (0x0 << 3) | \
  1885. (0x0 << 4) | \
  1886. (0x0 << 5) | \
  1887. (0x0 << 6) | \
  1888. (0x1 << 11))
  1889. #define MCU_MISCCFG_ADB400_DCM_REG0_OFF ((0x0 << 0) | \
  1890. (0x0 << 1) | \
  1891. (0x0 << 2) | \
  1892. (0x0 << 3) | \
  1893. (0x0 << 4) | \
  1894. (0x0 << 5) | \
  1895. (0x0 << 6) | \
  1896. (0x0 << 11))
  1897. bool dcm_mcu_misccfg_adb400_dcm_is_on(void)
  1898. {
  1899. bool ret = true;
  1900. ret &= ((reg_read(CCI_ADB400_DCM_CONFIG) &
  1901. MCU_MISCCFG_ADB400_DCM_REG0_MASK) ==
  1902. (unsigned int) MCU_MISCCFG_ADB400_DCM_REG0_ON);
  1903. return ret;
  1904. }
  1905. void dcm_mcu_misccfg_adb400_dcm(int on)
  1906. {
  1907. if (on) {
  1908. /* TINFO = "Turn ON DCM 'mcu_misccfg_adb400_dcm'" */
  1909. reg_write(CCI_ADB400_DCM_CONFIG,
  1910. (reg_read(CCI_ADB400_DCM_CONFIG) &
  1911. ~MCU_MISCCFG_ADB400_DCM_REG0_MASK) |
  1912. MCU_MISCCFG_ADB400_DCM_REG0_ON);
  1913. } else {
  1914. /* TINFO = "Turn OFF DCM 'mcu_misccfg_adb400_dcm'" */
  1915. reg_write(CCI_ADB400_DCM_CONFIG,
  1916. (reg_read(CCI_ADB400_DCM_CONFIG) &
  1917. ~MCU_MISCCFG_ADB400_DCM_REG0_MASK) |
  1918. MCU_MISCCFG_ADB400_DCM_REG0_OFF);
  1919. }
  1920. }
  1921. #define MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_MASK ((0x1 << 11) | \
  1922. (0x1 << 24) | \
  1923. (0x1 << 25))
  1924. #define MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_ON ((0x1 << 11) | \
  1925. (0x1 << 24) | \
  1926. (0x1 << 25))
  1927. #define MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_OFF ((0x0 << 11) | \
  1928. (0x0 << 24) | \
  1929. (0x0 << 25))
  1930. bool dcm_mcu_misccfg_bus_arm_pll_divider_dcm_is_on(void)
  1931. {
  1932. bool ret = true;
  1933. ret &= ((reg_read(BUS_PLL_DIVIDER_CFG) &
  1934. MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_MASK) ==
  1935. (unsigned int) MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_ON);
  1936. return ret;
  1937. }
  1938. void dcm_mcu_misccfg_bus_arm_pll_divider_dcm(int on)
  1939. {
  1940. if (on) {
  1941. /* TINFO = "Turn ON DCM 'mcu_misccfg_bus_arm_pll_divider_dcm'" */
  1942. reg_write(BUS_PLL_DIVIDER_CFG,
  1943. (reg_read(BUS_PLL_DIVIDER_CFG) &
  1944. ~MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_MASK) |
  1945. MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_ON);
  1946. } else {
  1947. /* TINFO = "Turn OFF DCM 'mcu_misccfg_bus_arm_pll_divider_dcm'" */
  1948. reg_write(BUS_PLL_DIVIDER_CFG,
  1949. (reg_read(BUS_PLL_DIVIDER_CFG) &
  1950. ~MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_MASK) |
  1951. MCU_MISCCFG_BUS_ARM_PLL_DIVIDER_DCM_REG0_OFF);
  1952. }
  1953. }
  1954. #define MCU_MISCCFG_BUS_SYNC_DCM_REG0_MASK ((0x1 << 0) | \
  1955. (0x1 << 1) | \
  1956. (0x7f << 2))
  1957. #define MCU_MISCCFG_BUS_SYNC_DCM_REG0_ON ((0x1 << 0) | \
  1958. (0x1 << 1) | \
  1959. (0x0 << 2))
  1960. #define MCU_MISCCFG_BUS_SYNC_DCM_REG0_OFF ((0x0 << 0) | \
  1961. (0x1 << 1) | \
  1962. (0x0 << 2))
  1963. bool dcm_mcu_misccfg_bus_sync_dcm_is_on(void)
  1964. {
  1965. bool ret = true;
  1966. ret &= ((reg_read(SYNC_DCM_CONFIG) &
  1967. MCU_MISCCFG_BUS_SYNC_DCM_REG0_MASK) ==
  1968. (unsigned int) MCU_MISCCFG_BUS_SYNC_DCM_REG0_ON);
  1969. return ret;
  1970. }
  1971. void dcm_mcu_misccfg_bus_sync_dcm(int on)
  1972. {
  1973. if (on) {
  1974. /* TINFO = "Turn ON DCM 'mcu_misccfg_bus_sync_dcm'" */
  1975. reg_write(SYNC_DCM_CONFIG,
  1976. (reg_read(SYNC_DCM_CONFIG) &
  1977. ~MCU_MISCCFG_BUS_SYNC_DCM_REG0_MASK) |
  1978. MCU_MISCCFG_BUS_SYNC_DCM_REG0_ON);
  1979. } else {
  1980. /* TINFO = "Turn OFF DCM 'mcu_misccfg_bus_sync_dcm'" */
  1981. reg_write(SYNC_DCM_CONFIG,
  1982. (reg_read(SYNC_DCM_CONFIG) &
  1983. ~MCU_MISCCFG_BUS_SYNC_DCM_REG0_MASK) |
  1984. MCU_MISCCFG_BUS_SYNC_DCM_REG0_OFF);
  1985. }
  1986. }
  1987. #define MCU_MISCCFG_BUS_CLOCK_DCM_REG0_MASK ((0x1 << 8))
  1988. #define MCU_MISCCFG_BUS_CLOCK_DCM_REG0_ON ((0x1 << 8))
  1989. #define MCU_MISCCFG_BUS_CLOCK_DCM_REG0_OFF ((0x0 << 8))
  1990. bool dcm_mcu_misccfg_bus_clock_dcm_is_on(void)
  1991. {
  1992. bool ret = true;
  1993. ret &= ((reg_read(CCI_CLK_CTRL) &
  1994. MCU_MISCCFG_BUS_CLOCK_DCM_REG0_MASK) ==
  1995. (unsigned int) MCU_MISCCFG_BUS_CLOCK_DCM_REG0_ON);
  1996. return ret;
  1997. }
  1998. void dcm_mcu_misccfg_bus_clock_dcm(int on)
  1999. {
  2000. if (on) {
  2001. /* TINFO = "Turn ON DCM 'mcu_misccfg_bus_clock_dcm'" */
  2002. reg_write(CCI_CLK_CTRL,
  2003. (reg_read(CCI_CLK_CTRL) &
  2004. ~MCU_MISCCFG_BUS_CLOCK_DCM_REG0_MASK) |
  2005. MCU_MISCCFG_BUS_CLOCK_DCM_REG0_ON);
  2006. } else {
  2007. /* TINFO = "Turn OFF DCM 'mcu_misccfg_bus_clock_dcm'" */
  2008. reg_write(CCI_CLK_CTRL,
  2009. (reg_read(CCI_CLK_CTRL) &
  2010. ~MCU_MISCCFG_BUS_CLOCK_DCM_REG0_MASK) |
  2011. MCU_MISCCFG_BUS_CLOCK_DCM_REG0_OFF);
  2012. }
  2013. }
  2014. #define MCU_MISCCFG_BUS_FABRIC_DCM_REG0_MASK ((0x1 << 0) | \
  2015. (0x1 << 1) | \
  2016. (0x1 << 2) | \
  2017. (0x1 << 3) | \
  2018. (0x1 << 4) | \
  2019. (0x1 << 5) | \
  2020. (0x1 << 6) | \
  2021. (0x1 << 7) | \
  2022. (0x1 << 8) | \
  2023. (0x1 << 9) | \
  2024. (0x1 << 10) | \
  2025. (0x1 << 11) | \
  2026. (0x1 << 12) | \
  2027. (0x1 << 16) | \
  2028. (0x1 << 17) | \
  2029. (0x1 << 18) | \
  2030. (0x1 << 19) | \
  2031. (0x1 << 20) | \
  2032. (0x1 << 21) | \
  2033. (0x1 << 22) | \
  2034. (0x1 << 23) | \
  2035. (0x1 << 24) | \
  2036. (0x1 << 25) | \
  2037. (0x1 << 26) | \
  2038. (0x1 << 27) | \
  2039. (0x1 << 28) | \
  2040. (0x1 << 29))
  2041. #define MCU_MISCCFG_BUS_FABRIC_DCM_REG0_ON ((0x1 << 0) | \
  2042. (0x1 << 1) | \
  2043. (0x1 << 2) | \
  2044. (0x1 << 3) | \
  2045. (0x0 << 4) | \
  2046. (0x0 << 5) | \
  2047. (0x1 << 6) | \
  2048. (0x1 << 7) | \
  2049. (0x1 << 8) | \
  2050. (0x1 << 9) | \
  2051. (0x1 << 10) | \
  2052. (0x1 << 11) | \
  2053. (0x1 << 12) | \
  2054. (0x1 << 16) | \
  2055. (0x0 << 17) | \
  2056. (0x1 << 18) | \
  2057. (0x1 << 19) | \
  2058. (0x1 << 20) | \
  2059. (0x1 << 21) | \
  2060. (0x1 << 22) | \
  2061. (0x1 << 23) | \
  2062. (0x1 << 24) | \
  2063. (0x1 << 25) | \
  2064. (0x1 << 26) | \
  2065. (0x1 << 27) | \
  2066. (0x1 << 28) | \
  2067. (0x1 << 29))
  2068. #define MCU_MISCCFG_BUS_FABRIC_DCM_REG0_OFF ((0x0 << 0) | \
  2069. (0x0 << 1) | \
  2070. (0x0 << 2) | \
  2071. (0x0 << 3) | \
  2072. (0x0 << 4) | \
  2073. (0x0 << 5) | \
  2074. (0x0 << 6) | \
  2075. (0x0 << 7) | \
  2076. (0x0 << 8) | \
  2077. (0x0 << 9) | \
  2078. (0x0 << 10) | \
  2079. (0x0 << 11) | \
  2080. (0x0 << 12) | \
  2081. (0x0 << 16) | \
  2082. (0x0 << 17) | \
  2083. (0x0 << 18) | \
  2084. (0x0 << 19) | \
  2085. (0x0 << 20) | \
  2086. (0x0 << 21) | \
  2087. (0x0 << 22) | \
  2088. (0x0 << 23) | \
  2089. (0x0 << 24) | \
  2090. (0x0 << 25) | \
  2091. (0x0 << 26) | \
  2092. (0x0 << 27) | \
  2093. (0x0 << 28) | \
  2094. (0x0 << 29))
  2095. bool dcm_mcu_misccfg_bus_fabric_dcm_is_on(void)
  2096. {
  2097. bool ret = true;
  2098. ret &= ((reg_read(BUS_FABRIC_DCM_CTRL) &
  2099. MCU_MISCCFG_BUS_FABRIC_DCM_REG0_MASK) ==
  2100. (unsigned int) MCU_MISCCFG_BUS_FABRIC_DCM_REG0_ON);
  2101. return ret;
  2102. }
  2103. void dcm_mcu_misccfg_bus_fabric_dcm(int on)
  2104. {
  2105. if (on) {
  2106. /* TINFO = "Turn ON DCM 'mcu_misccfg_bus_fabric_dcm'" */
  2107. reg_write(BUS_FABRIC_DCM_CTRL,
  2108. (reg_read(BUS_FABRIC_DCM_CTRL) &
  2109. ~MCU_MISCCFG_BUS_FABRIC_DCM_REG0_MASK) |
  2110. MCU_MISCCFG_BUS_FABRIC_DCM_REG0_ON);
  2111. } else {
  2112. /* TINFO = "Turn OFF DCM 'mcu_misccfg_bus_fabric_dcm'" */
  2113. reg_write(BUS_FABRIC_DCM_CTRL,
  2114. (reg_read(BUS_FABRIC_DCM_CTRL) &
  2115. ~MCU_MISCCFG_BUS_FABRIC_DCM_REG0_MASK) |
  2116. MCU_MISCCFG_BUS_FABRIC_DCM_REG0_OFF);
  2117. }
  2118. }
  2119. #define MCU_MISCCFG_GIC_SYNC_DCM_REG0_MASK ((0x1 << 0) | \
  2120. (0x1 << 1))
  2121. #define MCU_MISCCFG_GIC_SYNC_DCM_REG0_ON ((0x1 << 0) | \
  2122. (0x1 << 1))
  2123. #define MCU_MISCCFG_GIC_SYNC_DCM_REG0_OFF ((0x0 << 0) | \
  2124. (0x0 << 1))
  2125. bool dcm_mcu_misccfg_gic_sync_dcm_is_on(void)
  2126. {
  2127. bool ret = true;
  2128. ret &= ((reg_read(MP_GIC_RGU_SYNC_DCM) &
  2129. MCU_MISCCFG_GIC_SYNC_DCM_REG0_MASK) ==
  2130. (unsigned int) MCU_MISCCFG_GIC_SYNC_DCM_REG0_ON);
  2131. return ret;
  2132. }
  2133. void dcm_mcu_misccfg_gic_sync_dcm(int on)
  2134. {
  2135. if (on) {
  2136. /* TINFO = "Turn ON DCM 'mcu_misccfg_gic_sync_dcm'" */
  2137. reg_write(MP_GIC_RGU_SYNC_DCM,
  2138. (reg_read(MP_GIC_RGU_SYNC_DCM) &
  2139. ~MCU_MISCCFG_GIC_SYNC_DCM_REG0_MASK) |
  2140. MCU_MISCCFG_GIC_SYNC_DCM_REG0_ON);
  2141. } else {
  2142. /* TINFO = "Turn OFF DCM 'mcu_misccfg_gic_sync_dcm'" */
  2143. reg_write(MP_GIC_RGU_SYNC_DCM,
  2144. (reg_read(MP_GIC_RGU_SYNC_DCM) &
  2145. ~MCU_MISCCFG_GIC_SYNC_DCM_REG0_MASK) |
  2146. MCU_MISCCFG_GIC_SYNC_DCM_REG0_OFF);
  2147. }
  2148. }
  2149. #define MCU_MISCCFG_L2_SHARED_DCM_REG0_MASK ((0x1 << 0))
  2150. #define MCU_MISCCFG_L2_SHARED_DCM_REG0_ON ((0x1 << 0))
  2151. #define MCU_MISCCFG_L2_SHARED_DCM_REG0_OFF ((0x0 << 0))
  2152. bool dcm_mcu_misccfg_l2_shared_dcm_is_on(void)
  2153. {
  2154. bool ret = true;
  2155. ret &= ((reg_read(L2C_SRAM_CTRL) &
  2156. MCU_MISCCFG_L2_SHARED_DCM_REG0_MASK) ==
  2157. (unsigned int) MCU_MISCCFG_L2_SHARED_DCM_REG0_ON);
  2158. return ret;
  2159. }
  2160. void dcm_mcu_misccfg_l2_shared_dcm(int on)
  2161. {
  2162. if (on) {
  2163. /* TINFO = "Turn ON DCM 'mcu_misccfg_l2_shared_dcm'" */
  2164. reg_write(L2C_SRAM_CTRL,
  2165. (reg_read(L2C_SRAM_CTRL) &
  2166. ~MCU_MISCCFG_L2_SHARED_DCM_REG0_MASK) |
  2167. MCU_MISCCFG_L2_SHARED_DCM_REG0_ON);
  2168. } else {
  2169. /* TINFO = "Turn OFF DCM 'mcu_misccfg_l2_shared_dcm'" */
  2170. reg_write(L2C_SRAM_CTRL,
  2171. (reg_read(L2C_SRAM_CTRL) &
  2172. ~MCU_MISCCFG_L2_SHARED_DCM_REG0_MASK) |
  2173. MCU_MISCCFG_L2_SHARED_DCM_REG0_OFF);
  2174. }
  2175. }
  2176. #define MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_MASK ((0x1 << 11) | \
  2177. (0x1 << 24) | \
  2178. (0x1 << 25) | \
  2179. (0x1 << 31))
  2180. #define MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_ON ((0x1 << 11) | \
  2181. (0x1 << 24) | \
  2182. (0x1 << 25) | \
  2183. (0x1 << 31))
  2184. #define MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_OFF ((0x0 << 11) | \
  2185. (0x0 << 24) | \
  2186. (0x0 << 25) | \
  2187. (0x0 << 31))
  2188. bool dcm_mcu_misccfg_mp0_arm_pll_divider_dcm_is_on(void)
  2189. {
  2190. bool ret = true;
  2191. ret &= ((reg_read(MP0_PLL_DIVIDER_CFG) &
  2192. MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_MASK) ==
  2193. (unsigned int) MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_ON);
  2194. return ret;
  2195. }
  2196. void dcm_mcu_misccfg_mp0_arm_pll_divider_dcm(int on)
  2197. {
  2198. if (on) {
  2199. /* TINFO = "Turn ON DCM 'mcu_misccfg_mp0_arm_pll_divider_dcm'" */
  2200. reg_write(MP0_PLL_DIVIDER_CFG,
  2201. (reg_read(MP0_PLL_DIVIDER_CFG) &
  2202. ~MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_MASK) |
  2203. MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_ON);
  2204. } else {
  2205. /* TINFO = "Turn OFF DCM 'mcu_misccfg_mp0_arm_pll_divider_dcm'" */
  2206. reg_write(MP0_PLL_DIVIDER_CFG,
  2207. (reg_read(MP0_PLL_DIVIDER_CFG) &
  2208. ~MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_MASK) |
  2209. MCU_MISCCFG_MP0_ARM_PLL_DIVIDER_DCM_REG0_OFF);
  2210. }
  2211. }
  2212. #define MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_MASK ((0x1 << 10) | \
  2213. (0x1 << 11) | \
  2214. (0x7f << 12))
  2215. #define MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_ON ((0x1 << 10) | \
  2216. (0x1 << 11) | \
  2217. (0x0 << 12))
  2218. #define MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_OFF ((0x0 << 10) | \
  2219. (0x1 << 11) | \
  2220. (0x0 << 12))
  2221. bool dcm_mcu_misccfg_mp0_sync_dcm_enable_is_on(void)
  2222. {
  2223. bool ret = true;
  2224. ret &= ((reg_read(SYNC_DCM_CONFIG) &
  2225. MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_MASK) ==
  2226. (unsigned int) MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_ON);
  2227. return ret;
  2228. }
  2229. void dcm_mcu_misccfg_mp0_sync_dcm_enable(int on)
  2230. {
  2231. if (on) {
  2232. /* TINFO = "Turn ON DCM 'mcu_misccfg_mp0_sync_dcm_enable'" */
  2233. reg_write(SYNC_DCM_CONFIG,
  2234. (reg_read(SYNC_DCM_CONFIG) &
  2235. ~MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_MASK) |
  2236. MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_ON);
  2237. } else {
  2238. /* TINFO = "Turn OFF DCM 'mcu_misccfg_mp0_sync_dcm_enable'" */
  2239. reg_write(SYNC_DCM_CONFIG,
  2240. (reg_read(SYNC_DCM_CONFIG) &
  2241. ~MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_MASK) |
  2242. MCU_MISCCFG_MP0_SYNC_DCM_ENABLE_REG0_OFF);
  2243. }
  2244. }
  2245. #define MCU_MISCCFG_MP0_STALL_DCM_REG0_MASK ((0x1 << 7))
  2246. #define MCU_MISCCFG_MP0_STALL_DCM_REG0_ON ((0x1 << 7))
  2247. #define MCU_MISCCFG_MP0_STALL_DCM_REG0_OFF ((0x0 << 7))
  2248. bool dcm_mcu_misccfg_mp0_stall_dcm_is_on(void)
  2249. {
  2250. bool ret = true;
  2251. ret &= ((reg_read(SYNC_DCM_CLUSTER_CONFIG) &
  2252. MCU_MISCCFG_MP0_STALL_DCM_REG0_MASK) ==
  2253. (unsigned int) MCU_MISCCFG_MP0_STALL_DCM_REG0_ON);
  2254. return ret;
  2255. }
  2256. void dcm_mcu_misccfg_mp0_stall_dcm(int on)
  2257. {
  2258. if (on) {
  2259. /* TINFO = "Turn ON DCM 'mcu_misccfg_mp0_stall_dcm'" */
  2260. reg_write(SYNC_DCM_CLUSTER_CONFIG,
  2261. (reg_read(SYNC_DCM_CLUSTER_CONFIG) &
  2262. ~MCU_MISCCFG_MP0_STALL_DCM_REG0_MASK) |
  2263. MCU_MISCCFG_MP0_STALL_DCM_REG0_ON);
  2264. } else {
  2265. /* TINFO = "Turn OFF DCM 'mcu_misccfg_mp0_stall_dcm'" */
  2266. reg_write(SYNC_DCM_CLUSTER_CONFIG,
  2267. (reg_read(SYNC_DCM_CLUSTER_CONFIG) &
  2268. ~MCU_MISCCFG_MP0_STALL_DCM_REG0_MASK) |
  2269. MCU_MISCCFG_MP0_STALL_DCM_REG0_OFF);
  2270. }
  2271. }
  2272. #define MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_MASK ((0x1 << 11) | \
  2273. (0x1 << 24) | \
  2274. (0x1 << 25) | \
  2275. (0x1 << 31))
  2276. #define MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_ON ((0x1 << 11) | \
  2277. (0x1 << 24) | \
  2278. (0x1 << 25) | \
  2279. (0x1 << 31))
  2280. #define MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_OFF ((0x0 << 11) | \
  2281. (0x0 << 24) | \
  2282. (0x0 << 25) | \
  2283. (0x0 << 31))
  2284. bool dcm_mcu_misccfg_mp2_arm_pll_divider_dcm_is_on(void)
  2285. {
  2286. bool ret = true;
  2287. ret &= ((reg_read(MP2_PLL_DIVIDER_CFG) &
  2288. MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_MASK) ==
  2289. (unsigned int) MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_ON);
  2290. return ret;
  2291. }
  2292. void dcm_mcu_misccfg_mp2_arm_pll_divider_dcm(int on)
  2293. {
  2294. if (on) {
  2295. /* TINFO = "Turn ON DCM 'mcu_misccfg_mp2_arm_pll_divider_dcm'" */
  2296. reg_write(MP2_PLL_DIVIDER_CFG,
  2297. (reg_read(MP2_PLL_DIVIDER_CFG) &
  2298. ~MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_MASK) |
  2299. MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_ON);
  2300. } else {
  2301. /* TINFO = "Turn OFF DCM 'mcu_misccfg_mp2_arm_pll_divider_dcm'" */
  2302. reg_write(MP2_PLL_DIVIDER_CFG,
  2303. (reg_read(MP2_PLL_DIVIDER_CFG) &
  2304. ~MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_MASK) |
  2305. MCU_MISCCFG_MP2_ARM_PLL_DIVIDER_DCM_REG0_OFF);
  2306. }
  2307. }
  2308. #define MCU_MISCCFG_MP_STALL_DCM_REG0_MASK ((0xf << 24))
  2309. #define MCU_MISCCFG_MP_STALL_DCM_REG0_ON ((0x5 << 24))
  2310. #define MCU_MISCCFG_MP_STALL_DCM_REG0_OFF ((0xf << 24))
  2311. bool dcm_mcu_misccfg_mp_stall_dcm_is_on(void)
  2312. {
  2313. bool ret = true;
  2314. ret &= ((reg_read(SYNC_DCM_CLUSTER_CONFIG) &
  2315. MCU_MISCCFG_MP_STALL_DCM_REG0_MASK) ==
  2316. (unsigned int) MCU_MISCCFG_MP_STALL_DCM_REG0_ON);
  2317. return ret;
  2318. }
  2319. void dcm_mcu_misccfg_mp_stall_dcm(int on)
  2320. {
  2321. if (on) {
  2322. /* TINFO = "Turn ON DCM 'mcu_misccfg_mp_stall_dcm'" */
  2323. reg_write(SYNC_DCM_CLUSTER_CONFIG,
  2324. (reg_read(SYNC_DCM_CLUSTER_CONFIG) &
  2325. ~MCU_MISCCFG_MP_STALL_DCM_REG0_MASK) |
  2326. MCU_MISCCFG_MP_STALL_DCM_REG0_ON);
  2327. } else {
  2328. /* TINFO = "Turn OFF DCM 'mcu_misccfg_mp_stall_dcm'" */
  2329. reg_write(SYNC_DCM_CLUSTER_CONFIG,
  2330. (reg_read(SYNC_DCM_CLUSTER_CONFIG) &
  2331. ~MCU_MISCCFG_MP_STALL_DCM_REG0_MASK) |
  2332. MCU_MISCCFG_MP_STALL_DCM_REG0_OFF);
  2333. }
  2334. }
  2335. #define MCU_MISCCFG_MCU_MISC_DCM_REG0_MASK ((0x1 << 0) | \
  2336. (0x1 << 8))
  2337. #define MCU_MISCCFG_MCU_MISC_DCM_REG0_ON ((0x1 << 0) | \
  2338. (0x1 << 8))
  2339. #define MCU_MISCCFG_MCU_MISC_DCM_REG0_OFF ((0x0 << 0) | \
  2340. (0x0 << 8))
  2341. bool dcm_mcu_misccfg_mcu_misc_dcm_is_on(void)
  2342. {
  2343. bool ret = true;
  2344. ret &= ((reg_read(MCU_MISC_DCM_CTRL) &
  2345. MCU_MISCCFG_MCU_MISC_DCM_REG0_MASK) ==
  2346. (unsigned int) MCU_MISCCFG_MCU_MISC_DCM_REG0_ON);
  2347. return ret;
  2348. }
  2349. void dcm_mcu_misccfg_mcu_misc_dcm(int on)
  2350. {
  2351. if (on) {
  2352. /* TINFO = "Turn ON DCM 'mcu_misccfg_mcu_misc_dcm'" */
  2353. reg_write(MCU_MISC_DCM_CTRL,
  2354. (reg_read(MCU_MISC_DCM_CTRL) &
  2355. ~MCU_MISCCFG_MCU_MISC_DCM_REG0_MASK) |
  2356. MCU_MISCCFG_MCU_MISC_DCM_REG0_ON);
  2357. } else {
  2358. /* TINFO = "Turn OFF DCM 'mcu_misccfg_mcu_misc_dcm'" */
  2359. reg_write(MCU_MISC_DCM_CTRL,
  2360. (reg_read(MCU_MISC_DCM_CTRL) &
  2361. ~MCU_MISCCFG_MCU_MISC_DCM_REG0_MASK) |
  2362. MCU_MISCCFG_MCU_MISC_DCM_REG0_OFF);
  2363. }
  2364. }
  2365. #define MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_MASK (0xffff << 0)
  2366. #define MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_ON (0xffff << 0)
  2367. #define MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_OFF (0x0 << 0)
  2368. #define MCU_MISC1CFG_MCSIB_DCM_REG0_MASK (0xffff << 16)
  2369. #define MCU_MISC1CFG_MCSIB_DCM_REG0_ON (0xffff << 16)
  2370. #define MCU_MISC1CFG_MCSIB_DCM_REG0_OFF (0x0 << 16)
  2371. void dcm_mcu_misc1cfg_mcsib_dcm_preset(int on)
  2372. {
  2373. if (on) {
  2374. /* TINFO = "Turn ON IDLE STATE 'mcu_misc1cfg_mcsib_dcm'" */
  2375. reg_write(MCSIB_DCM_EN,
  2376. (reg_read(MCSIB_DCM_EN) &
  2377. ~MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_MASK) |
  2378. MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_ON);
  2379. } else {
  2380. /* TINFO = "Turn OFF IDLE STATE 'mcu_misc1cfg_mcsib_dcm'" */
  2381. reg_write(MCSIB_DCM_EN,
  2382. (reg_read(MCSIB_DCM_EN) &
  2383. ~MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_MASK) |
  2384. MCU_MISC1CFG_MCSIB_DCM_PRESET_REG0_OFF);
  2385. }
  2386. }
  2387. bool dcm_mcu_misc1cfg_mcsib_dcm_is_on(void)
  2388. {
  2389. bool ret = true;
  2390. ret &= ((reg_read(MCSIB_DCM_EN) &
  2391. MCU_MISC1CFG_MCSIB_DCM_REG0_MASK) ==
  2392. (unsigned int) MCU_MISC1CFG_MCSIB_DCM_REG0_ON);
  2393. return ret;
  2394. }
  2395. void dcm_mcu_misc1cfg_mcsib_dcm(int on)
  2396. {
  2397. if (on) {
  2398. /* TINFO = "Turn ON DCM 'mcu_misc1cfg_mcsib_dcm'" */
  2399. reg_write(MCSIB_DCM_EN,
  2400. (reg_read(MCSIB_DCM_EN) &
  2401. ~MCU_MISC1CFG_MCSIB_DCM_REG0_MASK) |
  2402. MCU_MISC1CFG_MCSIB_DCM_REG0_ON);
  2403. } else {
  2404. /* TINFO = "Turn OFF DCM 'mcu_misc1cfg_mcsib_dcm'" */
  2405. reg_write(MCSIB_DCM_EN,
  2406. (reg_read(MCSIB_DCM_EN) &
  2407. ~MCU_MISC1CFG_MCSIB_DCM_REG0_MASK) |
  2408. MCU_MISC1CFG_MCSIB_DCM_REG0_OFF);
  2409. }
  2410. }
  2411. #define MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_MASK ((0x1 << 0))
  2412. #define MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_ON ((0x1 << 0))
  2413. #define MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_OFF ((0x0 << 0))
  2414. bool dcm_mp2_ca15m_config_sync_dcm_cfg_is_on(void)
  2415. {
  2416. bool ret = true;
  2417. ret &= ((reg_read(MP2_CA15M_SYNC_DCM) &
  2418. MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_MASK) ==
  2419. (unsigned int) MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_ON);
  2420. return ret;
  2421. }
  2422. void dcm_mp2_ca15m_config_sync_dcm_cfg(int on)
  2423. {
  2424. if (on) {
  2425. /* TINFO = "Turn ON DCM 'mp2_ca15m_config_sync_dcm_cfg'" */
  2426. reg_write(MP2_CA15M_SYNC_DCM,
  2427. (reg_read(MP2_CA15M_SYNC_DCM) &
  2428. ~MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_MASK) |
  2429. MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_ON);
  2430. } else {
  2431. /* TINFO = "Turn OFF DCM 'mp2_ca15m_config_sync_dcm_cfg'" */
  2432. reg_write(MP2_CA15M_SYNC_DCM,
  2433. (reg_read(MP2_CA15M_SYNC_DCM) &
  2434. ~MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_MASK) |
  2435. MP2_CA15M_CONFIG_SYNC_DCM_CFG_REG0_OFF);
  2436. }
  2437. }