mtk_dcm_autogen.c 73 KB

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