1
2
3
4
5
6
7
8
9
10
11#include <linux/linkage.h>
12
13#include <asm/assembler.h>
14
15#include <mach/hardware.h>
16
17#include "iomap.h"
18
19 .text
20
21
22
23
24 .align 3
25ENTRY(omap1_sram_reprogram_clock)
26 stmfd sp!, {r0 - r12, lr} @ save registers on stack
27
28 mov r2,
29 orr r2, r2,
30 orr r2, r2,
31
32 mov r3,
33 orr r3, r3,
34 orr r3, r3,
35
36 tst r0,
37 beq newck @ nope
38 bic r0, r0,
39 strh r0, [r2] @ set dpll into bypass mode
40 orr r0, r0,
41
42newck:
43 strh r1, [r3] @ write new ckctl value
44 strh r0, [r2] @ write new dpll value
45
46 mov r4,
47 orr r4, r4,
48delay: sub r4, r4,
49 cmp r4,
50 bne delay
51
52lock: ldrh r4, [r2],
53 tst r0,
54 beq out @ nope
55 tst r4,
56 beq lock @ try again
57
58out:
59 ldmfd sp!, {r0 - r12, pc} @ restore regs and return
60ENTRY(omap1_sram_reprogram_clock_sz)
61 .word . - omap1_sram_reprogram_clock
62