mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新:Akabane Jumpei) カード読み関数のレイテンシを修正
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@581 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
9dcbaf83b6
commit
f0149494a7
@ -40,8 +40,8 @@ extern "C" {
|
||||
#define PAGE_SIZE 0x200 // 1ページのサイズ(バイト単位)
|
||||
#define PAGE_WORD_SIZE 0x80 // 1ページのサイズ(ワード単位)
|
||||
|
||||
#define ONE_SEGMENT_SIZE 0x1000 // 1 Segmentのサイズ(バイト単位)
|
||||
#define ONE_SEGMENT_WORD_SIZE 0x400 // 1 Segmentのサイズ(ワード単位)
|
||||
#define ONE_SEGMENT_SIZE 0x1000 // 1Segmentのサイズ(バイト単位)
|
||||
#define ONE_SEGMENT_WORD_SIZE 0x400 // 1Segmentのサイズ(ワード単位)
|
||||
|
||||
#define SECURE_SEGMENT_SIZE 0x4000 // Secure領域のサイズ
|
||||
|
||||
@ -94,7 +94,7 @@ extern "C" {
|
||||
#define START_SHIFT 31
|
||||
#define START_MASK 0x80000000
|
||||
|
||||
#define SCRAMBLE_MASK 0x1840e000
|
||||
#define SCRAMBLE_MASK 0x406000 // CS SE DSのマスク
|
||||
|
||||
#define AddLatency2ToLatency1(param)\
|
||||
( (((param) & LATENCY2_MASK) \
|
||||
|
||||
@ -54,9 +54,11 @@ void ReadBootSegNormal_DSType1(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ChangeModeNormal_DSType1
|
||||
|
||||
Description: DSカードType1のノーマルモードのモード変更
|
||||
* Name: ChangeModeNormal_DSType1
|
||||
*
|
||||
* Description: DSカードType1のノーマルモードのモード変更
|
||||
*
|
||||
* CT=240ns Latency1=0x18 Latency2=0 Pagecount=0page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ChangeModeNormal_DSType1(CardBootData *cbd)
|
||||
{
|
||||
@ -85,8 +87,8 @@ void ChangeModeNormal_DSType1(CardBootData *cbd)
|
||||
reg_HOTSW_MCCMD0 = *(u32 *)cnd.b;
|
||||
reg_HOTSW_MCCMD1 = *(u32 *)&cnd.b[4];
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 に)
|
||||
reg_HOTSW_MCCNT1 = START_MASK;
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | LATENCY2_MASK & (0x18 << LATENCY2_SHIFT);
|
||||
|
||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||
OS_SleepThread(NULL);
|
||||
@ -154,9 +156,11 @@ static void SetSecureCommand(SecureCommandType type, CardBootData *cbd)
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadIDSecure_DSType1
|
||||
|
||||
Description:
|
||||
* Name: ReadIDSecure_DSType1
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=Status
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadIDSecure_DSType1(CardBootData *cbd)
|
||||
{
|
||||
@ -179,9 +183,9 @@ void ReadIDSecure_DSType1(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadSegSecure_DSType1
|
||||
|
||||
Description:
|
||||
* Name: ReadSegSecure_DSType1
|
||||
*
|
||||
* Description:
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadSegSecure_DSType1(CardBootData *cbd)
|
||||
{
|
||||
@ -235,9 +239,9 @@ void ReadSegSecure_DSType1(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SwitchONPNGSecure_DSType1
|
||||
|
||||
Description:
|
||||
* Name: SwitchONPNGSecure_DSType1
|
||||
*
|
||||
* Description:
|
||||
*---------------------------------------------------------------------------*/
|
||||
void SwitchONPNGSecure_DSType1(CardBootData *cbd)
|
||||
{
|
||||
@ -256,9 +260,9 @@ void SwitchONPNGSecure_DSType1(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SwitchOFFPNGSecure_DSType1
|
||||
|
||||
Description:
|
||||
* Name: SwitchOFFPNGSecure_DSType1
|
||||
*
|
||||
* Description:
|
||||
*---------------------------------------------------------------------------*/
|
||||
void SwitchOFFPNGSecure_DSType1(CardBootData *cbd)
|
||||
{
|
||||
@ -277,9 +281,11 @@ void SwitchOFFPNGSecure_DSType1(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ChangeModeSecure_DSType1
|
||||
|
||||
Description:
|
||||
* Name: ChangeModeSecure_DSType1
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=0page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ChangeModeSecure_DSType1(CardBootData *cbd)
|
||||
{
|
||||
@ -302,9 +308,9 @@ void ChangeModeSecure_DSType1(CardBootData *cbd)
|
||||
// ■ ゲームモードのコマンド ■
|
||||
// ■------------------------------------■
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadIDGame_DSType1
|
||||
|
||||
Description: ゲームモードでIDを読み込む
|
||||
* Name: ReadIDGame_DSType1
|
||||
*
|
||||
* Description: ゲームモードでIDを読み込む
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadIDGame_DSType1(CardBootData *cbd)
|
||||
{
|
||||
|
||||
@ -35,9 +35,9 @@ static void SetMCSCR(void);
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Name: ReadBootSegNormal_DSType2
|
||||
*
|
||||
* Description: DSカードType2のノーマルモードのBoot Segment読み込み (Page0 ~ 7)
|
||||
*
|
||||
* CT=240ns Latency1=0x1fff Latency2=0x3f Pagecount=1page
|
||||
* Description: DSカードType2のノーマルモードのBoot Segment読み込み
|
||||
*
|
||||
* CT=240ns Latency1=0x1fff Latency2=0x3f Pagecount=8page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadBootSegNormal_DSType2(CardBootData *cbd)
|
||||
{
|
||||
@ -82,9 +82,11 @@ void ReadBootSegNormal_DSType2(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ChangeModeNormal_DSType2
|
||||
|
||||
Description: DSカードType1のノーマルモードのモード変更
|
||||
* Name: ChangeModeNormal_DSType2
|
||||
*
|
||||
* Description: DSカードType2のノーマルモードのモード変更
|
||||
*
|
||||
* CT=240ns Latency1=0x18 Latency2=0 Pagecount=0page
|
||||
*---------------------------------------------------------------------------*/
|
||||
// Type1と同じ
|
||||
|
||||
@ -150,13 +152,16 @@ static void SetSecureCommand(SecureCommandType type, CardBootData *cbd)
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadIDSecure_DSType2
|
||||
|
||||
Description: SCRAMBLE_MASK -> CS SE DS をマスクできる
|
||||
* Name: ReadIDSecure_DSType2
|
||||
*
|
||||
* Description: デバッガを読み込んだ場合はSCRAMBLE_MASK -> CS SE DS をマスク
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=Status
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadIDSecure_DSType2(CardBootData *cbd)
|
||||
{
|
||||
u32 scrambleMask;
|
||||
// スクランブルの設定
|
||||
u32 scrambleMask = cbd->debuggerFlg ? 0 : (u32)(SCRAMBLE_MASK & ~CS_MASK);
|
||||
|
||||
// NewDMA転送の準備
|
||||
HOTSW_NDmaCopy_Card( HOTSW_DMA_NO, (u32 *)HOTSW_MCD1, &cbd->id_scr, sizeof(cbd->id_scr) );
|
||||
@ -165,8 +170,7 @@ void ReadIDSecure_DSType2(CardBootData *cbd)
|
||||
SetSecureCommand(S_RD_ID, cbd);
|
||||
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = cbd->pBootSegBuf->rh.s.secure_cmd_param |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// 25ms待ち
|
||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
||||
@ -174,13 +178,9 @@ void ReadIDSecure_DSType2(CardBootData *cbd)
|
||||
// MCCMD レジスタ設定
|
||||
reg_HOTSW_MCCMD0 = 0x0;
|
||||
reg_HOTSW_MCCMD1 = 0x0;
|
||||
|
||||
// スクランブルの設定
|
||||
scrambleMask = cbd->debuggerFlg ? 0 : (u32)(SCRAMBLE_MASK & ~CS_MASK);
|
||||
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = cbd->pBootSegBuf->rh.s.secure_cmd_param |
|
||||
START_MASK | PC_MASK & (0x7 << PC_SHIFT) | scrambleMask;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x7 << PC_SHIFT) | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||
OS_SleepThread(NULL);
|
||||
@ -190,12 +190,11 @@ void ReadIDSecure_DSType2(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadSegSecure_DSType2
|
||||
|
||||
Description: Secure領域を読み込む関数
|
||||
|
||||
※ 本来なら、指定したセグメントを読むコマンドだけど、それを4回連続して
|
||||
呼び出して、Secure領域全部を読み込んでいる
|
||||
* Name: ReadSegSecure_DSType2
|
||||
*
|
||||
* Description: Secure領域を読み込む関数
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=1page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadSegSecure_DSType2(CardBootData *cbd)
|
||||
{
|
||||
@ -204,6 +203,9 @@ void ReadSegSecure_DSType2(CardBootData *cbd)
|
||||
u64 vae = cbd->vae;
|
||||
GCDCmd64 cndLE, cndBE;
|
||||
|
||||
// スクランブルの設定
|
||||
u32 scrambleMask = cbd->debuggerFlg ? 0 : (u32)(SCRAMBLE_MASK & ~CS_MASK);
|
||||
|
||||
for(i=0; i<SECURE_SEGMENT_NUM; i++){
|
||||
// ゼロクリア
|
||||
MI_CpuClear8(&cndLE, sizeof(GCDCmd64));
|
||||
@ -231,8 +233,7 @@ void ReadSegSecure_DSType2(CardBootData *cbd)
|
||||
reg_HOTSW_MCCMD1 = *(u32*)&cndBE.b[4];
|
||||
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = cbd->pBootSegBuf->rh.s.secure_cmd_param |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// 25ms待ち
|
||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
||||
@ -246,8 +247,7 @@ void ReadSegSecure_DSType2(CardBootData *cbd)
|
||||
reg_HOTSW_MCCMD1 = 0x0;
|
||||
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = cbd->pBootSegBuf->rh.s.secure_cmd_param |
|
||||
START_MASK | PC_MASK & (0x1 << PC_SHIFT) | SE_MASK | DS_MASK;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x1 << PC_SHIFT) | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||
OS_SleepThread(NULL);
|
||||
@ -265,18 +265,22 @@ void ReadSegSecure_DSType2(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SwitchONPNGSecure_DSType2
|
||||
|
||||
Description:
|
||||
* Name: SwitchONPNGSecure_DSType2
|
||||
*
|
||||
* Description: PNジェネレータをONにする
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=0page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void SwitchONPNGSecure_DSType2(CardBootData *cbd)
|
||||
{
|
||||
// スクランブルの設定
|
||||
u32 scrambleMask = cbd->debuggerFlg ? 0 : (u32)(SCRAMBLE_MASK & ~CS_MASK);
|
||||
|
||||
// コマンド作成・設定
|
||||
SetSecureCommand(S_PNG_ON, cbd);
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 SE = 1 DS = 1 Latency1 = 0 に)
|
||||
reg_HOTSW_MCCNT1 = (cbd->pBootSegBuf->rh.s.secure_cmd_param & CT_MASK) |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// 25ms待ち
|
||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
||||
@ -286,9 +290,8 @@ void SwitchONPNGSecure_DSType2(CardBootData *cbd)
|
||||
reg_HOTSW_MCCMD1 = 0x0;
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 SE = 1 DS = 1 Latency1 = 0 に)
|
||||
reg_HOTSW_MCCNT1 = (cbd->pBootSegBuf->rh.s.secure_cmd_param & CT_MASK) |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||
OS_SleepThread(NULL);
|
||||
|
||||
@ -297,18 +300,22 @@ void SwitchONPNGSecure_DSType2(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: SwitchOFFPNGSecure_DSType2
|
||||
|
||||
Description:
|
||||
* Name: SwitchOFFPNGSecure_DSType2
|
||||
*
|
||||
* Description: PNジェネレータをOFFする
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=0page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void SwitchOFFPNGSecure_DSType2(CardBootData *cbd)
|
||||
{
|
||||
// スクランブルの設定
|
||||
u32 scrambleMask = cbd->debuggerFlg ? 0 : (u32)(SCRAMBLE_MASK & ~CS_MASK);
|
||||
|
||||
// コマンド作成・設定
|
||||
SetSecureCommand(S_PNG_OFF, cbd);
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 SE = 1 DS = 1 Latency1 = 0 に)
|
||||
reg_HOTSW_MCCNT1 = (cbd->pBootSegBuf->rh.s.secure_cmd_param & CT_MASK) |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// 25ms待ち
|
||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
||||
@ -317,9 +324,8 @@ void SwitchOFFPNGSecure_DSType2(CardBootData *cbd)
|
||||
reg_HOTSW_MCCMD0 = 0x0;
|
||||
reg_HOTSW_MCCMD1 = 0x0;
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 SE = 1 DS = 1 Latency1 = 0 に)
|
||||
reg_HOTSW_MCCNT1 = (cbd->pBootSegBuf->rh.s.secure_cmd_param & CT_MASK) |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
// MCCNT1 レジスタ設定
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||
OS_SleepThread(NULL);
|
||||
@ -329,18 +335,22 @@ void SwitchOFFPNGSecure_DSType2(CardBootData *cbd)
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ChangeModeSecure_DSType2
|
||||
|
||||
Description:
|
||||
* Name: ChangeModeSecure_DSType2
|
||||
*
|
||||
* Description: Gameモードに移行する
|
||||
*
|
||||
* CT=240ns Latency1=0x8f8+0x18 Latency2=0 Pagecount=0page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ChangeModeSecure_DSType2(CardBootData *cbd)
|
||||
{
|
||||
// スクランブルの設定
|
||||
u32 scrambleMask = cbd->debuggerFlg ? 0 : (u32)(SCRAMBLE_MASK & ~CS_MASK);
|
||||
|
||||
// コマンド作成・設定
|
||||
SetSecureCommand(S_CHG_MODE, cbd);
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 SE = 1 DS = 1 Latency1 = 0 に)
|
||||
reg_HOTSW_MCCNT1 = (cbd->pBootSegBuf->rh.s.secure_cmd_param & CT_MASK) |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// 25ms待ち
|
||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
||||
@ -350,8 +360,7 @@ void ChangeModeSecure_DSType2(CardBootData *cbd)
|
||||
reg_HOTSW_MCCMD1 = 0x0;
|
||||
|
||||
// MCCNT1 レジスタ設定 (START = 1 SE = 1 DS = 1 Latency1 = 0 に)
|
||||
reg_HOTSW_MCCNT1 = (cbd->pBootSegBuf->rh.s.secure_cmd_param & CT_MASK) |
|
||||
START_MASK | SE_MASK | DS_MASK;
|
||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||
|
||||
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
|
||||
OS_SleepThread(NULL);
|
||||
@ -373,9 +382,11 @@ void ChangeModeSecure_DSType2(CardBootData *cbd)
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: ReadPageGame_DSType1
|
||||
|
||||
Description: ゲームモードで、指定されたページを指定バッファに指定サイズ分を読み込む
|
||||
* Name: ReadPageGame_DSType1
|
||||
*
|
||||
* Description: ゲームモードで、指定されたページを指定バッファに指定サイズ分を読み込む
|
||||
*
|
||||
* CT=150ns Latency1=0x657 Latency2=0x1 Pagecount=1page
|
||||
*---------------------------------------------------------------------------*/
|
||||
void ReadPageGame_DSType2(CardBootData *cbd, u32 start_addr, void* buf, u32 size)
|
||||
{
|
||||
|
||||
@ -170,10 +170,10 @@ void HOTSW_Init(void)
|
||||
|
||||
#ifdef SDK_ARM7
|
||||
// チャッタリングカウンタの値を設定
|
||||
reg_MI_MC1 = (u32)((reg_MI_MC1 & 0xffff) | 0xc80000);
|
||||
reg_MI_MC1 = (u32)((reg_MI_MC1 & 0xffff) | 0xe00000);
|
||||
|
||||
// Counter-Aの値を設定
|
||||
reg_MI_MC2 = 0xc8;
|
||||
reg_MI_MC2 = 0xe0;
|
||||
#else
|
||||
// PXI経由でARM7にチャッタリングカウンタ・カウンタAの値を設定してもらう。設定されるまで待つ。
|
||||
|
||||
@ -398,13 +398,6 @@ BOOL HOTSW_LoadCardData(void)
|
||||
// デバッグ出力
|
||||
// ShowRomHeaderData();
|
||||
}
|
||||
|
||||
// ※最終的にはカードIDをHW_BOOT_CHECK_INFO_BUFに入れないと、アプリ起動後のカード抜け処理が上手く動作しないので注意。
|
||||
// 今はスロットBを使用しているので、ノーケアでOK.
|
||||
// *(u32 *)HW_BOOT_CHECK_INFO_BUF = s_cbData.id_gam;
|
||||
// *(u32 *)HW_RED_RESERVED = s_cbData.id_gam;
|
||||
// SYSMi_GetWork()->nCardID = s_cbData.id_gam;
|
||||
|
||||
OS_TPrintf("-----------------------------------------------\n\n");
|
||||
}
|
||||
else{
|
||||
@ -417,28 +410,6 @@ BOOL HOTSW_LoadCardData(void)
|
||||
|
||||
OS_TPrintf( "Load Card Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||
|
||||
// [TODO:]暫定処置。ちゃんとした流れでLauncher側に渡すようにする。
|
||||
// MI_CpuCopy8( HOTSW_GetRomEmulationBuffer(), &SYSMi_GetWork()->romEmuInfo, ROM_EMULATION_DATA_SIZE );
|
||||
// SYSMi_GetWork()->flags.common.isOnDebugger = s_cbData.debuggerFlg;
|
||||
|
||||
//#ifdef DEBUG_USED_CARD_SLOT_B_
|
||||
// SYSMi_GetWork()->flags.common.is1stCardChecked = TRUE;
|
||||
//#endif
|
||||
/*
|
||||
{
|
||||
u16 id = (u16)OS_GetLockID();
|
||||
(void)OS_LockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL );
|
||||
SYSMi_GetWork()->flags.common.isBusyHotSW = 0;
|
||||
if( SYSMi_GetWork()->flags.arm9.reqChangeHotSW ) {
|
||||
SYSMi_GetWork()->flags.common.isEnableHotSW = SYSMi_GetWork()->flags.arm9.nextHotSWStatus;
|
||||
SYSMi_GetWork()->flags.arm9.reqChangeHotSW = 0;
|
||||
SYSMi_GetWork()->flags.arm9.nextHotSWStatus = 0;
|
||||
// HOTSW_Finalize();
|
||||
}
|
||||
(void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL );
|
||||
OS_ReleaseLockID( id );
|
||||
}
|
||||
*/
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -797,8 +768,6 @@ static BOOL IsCardExist(void)
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void McPowerOn(void)
|
||||
{
|
||||
// OS_TPrintf("Slot State : %08x\n", reg_MI_MC1);
|
||||
|
||||
if((reg_MI_MC1 & SLOT_STATUS_MODE_SELECT_MSK) == SLOT_STATUS_MODE_00){
|
||||
// SCFG_MC1 の Slot Status の M1,M0 を 01 にする
|
||||
reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_01);
|
||||
@ -815,8 +784,6 @@ static void McPowerOn(void)
|
||||
|
||||
// 27ms待ち
|
||||
OS_Sleep(27);
|
||||
|
||||
// OS_TPrintf("MC Power ON\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -833,6 +800,9 @@ static void McPowerOff(void)
|
||||
|
||||
// SCFG_MC1 の Slot Status の M1,M0 が 00 になるまでポーリング
|
||||
while((reg_MI_MC1 & SLOT_STATUS_MODE_SELECT_MSK) != SLOT_STATUS_MODE_00){}
|
||||
|
||||
// 100ms待ち [TODO:]待ち時間は暫定値。金子さんに数値を測定してもらう。
|
||||
OS_Sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user