lowlevel_init.S 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. /*
  2. * Low-level board setup code for TI DaVinci SoC based boards.
  3. *
  4. * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
  5. *
  6. * Partially based on TI sources, original copyrights follow:
  7. */
  8. /*
  9. * Board specific setup info
  10. *
  11. * (C) Copyright 2003
  12. * Texas Instruments, <www.ti.com>
  13. * Kshitij Gupta <Kshitij@ti.com>
  14. *
  15. * Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
  16. *
  17. * Modified for OMAP 5912 OSK board by Rishi Bhattacharya, Apr 2004
  18. * See file CREDITS for list of people who contributed to this
  19. * project.
  20. *
  21. * Modified for DV-EVM board by Rishi Bhattacharya, Apr 2005
  22. * See file CREDITS for list of people who contributed to this
  23. * project.
  24. *
  25. * Modified for DV-EVM board by Swaminathan S, Nov 2005
  26. * See file CREDITS for list of people who contributed to this
  27. * project.
  28. *
  29. * This program is free software; you can redistribute it and/or
  30. * modify it under the terms of the GNU General Public License as
  31. * published by the Free Software Foundation; either version 2 of
  32. * the License, or (at your option) any later version.
  33. *
  34. * This program is distributed in the hope that it will be useful,
  35. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  36. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  37. * GNU General Public License for more details.
  38. *
  39. * You should have received a copy of the GNU General Public License
  40. * along with this program; if not, write to the Free Software
  41. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  42. * MA 02111-1307 USA
  43. */
  44. #include <config.h>
  45. .globl lowlevel_init
  46. lowlevel_init:
  47. /*-------------------------------------------------------*
  48. * Mask all IRQs by setting all bits in the EINT default *
  49. *-------------------------------------------------------*/
  50. mov r1, $0
  51. ldr r0, =EINT_ENABLE0
  52. str r1, [r0]
  53. ldr r0, =EINT_ENABLE1
  54. str r1, [r0]
  55. /*------------------------------------------------------*
  56. * Put the GEM in reset *
  57. *------------------------------------------------------*/
  58. /* Put the GEM in reset */
  59. ldr r8, PSC_GEM_FLAG_CLEAR
  60. ldr r6, MDCTL_GEM
  61. ldr r7, [r6]
  62. and r7, r7, r8
  63. str r7, [r6]
  64. /* Enable the Power Domain Transition Command */
  65. ldr r6, PTCMD
  66. ldr r7, [r6]
  67. orr r7, r7, $0x02
  68. str r7, [r6]
  69. /* Check for Transition Complete(PTSTAT) */
  70. checkStatClkStopGem:
  71. ldr r6, PTSTAT
  72. ldr r7, [r6]
  73. ands r7, r7, $0x02
  74. bne checkStatClkStopGem
  75. /* Check for GEM Reset Completion */
  76. checkGemStatClkStop:
  77. ldr r6, MDSTAT_GEM
  78. ldr r7, [r6]
  79. ands r7, r7, $0x100
  80. bne checkGemStatClkStop
  81. /* Do this for enabling a WDT initiated reset this is a workaround
  82. for a chip bug. Not required under normal situations */
  83. ldr r6, P1394
  84. mov r10, $0
  85. str r10, [r6]
  86. /*------------------------------------------------------*
  87. * Enable L1 & L2 Memories in Fast mode *
  88. *------------------------------------------------------*/
  89. ldr r6, DFT_ENABLE
  90. mov r10, $0x01
  91. str r10, [r6]
  92. ldr r6, MMARG_BRF0
  93. ldr r10, MMARG_BRF0_VAL
  94. str r10, [r6]
  95. ldr r6, DFT_ENABLE
  96. mov r10, $0
  97. str r10, [r6]
  98. /*------------------------------------------------------*
  99. * DDR2 PLL Initialization *
  100. *------------------------------------------------------*/
  101. /* Select the Clock Mode Depending on the Value written in the Boot Table by the run script */
  102. mov r10, $0
  103. ldr r6, PLL2_CTL
  104. ldr r7, PLL_CLKSRC_MASK
  105. ldr r8, [r6]
  106. and r8, r8, r7
  107. mov r9, r10, lsl $8
  108. orr r8, r8, r9
  109. str r8, [r6]
  110. /* Select the PLLEN source */
  111. ldr r7, PLL_ENSRC_MASK
  112. and r8, r8, r7
  113. str r8, [r6]
  114. /* Bypass the PLL */
  115. ldr r7, PLL_BYPASS_MASK
  116. and r8, r8, r7
  117. str r8, [r6]
  118. /* Wait for few cycles to allow PLLEN Mux switch properly to bypass Clock */
  119. mov r10, $0x20
  120. WaitPPL2Loop:
  121. subs r10, r10, $1
  122. bne WaitPPL2Loop
  123. /* Reset the PLL */
  124. ldr r7, PLL_RESET_MASK
  125. and r8, r8, r7
  126. str r8, [r6]
  127. /* Power up the PLL */
  128. ldr r7, PLL_PWRUP_MASK
  129. and r8, r8, r7
  130. str r8, [r6]
  131. /* Enable the PLL from Disable Mode */
  132. ldr r7, PLL_DISABLE_ENABLE_MASK
  133. and r8, r8, r7
  134. str r8, [r6]
  135. /* Program the PLL Multiplier */
  136. ldr r6, PLL2_PLLM
  137. mov r2, $0x17 /* 162 MHz */
  138. str r2, [r6]
  139. /* Program the PLL2 Divisor Value */
  140. ldr r6, PLL2_DIV2
  141. mov r3, $0x01
  142. str r3, [r6]
  143. /* Program the PLL2 Divisor Value */
  144. ldr r6, PLL2_DIV1
  145. mov r4, $0x0b /* 54 MHz */
  146. str r4, [r6]
  147. /* PLL2 DIV2 MMR */
  148. ldr r8, PLL2_DIV_MASK
  149. ldr r6, PLL2_DIV2
  150. ldr r9, [r6]
  151. and r8, r8, r9
  152. mov r9, $0x01
  153. mov r9, r9, lsl $15
  154. orr r8, r8, r9
  155. str r8, [r6]
  156. /* Program the GOSET bit to take new divider values */
  157. ldr r6, PLL2_PLLCMD
  158. ldr r7, [r6]
  159. orr r7, r7, $0x01
  160. str r7, [r6]
  161. /* Wait for Done */
  162. ldr r6, PLL2_PLLSTAT
  163. doneLoop_0:
  164. ldr r7, [r6]
  165. ands r7, r7, $0x01
  166. bne doneLoop_0
  167. /* PLL2 DIV1 MMR */
  168. ldr r8, PLL2_DIV_MASK
  169. ldr r6, PLL2_DIV1
  170. ldr r9, [r6]
  171. and r8, r8, r9
  172. mov r9, $0x01
  173. mov r9, r9, lsl $15
  174. orr r8, r8, r9
  175. str r8, [r6]
  176. /* Program the GOSET bit to take new divider values */
  177. ldr r6, PLL2_PLLCMD
  178. ldr r7, [r6]
  179. orr r7, r7, $0x01
  180. str r7, [r6]
  181. /* Wait for Done */
  182. ldr r6, PLL2_PLLSTAT
  183. doneLoop:
  184. ldr r7, [r6]
  185. ands r7, r7, $0x01
  186. bne doneLoop
  187. /* Wait for PLL to Reset Properly */
  188. mov r10, $0x218
  189. ResetPPL2Loop:
  190. subs r10, r10, $1
  191. bne ResetPPL2Loop
  192. /* Bring PLL out of Reset */
  193. ldr r6, PLL2_CTL
  194. ldr r8, [r6]
  195. orr r8, r8, $0x08
  196. str r8, [r6]
  197. /* Wait for PLL to Lock */
  198. ldr r10, PLL_LOCK_COUNT
  199. PLL2Lock:
  200. subs r10, r10, $1
  201. bne PLL2Lock
  202. /* Enable the PLL */
  203. ldr r6, PLL2_CTL
  204. ldr r8, [r6]
  205. orr r8, r8, $0x01
  206. str r8, [r6]
  207. /*------------------------------------------------------*
  208. * Issue Soft Reset to DDR Module *
  209. *------------------------------------------------------*/
  210. /* Shut down the DDR2 LPSC Module */
  211. ldr r8, PSC_FLAG_CLEAR
  212. ldr r6, MDCTL_DDR2
  213. ldr r7, [r6]
  214. and r7, r7, r8
  215. orr r7, r7, $0x03
  216. str r7, [r6]
  217. /* Enable the Power Domain Transition Command */
  218. ldr r6, PTCMD
  219. ldr r7, [r6]
  220. orr r7, r7, $0x01
  221. str r7, [r6]
  222. /* Check for Transition Complete(PTSTAT) */
  223. checkStatClkStop:
  224. ldr r6, PTSTAT
  225. ldr r7, [r6]
  226. ands r7, r7, $0x01
  227. bne checkStatClkStop
  228. /* Check for DDR2 Controller Enable Completion */
  229. checkDDRStatClkStop:
  230. ldr r6, MDSTAT_DDR2
  231. ldr r7, [r6]
  232. and r7, r7, $0x1f
  233. cmp r7, $0x03
  234. bne checkDDRStatClkStop
  235. /*------------------------------------------------------*
  236. * Program DDR2 MMRs for 162MHz Setting *
  237. *------------------------------------------------------*/
  238. /* Program PHY Control Register */
  239. ldr r6, DDRCTL
  240. ldr r7, DDRCTL_VAL
  241. str r7, [r6]
  242. /* Program SDRAM Bank Config Register */
  243. ldr r6, SDCFG
  244. ldr r7, SDCFG_VAL
  245. str r7, [r6]
  246. /* Program SDRAM TIM-0 Config Register */
  247. ldr r6, SDTIM0
  248. ldr r7, SDTIM0_VAL_162MHz
  249. str r7, [r6]
  250. /* Program SDRAM TIM-1 Config Register */
  251. ldr r6, SDTIM1
  252. ldr r7, SDTIM1_VAL_162MHz
  253. str r7, [r6]
  254. /* Program the SDRAM Bank Config Control Register */
  255. ldr r10, MASK_VAL
  256. ldr r8, SDCFG
  257. ldr r9, SDCFG_VAL
  258. and r9, r9, r10
  259. str r9, [r8]
  260. /* Program SDRAM SDREF Config Register */
  261. ldr r6, SDREF
  262. ldr r7, SDREF_VAL
  263. str r7, [r6]
  264. /*------------------------------------------------------*
  265. * Issue Soft Reset to DDR Module *
  266. *------------------------------------------------------*/
  267. /* Issue a Dummy DDR2 read/write */
  268. ldr r8, DDR2_START_ADDR
  269. ldr r7, DUMMY_VAL
  270. str r7, [r8]
  271. ldr r7, [r8]
  272. /* Shut down the DDR2 LPSC Module */
  273. ldr r8, PSC_FLAG_CLEAR
  274. ldr r6, MDCTL_DDR2
  275. ldr r7, [r6]
  276. and r7, r7, r8
  277. orr r7, r7, $0x01
  278. str r7, [r6]
  279. /* Enable the Power Domain Transition Command */
  280. ldr r6, PTCMD
  281. ldr r7, [r6]
  282. orr r7, r7, $0x01
  283. str r7, [r6]
  284. /* Check for Transition Complete(PTSTAT) */
  285. checkStatClkStop2:
  286. ldr r6, PTSTAT
  287. ldr r7, [r6]
  288. ands r7, r7, $0x01
  289. bne checkStatClkStop2
  290. /* Check for DDR2 Controller Enable Completion */
  291. checkDDRStatClkStop2:
  292. ldr r6, MDSTAT_DDR2
  293. ldr r7, [r6]
  294. and r7, r7, $0x1f
  295. cmp r7, $0x01
  296. bne checkDDRStatClkStop2
  297. /*------------------------------------------------------*
  298. * Turn DDR2 Controller Clocks On *
  299. *------------------------------------------------------*/
  300. /* Enable the DDR2 LPSC Module */
  301. ldr r6, MDCTL_DDR2
  302. ldr r7, [r6]
  303. orr r7, r7, $0x03
  304. str r7, [r6]
  305. /* Enable the Power Domain Transition Command */
  306. ldr r6, PTCMD
  307. ldr r7, [r6]
  308. orr r7, r7, $0x01
  309. str r7, [r6]
  310. /* Check for Transition Complete(PTSTAT) */
  311. checkStatClkEn2:
  312. ldr r6, PTSTAT
  313. ldr r7, [r6]
  314. ands r7, r7, $0x01
  315. bne checkStatClkEn2
  316. /* Check for DDR2 Controller Enable Completion */
  317. checkDDRStatClkEn2:
  318. ldr r6, MDSTAT_DDR2
  319. ldr r7, [r6]
  320. and r7, r7, $0x1f
  321. cmp r7, $0x03
  322. bne checkDDRStatClkEn2
  323. /* DDR Writes and Reads */
  324. ldr r6, CFGTEST
  325. mov r3, $0x01
  326. str r3, [r6]
  327. /*------------------------------------------------------*
  328. * System PLL Initialization *
  329. *------------------------------------------------------*/
  330. /* Select the Clock Mode Depending on the Value written in the Boot Table by the run script */
  331. mov r2, $0
  332. ldr r6, PLL1_CTL
  333. ldr r7, PLL_CLKSRC_MASK
  334. ldr r8, [r6]
  335. and r8, r8, r7
  336. mov r9, r2, lsl $8
  337. orr r8, r8, r9
  338. str r8, [r6]
  339. /* Select the PLLEN source */
  340. ldr r7, PLL_ENSRC_MASK
  341. and r8, r8, r7
  342. str r8, [r6]
  343. /* Bypass the PLL */
  344. ldr r7, PLL_BYPASS_MASK
  345. and r8, r8, r7
  346. str r8, [r6]
  347. /* Wait for few cycles to allow PLLEN Mux switch properly to bypass Clock */
  348. mov r10, $0x20
  349. WaitLoop:
  350. subs r10, r10, $1
  351. bne WaitLoop
  352. /* Reset the PLL */
  353. ldr r7, PLL_RESET_MASK
  354. and r8, r8, r7
  355. str r8, [r6]
  356. /* Disable the PLL */
  357. orr r8, r8, $0x10
  358. str r8, [r6]
  359. /* Power up the PLL */
  360. ldr r7, PLL_PWRUP_MASK
  361. and r8, r8, r7
  362. str r8, [r6]
  363. /* Enable the PLL from Disable Mode */
  364. ldr r7, PLL_DISABLE_ENABLE_MASK
  365. and r8, r8, r7
  366. str r8, [r6]
  367. /* Program the PLL Multiplier */
  368. ldr r6, PLL1_PLLM
  369. mov r3, $0x15 /* For 594MHz */
  370. str r3, [r6]
  371. /* Wait for PLL to Reset Properly */
  372. mov r10, $0xff
  373. ResetLoop:
  374. subs r10, r10, $1
  375. bne ResetLoop
  376. /* Bring PLL out of Reset */
  377. ldr r6, PLL1_CTL
  378. orr r8, r8, $0x08
  379. str r8, [r6]
  380. /* Wait for PLL to Lock */
  381. ldr r10, PLL_LOCK_COUNT
  382. PLL1Lock:
  383. subs r10, r10, $1
  384. bne PLL1Lock
  385. /* Enable the PLL */
  386. orr r8, r8, $0x01
  387. str r8, [r6]
  388. nop
  389. nop
  390. nop
  391. nop
  392. /*------------------------------------------------------*
  393. * AEMIF configuration for NOR Flash (double check) *
  394. *------------------------------------------------------*/
  395. ldr r0, _PINMUX0
  396. ldr r1, _DEV_SETTING
  397. str r1, [r0]
  398. ldr r0, WAITCFG
  399. ldr r1, WAITCFG_VAL
  400. ldr r2, [r0]
  401. orr r2, r2, r1
  402. str r2, [r0]
  403. ldr r0, ACFG3
  404. ldr r1, ACFG3_VAL
  405. ldr r2, [r0]
  406. and r1, r2, r1
  407. str r1, [r0]
  408. ldr r0, ACFG4
  409. ldr r1, ACFG4_VAL
  410. ldr r2, [r0]
  411. and r1, r2, r1
  412. str r1, [r0]
  413. ldr r0, ACFG5
  414. ldr r1, ACFG5_VAL
  415. ldr r2, [r0]
  416. and r1, r2, r1
  417. str r1, [r0]
  418. /*--------------------------------------*
  419. * VTP manual Calibration *
  420. *--------------------------------------*/
  421. ldr r0, VTPIOCR
  422. ldr r1, VTP_MMR0
  423. str r1, [r0]
  424. ldr r0, VTPIOCR
  425. ldr r1, VTP_MMR1
  426. str r1, [r0]
  427. /* Wait for 33 VTP CLK cycles. VRP operates at 27 MHz */
  428. ldr r10, VTP_LOCK_COUNT
  429. VTPLock:
  430. subs r10, r10, $1
  431. bne VTPLock
  432. ldr r6, DFT_ENABLE
  433. mov r10, $0x01
  434. str r10, [r6]
  435. ldr r6, DDRVTPR
  436. ldr r7, [r6]
  437. and r7, r7, $0x1f
  438. and r8, r7, $0x3e0
  439. orr r8, r7, r8
  440. ldr r7, VTP_RECAL
  441. orr r8, r7, r8
  442. ldr r7, VTP_EN
  443. orr r8, r7, r8
  444. str r8, [r0]
  445. /* Wait for 33 VTP CLK cycles. VRP operates at 27 MHz */
  446. ldr r10, VTP_LOCK_COUNT
  447. VTP1Lock:
  448. subs r10, r10, $1
  449. bne VTP1Lock
  450. ldr r1, [r0]
  451. ldr r2, VTP_MASK
  452. and r2, r1, r2
  453. str r2, [r0]
  454. ldr r6, DFT_ENABLE
  455. mov r10, $0
  456. str r10, [r6]
  457. /*
  458. * Call board-specific lowlevel init.
  459. * That MUST be present and THAT returns
  460. * back to arch calling code with "mov pc, lr."
  461. */
  462. b dv_board_init
  463. .ltorg
  464. _PINMUX0:
  465. .word 0x01c40000 /* Device Configuration Registers */
  466. _PINMUX1:
  467. .word 0x01c40004 /* Device Configuration Registers */
  468. _DEV_SETTING:
  469. .word 0x00000c1f
  470. WAITCFG:
  471. .word 0x01e00004
  472. WAITCFG_VAL:
  473. .word 0
  474. ACFG3:
  475. .word 0x01e00014
  476. ACFG3_VAL:
  477. .word 0x3ffffffd
  478. ACFG4:
  479. .word 0x01e00018
  480. ACFG4_VAL:
  481. .word 0x3ffffffd
  482. ACFG5:
  483. .word 0x01e0001c
  484. ACFG5_VAL:
  485. .word 0x3ffffffd
  486. MDCTL_DDR2:
  487. .word 0x01c41a34
  488. MDSTAT_DDR2:
  489. .word 0x01c41834
  490. PTCMD:
  491. .word 0x01c41120
  492. PTSTAT:
  493. .word 0x01c41128
  494. EINT_ENABLE0:
  495. .word 0x01c48018
  496. EINT_ENABLE1:
  497. .word 0x01c4801c
  498. PSC_FLAG_CLEAR:
  499. .word 0xffffffe0
  500. PSC_GEM_FLAG_CLEAR:
  501. .word 0xfffffeff
  502. /* DDR2 MMR & CONFIGURATION VALUES, 162 MHZ clock */
  503. DDRCTL:
  504. .word 0x200000e4
  505. DDRCTL_VAL:
  506. .word 0x50006405
  507. SDREF:
  508. .word 0x2000000c
  509. SDREF_VAL:
  510. .word 0x000005c3
  511. SDCFG:
  512. .word 0x20000008
  513. SDCFG_VAL:
  514. #ifdef DDR_4BANKS
  515. .word 0x00178622
  516. #elif defined DDR_8BANKS
  517. .word 0x00178632
  518. #else
  519. #error "Unknown DDR configuration!!!"
  520. #endif
  521. SDTIM0:
  522. .word 0x20000010
  523. SDTIM0_VAL_162MHz:
  524. .word 0x28923211
  525. SDTIM1:
  526. .word 0x20000014
  527. SDTIM1_VAL_162MHz:
  528. .word 0x0016c722
  529. VTPIOCR:
  530. .word 0x200000f0 /* VTP IO Control register */
  531. DDRVTPR:
  532. .word 0x01c42030 /* DDR VPTR MMR */
  533. VTP_MMR0:
  534. .word 0x201f
  535. VTP_MMR1:
  536. .word 0xa01f
  537. DFT_ENABLE:
  538. .word 0x01c4004c
  539. VTP_LOCK_COUNT:
  540. .word 0x5b0
  541. VTP_MASK:
  542. .word 0xffffdfff
  543. VTP_RECAL:
  544. .word 0x40000
  545. VTP_EN:
  546. .word 0x02000
  547. CFGTEST:
  548. .word 0x80010000
  549. MASK_VAL:
  550. .word 0x00000fff
  551. /* GEM Power Up & LPSC Control Register */
  552. MDCTL_GEM:
  553. .word 0x01c41a9c
  554. MDSTAT_GEM:
  555. .word 0x01c4189c
  556. /* For WDT reset chip bug */
  557. P1394:
  558. .word 0x01c41a20
  559. PLL_CLKSRC_MASK:
  560. .word 0xfffffeff /* Mask the Clock Mode bit */
  561. PLL_ENSRC_MASK:
  562. .word 0xffffffdf /* Select the PLLEN source */
  563. PLL_BYPASS_MASK:
  564. .word 0xfffffffe /* Put the PLL in BYPASS */
  565. PLL_RESET_MASK:
  566. .word 0xfffffff7 /* Put the PLL in Reset Mode */
  567. PLL_PWRUP_MASK:
  568. .word 0xfffffffd /* PLL Power up Mask Bit */
  569. PLL_DISABLE_ENABLE_MASK:
  570. .word 0xffffffef /* Enable the PLL from Disable */
  571. PLL_LOCK_COUNT:
  572. .word 0x2000
  573. /* PLL1-SYSTEM PLL MMRs */
  574. PLL1_CTL:
  575. .word 0x01c40900
  576. PLL1_PLLM:
  577. .word 0x01c40910
  578. /* PLL2-SYSTEM PLL MMRs */
  579. PLL2_CTL:
  580. .word 0x01c40d00
  581. PLL2_PLLM:
  582. .word 0x01c40d10
  583. PLL2_DIV1:
  584. .word 0x01c40d18
  585. PLL2_DIV2:
  586. .word 0x01c40d1c
  587. PLL2_PLLCMD:
  588. .word 0x01c40d38
  589. PLL2_PLLSTAT:
  590. .word 0x01c40d3c
  591. PLL2_DIV_MASK:
  592. .word 0xffff7fff
  593. MMARG_BRF0:
  594. .word 0x01c42010 /* BRF margin mode 0 (R/W)*/
  595. MMARG_BRF0_VAL:
  596. .word 0x00444400
  597. DDR2_START_ADDR:
  598. .word 0x80000000
  599. DUMMY_VAL:
  600. .word 0xa55aa55a