1 #include <linux/linkage.h>
2 #include <asm/memory.h>
4 #include <asm/vfpmacros.h>
5 #include <asm/thread_notify.h>
6 #include <asm/ptrace.h>
7 #include <asm/assembler.h>
8 #include <asm/asm-offsets.h>
9 #include <mach/rk29_iomap.h>
13 # call to the defined funcion.
14 # r0: func argument array , max = 6
16 # r2: the function number.
18 #; EXPORT __scu_call_wrap
21 #; AREA ||funwrap||, CODE, READONLY
22 ENTRY(__scu_call_wrap)
23 STMFD r13!,{r4,r5,r6,lr}
30 LDMFD r13!,{r4,r5,r6,pc}
33 * 20091126,HSL@RK,change to get syscall struct pt_regs *.
34 * way: search stack frame for lr = ret_fast_syscall.
35 * code from bachtrace.S -- __backtrace.
36 * 20110126,not support at 2.6.32(no fp)
37 * 20110127,support at debug.c,use c funtion.
45 ENTRY(__scu_get_usr_regs)
51 * 20091215,continue running from break point.
52 * r0 is the struct pt_regs *.
54 ENTRY(__scu_bk_continue)
58 ldmia r12, {r0 - pc}^ @ load r0 - pc, cpsr
65 /* 20110212,HSL@RK, USE parm0 for debug.
80 /* adr r0 , __prk_info
90 BIC r0,r0,#(1<<0) @disable mmu
91 BIC r0,r0,#(1<<13) @set vector to 0x00000000
92 BIC r0,r0,#(1<<12) @disable I CACHE
93 BIC r0,r0,#(1<<2) @disable D DACHE
94 BIC r0,r0,#(1<<11) @disable Z
95 BIC r0,r0,#(1<<28) @disable TRE
98 mcr p15, 0, r0, c7, c10, 5
99 mcr p15, 0, r0, c7, c10, 4
108 ldr r8,[r7,#0x10] @uart1 reg
122 ldr r8,[r7,#0xc] @CRU reg
124 bic r9,r9,#0x3 @CPU slow mode
125 bic r9,r9,#(0x3<<2) @Peri slow mode
132 ldr r9,[r8,#0x0c] @CRU_PPLL_CON bit 15=1, Peri PLL power down
139 ldr r9,[r8,#0x2c] @CRU_CLKSEL6_CON bit [8:2] = 7, bit [1:0] =0
146 ldr r9,[r8,#0x30] @CRU_CLKSEL7_CON bit [23:18] = 0x17, bit [1:0] = 0
147 bic r9,r9,#(0x3F<<18)
149 orr r9,r9,#(0x17<<18)
153 ldr r9,[r8,#0x34] @CRU_CLKSEL8_CON bit [21:20] = 0x2, bit [19:14] = 0, bit [2:0] = 0
155 bic r9,r9,#(0x3F<<14)
161 ldr r9,[r8,#0x5c] @CRU_CLKGATE0_CON
162 bic r9,r9,#(0x1<<31) @GRF clk enable
163 bic r9,r9,#(0x1<<30) @PMU clk enable
164 bic r9,r9,#(0x1<<27) @DEBUG clk enable
165 bic r9,r9,#(0x7<<18) @DDR clk enable
166 bic r9,r9,#(0x1<<14) @mask rom clk enable
167 bic r9,r9,#(0x1<<12) @Int Mem clk enable
168 bic r9,r9,#(0x1<<11) @GIC clk enable
169 bic r9,r9,#(0xFF) @CPU clk enable
173 ldr r9,[r8,#0x60] @CRU_CLKGATE1_CON
174 bic r9,r9,#(0x3<<25) @USB clk enable
175 bic r9,r9,#(0x3<<23) @eMMC clk enable
176 bic r9,r9,#(0x1<<16) @NANC clk enable
177 bic r9,r9,#(0x1<<6) @DDR PERIPH AXI clk enable
178 bic r9,r9,#0x17 @PERIPH clk enable
181 ldr r9,[r8,#0x64] @CRU_CLKGATE2_CON
182 bic r9,r9,#(0x1<<26) @JTAG clk enable
183 bic r9,r9,#(0x1<<15) @SPI0 clk enable
184 bic r9,r9,#0x1 @UART1 clk enable
188 ldr r9,[r8,#0x6c] @CRU_SOFTRST0_CON
189 bic r9,r9,#(0x1<<25) @ARM core DEBUG soft de-reset
190 bic r9,r9,#(0x1<<12) @mask rom soft de-reset
191 bic r9,r9,#(0x1<<9) @Int Mem soft de-reset
192 bic r9,r9,#(0x1<<8) @GIC soft de-reset
193 bic r9,r9,#0x3F @CPU soft de-reset
196 ldr r9,[r8,#0x70] @CRU_SOFTRST1_CON
197 bic r9,r9,#(0x1<<28) @UART1 soft de-reset
198 bic r9,r9,#(0x1<<25) @SPI0 soft de-reset
199 bic r9,r9,#(0x7<<16) @USB0 soft de-reset
200 bic r9,r9,#(0x1<<15) @EMMC soft de-reset
201 bic r9,r9,#(0x1<<9) @NANC soft de-reset
202 bic r9,r9,#0x3F @PERIPH soft de-reset
205 ldr r9,[r8,#0x74] @CRU_SOFTRST2_CON
206 bic r9,r9,#(0x1F<<8) @DDR soft de-reset
210 ldr r8,[r7,#0] @GRF reg
216 ldr r8,[r7,#4] @CPU_AXI_BUS0
223 @eMMC register recover
224 ldr r8,[r7,#0] @GRF reg
225 ldr r9,[r8,#0xbc] @GRF_SOC_CON0
226 bic r9,r9,#(0x1<<9) @emmc_and_boot_en control=0
229 ldr r8,[r7,#14] @eMMC reg
231 str r9,[r8,#0xc] @SDMMC_CLKSRC=0, clk_source=clock divider 0
232 str r9,[r8,#0x18] @SDMMC_CTYPE=0, card_width=1 bit mode
234 str r9,[r8,#0x1c] @SDMMC_BLKSIZ=0x200, Block size=512
236 ldr r8,[r7,#0x10] @uart1_reg
253 .asciz "at reboot function,pc=0x%x\n"
255 .asciz "after printk!\n\r"
257 .asciz "AFTER DIS MMU\n\r"
259 .asciz "LAST JUMP TO 0\n\r"
262 .long RK29_GRF_PHYS @ 0x20008000 , unremap
263 .long RK29_CPU_AXI_BUS0_PHYS @ 0x15000000
264 .long RK29_AXI1_PHYS @ 0x10000000
265 .long RK29_CRU_PHYS @ 0x20000000
266 .long RK29_UART1_PHYS @ 0x20060000 , printk for debug.
267 .long RK29_EMMC_PHYS @ 0x1021C000
277 ENTRY(rk28_fiq_handle)
280 stmia r9 , {r0-r8,lr}
281 mov r0,r9 @save addr.
282 mov r5,#(SVC_MODE|PSR_I_BIT|PSR_F_BIT)
283 msr cpsr_cxsf,r5 @ to svc mod.disable irq,fiq.
284 sub r1, sp, #(S_FRAME_SIZE)
286 add r2 , r1 , #32 @ r0--r7.
287 stmia r2,{r8-lr} @ the svc sp not change here.
290 ldr r9,[r0,#36] @get fiq lr.
293 ldr r10,[r0,#32] @get fiq spsr.
296 mov sp,r5 @stack frame
306 __fiq_save: @for save fiq spsr r0-r7,spsr,lr.