From 4d406b0159158d10a664ebd07dfa278a2c347d72 Mon Sep 17 00:00:00 2001 From: yutaka Date: Thu, 29 Nov 2007 09:35:20 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E6=96=B0TwlSDK=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@292 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries/init/ARM7/crt0_firm.c | 69 ++++++++++++++++++--------- 1 file changed, 46 insertions(+), 23 deletions(-) diff --git a/build/libraries/init/ARM7/crt0_firm.c b/build/libraries/init/ARM7/crt0_firm.c index 57dc1b84..c5a9406f 100644 --- a/build/libraries/init/ARM7/crt0_firm.c +++ b/build/libraries/init/ARM7/crt0_firm.c @@ -14,8 +14,9 @@ $Rev$ $Author$ *---------------------------------------------------------------------------*/ -#include -#include +#include +#include +#include void _start(void); void _start_AutoloadDoneCallback(void *argv[]); @@ -442,6 +443,40 @@ _start_AutoloadDoneCallback(void* argv[]) static asm void detect_main_memory_size( void ) { +//################ this process is required before IPL +#if 0 + // SCFG enable? + ldr r2, =REG_EXT_ADDR + ldr r0, [r2] + tst r0, #0x80000000 + beq @9 +#endif + ldr r2, =HW_PRV_WRAM_SYSRV + //OPT(bonding option) + ldr r3, =REG_OP_ADDR + ldrh r0, [r3] + strh r0, [r2, #8] + //OPT(JTAG info) + ldr r3, =REG_JTAG_ADDR + ldrb r0, [r3] + //CLK(only wram clock) + ldr r3, =REG_CLK_ADDR + ldrh r1, [r3] + and r1, r1, #0x80 + orr r0, r0, r1, LSR 1 + strb r0, [r2, #9] +@9: +//################ + + //---- copy scfg setting + ldr r2, =HW_PRV_WRAM_SYSRV + ldr r3, =HW_SYS_CONF_BUF + ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] + str r0, [r3, #HWi_WSYS04_OFFSET] + ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] + strh r0, [r3, #HWi_WSYS08_OFFSET] + + //---- detect memory size #if 0 // NITRO hardware is not supported mov r0, #OS_CONSOLE_SIZE_4MB mov r1, #0 @@ -459,20 +494,14 @@ static asm void detect_main_memory_size( void ) bne @1 //---- 4MB - //---- check SMX_CNT - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK b @4 //---- 8MB or 16MB or 32MB @2: // check if running on twl/nitro - ldr r1, =REG_CLK_ADDR - ldrh r12, [r1] - tst r12, #REG_SCFG_CLK_WRAMHCLK_MASK + ldr r1, =HW_SYS_CONF_BUF + ldrb r12, [r1,#HWi_WSYS09_OFFSET] + tst r12, #HWi_WSYS09_CLK_WRAMHCLK_MASK moveq r0, #OS_CONSOLE_SIZE_8MB beq @4 #else @@ -495,20 +524,14 @@ static asm void detect_main_memory_size( void ) bne @3 mov r0, #OS_CONSOLE_SIZE_16MB @4: - strh r0, [r2] - //---- detect chiptype - ldr r2, =REG_OP_ADDR - ldrh r0, [r2] - and r0, r0, #REG_SCFG_OP_OPT_MASK + //---- check SMX_CNT + ldr r3, =REG_SMX_CNT_ADDR + ldrh r1, [r3] + and r1, r1, #OSi_DETECT_NITRO_MASK + cmp r1, #OSi_DETECT_NITRO_VAL + orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - //---- detect jtag - ldr r2, =REG_JTAG_ADDR - ldrh r1, [r2] - and r1, r1, #REG_SCFG_JTAG_CPUJE_MASK - orr r0, r0, r1, LSL #1 - - ldr r2, =HW_CHIPTYPE_FLAG strb r0, [r2] bx lr