arm: omap3: fix SRAM copy and execution sequence
Fix size calculation in copy of go_to_speed into SRAM. Use SRAM_CLK_CODE in call to SRAM-based go_to_speed. Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
This commit is contained in:
parent
e633ac0196
commit
8d20836615
|
@ -183,8 +183,7 @@ static void dpll3_init_34xx(u32 sil_index, u32 clk_index)
|
||||||
* if running from flash, jump to small relocated code
|
* if running from flash, jump to small relocated code
|
||||||
* area in SRAM.
|
* area in SRAM.
|
||||||
*/
|
*/
|
||||||
f_lock_pll = (void *) ((u32) &_end_vect - (u32) &_start +
|
f_lock_pll = (void *) (SRAM_CLK_CODE);
|
||||||
SRAM_VECT_CODE);
|
|
||||||
|
|
||||||
p0 = readl(&prcm_base->clken_pll);
|
p0 = readl(&prcm_base->clken_pll);
|
||||||
sr32(&p0, 0, 3, PLL_FAST_RELOCK_BYPASS);
|
sr32(&p0, 0, 3, PLL_FAST_RELOCK_BYPASS);
|
||||||
|
@ -401,8 +400,7 @@ static void dpll3_init_36xx(u32 sil_index, u32 clk_index)
|
||||||
* if running from flash, jump to small relocated code
|
* if running from flash, jump to small relocated code
|
||||||
* area in SRAM.
|
* area in SRAM.
|
||||||
*/
|
*/
|
||||||
f_lock_pll = (void *) ((u32) &_end_vect - (u32) &_start +
|
f_lock_pll = (void *) (SRAM_CLK_CODE);
|
||||||
SRAM_VECT_CODE);
|
|
||||||
|
|
||||||
p0 = readl(&prcm_base->clken_pll);
|
p0 = readl(&prcm_base->clken_pll);
|
||||||
sr32(&p0, 0, 3, PLL_FAST_RELOCK_BYPASS);
|
sr32(&p0, 0, 3, PLL_FAST_RELOCK_BYPASS);
|
||||||
|
|
|
@ -69,15 +69,13 @@ ENDPROC(do_omap3_emu_romcode_call)
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
ENTRY(cpy_clk_code)
|
ENTRY(cpy_clk_code)
|
||||||
/* Copy DPLL code into SRAM */
|
/* Copy DPLL code into SRAM */
|
||||||
adr r0, go_to_speed /* get addr of clock setting code */
|
adr r0, go_to_speed /* copy from start of go_to_speed... */
|
||||||
mov r2, #384 /* r2 size to copy (div by 32 bytes) */
|
adr r2, lowlevel_init /* ... up to start of low_level_init */
|
||||||
mov r1, r1 /* r1 <- dest address (passed in) */
|
|
||||||
add r2, r2, r0 /* r2 <- source end address */
|
|
||||||
next2:
|
next2:
|
||||||
ldmia r0!, {r3 - r10} /* copy from source address [r0] */
|
ldmia r0!, {r3 - r10} /* copy from source address [r0] */
|
||||||
stmia r1!, {r3 - r10} /* copy to target address [r1] */
|
stmia r1!, {r3 - r10} /* copy to target address [r1] */
|
||||||
cmp r0, r2 /* until source end address [r2] */
|
cmp r0, r2 /* until source end address [r2] */
|
||||||
bne next2
|
blo next2
|
||||||
mov pc, lr /* back to caller */
|
mov pc, lr /* back to caller */
|
||||||
ENDPROC(cpy_clk_code)
|
ENDPROC(cpy_clk_code)
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,4 @@ extern dpll_param *get_36x_core_dpll_param(void);
|
||||||
extern dpll_param *get_36x_per_dpll_param(void);
|
extern dpll_param *get_36x_per_dpll_param(void);
|
||||||
extern dpll_param *get_36x_per2_dpll_param(void);
|
extern dpll_param *get_36x_per2_dpll_param(void);
|
||||||
|
|
||||||
extern void *_end_vect, *_start;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue