2 * Board specific setup info
5 * Texas Instruments, <www.ti.com>
6 * Kshitij Gupta <Kshitij@ti.com>
8 * Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
10 * See file CREDITS for list of people who contributed to this
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License as
15 * published by the Free Software Foundation; either version 2 of
16 * the License, or (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
32 #if defined(CONFIG_OMAP1610)
33 #include <./configs/omap1510.h>
38 .word TEXT_BASE /* sdram load addr from config.mk */
44 /*------------------------------------------------------*
45 *mask all IRQs by setting all bits in the INTMR default*
46 *------------------------------------------------------*/
53 /*------------------------------------------------------*
54 * Set up ARM CLM registers (IDLECT1) *
55 *------------------------------------------------------*/
56 ldr r0, REG_ARM_IDLECT1
57 ldr r1, VAL_ARM_IDLECT1
60 /*------------------------------------------------------*
61 * Set up ARM CLM registers (IDLECT2) *
62 *------------------------------------------------------*/
63 ldr r0, REG_ARM_IDLECT2
64 ldr r1, VAL_ARM_IDLECT2
67 /*------------------------------------------------------*
68 * Set up ARM CLM registers (IDLECT3) *
69 *------------------------------------------------------*/
70 ldr r0, REG_ARM_IDLECT3
71 ldr r1, VAL_ARM_IDLECT3
75 mov r1, #0x01 /* PER_EN bit */
76 ldr r0, REG_ARM_RSTCT2
77 strh r1, [r0] /* CLKM; Peripheral reset. */
79 /* Set CLKM to Sync-Scalable */
80 /* I supposedly need to enable the dsp clock before switching */
86 subs r0, r0, #0x1 /* wait for any bubbles to finish */
92 /* a few nops to let settle */
105 /* Ramp up the clock to 96Mhz */
106 ldr r1, VAL_DPLL1_CTL
107 ldr r0, REG_DPLL1_CTL
109 ands r1, r1, #0x10 /* Check if PLL is enabled. */
110 beq lock_end /* Do not look for lock if BYPASS selected */
113 ands r1, r1, #0x01 /* Check the LOCK bit.*/
114 beq 2b /* loop until bit goes hi. */
118 /*------------------------------------------------------*
119 * Turn off the watchdog during init... *
120 *------------------------------------------------------*/
122 ldr r1, WATCHDOG_VAL1
124 ldr r1, WATCHDOG_VAL2
146 /* Set memory timings corresponding to the new clock speed */
148 /* Check execution location to determine current execution location
149 * and branch to appropriate initialization code.
151 /* Load physical SDRAM base. */
153 /* Get current execution location. */
157 /* Skip over EMIF-fast initialization if running from SDRAM. */
161 * Delay for SDRAM initialization.
163 mov r3, #0x1800 /* value should be checked */
165 subs r3, r3, #0x1 /* Decrement count */
170 * Set SDRAM control values. Disable refresh before MRS command.
173 /* mobile ddr operation */
174 ldr r0, REG_SDRAM_OPERATION
178 /* config register */
179 ldr r0, REG_SDRAM_CONFIG
180 ldr r1, SDRAM_CONFIG_VAL
183 /* manual command register */
184 ldr r0, REG_SDRAM_MANUAL_CMD
185 /* issue set cke high */
186 mov r1, #CMD_SDRAM_CKE_SET_HIGH
189 mov r1, #CMD_SDRAM_NOP
195 bne waitMDDR1 /* delay loop */
197 /* issue precharge */
198 mov r1, #CMD_SDRAM_PRECHARGE
201 /* issue autorefresh x 2 */
202 mov r1, #CMD_SDRAM_AUTOREFRESH
206 /* mrs register ddr mobile */
207 ldr r0, REG_SDRAM_MRS
211 /* emrs1 low-power register */
212 ldr r0, REG_SDRAM_EMRS1
213 /* self refresh on all banks */
217 ldr r0, REG_DLL_URD_CONTROL
218 ldr r1, DLL_URD_CONTROL_VAL
221 ldr r0, REG_DLL_LRD_CONTROL
222 ldr r1, DLL_LRD_CONTROL_VAL
225 ldr r0, REG_DLL_WRT_CONTROL
226 ldr r1, DLL_WRT_CONTROL_VAL
236 * Delay for SDRAM initialization.
240 subs r3, r3, #1 /* Decrement count. */
246 ldr r0, REG_SDRAM_CONFIG
247 ldr r1, SDRAM_CONFIG_VAL
252 ldr r1, VAL_TC_EMIFS_CS0_CONFIG
253 ldr r0, REG_TC_EMIFS_CS0_CONFIG
254 str r1, [r0] /* Chip Select 0 */
256 ldr r1, VAL_TC_EMIFS_CS1_CONFIG
257 ldr r0, REG_TC_EMIFS_CS1_CONFIG
258 str r1, [r0] /* Chip Select 1 */
259 ldr r1, VAL_TC_EMIFS_CS3_CONFIG
260 ldr r0, REG_TC_EMIFS_CS3_CONFIG
261 str r1, [r0] /* Chip Select 3 */
263 #ifdef CONFIG_H2_OMAP1610
264 /* inserting additional 2 clock cycle hold time for LAN */
265 ldr r0, REG_TC_EMIFS_CS1_ADVANCED
266 ldr r1, VAL_TC_EMIFS_CS1_ADVANCED
269 /* Start MPU Timer 1 */
270 ldr r0, REG_MPU_LOAD_TIMER
271 ldr r1, VAL_MPU_LOAD_TIMER
274 ldr r0, REG_MPU_CNTL_TIMER
275 ldr r1, VAL_MPU_CNTL_TIMER
278 /* back to arch calling code */
281 /* the literal pools origin */
285 REG_TC_EMIFS_CONFIG: /* 32 bits */
287 REG_TC_EMIFS_CS0_CONFIG: /* 32 bits */
289 REG_TC_EMIFS_CS1_CONFIG: /* 32 bits */
291 REG_TC_EMIFS_CS2_CONFIG: /* 32 bits */
293 REG_TC_EMIFS_CS3_CONFIG: /* 32 bits */
296 #ifdef CONFIG_H2_OMAP1610
297 REG_TC_EMIFS_CS1_ADVANCED: /* 32 bits */
301 /* MPU clock/reset/power mode control registers */
302 REG_ARM_CKCTL: /* 16 bits */
305 REG_ARM_IDLECT3: /* 16 bits */
307 REG_ARM_IDLECT2: /* 16 bits */
309 REG_ARM_IDLECT1: /* 16 bits */
312 REG_ARM_RSTCT2: /* 16 bits */
314 REG_ARM_SYSST: /* 16 bits */
316 /* DPLL control registers */
317 REG_DPLL1_CTL: /* 16 bits */
320 /* Watch Dog register */
321 /* secure watchdog stop */
324 /* watchdog write pending */
333 /* SDRAM config is: auto refresh enabled, 16 bit 4 bank,
334 counter @8192 rows, 10 ns, 8 burst */
338 /* Operation register */
342 /* Manual command register */
343 REG_SDRAM_MANUAL_CMD:
346 /* SDRAM MRS (New) config is: CAS latency is 2, burst length 8 */
350 /* SDRAM MRS (New) config is: CAS latency is 2, burst length 8 */
354 /* WRT DLL register */
360 /* URD DLL register */
366 /* LRD DLL register */
378 /* 96 MHz Samsung Mobile DDR */
390 #ifdef CONFIG_INNOVATOROMAP1610
391 VAL_TC_EMIFS_CS0_CONFIG:
393 VAL_TC_EMIFS_CS1_CONFIG:
395 VAL_TC_EMIFS_CS2_CONFIG:
397 VAL_TC_EMIFS_CS3_CONFIG:
401 #ifdef CONFIG_H2_OMAP1610
402 VAL_TC_EMIFS_CS0_CONFIG:
404 VAL_TC_EMIFS_CS1_CONFIG:
406 VAL_TC_EMIFS_CS2_CONFIG:
408 VAL_TC_EMIFS_CS3_CONFIG:
410 VAL_TC_EMIFS_CS1_ADVANCED:
414 VAL_TC_EMIFF_SDRAM_CONFIG:
438 .equ CMD_SDRAM_NOP, 0x00000000
439 .equ CMD_SDRAM_PRECHARGE, 0x00000001
440 .equ CMD_SDRAM_AUTOREFRESH, 0x00000002
441 .equ CMD_SDRAM_CKE_SET_HIGH, 0x00000007