From 3c19775567c4b3cabcda76ff9d16435d81df0887 Mon Sep 17 00:00:00 2001 From: yutaka Date: Wed, 10 Oct 2007 11:03:43 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88=E3=81=AE?= =?UTF-8?q?=E7=A2=BA=E8=AA=8D=E5=BE=8C=E3=81=AB=E3=83=A1=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=83=A1=E3=83=A2=E3=83=AA=E3=82=92=E5=88=9D=E6=9C=9F=E5=8C=96?= 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@42 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries/init/ARM7/crt0_firm.c | 28 ++++++++++++++++++-------- build/libraries/init/ARM9/crt0_firm.c | 29 +++++++++++++++++++++------ include/firm/pxi/common/misc.h | 28 ++++++++++++++------------ 3 files changed, 58 insertions(+), 27 deletions(-) diff --git a/build/libraries/init/ARM7/crt0_firm.c b/build/libraries/init/ARM7/crt0_firm.c index 97b8e0af..862ec6ca 100644 --- a/build/libraries/init/ARM7/crt0_firm.c +++ b/build/libraries/init/ARM7/crt0_firm.c @@ -87,6 +87,26 @@ SDK_WEAK_SYMBOL asm void _start( void ) msr cpsr_csfx, r0 sub sp, r1, #4 // 4byte for stack check code + //---- read reset flag from pmic +#ifdef TWL_PLATFORM_TS + mov r0, #REG_PMIC_SW_FLAGS_ADDR + bl PMi_GetRegister + ands r0, r0, #PMIC_SW_FLAGS_WARMBOOT + movne r0, #FIRM_PXI_ID_WARMBOOT + moveq r0, #FIRM_PXI_ID_COLDBOOT + bl PXI_SendByIntf + mov r0, #FIRM_PXI_ID_INIT_MMEM + bl PXI_WaitByIntf +#endif // TWL_PLATFORM_TS + + //---- wait for main memory mode into burst mode + ldr r3, =REG_EXMEMCNT_L_ADDR + mov r1, #REG_MI_EXMEMCNT_L_ECE2_MASK +@1: + ldrh r2, [r3] + tst r2, r1 + beq @1 + #if 0 // move parameters from IPL's work memory to shared area ldr r0, =IPL_PARAM_CARD_ROM_HEADER @@ -106,14 +126,6 @@ SDK_WEAK_SYMBOL asm void _start( void ) bmi @1_2 #endif - //---- wait for main memory mode into burst mode - ldr r3, =REG_EXMEMCNT_L_ADDR - mov r1, #REG_MI_EXMEMCNT_L_ECE2_MASK -@1: - ldrh r2, [r3] - tst r2, r1 - beq @1 - //---- load autoload block and initialize bss bl do_autoload diff --git a/build/libraries/init/ARM9/crt0_firm.c b/build/libraries/init/ARM9/crt0_firm.c index 56ed70d4..a334f3b1 100644 --- a/build/libraries/init/ARM9/crt0_firm.c +++ b/build/libraries/init/ARM9/crt0_firm.c @@ -64,12 +64,6 @@ SDK_WEAK_SYMBOL asm void _start( void ) mov r12, #HW_REG_BASE str r12, [r12, #REG_IME_OFFSET] - //---- initialize Main Memory - bl MIi_InitMainMemCR - - //---- initialize cp15 - bl init_cp15 - //---- initialize stack pointer // SVC mode mov r0, #HW_PSR_SVC_MODE @@ -94,6 +88,29 @@ SDK_WEAK_SYMBOL asm void _start( void ) mov r0, #HW_PSR_SYS_MODE msr cpsr_csfx, r0 sub sp, r1, #4 // 4byte for stack check code + //---- read reset flag from pmic + +#ifdef TWL_PLATFORM_TS +@0: bl PXI_RecvByIntf + cmp r0, #FIRM_PXI_ID_COLDBOOT + cmpne r0, #FIRM_PXI_ID_WARMBOOT + bne @0 + + //---- initialize Main Memory + cmp r0, #FIRM_PXI_ID_COLDBOOT + bleq MIi_InitMainMemCR + + mov r0, #FIRM_PXI_ID_INIT_MMEM + bl PXI_SendByIntf + +#else // TWL_PLATFORM_BB + //---- initialize Main Memory + bl MIi_InitMainMemCR + +#endif // TWL_PLATFORM_BB + + //---- initialize cp15 + bl init_cp15 //---- clear memory // DTCM (16KB) diff --git a/include/firm/pxi/common/misc.h b/include/firm/pxi/common/misc.h index 18376131..f70e6fd8 100644 --- a/include/firm/pxi/common/misc.h +++ b/include/firm/pxi/common/misc.h @@ -28,22 +28,24 @@ extern "C" { typedef enum { // from ARM7 - FIRM_PXI_ID_INIT_ARM7 = 3, - FIRM_PXI_ID_LOAD_HEADER = 8, + FIRM_PXI_ID_COLDBOOT = 1, + FIRM_PXI_ID_WARMBOOT = 2, + + FIRM_PXI_ID_INIT_ARM7 = 7, + FIRM_PXI_ID_LOAD_HEADER = 6, FIRM_PXI_ID_LOAD_ARM9_STATIC = 5, - FIRM_PXI_ID_LOAD_ARM7_STATIC = 6, - FIRM_PXI_ID_LOAD_ARM9_LTD_STATIC = 9, - FIRM_PXI_ID_LOAD_ARM7_LTD_STATIC = 10, - FIRM_PXI_ID_LOAD_PIRIOD = 11, + FIRM_PXI_ID_LOAD_ARM7_STATIC = 4, + FIRM_PXI_ID_LOAD_ARM9_LTD_STATIC = 3, + FIRM_PXI_ID_LOAD_ARM7_LTD_STATIC = 2, + FIRM_PXI_ID_LOAD_PIRIOD = 1, // from ARM9 - FIRM_PXI_ID_INIT_ARM9 = 1, - FIRM_PXI_ID_AUTH_HEADER = 8, - FIRM_PXI_ID_AUTH_ARM9_STATIC = 5, - FIRM_PXI_ID_AUTH_ARM7_STATIC = 6, - FIRM_PXI_ID_AUTH_ARM9_LTD_STATIC = 9, - FIRM_PXI_ID_AUTH_ARM7_LTD_STATIC = 10, - FIRM_PXI_ID_DONE_WRAM_SETTING = 11, + FIRM_PXI_ID_INIT_ARM9 = 9, + FIRM_PXI_ID_AUTH_HEADER = 10, + FIRM_PXI_ID_AUTH_ARM9_STATIC = 11, + FIRM_PXI_ID_AUTH_ARM7_STATIC = 12, + FIRM_PXI_ID_AUTH_ARM9_LTD_STATIC = 13, + FIRM_PXI_ID_AUTH_ARM7_LTD_STATIC = 14, // from both of ARM9 and ARM7 FIRM_PXI_ID_NULL = 0,