Commit | Line | Data |
---|---|---|
92105bb7 | 1 | /* |
f30c2269 | 2 | * linux/arch/arm/plat-omap/sram-fn.S |
92105bb7 TL |
3 | * |
4 | * Functions that need to be run in internal SRAM | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License version 2 as | |
8 | * published by the Free Software Foundation. | |
9 | */ | |
10 | ||
92105bb7 TL |
11 | #include <linux/linkage.h> |
12 | #include <asm/assembler.h> | |
a09e64fb RK |
13 | #include <mach/io.h> |
14 | #include <mach/hardware.h> | |
92105bb7 TL |
15 | |
16 | .text | |
17 | ||
18 | /* | |
19 | * Reprograms ULPD and CKCTL. | |
20 | */ | |
b6338bdc | 21 | .align 3 |
c2d43e39 | 22 | ENTRY(omap1_sram_reprogram_clock) |
92105bb7 TL |
23 | stmfd sp!, {r0 - r12, lr} @ save registers on stack |
24 | ||
94113260 TL |
25 | mov r2, #OMAP1_IO_ADDRESS(DPLL_CTL) & 0xff000000 |
26 | orr r2, r2, #OMAP1_IO_ADDRESS(DPLL_CTL) & 0x00ff0000 | |
27 | orr r2, r2, #OMAP1_IO_ADDRESS(DPLL_CTL) & 0x0000ff00 | |
92105bb7 | 28 | |
94113260 TL |
29 | mov r3, #OMAP1_IO_ADDRESS(ARM_CKCTL) & 0xff000000 |
30 | orr r3, r3, #OMAP1_IO_ADDRESS(ARM_CKCTL) & 0x00ff0000 | |
31 | orr r3, r3, #OMAP1_IO_ADDRESS(ARM_CKCTL) & 0x0000ff00 | |
92105bb7 TL |
32 | |
33 | tst r0, #1 << 4 @ want lock mode? | |
34 | beq newck @ nope | |
35 | bic r0, r0, #1 << 4 @ else clear lock bit | |
36 | strh r0, [r2] @ set dpll into bypass mode | |
37 | orr r0, r0, #1 << 4 @ set lock bit again | |
38 | ||
39 | newck: | |
40 | strh r1, [r3] @ write new ckctl value | |
41 | strh r0, [r2] @ write new dpll value | |
42 | ||
43 | mov r4, #0x0700 @ let the clocks settle | |
44 | orr r4, r4, #0x00ff | |
45 | delay: sub r4, r4, #1 | |
46 | cmp r4, #0 | |
47 | bne delay | |
48 | ||
49 | lock: ldrh r4, [r2], #0 @ read back dpll value | |
50 | tst r0, #1 << 4 @ want lock mode? | |
51 | beq out @ nope | |
52 | tst r4, #1 << 0 @ dpll rate locked? | |
53 | beq lock @ try again | |
54 | ||
55 | out: | |
56 | ldmfd sp!, {r0 - r12, pc} @ restore regs and return | |
c2d43e39 TL |
57 | ENTRY(omap1_sram_reprogram_clock_sz) |
58 | .word . - omap1_sram_reprogram_clock |