Commit 1e81bc01 authored by Jean Pihet's avatar Jean Pihet Committed by Kevin Hilman

OMAP3: re-organize the ASM sleep code

Organize the code in the following sections:
- register access macros,
- API functions,
- internal functions.

Tested on N900 and Beagleboard with full RET and OFF modes,
using cpuidle and suspend.
Signed-off-by: default avatarJean Pihet <j-pihet@ti.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent fe360e1c
...@@ -79,6 +79,7 @@ ENTRY(get_restore_pointer) ...@@ -79,6 +79,7 @@ ENTRY(get_restore_pointer)
ldmfd sp!, {pc} @ restore regs and return ldmfd sp!, {pc} @ restore regs and return
ENTRY(get_restore_pointer_sz) ENTRY(get_restore_pointer_sz)
.word . - get_restore_pointer .word . - get_restore_pointer
.text .text
/* Function call to get the restore pointer for 3630 resume from OFF */ /* Function call to get the restore pointer for 3630 resume from OFF */
ENTRY(get_omap3630_restore_pointer) ENTRY(get_omap3630_restore_pointer)
...@@ -88,10 +89,19 @@ ENTRY(get_omap3630_restore_pointer) ...@@ -88,10 +89,19 @@ ENTRY(get_omap3630_restore_pointer)
ENTRY(get_omap3630_restore_pointer_sz) ENTRY(get_omap3630_restore_pointer_sz)
.word . - get_omap3630_restore_pointer .word . - get_omap3630_restore_pointer
.text
/* Function call to get the restore pointer for ES3 to resume from OFF */
ENTRY(get_es3_restore_pointer)
stmfd sp!, {lr} @ save registers on stack
adr r0, restore_es3
ldmfd sp!, {pc} @ restore regs and return
ENTRY(get_es3_restore_pointer_sz)
.word . - get_es3_restore_pointer
.text .text
/* /*
* L2 cache needs to be toggled for stable OFF mode functionality on 3630. * L2 cache needs to be toggled for stable OFF mode functionality on 3630.
* This function sets up a fflag that will allow for this toggling to take * This function sets up a flag that will allow for this toggling to take
* place on 3630. Hopefully some version in the future maynot need this * place on 3630. Hopefully some version in the future maynot need this
*/ */
ENTRY(enable_omap3630_toggle_l2_on_restore) ENTRY(enable_omap3630_toggle_l2_on_restore)
...@@ -101,58 +111,6 @@ ENTRY(enable_omap3630_toggle_l2_on_restore) ...@@ -101,58 +111,6 @@ ENTRY(enable_omap3630_toggle_l2_on_restore)
str r1, l2dis_3630 str r1, l2dis_3630
ldmfd sp!, {pc} @ restore regs and return ldmfd sp!, {pc} @ restore regs and return
.text
/* Function call to get the restore pointer for for ES3 to resume from OFF */
ENTRY(get_es3_restore_pointer)
stmfd sp!, {lr} @ save registers on stack
adr r0, restore_es3
ldmfd sp!, {pc} @ restore regs and return
ENTRY(get_es3_restore_pointer_sz)
.word . - get_es3_restore_pointer
ENTRY(es3_sdrc_fix)
ldr r4, sdrc_syscfg @ get config addr
ldr r5, [r4] @ get value
tst r5, #0x100 @ is part access blocked
it eq
biceq r5, r5, #0x100 @ clear bit if set
str r5, [r4] @ write back change
ldr r4, sdrc_mr_0 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_emr2_0 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_manual_0 @ get config addr
mov r5, #0x2 @ autorefresh command
str r5, [r4] @ kick off refreshes
ldr r4, sdrc_mr_1 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_emr2_1 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_manual_1 @ get config addr
mov r5, #0x2 @ autorefresh command
str r5, [r4] @ kick off refreshes
bx lr
sdrc_syscfg:
.word SDRC_SYSCONFIG_P
sdrc_mr_0:
.word SDRC_MR_0_P
sdrc_emr2_0:
.word SDRC_EMR2_0_P
sdrc_manual_0:
.word SDRC_MANUAL_0_P
sdrc_mr_1:
.word SDRC_MR_1_P
sdrc_emr2_1:
.word SDRC_EMR2_1_P
sdrc_manual_1:
.word SDRC_MANUAL_1_P
ENTRY(es3_sdrc_fix_sz)
.word . - es3_sdrc_fix
/* Function to call rom code to save secure ram context */ /* Function to call rom code to save secure ram context */
ENTRY(save_secure_ram_context) ENTRY(save_secure_ram_context)
stmfd sp!, {r1-r12, lr} @ save registers on stack stmfd sp!, {r1-r12, lr} @ save registers on stack
...@@ -578,6 +536,56 @@ skip_l2_inval: ...@@ -578,6 +536,56 @@ skip_l2_inval:
/* restore regs and return */ /* restore regs and return */
ldmfd sp!, {r0-r12, pc} ldmfd sp!, {r0-r12, pc}
/*
* Internal functions
*/
.text
ENTRY(es3_sdrc_fix)
ldr r4, sdrc_syscfg @ get config addr
ldr r5, [r4] @ get value
tst r5, #0x100 @ is part access blocked
it eq
biceq r5, r5, #0x100 @ clear bit if set
str r5, [r4] @ write back change
ldr r4, sdrc_mr_0 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_emr2_0 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_manual_0 @ get config addr
mov r5, #0x2 @ autorefresh command
str r5, [r4] @ kick off refreshes
ldr r4, sdrc_mr_1 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_emr2_1 @ get config addr
ldr r5, [r4] @ get value
str r5, [r4] @ write back change
ldr r4, sdrc_manual_1 @ get config addr
mov r5, #0x2 @ autorefresh command
str r5, [r4] @ kick off refreshes
bx lr
sdrc_syscfg:
.word SDRC_SYSCONFIG_P
sdrc_mr_0:
.word SDRC_MR_0_P
sdrc_emr2_0:
.word SDRC_EMR2_0_P
sdrc_manual_0:
.word SDRC_MANUAL_0_P
sdrc_mr_1:
.word SDRC_MR_1_P
sdrc_emr2_1:
.word SDRC_EMR2_1_P
sdrc_manual_1:
.word SDRC_MANUAL_1_P
ENTRY(es3_sdrc_fix_sz)
.word . - es3_sdrc_fix
/* Make sure SDRC accesses are ok */ /* Make sure SDRC accesses are ok */
wait_sdrc_ok: wait_sdrc_ok:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment