(更新:Akabane Jumpei)

Boot Segment読みのレイテンシを修正(Latency1=0x1fff  Latency2=0x3f)
DSカードを読んだ場合は、RomHeaderバッファの先頭1ページ分以降はゼロクリアしておく。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@541 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-01-29 11:18:27 +00:00
parent 246692381f
commit 0ed02f72b9
3 changed files with 18 additions and 10 deletions

View File

@ -28,9 +28,11 @@ static void SetMCSCR(void);
// 共通
/*---------------------------------------------------------------------------*
Name: ReadBootSegNormal_DSType1
Description: DSカードType1のーマルモードのBoot Segment読み込み
* Name: ReadBootSegNormal_DSType1
*
* Description: DSカードType1のーマルモードのBoot Segment読み込み
*
* CT=240ns Latency1=0x1fff Latency2=0x3f Pagecount=8page
*---------------------------------------------------------------------------*/
void ReadBootSegNormal_DSType1(CardBootData *cbd)
{
@ -44,8 +46,8 @@ void ReadBootSegNormal_DSType1(CardBootData *cbd)
// MCCNT0 レジスタ設定 (E = 1 I = 1 SEL = 0に)
reg_HOTSW_MCCNT0 = (u16)((reg_HOTSW_MCCNT0 & 0x0fff) | 0xc000);
// MCCNT1 レジスタ設定 (START = 1 PC = 100(8ページリード)に latency1 = 0x14)
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x4 << PC_SHIFT) | (0x14 & LATENCY1_MASK);
// MCCNT1 レジスタ設定
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | PC_MASK & (0x4 << PC_SHIFT) | LATENCY2_MASK | LATENCY1_MASK;
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);

View File

@ -33,9 +33,11 @@ static void SetMCSCR(void);
// 共通
/*---------------------------------------------------------------------------*
Name: ReadBootSegNormal_DSType2
Description: DSカードType1のーマルモードのBoot Segment読み込み (Page0 7)
* Name: ReadBootSegNormal_DSType2
*
* Description: DSカードType2のーマルモードのBoot Segment読み込み (Page0 7)
*
* CT=240ns Latency1=0x1fff Latency2=0x3f Pagecount=1page
*---------------------------------------------------------------------------*/
void ReadBootSegNormal_DSType2(CardBootData *cbd)
{
@ -69,8 +71,8 @@ void ReadBootSegNormal_DSType2(CardBootData *cbd)
reg_HOTSW_MCCMD0 = *(u32 *)cndBE.b;
reg_HOTSW_MCCMD1 = *(u32 *)&cndBE.b[4];
// MCCNT1 レジスタ設定 (START = 1 PC = 001(1ページリード)に latency1 = 0x5fe)
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x1 << PC_SHIFT) | (0x5fe & LATENCY1_MASK);
// MCCNT1 レジスタ設定
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | PC_MASK & (0x1 << PC_SHIFT) | LATENCY2_MASK | LATENCY1_MASK;
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);

View File

@ -310,6 +310,10 @@ BOOL HOTSW_Boot(void)
OS_TPrintf("TWL Card.\n");
s_cbData.twlFlg = TRUE;
}
else{
// NTRカードの場合はRomHeaderバッファの1ページ目以降をクリアしておく。
MI_CpuClearFast((void *)(SYSM_CARD_ROM_HEADER_BAK + PAGE_SIZE), SYSM_CARD_ROM_HEADER_SIZE - PAGE_SIZE);
}
// SecureコマンドのPNG_ONコマンドetc用のレイテンシを求める(Latency1とLatency2を足す)
s_cbData.secureLatency = AddLatency2ToLatency1(s_cbData.pBootSegBuf->rh.s.secure_cmd_param);