From f309dbf34313b7726d36d40b0189e8fcc0b107b9 Mon Sep 17 00:00:00 2001 From: nakasima Date: Wed, 11 Jun 2008 08:15:26 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=AC=E9=80=9A?= =?UTF-8?q?=E4=BF=A1=E7=94=A8=E3=82=AB=E3=83=BC=E3=83=89=E3=82=B9=E3=83=AD?= =?UTF-8?q?=E3=83=83=E3=83=88=E9=9B=BB=E6=BA=90ON=E3=82=92NAND=E3=82=A2?= =?UTF-8?q?=E3=83=97=E3=83=AA=E3=83=AD=E3=83=BC=E3=83=89=E3=81=A8=E4=B8=A6?= =?UTF-8?q?=E5=88=97=E5=87=A6=E7=90=86=EF=BC=88=E3=83=87=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AC=E4=B8=8A=E3=81=A7=E3=81=AE=E3=82=A2=E3=83=97=E3=83=AA?= =?UTF-8?q?=E3=82=B8=E3=83=A3=E3=83=B3=E3=83=97=E7=AD=89=E3=81=8C=E8=8B=A5?= =?UTF-8?q?=E5=B9=B2=E9=80=9F=E3=81=8F=E3=81=AA=E3=82=8B=E3=81=AF=E3=81=9A?= =?UTF-8?q?=E3=80=82=E5=AE=9F=E6=A9=9F=E5=8B=95=E4=BD=9C=E3=81=AB=E3=81=AF?= =?UTF-8?q?=E5=BD=B1=E9=9F=BF=E3=81=AA=E3=81=97=EF=BC=89=E3=80=82?= 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@1602 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/boot/ARM7/src/bootAPI.c | 8 ------- .../hotsw/ARM7/src/dsCardCommon.c | 6 +++++- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 21 +++++++++++++------ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 70a74bf2..91f910cb 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -318,14 +318,6 @@ static void BOOTi_RebootCallback( void** entryp, void* mem_list_v, REBOOTTarget* reg_SND_SMX_CNT = REG_SND_SMX_CNT_MIX_RATE_MASK | REG_SND_SMX_CNT_E_MASK; -#ifdef SDK_ARM7 - // デバッガではTWLカードスロット2を電源ON - if ( SYSM_IsRunOnDebugger() ) - { - HOTSWi_TurnCardPowerOn( 2 ); - } -#endif // SDK_ARM7 - #if !defined(FIRM_USE_PRODUCT_KEYS) || defined(SYSMENU_DISABLE_RETAIL_BOOT) // 開発鍵を使っている時は製品用CPUではTWLアプリはブートしない if ( ! (*(u8*)HWi_WSYS08_ADDR & HWi_WSYS08_OP_OPT_MASK) ) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c b/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c index 7c9502d6..ef3e8de7 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c @@ -386,8 +386,12 @@ HotSwState ReadRomEmulationInfo(SYSMRomEmuInfo *info) u32 temp; u32 *dst = (void*)info; + MI_CpuClear8( info, sizeof(SYSMRomEmuInfo) ); + // 量産用CPUでは平文アクセス防止のためリードしない - if ( ! (*(u8*)(OS_CHIPTYPE_DEBUGGER_ADDR) & OS_CHIPTYPE_DEBUGGER_MASK) ) + if ( ! (*(u8*)HWi_WSYS08_ADDR & HWi_WSYS08_OP_OPT_MASK) || + ! ((OS_GetRunningConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_32MB) + ) { return HOTSW_SUCCESS; } diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 0025693a..a323f660 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -369,7 +369,7 @@ static HotSwState LoadCardData(void) // ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked ) { - // Romエミュレーション情報を取得 + // Romエミュレーション情報を取得(開発用CPUのみ) state = ReadRomEmulationInfo(&s_romEmuInfo); retval = (retval == HOTSW_SUCCESS) ? state : retval; @@ -1466,23 +1466,26 @@ void HOTSWi_TurnCardPowerOn(u32 slot) // 電源が落ちている最中なら待つ if ( (reg_MI_MC & mask) == (0x3 << shift) ) { - OS_SpinWait( OS_MSEC_TO_CPUCYC(1) ); + OS_Sleep(1); } if ( (reg_MI_MC & mask) == (0x0 << shift) ) { + // 3DMのリセット待ち + OS_Sleep(1); + reg_MI_MC = (u16)((reg_MI_MC & ~mask) | (0x1 << shift)); // VDDの安定期間 - OS_SpinWait( OS_MSEC_TO_CPUCYC(100) ); + OS_Sleep(10); reg_MI_MC = (u16)((reg_MI_MC & ~mask) | (0x2 << shift)); // RESBのLow期間 - OS_SpinWait( OS_MSEC_TO_CPUCYC(1) ); + OS_Sleep(27); reg_MI_MCCNT1_B = REG_MI_MCCNT1_RESB_MASK; - // RESBのHigh期間 - OS_SpinWait( OS_MSEC_TO_CPUCYC(100) ); + // カードへ最初のコマンドを送るまでの待ち時間 + OS_Sleep(120); } } @@ -1765,6 +1768,12 @@ static void FinalizeHotSw(HotSwApliType type) ClearCardIrq(); final: + // デバッガではTWLカードスロット2を電源ON(既にONなら何もしない) + if ( SYSM_IsRunOnDebugger() ) + { + HOTSWi_TurnCardPowerOn( 2 ); + } + // 終了完了通知 SYSMi_GetWork()->flags.hotsw.isFinalized = TRUE; }