mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新: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:
parent
246692381f
commit
0ed02f72b9
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user