diff options
author | Paul Walmsley <paul@pwsan.com> | 2009-05-12 19:26:32 -0400 |
---|---|---|
committer | paul <paul@twilight.(none)> | 2009-05-12 19:27:10 -0400 |
commit | 4519c2bf433b97d091635eb51e4ba8ffa1c84d62 (patch) | |
tree | 0b36fc5e39c6a29005783c74f727c953c75e2198 /arch/arm/mach-omap2/sram34xx.S | |
parent | b2abb271a5705bc80478e79d95fc9f3babc2605c (diff) |
OMAP3 clock: only unlock SDRC DLL if SDRC clk < 83MHz
According to the 34xx TRM Rev. K section 11.2.4.4.11.1 "Purpose of the
DLL/CDL Module," the SDRC delay-locked-loop can be locked at any SDRC
clock frequency from 83MHz to 166MHz. CDP code unconditionally
unlocked the DLL whenever shifting to a lower SDRC speed, but this
seems unnecessary and error-prone, as the DLL is no longer able to
compensate for process, voltage, and temperature variations. Instead,
only unlock the DLL when the SDRC clock rate would be less than 83MHz.
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 | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/sram34xx.S b/arch/arm/mach-omap2/sram34xx.S index 35131e5bc7d1..c080c82521e1 100644 --- a/arch/arm/mach-omap2/sram34xx.S +++ b/arch/arm/mach-omap2/sram34xx.S | |||
@@ -40,22 +40,23 @@ | |||
40 | /* | 40 | /* |
41 | * Change frequency of core dpll | 41 | * Change frequency of core dpll |
42 | * r0 = sdrc_rfr_ctrl r1 = sdrc_actim_ctrla r2 = sdrc_actim_ctrlb r3 = M2 | 42 | * r0 = sdrc_rfr_ctrl r1 = sdrc_actim_ctrla r2 = sdrc_actim_ctrlb r3 = M2 |
43 | * r4 = Unlock SDRC DLL? (1 = yes, 0 = no) -- only unlock DLL for | ||
44 | * SDRC rates < 83MHz | ||
43 | */ | 45 | */ |
44 | ENTRY(omap3_sram_configure_core_dpll) | 46 | ENTRY(omap3_sram_configure_core_dpll) |
45 | stmfd sp!, {r1-r12, lr} @ store regs to stack | 47 | stmfd sp!, {r1-r12, lr} @ store regs to stack |
48 | ldr r4, [sp, #52] @ pull extra args off the stack | ||
46 | dsb @ flush buffered writes to interconnect | 49 | dsb @ flush buffered writes to interconnect |
47 | cmp r3, #0x2 | 50 | cmp r3, #0x2 |
48 | blne configure_sdrc | 51 | blne configure_sdrc |
49 | cmp r3, #0x2 | 52 | cmp r4, #0x1 |
53 | bleq unlock_dll | ||
50 | blne lock_dll | 54 | blne lock_dll |
51 | cmp r3, #0x1 | ||
52 | blne unlock_dll | ||
53 | bl sdram_in_selfrefresh @ put the SDRAM in self refresh | 55 | bl sdram_in_selfrefresh @ put the SDRAM in self refresh |
54 | bl configure_core_dpll | 56 | bl configure_core_dpll |
55 | bl enable_sdrc | 57 | bl enable_sdrc |
56 | cmp r3, #0x1 | 58 | cmp r4, #0x1 |
57 | blne wait_dll_unlock | 59 | bleq wait_dll_unlock |
58 | cmp r3, #0x2 | ||
59 | blne wait_dll_lock | 60 | blne wait_dll_lock |
60 | cmp r3, #0x1 | 61 | cmp r3, #0x1 |
61 | blne configure_sdrc | 62 | blne configure_sdrc |