mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
デバッガ通信用カードスロット電源ONをNANDアプリロードと並列処理(デバッガ上でのアプリジャンプ等が若干速くなるはず。実機動作には影響なし)。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1602 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
9432542aac
commit
f309dbf343
@ -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) )
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user