diff options
author | Paul Walmsley <paul@pwsan.com> | 2009-05-12 19:27:09 -0400 |
---|---|---|
committer | paul <paul@twilight.(none)> | 2009-05-12 19:27:09 -0400 |
commit | fa0406a8d8c3a4a302085ccd031d999161405f70 (patch) | |
tree | bc37051ba47599b871a0f438070821f8c4bbf0ea /arch/arm/mach-omap2/sram34xx.S | |
parent | d75d9e73cd59127a4d926a2bf5e9cdcc90f033d6 (diff) |
OMAP3 SRAM: clear the SDRC PWRENA bit during SDRC frequency change
Clear the SDRC_POWER.PWRENA bit before putting the SDRAM into self-refresh
mode. This prevents the SDRC from attempting to power off the SDRAM,
which can cause the system to hang.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/sram34xx.S')
-rw-r--r-- | arch/arm/mach-omap2/sram34xx.S | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S index 8d524f305633..9a454151c422 100644 --- a/arch/arm/mach-omap2/sram34xx.S +++ b/arch/arm/mach-omap2/sram34xx.S | |||
@@ -77,7 +77,9 @@ lock_dll: | |||
77 | sdram_in_selfrefresh: | 77 | sdram_in_selfrefresh: |
78 | ldr r4, omap3_sdrc_power @ read the SDRC_POWER register | 78 | ldr r4, omap3_sdrc_power @ read the SDRC_POWER register |
79 | ldr r5, [r4] @ read the contents of SDRC_POWER | 79 | ldr r5, [r4] @ read the contents of SDRC_POWER |
80 | mov r9, r5 @ keep a copy of SDRC_POWER bits | ||
80 | orr r5, r5, #0x40 @ enable self refresh on idle req | 81 | orr r5, r5, #0x40 @ enable self refresh on idle req |
82 | bic r5, r5, #0x4 @ clear PWDENA | ||
81 | str r5, [r4] @ write back to SDRC_POWER register | 83 | str r5, [r4] @ write back to SDRC_POWER register |
82 | ldr r5, [r4] @ posted-write barrier for SDRC | 84 | ldr r5, [r4] @ posted-write barrier for SDRC |
83 | ldr r4, omap3_cm_iclken1_core @ read the CM_ICLKEN1_CORE reg | 85 | ldr r4, omap3_cm_iclken1_core @ read the CM_ICLKEN1_CORE reg |
@@ -128,10 +130,9 @@ wait_sdrc_idle1: | |||
128 | and r5, r5, #0x2 | 130 | and r5, r5, #0x2 |
129 | cmp r5, #0 | 131 | cmp r5, #0 |
130 | bne wait_sdrc_idle1 | 132 | bne wait_sdrc_idle1 |
133 | restore_sdrc_power_val: | ||
131 | ldr r4, omap3_sdrc_power | 134 | ldr r4, omap3_sdrc_power |
132 | ldr r5, [r4] | 135 | str r9, [r4] @ restore SDRC_POWER, no barrier needed |
133 | bic r5, r5, #0x40 | ||
134 | str r5, [r4] | ||
135 | bx lr | 136 | bx lr |
136 | wait_dll_lock: | 137 | wait_dll_lock: |
137 | ldr r4, omap3_sdrc_dlla_status | 138 | ldr r4, omap3_sdrc_dlla_status |