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
74 #ifdef CONFIG_CS_AUTOBOOT /* do the setup depending on boot mode */
78 beq disable_wd /* booting from RAM, skip setup */
81 mov r1, #0x01 /* PER_EN bit */
82 ldr r0, REG_ARM_RSTCT2
83 strh r1, [r0] /* CLKM; Peripheral reset. */
85 /* Set CLKM to Sync-Scalable */
86 /* I supposedly need to enable the dsp clock before switching */
92 subs r0, r0, #0x1 /* wait for any bubbles to finish */
98 /* a few nops to let settle */
111 /* Ramp up the clock to 96Mhz */
112 ldr r1, VAL_DPLL1_CTL
113 ldr r0, REG_DPLL1_CTL
115 ands r1, r1, #0x10 /* Check if PLL is enabled. */
116 beq lock_end /* Do not look for lock if BYPASS selected */
119 ands r1, r1, #0x01 /* Check the LOCK bit.*/
120 beq 2b /* loop until bit goes hi. */
124 /*------------------------------------------------------*
125 * Turn off the watchdog during init... *
126 *------------------------------------------------------*/
129 ldr r1, WATCHDOG_VAL1
131 ldr r1, WATCHDOG_VAL2
153 /* Set memory timings corresponding to the new clock speed */
155 /* Check execution location to determine current execution location
156 * and branch to appropriate initialization code.
158 /* Load physical SDRAM base. */
160 /* Get current execution location. */
164 /* Skip over EMIF-fast initialization if running from SDRAM. */
168 * Delay for SDRAM initialization.
170 mov r3, #0x1800 /* value should be checked */
172 subs r3, r3, #0x1 /* Decrement count */
177 * Set SDRAM control values. Disable refresh before MRS command.
180 /* mobile ddr operation */
181 ldr r0, REG_SDRAM_OPERATION
185 /* config register */
186 ldr r0, REG_SDRAM_CONFIG
187 ldr r1, SDRAM_CONFIG_VAL
190 /* manual command register */
191 ldr r0, REG_SDRAM_MANUAL_CMD
192 /* issue set cke high */
193 mov r1, #CMD_SDRAM_CKE_SET_HIGH
196 mov r1, #CMD_SDRAM_NOP
202 bne waitMDDR1 /* delay loop */
204 /* issue precharge */
205 mov r1, #CMD_SDRAM_PRECHARGE
208 /* issue autorefresh x 2 */
209 mov r1, #CMD_SDRAM_AUTOREFRESH
213 /* mrs register ddr mobile */
214 ldr r0, REG_SDRAM_MRS
218 /* emrs1 low-power register */
219 ldr r0, REG_SDRAM_EMRS1
220 /* self refresh on all banks */
224 ldr r0, REG_DLL_URD_CONTROL
225 ldr r1, DLL_URD_CONTROL_VAL
228 ldr r0, REG_DLL_LRD_CONTROL
229 ldr r1, DLL_LRD_CONTROL_VAL
232 ldr r0, REG_DLL_WRT_CONTROL
233 ldr r1, DLL_WRT_CONTROL_VAL
243 * Delay for SDRAM initialization.
247 subs r3, r3, #1 /* Decrement count. */
253 ldr r0, REG_SDRAM_CONFIG
254 ldr r1, SDRAM_CONFIG_VAL
259 ldr r1, VAL_TC_EMIFS_CS0_CONFIG
260 ldr r0, REG_TC_EMIFS_CS0_CONFIG
261 str r1, [r0] /* Chip Select 0 */
263 ldr r1, VAL_TC_EMIFS_CS1_CONFIG
264 ldr r0, REG_TC_EMIFS_CS1_CONFIG
265 str r1, [r0] /* Chip Select 1 */
266 ldr r1, VAL_TC_EMIFS_CS3_CONFIG
267 ldr r0, REG_TC_EMIFS_CS3_CONFIG
268 str r1, [r0] /* Chip Select 3 */
270 #ifdef CONFIG_H2_OMAP1610
271 /* inserting additional 2 clock cycle hold time for LAN */
272 ldr r0, REG_TC_EMIFS_CS1_ADVANCED
273 ldr r1, VAL_TC_EMIFS_CS1_ADVANCED
276 /* Start MPU Timer 1 */
277 ldr r0, REG_MPU_LOAD_TIMER
278 ldr r1, VAL_MPU_LOAD_TIMER
281 ldr r0, REG_MPU_CNTL_TIMER
282 ldr r1, VAL_MPU_CNTL_TIMER
285 /* back to arch calling code */
288 /* the literal pools origin */
291 #ifdef CONFIG_CS_AUTOBOOT
293 .word 0xfffe1130 /* 32 bits */
296 REG_TC_EMIFS_CONFIG: /* 32 bits */
298 REG_TC_EMIFS_CS0_CONFIG: /* 32 bits */
300 REG_TC_EMIFS_CS1_CONFIG: /* 32 bits */
302 REG_TC_EMIFS_CS2_CONFIG: /* 32 bits */
304 REG_TC_EMIFS_CS3_CONFIG: /* 32 bits */
307 #ifdef CONFIG_H2_OMAP1610
308 REG_TC_EMIFS_CS1_ADVANCED: /* 32 bits */
312 /* MPU clock/reset/power mode control registers */
313 REG_ARM_CKCTL: /* 16 bits */
316 REG_ARM_IDLECT3: /* 16 bits */
318 REG_ARM_IDLECT2: /* 16 bits */
320 REG_ARM_IDLECT1: /* 16 bits */
323 REG_ARM_RSTCT2: /* 16 bits */
325 REG_ARM_SYSST: /* 16 bits */
327 /* DPLL control registers */
328 REG_DPLL1_CTL: /* 16 bits */
331 /* Watch Dog register */
332 /* secure watchdog stop */
335 /* watchdog write pending */
344 /* SDRAM config is: auto refresh enabled, 16 bit 4 bank,
345 counter @8192 rows, 10 ns, 8 burst */
349 /* Operation register */
353 /* Manual command register */
354 REG_SDRAM_MANUAL_CMD:
357 /* SDRAM MRS (New) config is: CAS latency is 2, burst length 8 */
361 /* SDRAM MRS (New) config is: CAS latency is 2, burst length 8 */
365 /* WRT DLL register */
371 /* URD DLL register */
377 /* LRD DLL register */
389 /* 96 MHz Samsung Mobile DDR */
401 #ifdef CONFIG_INNOVATOROMAP1610
402 VAL_TC_EMIFS_CS0_CONFIG:
404 VAL_TC_EMIFS_CS1_CONFIG:
406 VAL_TC_EMIFS_CS2_CONFIG:
408 VAL_TC_EMIFS_CS3_CONFIG:
412 #ifdef CONFIG_H2_OMAP1610
413 VAL_TC_EMIFS_CS0_CONFIG:
415 VAL_TC_EMIFS_CS1_CONFIG:
417 VAL_TC_EMIFS_CS2_CONFIG:
419 VAL_TC_EMIFS_CS3_CONFIG:
421 VAL_TC_EMIFS_CS1_ADVANCED:
425 VAL_TC_EMIFF_SDRAM_CONFIG:
449 .equ CMD_SDRAM_NOP, 0x00000000
450 .equ CMD_SDRAM_PRECHARGE, 0x00000001
451 .equ CMD_SDRAM_AUTOREFRESH, 0x00000002
452 .equ CMD_SDRAM_CKE_SET_HIGH, 0x00000007