am437x.cfg 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. source [find target/icepick.cfg]
  2. source [find mem_helper.tcl]
  3. ###############################################################################
  4. ## AM437x Registers ##
  5. ###############################################################################
  6. set PRCM_BASE_ADDR 0x44df0000
  7. set REVISION_PRM [expr {$PRCM_BASE_ADDR + 0x0000}]
  8. set PRM_IRQSTATUS_MPU [expr {$PRCM_BASE_ADDR + 0x0004}]
  9. set PRM_IRQENABLE_MPU [expr {$PRCM_BASE_ADDR + 0x0008}]
  10. set PRM_IRQSTATUS_M3 [expr {$PRCM_BASE_ADDR + 0x000c}]
  11. set PRM_IRQENABLE_M3 [expr {$PRCM_BASE_ADDR + 0x0010}]
  12. set PM_MPU_PWRSTCTRL [expr {$PRCM_BASE_ADDR + 0x0300}]
  13. set PM_MPU_PWRSTST [expr {$PRCM_BASE_ADDR + 0x0304}]
  14. set RM_MPU_RSTST [expr {$PRCM_BASE_ADDR + 0x0314}]
  15. set RM_MPU_CONTEXT [expr {$PRCM_BASE_ADDR + 0x0324}]
  16. set PM_GFX_PWRSTCTRL [expr {$PRCM_BASE_ADDR + 0x0400}]
  17. set PM_GFX_PWRSTST [expr {$PRCM_BASE_ADDR + 0x0404}]
  18. set RM_GFX_RSTCTRL [expr {$PRCM_BASE_ADDR + 0x0410}]
  19. set RM_GFX_RSTST [expr {$PRCM_BASE_ADDR + 0x0414}]
  20. set RM_GFX_CONTEXT [expr {$PRCM_BASE_ADDR + 0x0424}]
  21. set RM_RTC_CONTEXT [expr {$PRCM_BASE_ADDR + 0x0524}]
  22. set RM_WKUP_RSTCTRL [expr {$PRCM_BASE_ADDR + 0x2010}]
  23. set RM_WKUP_RSTST [expr {$PRCM_BASE_ADDR + 0x2014}]
  24. set CM_L3_AON_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2800}]
  25. set CM_WKUP_DEBUGSS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2820}]
  26. set CM_L3S_TSC_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2900}]
  27. set CM_WKUP_ADC_TSC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2920}]
  28. set CM_L4_WKUP_AON_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2a00}]
  29. set CM_WKUP_L4WKUP_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a20}]
  30. set CM_WKUP_WKUP_M3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a28}]
  31. set CM_WKUP_SYNCTIMER_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a30}]
  32. set CM_WKUP_CLKDIV32K_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a38}]
  33. set CM_WKUP_USBPHY0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a40}]
  34. set CM_WKUP_USBPHY1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a48}]
  35. set CM_WKUP_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2b00}]
  36. set CM_WKUP_TIMER0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b20}]
  37. set CM_WKUP_TIMER1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b28}]
  38. set CM_WKUP_WDT0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b30}]
  39. set CM_WKUP_WDT1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b38}]
  40. set CM_WKUP_I2C0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b40}]
  41. set CM_WKUP_UART0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b48}]
  42. set CM_WKUP_SMARTREFLEX0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b50}]
  43. set CM_WKUP_SMARTREFLEX1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b58}]
  44. set CM_WKUP_CONTROL_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b60}]
  45. set CM_WKUP_GPIO0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b68}]
  46. set CM_CLKMODE_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d20}]
  47. set CM_IDLEST_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d24}]
  48. set CM_CLKSEL_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d2c}]
  49. set CM_DIV_M4_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d38}]
  50. set CM_DIV_M5_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d3c}]
  51. set CM_DIV_M6_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d40}]
  52. set CM_SSC_DELTAMSTEP_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d48}]
  53. set CM_SSC_MODFREQDIV_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d4c}]
  54. set CM_CLKMODE_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d60}]
  55. set CM_IDLEST_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d64}]
  56. set CM_CLKSEL_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d6c}]
  57. set CM_DIV_M2_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d70}]
  58. set CM_SSC_DELTAMSTEP_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d88}]
  59. set CM_SSC_MODFREQDIV_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d8c}]
  60. set CM_CLKMODE_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2da0}]
  61. set CM_IDLEST_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2da4}]
  62. set CM_CLKSEL_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2dac}]
  63. set CM_DIV_M2_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2db0}]
  64. set CM_DIV_M4_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2db8}]
  65. set CM_SSC_DELTAMSTEP_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2dc8}]
  66. set CM_SSC_MODFREQDIV_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2dcc}]
  67. set CM_CLKMODE_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2de0}]
  68. set CM_IDLEST_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2de4}]
  69. set CM_CLKSEL_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2dec}]
  70. set CM_DIV_M2_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2df0}]
  71. set CM_CLKSEL2_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e04}]
  72. set CM_SSC_DELTAMSTEP_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e08}]
  73. set CM_SSC_MODFREQDIV_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e0c}]
  74. set CM_CLKDCOLDO_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e14}]
  75. set CM_CLKMODE_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e20}]
  76. set CM_IDLEST_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e24}]
  77. set CM_CLKSEL_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e2c}]
  78. set CM_DIV_M2_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e30}]
  79. set CM_SSC_DELTAMSTEP_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e48}]
  80. set CM_SSC_MODFREQDIV_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e4c}]
  81. set CM_CLKMODE_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e60}]
  82. set CM_IDLEST_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e64}]
  83. set CM_CLKSEL_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e6c}]
  84. set CM_DIV_M2_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e70}]
  85. set CM_CLKSEL2_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e84}]
  86. set CM_SSC_DELTAMSTEP_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e88}]
  87. set CM_SSC_MODFREQDIV_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e8c}]
  88. set CM_SHADOW_FREQ_CONFIG1 [expr {$PRCM_BASE_ADDR + 0x2fa0}]
  89. set CM_SHADOW_FREQ_CONFIG2 [expr {$PRCM_BASE_ADDR + 0x2fa4}]
  90. set CM_CLKOUT1_CTRL [expr {$PRCM_BASE_ADDR + 0x4100}]
  91. set CM_DLL_CTRL [expr {$PRCM_BASE_ADDR + 0x4104}]
  92. set CM_CLKOUT2_CTRL [expr {$PRCM_BASE_ADDR + 0x4108}]
  93. set CLKSEL_TIMER1MS_CLK [expr {$PRCM_BASE_ADDR + 0x4200}]
  94. set CLKSEL_TIMER2_CLK [expr {$PRCM_BASE_ADDR + 0x4204}]
  95. set CLKSEL_TIMER3_CLK [expr {$PRCM_BASE_ADDR + 0x4208}]
  96. set CLKSEL_TIMER4_CLK [expr {$PRCM_BASE_ADDR + 0x420c}]
  97. set CLKSEL_TIMER5_CLK [expr {$PRCM_BASE_ADDR + 0x4210}]
  98. set CLKSEL_TIMER6_CLK [expr {$PRCM_BASE_ADDR + 0x4214}]
  99. set CLKSEL_TIMER7_CLK [expr {$PRCM_BASE_ADDR + 0x4218}]
  100. set CLKSEL_TIMER8_CLK [expr {$PRCM_BASE_ADDR + 0x421c}]
  101. set CLKSEL_TIMER9_CLK [expr {$PRCM_BASE_ADDR + 0x4220}]
  102. set CLKSEL_TIMER10_CLK [expr {$PRCM_BASE_ADDR + 0x4224}]
  103. set CLKSEL_TIMER11_CLK [expr {$PRCM_BASE_ADDR + 0x4228}]
  104. set CLKSEL_WDT1_CLK [expr {$PRCM_BASE_ADDR + 0x422c}]
  105. set CLKSEL_SYNCTIMER_CLK [expr {$PRCM_BASE_ADDR + 0x4230}]
  106. set CLKSEL_MAC_CLK [expr {$PRCM_BASE_ADDR + 0x4234}]
  107. set CLKSEL_CPTS_RFT_CLK [expr {$PRCM_BASE_ADDR + 0x4238}]
  108. set CLKSEL_GFX_FCLK [expr {$PRCM_BASE_ADDR + 0x423c}]
  109. set CLKSEL_GPIO0_DBCLK [expr {$PRCM_BASE_ADDR + 0x4240}]
  110. set CLKSEL_LCDC_PIXEL_CLK [expr {$PRCM_BASE_ADDR + 0x4244}]
  111. set CLKSEL_ICSS_OCP_CLK [expr {$PRCM_BASE_ADDR + 0x4248}]
  112. set CLKSEL_DLL_AGING_CLK [expr {$PRCM_BASE_ADDR + 0x4250}]
  113. set CLKSEL_USBPHY32KHZ_GCLK [expr {$PRCM_BASE_ADDR + 0x4260}]
  114. set CM_MPU_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8300}]
  115. set CM_MPU_MPU_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8320}]
  116. set CM_GFX_L3_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8400}]
  117. set CM_GFX_GFX_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8420}]
  118. set CM_RTC_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8500}]
  119. set CM_RTC_RTC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8520}]
  120. set CM_PER_L3_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8800}]
  121. set CM_PER_L3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8820}]
  122. set CM_PER_AES0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8828}]
  123. set CM_PER_DES_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8830}]
  124. set CM_PER_CRYPTODMA_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8838}]
  125. set CM_PER_L3_INSTR_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8840}]
  126. set CM_PER_MSTR_EXPS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8848}]
  127. set CM_PER_OCMCRAM_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8850}]
  128. set CM_PER_SHA0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8858}]
  129. set CM_PER_SLV_EXPS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8860}]
  130. set CM_PER_VPFE0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8868}]
  131. set CM_PER_VPFE1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8870}]
  132. set CM_PER_TPCC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8878}]
  133. set CM_PER_TPTC0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8880}]
  134. set CM_PER_TPTC1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8888}]
  135. set CM_PER_TPTC2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8890}]
  136. set CM_PER_DLL_AGING_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8898}]
  137. set CM_PER_L4HS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x88a0}]
  138. set CM_PER_L4FW_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x88a8}]
  139. set CM_PER_L3S_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8a00}]
  140. set CM_PER_GPMC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a20}]
  141. set CM_PER_IEEE5000_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a28}]
  142. set CM_PER_MCASP0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a38}]
  143. set CM_PER_MCASP1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a40}]
  144. set CM_PER_MMC2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a48}]
  145. set CM_PER_QSPI_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a58}]
  146. set CM_PER_USB_OTG_SS0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a60}]
  147. set CM_PER_USB_OTG_SS1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a68}]
  148. set CM_PER_ICSS_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8b00}]
  149. set CM_PER_ICSS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8b20}]
  150. set CM_PER_L4LS_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8c00}]
  151. set CM_PER_L4LS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c20}]
  152. set CM_PER_DCAN0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c28}]
  153. set CM_PER_DCAN1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c30}]
  154. set CM_PER_EPWMSS0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c38}]
  155. set CM_PER_EPWMSS1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c40}]
  156. set CM_PER_EPWMSS2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c48}]
  157. set CM_PER_EPWMSS3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c50}]
  158. set CM_PER_EPWMSS4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c58}]
  159. set CM_PER_EPWMSS5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c60}]
  160. set CM_PER_ELM_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c68}]
  161. set CM_PER_GPIO1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c78}]
  162. set CM_PER_GPIO2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c80}]
  163. set CM_PER_GPIO3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c88}]
  164. set CM_PER_GPIO4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c90}]
  165. set CM_PER_GPIO5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c98}]
  166. set CM_PER_HDQ1W_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ca0}]
  167. set CM_PER_I2C1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ca8}]
  168. set CM_PER_I2C2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cb0}]
  169. set CM_PER_MAILBOX0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cb8}]
  170. set CM_PER_MMC0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cc0}]
  171. set CM_PER_MMC1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cc8}]
  172. set CM_PER_PKA_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cd0}]
  173. set CM_PER_RNG_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ce0}]
  174. set CM_PER_SPARE0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ce8}]
  175. set CM_PER_SPARE1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cf0}]
  176. set CM_PER_SPI0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d00}]
  177. set CM_PER_SPI1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d08}]
  178. set CM_PER_SPI2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d10}]
  179. set CM_PER_SPI3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d18}]
  180. set CM_PER_SPI4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d20}]
  181. set CM_PER_SPINLOCK_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d28}]
  182. set CM_PER_TIMER2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d30}]
  183. set CM_PER_TIMER3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d38}]
  184. set CM_PER_TIMER4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d40}]
  185. set CM_PER_TIMER5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d48}]
  186. set CM_PER_TIMER6_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d50}]
  187. set CM_PER_TIMER7_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d58}]
  188. set CM_PER_TIMER8_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d60}]
  189. set CM_PER_TIMER9_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d68}]
  190. set CM_PER_TIMER10_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d70}]
  191. set CM_PER_TIMER11_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d78}]
  192. set CM_PER_UART1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d80}]
  193. set CM_PER_UART2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d88}]
  194. set CM_PER_UART3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d90}]
  195. set CM_PER_UART4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d98}]
  196. set CM_PER_UART5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8da0}]
  197. set CM_PER_USBPHYOCP2SCP0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8db8}]
  198. set CM_PER_USBPHYOCP2SCP1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8dc0}]
  199. set CM_PER_EMIF_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8f00}]
  200. set CM_PER_EMIF_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f20}]
  201. set CM_PER_DLL_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f28}]
  202. set CM_PER_EMIF_FW_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f30}]
  203. set CM_PER_OTFA_EMIF_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f38}]
  204. set CM_PER_DSS_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x9200}]
  205. set CM_PER_DSS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x9220}]
  206. set CM_PER_CPSW_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x9300}]
  207. set CM_PER_CPGMAC0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x9320}]
  208. set CM_PER_OCPWP_L3_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x9400}]
  209. set CM_PER_OCPWP_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x9420}]
  210. set CONTROL_BASE_ADDR 0x44e10000
  211. set CONTROL_STATUS [expr {$CONTROL_BASE_ADDR + 0x0040}]
  212. set DEVICE_ID [expr {$CONTROL_BASE_ADDR + 0x0600}]
  213. set DEV_FEATURE [expr {$CONTROL_BASE_ADDR + 0x0604}]
  214. set DEV_ATTRIBUTE [expr {$CONTROL_BASE_ADDR + 0x0610}]
  215. set MAC_ID0_LO [expr {$CONTROL_BASE_ADDR + 0x0630}]
  216. set MAC_ID0_HI [expr {$CONTROL_BASE_ADDR + 0x0634}]
  217. set MAC_ID1_LO [expr {$CONTROL_BASE_ADDR + 0x0638}]
  218. set MAC_ID1_HI [expr {$CONTROL_BASE_ADDR + 0x063c}]
  219. set USB_VID_PID [expr {$CONTROL_BASE_ADDR + 0x07f4}]
  220. set CONTROL_CONF_ECAP0_IN_PWM0_OUT [expr {$CONTROL_BASE_ADDR + 0x0964}]
  221. set CONTROL_CONF_SPI4_CS0 [expr {$CONTROL_BASE_ADDR + 0x0a5c}]
  222. set CONTROL_CONF_SPI2_SCLK [expr {$CONTROL_BASE_ADDR + 0x0a60}]
  223. set CONTROL_CONF_SPI2_D0 [expr {$CONTROL_BASE_ADDR + 0x0a64}]
  224. set CONTROL_CONF_XDMA_EVENT_INTR0 [expr {$CONTROL_BASE_ADDR + 0x0a70}]
  225. set CONTROL_CONF_XDMA_EVENT_INTR1 [expr {$CONTROL_BASE_ADDR + 0x0a74}]
  226. set CONTROL_CONF_GPMC_A0 [expr {$CONTROL_BASE_ADDR + 0x0840}]
  227. set DDR_IO_CTRL [expr {$CONTROL_BASE_ADDR + 0x0e04}]
  228. set VTP_CTRL_REG [expr {$CONTROL_BASE_ADDR + 0x0e0c}]
  229. set VREF_CTRL [expr {$CONTROL_BASE_ADDR + 0x0e14}]
  230. set DDR_CKE_CTRL [expr {$CONTROL_BASE_ADDR + 0x131c}]
  231. set DDR_ADDRCTRL_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1404}]
  232. set DDR_ADDRCTRL_WD0_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1408}]
  233. set DDR_ADDRCTRL_WD1_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x140c}]
  234. set DDR_DATA0_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1440}]
  235. set DDR_DATA1_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1444}]
  236. set DDR_DATA2_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1448}]
  237. set DDR_DATA3_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x144c}]
  238. set EMIF_SDRAM_CONFIG_EXT [expr {$CONTROL_BASE_ADDR + 0x1460}]
  239. set EMIF_SDRAM_STATUS_EXT [expr {$CONTROL_BASE_ADDR + 0x1464}]
  240. set GPIO0_BASE_ADDR 0x44e07000
  241. set GPIO0_SYSCONFIG [expr {$GPIO0_BASE_ADDR + 0x0010}]
  242. set GPIO0_SYSSTATUS [expr {$GPIO0_BASE_ADDR + 0x0114}]
  243. set GPIO0_CTRL [expr {$GPIO0_BASE_ADDR + 0x0130}]
  244. set GPIO0_OE [expr {$GPIO0_BASE_ADDR + 0x0134}]
  245. set GPIO0_CLEARDATAOUT [expr {$GPIO0_BASE_ADDR + 0x0190}]
  246. set GPIO0_SETDATAOUT [expr {$GPIO0_BASE_ADDR + 0x0194}]
  247. set GPIO5_BASE_ADDR 0x48322000
  248. set GPIO5_SYSCONFIG [expr {$GPIO5_BASE_ADDR + 0x0010}]
  249. set GPIO5_SYSSTATUS [expr {$GPIO5_BASE_ADDR + 0x0114}]
  250. set GPIO5_CTRL [expr {$GPIO5_BASE_ADDR + 0x0130}]
  251. set GPIO5_OE [expr {$GPIO5_BASE_ADDR + 0x0134}]
  252. set GPIO5_CLEARDATAOUT [expr {$GPIO5_BASE_ADDR + 0x0190}]
  253. set GPIO5_SETDATAOUT [expr {$GPIO5_BASE_ADDR + 0x0194}]
  254. set GPIO1_BASE_ADDR 0x4804c000
  255. set GPIO1_SYSCONFIG [expr {$GPIO1_BASE_ADDR + 0x0010}]
  256. set GPIO1_SYSSTATUS [expr {$GPIO1_BASE_ADDR + 0x0114}]
  257. set GPIO1_CTRL [expr {$GPIO1_BASE_ADDR + 0x0130}]
  258. set GPIO1_OE [expr {$GPIO1_BASE_ADDR + 0x0134}]
  259. set GPIO1_CLEARDATAOUT [expr {$GPIO1_BASE_ADDR + 0x0190}]
  260. set GPIO1_SETDATAOUT [expr {$GPIO1_BASE_ADDR + 0x0194}]
  261. set EMIF_BASE_ADDR 0x4c000000
  262. set EMIF_STATUS [expr {$EMIF_BASE_ADDR + 0x0004}]
  263. set EMIF_SDRAM_CONFIG [expr {$EMIF_BASE_ADDR + 0x0008}]
  264. set EMIF_SDRAM_CONFIG_2 [expr {$EMIF_BASE_ADDR + 0x000c}]
  265. set EMIF_SDRAM_REF_CTRL [expr {$EMIF_BASE_ADDR + 0x0010}]
  266. set EMIF_SDRAM_REF_CTRL_SHDW [expr {$EMIF_BASE_ADDR + 0x0014}]
  267. set EMIF_SDRAM_TIM_1 [expr {$EMIF_BASE_ADDR + 0x0018}]
  268. set EMIF_SDRAM_TIM_1_SHDW [expr {$EMIF_BASE_ADDR + 0x001c}]
  269. set EMIF_SDRAM_TIM_2 [expr {$EMIF_BASE_ADDR + 0x0020}]
  270. set EMIF_SDRAM_TIM_2_SHDW [expr {$EMIF_BASE_ADDR + 0x0024}]
  271. set EMIF_SDRAM_TIM_3 [expr {$EMIF_BASE_ADDR + 0x0028}]
  272. set EMIF_SDRAM_TIM_3_SHDW [expr {$EMIF_BASE_ADDR + 0x002c}]
  273. set EMIF_LPDDR2_NVM_TIM [expr {$EMIF_BASE_ADDR + 0x0030}]
  274. set EMIF_LPDDR2_NVM_TIM_SHDW [expr {$EMIF_BASE_ADDR + 0x0034}]
  275. set EMIF_PWR_MGMT_CTRL [expr {$EMIF_BASE_ADDR + 0x0038}]
  276. set EMIF_PWR_MGMT_CTRL_SHDW [expr {$EMIF_BASE_ADDR + 0x003c}]
  277. set EMIF_LPDDR2_MODE_REG_DATA [expr {$EMIF_BASE_ADDR + 0x0040}]
  278. set EMIF_LPDDR2_MODE_REG_CFG [expr {$EMIF_BASE_ADDR + 0x0050}]
  279. set EMIF_OCP_CONFIG [expr {$EMIF_BASE_ADDR + 0x0054}]
  280. set EMIF_OCP_CFG_VAL_1 [expr {$EMIF_BASE_ADDR + 0x0058}]
  281. set EMIF_OCP_CFG_VAL_2 [expr {$EMIF_BASE_ADDR + 0x005c}]
  282. set EMIF_IODFT_TLGC [expr {$EMIF_BASE_ADDR + 0x0060}]
  283. set EMIF_IODFT_CTRL_MISR_RSLT [expr {$EMIF_BASE_ADDR + 0x0064}]
  284. set EMIF_IODFT_ADDR_MISR_RSLT [expr {$EMIF_BASE_ADDR + 0x0068}]
  285. set EMIF_IODFT_DATA_MISR_RSLT_1 [expr {$EMIF_BASE_ADDR + 0x006c}]
  286. set EMIF_IODFT_DATA_MISR_RSLT_2 [expr {$EMIF_BASE_ADDR + 0x0070}]
  287. set EMIF_IODFT_DATA_MISR_RSLT_3 [expr {$EMIF_BASE_ADDR + 0x0074}]
  288. set EMIF_PERF_CNT_1 [expr {$EMIF_BASE_ADDR + 0x0080}]
  289. set EMIF_PERF_CNT_2 [expr {$EMIF_BASE_ADDR + 0x0084}]
  290. set EMIF_PERF_CNT_CFG [expr {$EMIF_BASE_ADDR + 0x0088}]
  291. set EMIF_PERF_CNT_SEL [expr {$EMIF_BASE_ADDR + 0x008c}]
  292. set EMIF_PERF_CNT_TIM [expr {$EMIF_BASE_ADDR + 0x0090}]
  293. set EMIF_MISC_REG [expr {$EMIF_BASE_ADDR + 0x0094}]
  294. set EMIF_DLL_CALIB_CTRL [expr {$EMIF_BASE_ADDR + 0x0098}]
  295. set EMIF_DLL_CALIB_CTRL_SHDW [expr {$EMIF_BASE_ADDR + 0x009c}]
  296. set EMIF_IRQ_EOI [expr {$EMIF_BASE_ADDR + 0x00a0}]
  297. set EMIF_IRQSTATUS_RAW_SYS [expr {$EMIF_BASE_ADDR + 0x00a4}]
  298. set EMIF_IRQSTATUS_SYS [expr {$EMIF_BASE_ADDR + 0x00ac}]
  299. set EMIF_IRQENABLE_SET_SYS [expr {$EMIF_BASE_ADDR + 0x00b4}]
  300. set EMIF_IRQENABLE_CLR_SYS [expr {$EMIF_BASE_ADDR + 0x00bc}]
  301. set EMIF_ZQ_CONFIG [expr {$EMIF_BASE_ADDR + 0x00c8}]
  302. set EMIF_TEMP_ALERT_CONFIG [expr {$EMIF_BASE_ADDR + 0x00cc}]
  303. set EMIF_OCP_ERR_LOG [expr {$EMIF_BASE_ADDR + 0x00d0}]
  304. set EMIF_RDWR_LVL_RMP_WIN [expr {$EMIF_BASE_ADDR + 0x00d4}]
  305. set EMIF_RDWR_LVL_RMP_CTRL [expr {$EMIF_BASE_ADDR + 0x00d8}]
  306. set EMIF_RDWR_LVL_CTRL [expr {$EMIF_BASE_ADDR + 0x00dc}]
  307. set EMIF_DDR_PHY_CTRL_1 [expr {$EMIF_BASE_ADDR + 0x00e4}]
  308. set EMIF_DDR_PHY_CTRL_1_SHDW [expr {$EMIF_BASE_ADDR + 0x00e8}]
  309. set EMIF_DDR_PHY_CTRL_2 [expr {$EMIF_BASE_ADDR + 0x00ec}]
  310. set EMIF_PRI_COS_MAP [expr {$EMIF_BASE_ADDR + 0x0100}]
  311. set EMIF_CONNID_COS_1_MAP [expr {$EMIF_BASE_ADDR + 0x0104}]
  312. set EMIF_CONNID_COS_2_MAP [expr {$EMIF_BASE_ADDR + 0x0108}]
  313. set ECC_CTRL [expr {$EMIF_BASE_ADDR + 0x0110}]
  314. set ECC_ADDR_RNG_1 [expr {$EMIF_BASE_ADDR + 0x0114}]
  315. set ECC_ADDR_RNG_2 [expr {$EMIF_BASE_ADDR + 0x0118}]
  316. set EMIF_RD_WR_EXEC_THRSH [expr {$EMIF_BASE_ADDR + 0x0120}]
  317. set COS_CONFIG [expr {$EMIF_BASE_ADDR + 0x0124}]
  318. set PHY_STATUS_1 [expr {$EMIF_BASE_ADDR + 0x0144}]
  319. set PHY_STATUS_2 [expr {$EMIF_BASE_ADDR + 0x0148}]
  320. set PHY_STATUS_3 [expr {$EMIF_BASE_ADDR + 0x014c}]
  321. set PHY_STATUS_4 [expr {$EMIF_BASE_ADDR + 0x0150}]
  322. set PHY_STATUS_5 [expr {$EMIF_BASE_ADDR + 0x0154}]
  323. set PHY_STATUS_6 [expr {$EMIF_BASE_ADDR + 0x0158}]
  324. set PHY_STATUS_7 [expr {$EMIF_BASE_ADDR + 0x015c}]
  325. set PHY_STATUS_8 [expr {$EMIF_BASE_ADDR + 0x0160}]
  326. set PHY_STATUS_9 [expr {$EMIF_BASE_ADDR + 0x0164}]
  327. set PHY_STATUS_10 [expr {$EMIF_BASE_ADDR + 0x0168}]
  328. set PHY_STATUS_11 [expr {$EMIF_BASE_ADDR + 0x016c}]
  329. set PHY_STATUS_12 [expr {$EMIF_BASE_ADDR + 0x0170}]
  330. set PHY_STATUS_13 [expr {$EMIF_BASE_ADDR + 0x0174}]
  331. set PHY_STATUS_14 [expr {$EMIF_BASE_ADDR + 0x0178}]
  332. set PHY_STATUS_15 [expr {$EMIF_BASE_ADDR + 0x017c}]
  333. set PHY_STATUS_16 [expr {$EMIF_BASE_ADDR + 0x0180}]
  334. set PHY_STATUS_17 [expr {$EMIF_BASE_ADDR + 0x0184}]
  335. set PHY_STATUS_18 [expr {$EMIF_BASE_ADDR + 0x0188}]
  336. set PHY_STATUS_19 [expr {$EMIF_BASE_ADDR + 0x018c}]
  337. set PHY_STATUS_20 [expr {$EMIF_BASE_ADDR + 0x0190}]
  338. set PHY_STATUS_21 [expr {$EMIF_BASE_ADDR + 0x0194}]
  339. set PHY_STATUS_22 [expr {$EMIF_BASE_ADDR + 0x0198}]
  340. set PHY_STATUS_23 [expr {$EMIF_BASE_ADDR + 0x019c}]
  341. set PHY_STATUS_24 [expr {$EMIF_BASE_ADDR + 0x01a0}]
  342. set PHY_STATUS_25 [expr {$EMIF_BASE_ADDR + 0x01a4}]
  343. set PHY_STATUS_26 [expr {$EMIF_BASE_ADDR + 0x01a8}]
  344. set PHY_STATUS_27 [expr {$EMIF_BASE_ADDR + 0x01ac}]
  345. set PHY_STATUS_28 [expr {$EMIF_BASE_ADDR + 0x01b0}]
  346. set EXT_PHY_CTRL_1 [expr {$EMIF_BASE_ADDR + 0x0200}]
  347. set EXT_PHY_CTRL_1_SHDW [expr {$EMIF_BASE_ADDR + 0x0204}]
  348. set EXT_PHY_CTRL_2 [expr {$EMIF_BASE_ADDR + 0x0208}]
  349. set EXT_PHY_CTRL_2_SHDW [expr {$EMIF_BASE_ADDR + 0x020c}]
  350. set EXT_PHY_CTRL_3 [expr {$EMIF_BASE_ADDR + 0x0210}]
  351. set EXT_PHY_CTRL_3_SHDW [expr {$EMIF_BASE_ADDR + 0x0214}]
  352. set EXT_PHY_CTRL_4 [expr {$EMIF_BASE_ADDR + 0x0218}]
  353. set EXT_PHY_CTRL_4_SHDW [expr {$EMIF_BASE_ADDR + 0x021c}]
  354. set EXT_PHY_CTRL_5 [expr {$EMIF_BASE_ADDR + 0x0220}]
  355. set EXT_PHY_CTRL_5_SHDW [expr {$EMIF_BASE_ADDR + 0x0224}]
  356. set EXT_PHY_CTRL_6 [expr {$EMIF_BASE_ADDR + 0x0228}]
  357. set EXT_PHY_CTRL_6_SHDW [expr {$EMIF_BASE_ADDR + 0x022c}]
  358. set EXT_PHY_CTRL_7 [expr {$EMIF_BASE_ADDR + 0x0230}]
  359. set EXT_PHY_CTRL_7_SHDW [expr {$EMIF_BASE_ADDR + 0x0234}]
  360. set EXT_PHY_CTRL_8 [expr {$EMIF_BASE_ADDR + 0x0238}]
  361. set EXT_PHY_CTRL_8_SHDW [expr {$EMIF_BASE_ADDR + 0x023c}]
  362. set EXT_PHY_CTRL_9 [expr {$EMIF_BASE_ADDR + 0x0240}]
  363. set EXT_PHY_CTRL_9_SHDW [expr {$EMIF_BASE_ADDR + 0x0244}]
  364. set EXT_PHY_CTRL_10 [expr {$EMIF_BASE_ADDR + 0x0248}]
  365. set EXT_PHY_CTRL_10_SHDW [expr {$EMIF_BASE_ADDR + 0x024c}]
  366. set EXT_PHY_CTRL_11 [expr {$EMIF_BASE_ADDR + 0x0250}]
  367. set EXT_PHY_CTRL_11_SHDW [expr {$EMIF_BASE_ADDR + 0x0254}]
  368. set EXT_PHY_CTRL_12 [expr {$EMIF_BASE_ADDR + 0x0258}]
  369. set EXT_PHY_CTRL_12_SHDW [expr {$EMIF_BASE_ADDR + 0x025c}]
  370. set EXT_PHY_CTRL_13 [expr {$EMIF_BASE_ADDR + 0x0260}]
  371. set EXT_PHY_CTRL_13_SHDW [expr {$EMIF_BASE_ADDR + 0x0264}]
  372. set EXT_PHY_CTRL_14 [expr {$EMIF_BASE_ADDR + 0x0268}]
  373. set EXT_PHY_CTRL_14_SHDW [expr {$EMIF_BASE_ADDR + 0x026c}]
  374. set EXT_PHY_CTRL_15 [expr {$EMIF_BASE_ADDR + 0x0270}]
  375. set EXT_PHY_CTRL_15_SHDW [expr {$EMIF_BASE_ADDR + 0x0274}]
  376. set EXT_PHY_CTRL_16 [expr {$EMIF_BASE_ADDR + 0x0278}]
  377. set EXT_PHY_CTRL_16_SHDW [expr {$EMIF_BASE_ADDR + 0x027c}]
  378. set EXT_PHY_CTRL_17 [expr {$EMIF_BASE_ADDR + 0x0280}]
  379. set EXT_PHY_CTRL_17_SHDW [expr {$EMIF_BASE_ADDR + 0x0284}]
  380. set EXT_PHY_CTRL_18 [expr {$EMIF_BASE_ADDR + 0x0288}]
  381. set EXT_PHY_CTRL_18_SHDW [expr {$EMIF_BASE_ADDR + 0x028c}]
  382. set EXT_PHY_CTRL_19 [expr {$EMIF_BASE_ADDR + 0x0290}]
  383. set EXT_PHY_CTRL_19_SHDW [expr {$EMIF_BASE_ADDR + 0x0294}]
  384. set EXT_PHY_CTRL_20 [expr {$EMIF_BASE_ADDR + 0x0298}]
  385. set EXT_PHY_CTRL_20_SHDW [expr {$EMIF_BASE_ADDR + 0x029c}]
  386. set EXT_PHY_CTRL_21 [expr {$EMIF_BASE_ADDR + 0x02a0}]
  387. set EXT_PHY_CTRL_21_SHDW [expr {$EMIF_BASE_ADDR + 0x02a4}]
  388. set EXT_PHY_CTRL_22 [expr {$EMIF_BASE_ADDR + 0x02a8}]
  389. set EXT_PHY_CTRL_22_SHDW [expr {$EMIF_BASE_ADDR + 0x02ac}]
  390. set EXT_PHY_CTRL_23 [expr {$EMIF_BASE_ADDR + 0x02b0}]
  391. set EXT_PHY_CTRL_23_SHDW [expr {$EMIF_BASE_ADDR + 0x02b4}]
  392. set EXT_PHY_CTRL_24 [expr {$EMIF_BASE_ADDR + 0x02b8}]
  393. set EXT_PHY_CTRL_24_SHDW [expr {$EMIF_BASE_ADDR + 0x02bc}]
  394. set EXT_PHY_CTRL_25 [expr {$EMIF_BASE_ADDR + 0x02c0}]
  395. set EXT_PHY_CTRL_25_SHDW [expr {$EMIF_BASE_ADDR + 0x02c4}]
  396. set EXT_PHY_CTRL_26 [expr {$EMIF_BASE_ADDR + 0x02c8}]
  397. set EXT_PHY_CTRL_26_SHDW [expr {$EMIF_BASE_ADDR + 0x02cc}]
  398. set EXT_PHY_CTRL_27 [expr {$EMIF_BASE_ADDR + 0x02d0}]
  399. set EXT_PHY_CTRL_27_SHDW [expr {$EMIF_BASE_ADDR + 0x02d4}]
  400. set EXT_PHY_CTRL_28 [expr {$EMIF_BASE_ADDR + 0x02d8}]
  401. set EXT_PHY_CTRL_28_SHDW [expr {$EMIF_BASE_ADDR + 0x02dc}]
  402. set EXT_PHY_CTRL_29 [expr {$EMIF_BASE_ADDR + 0x02e0}]
  403. set EXT_PHY_CTRL_29_SHDW [expr {$EMIF_BASE_ADDR + 0x02e4}]
  404. set EXT_PHY_CTRL_30 [expr {$EMIF_BASE_ADDR + 0x02e8}]
  405. set EXT_PHY_CTRL_30_SHDW [expr {$EMIF_BASE_ADDR + 0x02ec}]
  406. set EXT_PHY_CTRL_31 [expr {$EMIF_BASE_ADDR + 0x02f0}]
  407. set EXT_PHY_CTRL_31_SHDW [expr {$EMIF_BASE_ADDR + 0x02f4}]
  408. set EXT_PHY_CTRL_32 [expr {$EMIF_BASE_ADDR + 0x02f8}]
  409. set EXT_PHY_CTRL_32_SHDW [expr {$EMIF_BASE_ADDR + 0x02fc}]
  410. set EXT_PHY_CTRL_33 [expr {$EMIF_BASE_ADDR + 0x0300}]
  411. set EXT_PHY_CTRL_33_SHDW [expr {$EMIF_BASE_ADDR + 0x0304}]
  412. set EXT_PHY_CTRL_34 [expr {$EMIF_BASE_ADDR + 0x0308}]
  413. set EXT_PHY_CTRL_34_SHDW [expr {$EMIF_BASE_ADDR + 0x030c}]
  414. set EXT_PHY_CTRL_35 [expr {$EMIF_BASE_ADDR + 0x0310}]
  415. set EXT_PHY_CTRL_35_SHDW [expr {$EMIF_BASE_ADDR + 0x0314}]
  416. set EXT_PHY_CTRL_36 [expr {$EMIF_BASE_ADDR + 0x0318}]
  417. set EXT_PHY_CTRL_36_SHDW [expr {$EMIF_BASE_ADDR + 0x031c}]
  418. set WDT1_BASE_ADDR 0x44e35000
  419. set WDT1_W_PEND_WSPR [expr {$WDT1_BASE_ADDR + 0x0034}]
  420. set WDT1_WSPR [expr {$WDT1_BASE_ADDR + 0x0048}]
  421. set RTC_BASE_ADDR 0x44e3e000
  422. set RTC_KICK0R [expr {$RTC_BASE_ADDR + 0x6c}]
  423. set RTC_KICK1R [expr {$RTC_BASE_ADDR + 0x70}]
  424. if { [info exists CHIPNAME] } {
  425. set _CHIPNAME $CHIPNAME
  426. } else {
  427. set _CHIPNAME am437x
  428. }
  429. set JRC_MODULE icepick_d
  430. set DEBUGSS_MODULE debugss
  431. set M3_MODULE m3_wakeupss
  432. set JRC_NAME $_CHIPNAME.$JRC_MODULE
  433. set DEBUGSS_NAME $_CHIPNAME.$DEBUGSS_MODULE
  434. set M3_NAME $_CHIPNAME.$M3_MODULE
  435. set _TARGETNAME $_CHIPNAME.mpuss
  436. #
  437. # M3 WakeupSS DAP
  438. #
  439. if { [info exists M3_DAP_TAPID] } {
  440. set _M3_DAP_TAPID $M3_DAP_TAPID
  441. } else {
  442. set _M3_DAP_TAPID 0x4b6b902f
  443. }
  444. jtag newtap $_CHIPNAME $M3_MODULE -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_DAP_TAPID -disable
  445. jtag configure $M3_NAME -event tap-enable "icepick_d_tapenable $JRC_NAME 11 0"
  446. dap create $M3_NAME.dap -chain-position $M3_NAME
  447. #
  448. # DebugSS DAP
  449. #
  450. if { [info exists DAP_TAPID] } {
  451. set _DAP_TAPID $DAP_TAPID
  452. } else {
  453. set _DAP_TAPID 0x46b6902f
  454. }
  455. jtag newtap $_CHIPNAME $DEBUGSS_MODULE -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -disable
  456. jtag configure $DEBUGSS_NAME -event tap-enable "icepick_d_tapenable $JRC_NAME 12 0"
  457. dap create $DEBUGSS_NAME.dap -chain-position $DEBUGSS_NAME
  458. #
  459. # ICEpick-D (JTAG route controller)
  460. #
  461. if { [info exists JRC_TAPID] } {
  462. set _JRC_TAPID $JRC_TAPID
  463. } else {
  464. set _JRC_TAPID 0x0b98c02f
  465. }
  466. jtag newtap $_CHIPNAME $JRC_MODULE -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID -ignore-version
  467. jtag configure $JRC_NAME -event setup "jtag tapenable $DEBUGSS_NAME"
  468. # some TCK tycles are required to activate the DEBUG power domain
  469. jtag configure $JRC_NAME -event post-reset "runtest 100"
  470. #
  471. # Cortex-A9 target
  472. #
  473. target create $_TARGETNAME cortex_a -dap $DEBUGSS_NAME.dap -coreid 0 -dbgbase 0x80000000
  474. # SRAM: 256K at 0x4030.0000
  475. $_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x40000
  476. # Disables watchdog timer after reset otherwise board won't stay in
  477. # halted state.
  478. proc disable_watchdog { } {
  479. global WDT1_WSPR
  480. global WDT1_W_PEND_WSPR
  481. global _TARGETNAME
  482. set curstate [$_TARGETNAME curstate]
  483. if { [string compare $curstate halted] == 0 } {
  484. set WDT_DISABLE_SEQ1 0xaaaa
  485. set WDT_DISABLE_SEQ2 0x5555
  486. mww phys $WDT1_WSPR $WDT_DISABLE_SEQ1
  487. # Empty body to make sure this executes as fast as possible.
  488. # We don't want any delays here otherwise romcode might start
  489. # executing and end up changing state of certain IPs.
  490. while { [expr {[mrw $WDT1_W_PEND_WSPR] & 0x10}] } { }
  491. mww phys $WDT1_WSPR $WDT_DISABLE_SEQ2
  492. while { [expr {[mrw $WDT1_W_PEND_WSPR] & 0x10}] } { }
  493. }
  494. }
  495. proc ceil { x y } {
  496. return [ expr {($x + $y - 1) / $y} ]
  497. }
  498. proc device_type { } {
  499. global CONTROL_STATUS
  500. set tmp [ mrw $CONTROL_STATUS ]
  501. set tmp [ expr {$tmp & 0x700} ]
  502. set tmp [ expr {$tmp >> 8} ]
  503. return $tmp
  504. }
  505. proc get_input_clock_frequency { } {
  506. global CONTROL_STATUS
  507. if { [ device_type ] != 3 } {
  508. error "Unknown device type\n"
  509. return -1
  510. }
  511. set freq [ mrw $CONTROL_STATUS ]
  512. set freq [ expr {$freq & 0x00c00000} ]
  513. set freq [ expr {$freq >> 22} ]
  514. switch $freq {
  515. 0 {
  516. set CLKIN 19200000
  517. }
  518. 1 {
  519. set CLKIN 24000000
  520. }
  521. 2 {
  522. set CLKIN 25000000
  523. }
  524. 3 {
  525. set CLKIN 26000000
  526. }
  527. }
  528. return $CLKIN
  529. }
  530. proc mpu_pll_config { CLKIN N M M2 } {
  531. global CM_CLKMODE_DPLL_MPU
  532. global CM_CLKSEL_DPLL_MPU
  533. global CM_DIV_M2_DPLL_MPU
  534. global CM_IDLEST_DPLL_MPU
  535. set clksel [ mrw $CM_CLKSEL_DPLL_MPU ]
  536. set div_m2 [ mrw $CM_DIV_M2_DPLL_MPU ]
  537. mww $CM_CLKMODE_DPLL_MPU 0x4
  538. while { !([ mrw $CM_IDLEST_DPLL_MPU ] & 0x0100) } { }
  539. set clksel [ expr {$clksel & (~0x7ffff)} ]
  540. set clksel [ expr {$clksel | ($M << 0x8) | $N} ]
  541. mww $CM_CLKSEL_DPLL_MPU $clksel
  542. set div_m2 [ expr {$div_m2 & (~0x1f)} ]
  543. set div_m2 [ expr {$div_m2 | $M2} ]
  544. mww $CM_DIV_M2_DPLL_MPU $div_m2
  545. mww $CM_CLKMODE_DPLL_MPU 0x7
  546. while { [ mrw $CM_IDLEST_DPLL_MPU ] != 1 } { }
  547. echo "MPU DPLL locked"
  548. }
  549. proc core_pll_config { CLKIN N M M4 M5 M6 } {
  550. global CM_CLKMODE_DPLL_CORE
  551. global CM_CLKSEL_DPLL_CORE
  552. global CM_DIV_M4_DPLL_CORE
  553. global CM_DIV_M5_DPLL_CORE
  554. global CM_DIV_M6_DPLL_CORE
  555. global CM_IDLEST_DPLL_CORE
  556. set clksel [ mrw $CM_CLKSEL_DPLL_CORE ]
  557. mww $CM_CLKMODE_DPLL_CORE 0x4
  558. while { !([ mrw $CM_IDLEST_DPLL_CORE ] & 0x0100) } { }
  559. set clksel [ expr {$clksel & (~0x7ffff)} ]
  560. set clksel [ expr {$clksel | ($M << 0x8) | $N} ]
  561. mww $CM_CLKSEL_DPLL_CORE $clksel
  562. mww $CM_DIV_M4_DPLL_CORE $M4
  563. mww $CM_DIV_M5_DPLL_CORE $M5
  564. mww $CM_DIV_M6_DPLL_CORE $M6
  565. mww $CM_CLKMODE_DPLL_CORE 0x7
  566. while { !([ mrw $CM_IDLEST_DPLL_CORE ] & 0x01) } { }
  567. echo "CORE DPLL locked"
  568. }
  569. proc per_pll_config { CLKIN N M M2 } {
  570. global CM_CLKMODE_DPLL_PER
  571. global CM_CLKSEL_DPLL_PER
  572. global CM_DIV_M2_DPLL_PER
  573. global CM_IDLEST_DPLL_PER
  574. set x [ expr {$M * $CLKIN / 1000000} ]
  575. set y [ expr {($N + 1) * 250} ]
  576. set sd [ ceil $x $y ]
  577. set clksel [ mrw $CM_CLKSEL_DPLL_PER ]
  578. set div_m2 [ mrw $CM_DIV_M2_DPLL_PER ]
  579. mww $CM_CLKMODE_DPLL_PER 0x4
  580. while { !([ mrw $CM_IDLEST_DPLL_PER ] & 0x0100) } { }
  581. set clksel [ expr {$clksel & (~0xff0fffff)} ]
  582. set clksel [ expr {$clksel | ($M << 0x8) | $N} ]
  583. set clksel [ expr {$clksel | ($sd << 24)} ]
  584. mww $CM_CLKSEL_DPLL_PER $clksel
  585. set div_m2 [ expr {0xffffff80 | $M2} ]
  586. mww $CM_CLKMODE_DPLL_PER 0x7
  587. while { !([ mrw $CM_IDLEST_DPLL_PER ] & 0x01) } { }
  588. echo "PER DPLL locked"
  589. }
  590. proc ddr_pll_config { CLKIN N M M2 M4 } {
  591. global CM_CLKMODE_DPLL_DDR
  592. global CM_CLKSEL_DPLL_DDR
  593. global CM_DIV_M2_DPLL_DDR
  594. global CM_DIV_M4_DPLL_DDR
  595. global CM_IDLEST_DPLL_DDR
  596. set clksel [ mrw $CM_CLKSEL_DPLL_DDR ]
  597. set div_m2 [ mrw $CM_DIV_M2_DPLL_DDR ]
  598. mww $CM_CLKMODE_DPLL_DDR 0x4
  599. while { !([ mrw $CM_IDLEST_DPLL_DDR ] & 0x0100) } { }
  600. set clksel [ expr {$clksel & (~0x7ffff)} ]
  601. set clksel [ expr {$clksel | ($M << 8) | $N} ]
  602. mww $CM_CLKSEL_DPLL_DDR $clksel
  603. set div_m2 [ expr {($div_m2 & 0xffffffe0) | $M2} ]
  604. mww $CM_DIV_M2_DPLL_DDR $div_m2
  605. mww $CM_DIV_M4_DPLL_DDR $M4
  606. mww $CM_CLKMODE_DPLL_DDR 0x7
  607. while { !([ mrw $CM_IDLEST_DPLL_DDR ] & 0x01) } { }
  608. echo "DDR DPLL Locked"
  609. }
  610. proc config_opp100 { } {
  611. set CLKIN [ get_input_clock_frequency ]
  612. if { $CLKIN == -1 } {
  613. return -1
  614. }
  615. switch $CLKIN {
  616. 24000000 {
  617. mpu_pll_config $CLKIN 0 25 1
  618. core_pll_config $CLKIN 2 125 10 8 4
  619. per_pll_config $CLKIN 9 400 5
  620. ddr_pll_config $CLKIN 2 50 1 2
  621. }
  622. 25000000 {
  623. mpu_pll_config $CLKIN 0 24 1
  624. core_pll_config $CLKIN 0 40 10 8 4
  625. per_pll_config $CLKIN 9 384 5
  626. ddr_pll_config $CLKIN 0 16 1 2
  627. }
  628. 26000000 {
  629. mpu_pll_config $CLKIN 12 300 1
  630. core_pll_config $CLKIN 12 500 10 8 4
  631. per_pll_config $CLKIN 12 480 5
  632. ddr_pll_config $CLKIN 12 200 1 2
  633. }
  634. 19200000 {
  635. mpu_pll_config $CLKIN 3 125 1
  636. core_pll_config $CLKIN 11 625 10 8 4
  637. per_pll_config $CLKIN 7 400 5
  638. ddr_pll_config $CLKIN 2 125 1 2
  639. }
  640. }
  641. }
  642. proc emif_prcm_clk_enable { } {
  643. global CM_PER_EMIF_FW_CLKCTRL
  644. global CM_PER_EMIF_CLKCTRL
  645. mww $CM_PER_EMIF_FW_CLKCTRL 0x02
  646. mww $CM_PER_EMIF_CLKCTRL 0x02
  647. while { [ mrw $CM_PER_EMIF_CLKCTRL ] != 0x02 } { }
  648. }
  649. proc vtp_enable { } {
  650. global VTP_CTRL_REG
  651. set vtp [ expr {[ mrw $VTP_CTRL_REG ] | 0x40 }]
  652. mww $VTP_CTRL_REG $vtp
  653. set vtp [ expr {[ mrw $VTP_CTRL_REG ] & ~0x01 }]
  654. mww $VTP_CTRL_REG $vtp
  655. set vtp [ expr {[ mrw $VTP_CTRL_REG ] | 0x01 }]
  656. mww $VTP_CTRL_REG $vtp
  657. }
  658. proc config_ddr_ioctrl { } {
  659. global DDR_ADDRCTRL_IOCTRL
  660. global DDR_ADDRCTRL_WD0_IOCTRL
  661. global DDR_ADDRCTRL_WD1_IOCTRL
  662. global DDR_CKE_CTRL
  663. global DDR_DATA0_IOCTRL
  664. global DDR_DATA1_IOCTRL
  665. global DDR_DATA2_IOCTRL
  666. global DDR_DATA3_IOCTRL
  667. global DDR_IO_CTRL
  668. mww $DDR_ADDRCTRL_IOCTRL 0x84
  669. mww $DDR_ADDRCTRL_WD0_IOCTRL 0x00
  670. mww $DDR_ADDRCTRL_WD1_IOCTRL 0x00
  671. mww $DDR_DATA0_IOCTRL 0x84
  672. mww $DDR_DATA1_IOCTRL 0x84
  673. mww $DDR_DATA2_IOCTRL 0x84
  674. mww $DDR_DATA3_IOCTRL 0x84
  675. mww $DDR_IO_CTRL 0x00
  676. mww $DDR_CKE_CTRL 0x03
  677. }
  678. proc config_ddr_phy { } {
  679. global EMIF_DDR_PHY_CTRL_1
  680. global EMIF_DDR_PHY_CTRL_1_SHDW
  681. global EXT_PHY_CTRL_1
  682. global EXT_PHY_CTRL_1_SHDW
  683. global EXT_PHY_CTRL_2
  684. global EXT_PHY_CTRL_2_SHDW
  685. global EXT_PHY_CTRL_3
  686. global EXT_PHY_CTRL_3_SHDW
  687. global EXT_PHY_CTRL_4
  688. global EXT_PHY_CTRL_4_SHDW
  689. global EXT_PHY_CTRL_5
  690. global EXT_PHY_CTRL_5_SHDW
  691. global EXT_PHY_CTRL_6
  692. global EXT_PHY_CTRL_6_SHDW
  693. global EXT_PHY_CTRL_7
  694. global EXT_PHY_CTRL_7_SHDW
  695. global EXT_PHY_CTRL_8
  696. global EXT_PHY_CTRL_8_SHDW
  697. global EXT_PHY_CTRL_9
  698. global EXT_PHY_CTRL_9_SHDW
  699. global EXT_PHY_CTRL_10
  700. global EXT_PHY_CTRL_10_SHDW
  701. global EXT_PHY_CTRL_11
  702. global EXT_PHY_CTRL_11_SHDW
  703. global EXT_PHY_CTRL_12
  704. global EXT_PHY_CTRL_12_SHDW
  705. global EXT_PHY_CTRL_13
  706. global EXT_PHY_CTRL_13_SHDW
  707. global EXT_PHY_CTRL_14
  708. global EXT_PHY_CTRL_14_SHDW
  709. global EXT_PHY_CTRL_15
  710. global EXT_PHY_CTRL_15_SHDW
  711. global EXT_PHY_CTRL_16
  712. global EXT_PHY_CTRL_16_SHDW
  713. global EXT_PHY_CTRL_17
  714. global EXT_PHY_CTRL_17_SHDW
  715. global EXT_PHY_CTRL_18
  716. global EXT_PHY_CTRL_18_SHDW
  717. global EXT_PHY_CTRL_19
  718. global EXT_PHY_CTRL_19_SHDW
  719. global EXT_PHY_CTRL_20
  720. global EXT_PHY_CTRL_20_SHDW
  721. global EXT_PHY_CTRL_21
  722. global EXT_PHY_CTRL_21_SHDW
  723. global EXT_PHY_CTRL_22
  724. global EXT_PHY_CTRL_22_SHDW
  725. global EXT_PHY_CTRL_23
  726. global EXT_PHY_CTRL_23_SHDW
  727. global EXT_PHY_CTRL_24
  728. global EXT_PHY_CTRL_24_SHDW
  729. global EXT_PHY_CTRL_25
  730. global EXT_PHY_CTRL_25_SHDW
  731. global EXT_PHY_CTRL_26
  732. global EXT_PHY_CTRL_26_SHDW
  733. global EXT_PHY_CTRL_27
  734. global EXT_PHY_CTRL_27_SHDW
  735. global EXT_PHY_CTRL_28
  736. global EXT_PHY_CTRL_28_SHDW
  737. global EXT_PHY_CTRL_29
  738. global EXT_PHY_CTRL_29_SHDW
  739. global EXT_PHY_CTRL_30
  740. global EXT_PHY_CTRL_30_SHDW
  741. global EXT_PHY_CTRL_31
  742. global EXT_PHY_CTRL_31_SHDW
  743. global EXT_PHY_CTRL_32
  744. global EXT_PHY_CTRL_32_SHDW
  745. global EXT_PHY_CTRL_33
  746. global EXT_PHY_CTRL_33_SHDW
  747. global EXT_PHY_CTRL_34
  748. global EXT_PHY_CTRL_34_SHDW
  749. global EXT_PHY_CTRL_35
  750. global EXT_PHY_CTRL_35_SHDW
  751. global EXT_PHY_CTRL_36
  752. global EXT_PHY_CTRL_36_SHDW
  753. mww $EMIF_DDR_PHY_CTRL_1 0x8009
  754. mww $EMIF_DDR_PHY_CTRL_1_SHDW 0x8009
  755. set slave_ratio 0x80
  756. set gatelvl_init_ratio 0x20
  757. set wr_dqs_slave_delay 0x60
  758. set rd_dqs_slave_delay 0x60
  759. set dq_offset 0x40
  760. set gatelvl_init_mode 0x01
  761. set wr_data_slave_delay 0x80
  762. set gatelvl_num_dq0 0x0f
  763. set wrlvl_num_dq0 0x0f
  764. mww $EXT_PHY_CTRL_1 [ expr {($slave_ratio << 20) | ($slave_ratio << 10) | $slave_ratio} ]
  765. mww $EXT_PHY_CTRL_1_SHDW [ expr {($slave_ratio << 20) | ($slave_ratio << 10) | $slave_ratio} ]
  766. mww $EXT_PHY_CTRL_26 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  767. mww $EXT_PHY_CTRL_26_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  768. mww $EXT_PHY_CTRL_27 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  769. mww $EXT_PHY_CTRL_27_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  770. mww $EXT_PHY_CTRL_28 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  771. mww $EXT_PHY_CTRL_28_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  772. mww $EXT_PHY_CTRL_29 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  773. mww $EXT_PHY_CTRL_29_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  774. mww $EXT_PHY_CTRL_30 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  775. mww $EXT_PHY_CTRL_30_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
  776. mww $EXT_PHY_CTRL_31 0x00
  777. mww $EXT_PHY_CTRL_31_SHDW 0x00
  778. mww $EXT_PHY_CTRL_32 0x00
  779. mww $EXT_PHY_CTRL_32_SHDW 0x00
  780. mww $EXT_PHY_CTRL_33 0x00
  781. mww $EXT_PHY_CTRL_33_SHDW 0x00
  782. mww $EXT_PHY_CTRL_34 0x00
  783. mww $EXT_PHY_CTRL_34_SHDW 0x00
  784. mww $EXT_PHY_CTRL_35 0x00
  785. mww $EXT_PHY_CTRL_35_SHDW 0x00
  786. mww $EXT_PHY_CTRL_22 0x00
  787. mww $EXT_PHY_CTRL_22_SHDW 0x00
  788. mww $EXT_PHY_CTRL_23 [ expr {($wr_dqs_slave_delay << 16) | $rd_dqs_slave_delay} ]
  789. mww $EXT_PHY_CTRL_23_SHDW [ expr {($wr_dqs_slave_delay << 16) | $rd_dqs_slave_delay} ]
  790. mww $EXT_PHY_CTRL_24 [ expr {($dq_offset << 24) | ($gatelvl_init_mode << 16) | $wr_data_slave_delay} ]
  791. mww $EXT_PHY_CTRL_24_SHDW [ expr {($dq_offset << 24) | ($gatelvl_init_mode << 16) | $wr_data_slave_delay << 0} ]
  792. mww $EXT_PHY_CTRL_25 [ expr {($dq_offset << 21) | ($dq_offset << 14) | ($dq_offset << 7) | $dq_offset} ]
  793. mww $EXT_PHY_CTRL_25_SHDW [ expr {($dq_offset << 21) | ($dq_offset << 14) | ($dq_offset << 7) | $dq_offset} ]
  794. mww $EXT_PHY_CTRL_36 [ expr {($wrlvl_num_dq0 << 4) | $gatelvl_num_dq0} ]
  795. mww $EXT_PHY_CTRL_36_SHDW [ expr {($wrlvl_num_dq0 << 4) | $gatelvl_num_dq0} ]
  796. }
  797. proc config_ddr_timing { } {
  798. global EMIF_SDRAM_TIM_1
  799. global EMIF_SDRAM_TIM_2
  800. global EMIF_SDRAM_TIM_3
  801. global EMIF_SDRAM_TIM_1_SHDW
  802. global EMIF_SDRAM_TIM_2_SHDW
  803. global EMIF_SDRAM_TIM_3_SHDW
  804. global EMIF_ZQ_CONFIG
  805. mww $EMIF_SDRAM_TIM_1 0xeaaad4db
  806. mww $EMIF_SDRAM_TIM_1_SHDW 0xeaaad4db
  807. mww $EMIF_SDRAM_TIM_2 0x266b7fda
  808. mww $EMIF_SDRAM_TIM_2_SHDW 0x266b7fda
  809. mww $EMIF_SDRAM_TIM_3 0x107f8678
  810. mww $EMIF_SDRAM_TIM_3_SHDW 0x107f8678
  811. mww $EMIF_ZQ_CONFIG 0x50074be4
  812. }
  813. proc config_ddr_pm { } {
  814. global EMIF_PWR_MGMT_CTRL
  815. global EMIF_PWR_MGMT_CTRL_SHDW
  816. global EMIF_DLL_CALIB_CTRL
  817. global EMIF_DLL_CALIB_CTRL_SHDW
  818. global EMIF_TEMP_ALERT_CONFIG
  819. mww $EMIF_PWR_MGMT_CTRL 0x00
  820. mww $EMIF_PWR_MGMT_CTRL_SHDW 0x00
  821. mww $EMIF_DLL_CALIB_CTRL 0x00050000
  822. mww $EMIF_DLL_CALIB_CTRL_SHDW 0x00050000
  823. mww $EMIF_TEMP_ALERT_CONFIG 0x00
  824. }
  825. proc config_ddr_priority { } {
  826. global EMIF_PRI_COS_MAP
  827. global EMIF_CONNID_COS_1_MAP
  828. global EMIF_CONNID_COS_2_MAP
  829. global EMIF_RD_WR_EXEC_THRSH
  830. global COS_CONFIG
  831. mww $EMIF_PRI_COS_MAP 0x00
  832. mww $EMIF_CONNID_COS_1_MAP 0x00
  833. mww $EMIF_CONNID_COS_2_MAP 0x0
  834. mww $EMIF_RD_WR_EXEC_THRSH 0x0405
  835. mww $COS_CONFIG 0x00ffffff
  836. }
  837. proc config_ddr3 { SDRAM_CONFIG } {
  838. global CM_DLL_CTRL
  839. global EMIF_IODFT_TLGC
  840. global EMIF_RDWR_LVL_CTRL
  841. global EMIF_RDWR_LVL_RMP_CTRL
  842. global EMIF_SDRAM_CONFIG
  843. global EMIF_SDRAM_CONFIG_EXT
  844. global EMIF_SDRAM_REF_CTRL
  845. global EMIF_SDRAM_REF_CTRL_SHDW
  846. global EMIF_STATUS
  847. global EXT_PHY_CTRL_36
  848. global EXT_PHY_CTRL_36_SHDW
  849. emif_prcm_clk_enable
  850. vtp_enable
  851. set dll [ expr {[ mrw $CM_DLL_CTRL ] & ~0x01 }]
  852. mww $CM_DLL_CTRL $dll
  853. while { !([ mrw $CM_DLL_CTRL ] & 0x04) } { }
  854. config_ddr_ioctrl
  855. mww $EMIF_SDRAM_CONFIG_EXT 0xc163
  856. mww $EMIF_IODFT_TLGC 0x2011
  857. mww $EMIF_IODFT_TLGC 0x2411
  858. mww $EMIF_IODFT_TLGC 0x2011
  859. mww $EMIF_SDRAM_REF_CTRL 0x80003000
  860. config_ddr_phy
  861. mww $EMIF_IODFT_TLGC 0x2011
  862. mww $EMIF_IODFT_TLGC 0x2411
  863. mww $EMIF_IODFT_TLGC 0x2011
  864. config_ddr_timing
  865. config_ddr_pm
  866. config_ddr_priority
  867. mww $EMIF_SDRAM_REF_CTRL 0x3000
  868. mww $EMIF_SDRAM_CONFIG $SDRAM_CONFIG
  869. mww $EMIF_SDRAM_REF_CTRL 0x0c30
  870. mww $EMIF_SDRAM_REF_CTRL_SHDW 0x0c30
  871. sleep 10
  872. set tmp [ expr {[ mrw $EXT_PHY_CTRL_36 ] | 0x0100 }]
  873. mww $EXT_PHY_CTRL_36 $tmp
  874. mww $EXT_PHY_CTRL_36_SHDW $tmp
  875. mww $EMIF_RDWR_LVL_RMP_CTRL 0x80000000
  876. mww $EMIF_RDWR_LVL_CTRL 0x80000000
  877. while { [ mrw $EMIF_RDWR_LVL_CTRL ] & 0x80000000 } { }
  878. if { [ mrw $EMIF_STATUS ] & 0x70 } {
  879. error "DDR3 Hardware Leveling incomplete!!!"
  880. }
  881. }
  882. proc init_platform { SDRAM_CONFIG } {
  883. config_opp100
  884. config_ddr3 $SDRAM_CONFIG
  885. }
  886. $_TARGETNAME configure -event reset-init { init_platform 0x61a013b2 }
  887. $_TARGETNAME configure -event reset-end { disable_watchdog }