2 * Board specific setup info
4 * (C) Copyright 2003-2004
6 * Texas Instruments, <www.ti.com>
7 * Kshitij Gupta <Kshitij@ti.com>
9 * Modified for OMAP 1610 H2 board by Nishant Kamat, Jan 2004
11 * Modified for OMAP730 P2 Board by Dave Peverley, MPC-Data Limited
12 * (http://www.mpc-data.co.uk)
14 * TODO : Tidy up and change to use system register defines
15 * from omap730.h where possible.
17 * SPDX-License-Identifier: GPL-2.0+
23 #if defined(CONFIG_OMAP730)
24 #include <./configs/omap730.h>
28 .word CONFIG_SYS_TEXT_BASE /* sdram load addr from config.mk */
32 /* Save callers address in r11 - r11 must never be modified */
35 /*------------------------------------------------------*
36 *mask all IRQs by setting all bits in the INTMR default*
37 *------------------------------------------------------*/
44 /*------------------------------------------------------*
45 * Set up ARM CLM registers (IDLECT1) *
46 *------------------------------------------------------*/
47 ldr r0, REG_ARM_IDLECT1
48 ldr r1, VAL_ARM_IDLECT1
51 /*------------------------------------------------------*
52 * Set up ARM CLM registers (IDLECT2) *
53 *------------------------------------------------------*/
54 ldr r0, REG_ARM_IDLECT2
55 ldr r1, VAL_ARM_IDLECT2
58 /*------------------------------------------------------*
59 * Set up ARM CLM registers (IDLECT3) *
60 *------------------------------------------------------*/
61 ldr r0, REG_ARM_IDLECT3
62 ldr r1, VAL_ARM_IDLECT3
66 mov r1, #0x01 /* PER_EN bit */
67 ldr r0, REG_ARM_RSTCT2
68 strh r1, [r0] /* CLKM; Peripheral reset. */
70 /* Set CLKM to Sync-Scalable */
71 /* I supposedly need to enable the dsp clock before switching */
77 subs r0, r0, #0x1 /* wait for any bubbles to finish */
83 /* a few nops to let settle */
96 /* Ramp up the clock to 96Mhz */
100 ands r1, r1, #0x10 /* Check if PLL is enabled. */
101 beq lock_end /* Do not look for lock if BYPASS selected */
104 ands r1, r1, #0x01 /* Check the LOCK bit.*/
105 beq 2b /* loop until bit goes hi. */
108 /*------------------------------------------------------*
109 * Turn off the watchdog during init... *
110 *------------------------------------------------------*/
112 ldr r1, WATCHDOG_VAL1
114 ldr r1, WATCHDOG_VAL2
135 /* Set memory timings corresponding to the new clock speed */
137 /* Check execution location to determine current execution location
138 * and branch to appropriate initialization code.
140 /* Compare physical SDRAM base & current execution location. */
141 and r0, pc, #0xF0000000
144 /* Skip over EMIF-fast initialization if running from SDRAM. */
148 * Delay for SDRAM initialization.
150 mov r3, #0x1800 /* value should be checked */
152 subs r3, r3, #0x1 /* Decrement count */
155 ldr r0, REG_SDRAM_CONFIG
156 ldr r1, SDRAM_CONFIG_VAL
159 ldr r0, REG_SDRAM_MRS_LEGACY
160 ldr r1, SDRAM_MRS_VAL
167 ldr r1, VAL_TC_EMIFS_CS0_CONFIG
168 ldr r0, REG_TC_EMIFS_CS0_CONFIG
169 str r1, [r0] /* Chip Select 0 */
171 ldr r1, VAL_TC_EMIFS_CS1_CONFIG
172 ldr r0, REG_TC_EMIFS_CS1_CONFIG
173 str r1, [r0] /* Chip Select 1 */
174 ldr r1, VAL_TC_EMIFS_CS2_CONFIG
175 ldr r0, REG_TC_EMIFS_CS2_CONFIG
176 str r1, [r0] /* Chip Select 2 */
177 ldr r1, VAL_TC_EMIFS_CS3_CONFIG
178 ldr r0, REG_TC_EMIFS_CS3_CONFIG
179 str r1, [r0] /* Chip Select 3 */
181 /* 48MHz clock request for UART1 */
182 ldr r1, PERSEUS2_CONFIG_BASE
183 ldrh r0, [r1, #CONFIG_PCC_CONF]
184 orr r0, r0, #CONF_MOD_UART1_CLK_MODE_R
185 strh r0, [r1, #CONFIG_PCC_CONF]
187 /* Initialize public and private rheas
188 * - set access factor 2 on both rhea / strobe
189 * - disable write buffer on strb0, enable write buffer on strb1
192 ldr R0, REG_RHEA_PUB_CTL
193 ldr R1, REG_RHEA_PRIV_CTL
197 mov R3, #2 /* disable write buffer on strb0, enable write buffer on strb1 */
198 strh R3, [R0, #0x08] /* arm rhea control reg */
201 /* enable IRQ and FIQ */
204 bic r4, r4, #IRQ_MASK
205 bic r4, r4, #FIQ_MASK
208 /* set TAP CONF to TRI EMULATION */
210 ldr r1, [r0, #CONFIG_MODE2]
213 str r1, [r0, #CONFIG_MODE2]
215 /* set tdbgen to 1 */
217 ldr r0, PERSEUS2_CONFIG_BASE
218 ldr r1, [r0, #CONFIG_MODE1]
221 str r1, [r0, #CONFIG_MODE1]
223 #ifdef CONFIG_P2_OMAP1610
224 /* inserting additional 2 clock cycle hold time for LAN */
225 ldr r0, REG_TC_EMIFS_CS1_ADVANCED
226 ldr r1, VAL_TC_EMIFS_CS1_ADVANCED
229 /* Start MPU Timer 1 */
230 ldr r0, REG_MPU_LOAD_TIMER
231 ldr r1, VAL_MPU_LOAD_TIMER
234 ldr r0, REG_MPU_CNTL_TIMER
235 ldr r1, VAL_MPU_CNTL_TIMER
238 /* back to arch calling code */
241 /* the literal pools origin */
244 REG_TC_EMIFS_CONFIG: /* 32 bits */
246 REG_TC_EMIFS_CS0_CONFIG: /* 32 bits */
248 REG_TC_EMIFS_CS1_CONFIG: /* 32 bits */
250 REG_TC_EMIFS_CS2_CONFIG: /* 32 bits */
252 REG_TC_EMIFS_CS3_CONFIG: /* 32 bits */
255 #ifdef CONFIG_P2_OMAP730
256 REG_TC_EMIFS_CS1_ADVANCED: /* 32 bits */
260 /* MPU clock/reset/power mode control registers */
261 REG_ARM_CKCTL: /* 16 bits */
264 REG_ARM_IDLECT3: /* 16 bits */
266 REG_ARM_IDLECT2: /* 16 bits */
268 REG_ARM_IDLECT1: /* 16 bits */
271 REG_ARM_RSTCT2: /* 16 bits */
273 REG_ARM_SYSST: /* 16 bits */
275 /* DPLL control registers */
276 REG_DPLL1_CTL: /* 16 bits */
279 /* Watch Dog register */
280 /* secure watchdog stop */
283 /* watchdog write pending */
292 /* SDRAM config is: auto refresh enabled, 16 bit 4 bank,
293 counter @8192 rows, 10 ns, 8 burst */
297 REG_SDRAM_MRS_LEGACY:
308 /* Public and private rhea bridge registers definition */
316 /* EMIFF SDRAM Configuration register
317 - self refresh disable
318 - auto refresh enabled
319 - SDRAM type 64 Mb, 16 bits bus 4 banks
321 - SDRAM clock disabled
326 /* Burst full page length ; cas latency = 3 */
335 #ifdef CONFIG_P2_OMAP730
336 VAL_TC_EMIFS_CS0_CONFIG:
338 VAL_TC_EMIFS_CS1_CONFIG:
340 VAL_TC_EMIFS_CS2_CONFIG:
342 VAL_TC_EMIFS_CS3_CONFIG:
344 VAL_TC_EMIFS_CS1_ADVANCED:
368 /* Config Register vals */
369 PERSEUS2_CONFIG_BASE:
372 .equ CONFIG_PCC_CONF, 0xB4
373 .equ CONFIG_MODE1, 0x10
374 .equ CONFIG_MODE2, 0x14
375 .equ CONF_MOD_UART1_CLK_MODE_R, 0x0A
378 .equ IRQ_MASK, 0x80 /* IRQ mask value */
379 .equ FIQ_MASK, 0x40 /* FIQ mask value */