lowlevel_init.S 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /*
  2. * Copyright (C) 2008 Nobuhiro Iwamatsu
  3. * Copyright (C) 2008 Renesas Solutions Corp.
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  18. * MA 02111-1307 USA
  19. */
  20. #include <config.h>
  21. #include <version.h>
  22. #include <asm/processor.h>
  23. .global lowlevel_init
  24. .text
  25. .align 2
  26. lowlevel_init:
  27. /* Cache setting */
  28. mov.l CCR1_A ,r1
  29. mov.l CCR1_D ,r0
  30. mov.l r0,@r1
  31. /* ConfigurePortPins */
  32. mov.l PECRL3_A, r1
  33. mov.l PECRL3_D, r0
  34. mov.w r0,@r1
  35. mov.l PCCRL4_A, r1
  36. mov.l PCCRL4_D0, r0
  37. mov.w r0,@r1
  38. mov.l PECRL4_A, r1
  39. mov.l PECRL4_D0, r0
  40. mov.w r0,@r1
  41. mov.l PEIORL_A, r1
  42. mov.l PEIORL_D0, r0
  43. mov.w r0,@r1
  44. mov.l PCIORL_A, r1
  45. mov.l PCIORL_D, r0
  46. mov.w r0,@r1
  47. mov.l PFCRH2_A, r1
  48. mov.l PFCRH2_D, r0
  49. mov.w r0,@r1
  50. mov.l PFCRH3_A, r1
  51. mov.l PFCRH3_D, r0
  52. mov.w r0,@r1
  53. mov.l PFCRH1_A, r1
  54. mov.l PFCRH1_D, r0
  55. mov.w r0,@r1
  56. mov.l PFIORH_A, r1
  57. mov.l PFIORH_D, r0
  58. mov.w r0,@r1
  59. mov.l PECRL1_A, r1
  60. mov.l PECRL1_D0, r0
  61. mov.w r0,@r1
  62. mov.l PEIORL_A, r1
  63. mov.l PEIORL_D1, r0
  64. mov.w r0,@r1
  65. /* Configure Operating Frequency */
  66. mov.l WTCSR_A ,r1
  67. mov.l WTCSR_D0 ,r0
  68. mov.w r0,@r1
  69. mov.l WTCSR_A ,r1
  70. mov.l WTCSR_D1 ,r0
  71. mov.w r0,@r1
  72. mov.l WTCNT_A ,r1
  73. mov.l WTCNT_D ,r0
  74. mov.w r0,@r1
  75. /* Set clock mode*/
  76. mov.l FRQCR_A,r1
  77. mov.l FRQCR_D,r0
  78. mov.w r0,@r1
  79. /* Configure Bus And Memory */
  80. init_bsc_cs0:
  81. mov.l PCCRL4_A,r1
  82. mov.l PCCRL4_D1,r0
  83. mov.w r0,@r1
  84. mov.l PECRL1_A,r1
  85. mov.l PECRL1_D1,r0
  86. mov.w r0,@r1
  87. mov.l CMNCR_A,r1
  88. mov.l CMNCR_D,r0
  89. mov.l r0,@r1
  90. mov.l SC0BCR_A,r1
  91. mov.l SC0BCR_D,r0
  92. mov.l r0,@r1
  93. mov.l CS0WCR_A,r1
  94. mov.l CS0WCR_D,r0
  95. mov.l r0,@r1
  96. init_bsc_cs1:
  97. mov.l PECRL4_A,r1
  98. mov.l PECRL4_D1,r0
  99. mov.w r0,@r1
  100. mov.l CS1WCR_A,r1
  101. mov.l CS1WCR_D,r0
  102. mov.l r0,@r1
  103. init_sdram:
  104. mov.l PCCRL2_A,r1
  105. mov.l PCCRL2_D,r0
  106. mov.w r0,@r1
  107. mov.l PCCRL4_A,r1
  108. mov.l PCCRL4_D2,r0
  109. mov.w r0,@r1
  110. mov.l PCCRL1_A,r1
  111. mov.l PCCRL1_D,r0
  112. mov.w r0,@r1
  113. mov.l PCCRL3_A,r1
  114. mov.l PCCRL3_D,r0
  115. mov.w r0,@r1
  116. mov.l CS3BCR_A,r1
  117. mov.l CS3BCR_D,r0
  118. mov.l r0,@r1
  119. mov.l CS3WCR_A,r1
  120. mov.l CS3WCR_D,r0
  121. mov.l r0,@r1
  122. mov.l SDCR_A,r1
  123. mov.l SDCR_D,r0
  124. mov.l r0,@r1
  125. mov.l RTCOR_A,r1
  126. mov.l RTCOR_D,r0
  127. mov.l r0,@r1
  128. mov.l RTCSR_A,r1
  129. mov.l RTCSR_D,r0
  130. mov.l r0,@r1
  131. /* wait 200us */
  132. mov.l REPEAT_D,r3
  133. mov #0,r2
  134. repeat0:
  135. add #1,r2
  136. cmp/hs r3,r2
  137. bf repeat0
  138. nop
  139. mov.l SDRAM_MODE, r1
  140. mov #0,r0
  141. mov.l r0, @r1
  142. nop
  143. rts
  144. .align 4
  145. CCR1_A: .long CCR1
  146. CCR1_D: .long 0x0000090B
  147. PCCRL4_A: .long 0xFFFE3910
  148. PCCRL4_D0: .long 0x00000000
  149. PECRL4_A: .long 0xFFFE3A10
  150. PECRL4_D0: .long 0x00000000
  151. PECRL3_A: .long 0xFFFE3A12
  152. PECRL3_D: .long 0x00000000
  153. PEIORL_A: .long 0xFFFE3A06
  154. PEIORL_D0: .long 0x00001C00
  155. PEIORL_D1: .long 0x00001C02
  156. PCIORL_A: .long 0xFFFE3906
  157. PCIORL_D: .long 0x00004000
  158. PFCRH2_A: .long 0xFFFE3A8C
  159. PFCRH2_D: .long 0x00000000
  160. PFCRH3_A: .long 0xFFFE3A8A
  161. PFCRH3_D: .long 0x00000000
  162. PFCRH1_A: .long 0xFFFE3A8E
  163. PFCRH1_D: .long 0x00000000
  164. PFIORH_A: .long 0xFFFE3A84
  165. PFIORH_D: .long 0x00000729
  166. PECRL1_A: .long 0xFFFE3A16
  167. PECRL1_D0: .long 0x00000033
  168. WTCSR_A: .long 0xFFFE0000
  169. WTCSR_D0: .long 0x0000A518
  170. WTCSR_D1: .long 0x0000A51D
  171. WTCNT_A: .long 0xFFFE0002
  172. WTCNT_D: .long 0x00005A84
  173. FRQCR_A: .long 0xFFFE0010
  174. FRQCR_D: .long 0x00000104
  175. PCCRL4_D1: .long 0x00000010
  176. PECRL1_D1: .long 0x00000133
  177. CMNCR_A: .long 0xFFFC0000
  178. CMNCR_D: .long 0x00001810
  179. SC0BCR_A: .long 0xFFFC0004
  180. SC0BCR_D: .long 0x10000400
  181. CS0WCR_A: .long 0xFFFC0028
  182. CS0WCR_D: .long 0x00000B41
  183. PECRL4_D1: .long 0x00000100
  184. CS1WCR_A: .long 0xFFFC002C
  185. CS1WCR_D: .long 0x00000B01
  186. PCCRL4_D2: .long 0x00000011
  187. PCCRL3_A: .long 0xFFFE3912
  188. PCCRL3_D: .long 0x00000011
  189. PCCRL2_A: .long 0xFFFE3914
  190. PCCRL2_D: .long 0x00001111
  191. PCCRL1_A: .long 0xFFFE3916
  192. PCCRL1_D: .long 0x00001010
  193. PDCRL4_A: .long 0xFFFE3990
  194. PDCRL4_D: .long 0x00000011
  195. PDCRL3_A: .long 0xFFFE3992
  196. PDCRL3_D: .long 0x00000011
  197. PDCRL2_A: .long 0xFFFE3994
  198. PDCRL2_D: .long 0x00001111
  199. PDCRL1_A: .long 0xFFFE3996
  200. PDCRL1_D: .long 0x00001000
  201. CS3BCR_A: .long 0xFFFC0010
  202. CS3BCR_D: .long 0x00004400
  203. CS3WCR_A: .long 0xFFFC0034
  204. CS3WCR_D: .long 0x00002892
  205. SDCR_A: .long 0xFFFC004C
  206. SDCR_D: .long 0x00000809
  207. RTCOR_A: .long 0xFFFC0058
  208. RTCOR_D: .long 0xA55A0041
  209. RTCSR_A: .long 0xFFFC0050
  210. RTCSR_D: .long 0xa55a0010
  211. STBCR3_A: .long 0xFFFE0408
  212. STBCR3_D: .long 0x00000000
  213. STBCR4_A: .long 0xFFFE040C
  214. STBCR4_D: .long 0x00000008
  215. STBCR5_A: .long 0xFFFE0410
  216. STBCR5_D: .long 0x00000000
  217. STBCR6_A: .long 0xFFFE0414
  218. STBCR6_D: .long 0x00000002
  219. SDRAM_MODE: .long 0xFFFC5040
  220. REPEAT_D: .long 0x00009C40