デバッガ通信用カードスロット電源ONをNANDアプリロードと並列処理(デバッガ上でのアプリジャンプ等が若干速くなるはず。実機動作には影響なし)。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1602 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-06-11 08:15:26 +00:00
parent 9432542aac
commit f309dbf343
3 changed files with 20 additions and 15 deletions

View File

@ -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カードスロットを電源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) )

View File

@ -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;
}

View File

@ -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カードスロットを電源ON既にONなら何もしない
if ( SYSM_IsRunOnDebugger() )
{
HOTSWi_TurnCardPowerOn( 2 );
}
// 終了完了通知
SYSMi_GetWork()->flags.hotsw.isFinalized = TRUE;
}