mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
セキュアコマンド初回送信部分の共通化。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@818 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3b2442607c
commit
8ad7f47288
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
// Function prototype -------------------------------------------------------
|
// Function prototype -------------------------------------------------------
|
||||||
static HotSwState HOTSWi_ChangeModeNormal(CardBootData *cbd, u64 cmd);
|
static HotSwState HOTSWi_ChangeModeNormal(CardBootData *cbd, u64 cmd);
|
||||||
|
static void PreSendSecureCommand(CardBootData *cbd, u32 *scrambleMask);
|
||||||
|
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
@ -324,6 +325,28 @@ static void SetSecureCommand(SecureCommandType type, CardBootData *cbd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: PreSendSecureCommand
|
||||||
|
|
||||||
|
Description:
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static void PreSendSecureCommand(CardBootData *cbd, u32 *scrambleMask)
|
||||||
|
{
|
||||||
|
// ★ TWL-ROM&NTR-3DM対応
|
||||||
|
if(cbd->cardType == DS_CARD_TYPE_2){
|
||||||
|
// MCCNT1 レジスタ設定
|
||||||
|
reg_HOTSW_MCCNT1 = START_MASK | *scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
||||||
|
|
||||||
|
// 25ms待ち
|
||||||
|
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
||||||
|
}
|
||||||
|
// ★ NTR-MROM対応
|
||||||
|
else{
|
||||||
|
*scrambleMask |= TRM_MASK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
* Name: ReadIDSecure
|
* Name: ReadIDSecure
|
||||||
*
|
*
|
||||||
@ -345,19 +368,9 @@ HotSwState ReadIDSecure(CardBootData *cbd)
|
|||||||
// コマンド作成・設定
|
// コマンド作成・設定
|
||||||
SetSecureCommand(S_RD_ID, cbd);
|
SetSecureCommand(S_RD_ID, cbd);
|
||||||
|
|
||||||
// ★ 3DM対応
|
// コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ)
|
||||||
if(cbd->cardType == DS_CARD_TYPE_2){
|
PreSendSecureCommand(cbd, &scrambleMask);
|
||||||
// MCCNT1 レジスタ設定
|
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
|
||||||
|
|
||||||
// 25ms待ち
|
|
||||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
|
||||||
}
|
|
||||||
// ★ MROM対応
|
|
||||||
else{
|
|
||||||
scrambleMask |= TRM_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewDMA転送の準備
|
// NewDMA転送の準備
|
||||||
HOTSW_NDmaCopy_Card( HOTSW_DMA_NO, (u32 *)HOTSW_MCD1, &cbd->id_scr, sizeof(cbd->id_scr) );
|
HOTSW_NDmaCopy_Card( HOTSW_DMA_NO, (u32 *)HOTSW_MCD1, &cbd->id_scr, sizeof(cbd->id_scr) );
|
||||||
|
|
||||||
@ -415,17 +428,8 @@ HotSwState ReadSegSecure(CardBootData *cbd)
|
|||||||
// MCCMD レジスタ設定
|
// MCCMD レジスタ設定
|
||||||
HOTSWi_SetCommand(&cndLE);
|
HOTSWi_SetCommand(&cndLE);
|
||||||
|
|
||||||
if(cbd->cardType == DS_CARD_TYPE_2){
|
// コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ)
|
||||||
// MCCNT1 レジスタ設定
|
PreSendSecureCommand(cbd, &scrambleMask);
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
|
||||||
|
|
||||||
// 25ms待ち
|
|
||||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
// MROM対応
|
|
||||||
scrambleMask |= TRM_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(k=0; k<loop; k++){
|
for(k=0; k<loop; k++){
|
||||||
// NewDMA転送の準備
|
// NewDMA転送の準備
|
||||||
@ -470,18 +474,8 @@ HotSwState SwitchONPNGSecure(CardBootData *cbd)
|
|||||||
// コマンド作成・設定
|
// コマンド作成・設定
|
||||||
SetSecureCommand(S_PNG_ON, cbd);
|
SetSecureCommand(S_PNG_ON, cbd);
|
||||||
|
|
||||||
// ★ 3DM対応
|
// コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ)
|
||||||
if(cbd->cardType == DS_CARD_TYPE_2){
|
PreSendSecureCommand(cbd, &scrambleMask);
|
||||||
// MCCNT1 レジスタ設定
|
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
|
||||||
|
|
||||||
// 25ms待ち
|
|
||||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
|
||||||
}
|
|
||||||
// ★ MROM対応
|
|
||||||
else{
|
|
||||||
scrambleMask |= TRM_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// MCCNT1 レジスタ設定
|
// MCCNT1 レジスタ設定
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);
|
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);
|
||||||
@ -514,18 +508,8 @@ HotSwState SwitchOFFPNGSecure(CardBootData *cbd)
|
|||||||
// コマンド作成・設定
|
// コマンド作成・設定
|
||||||
SetSecureCommand(S_PNG_OFF, cbd);
|
SetSecureCommand(S_PNG_OFF, cbd);
|
||||||
|
|
||||||
// ★ 3DM対応
|
// コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ)
|
||||||
if(cbd->cardType == DS_CARD_TYPE_2){
|
PreSendSecureCommand(cbd, &scrambleMask);
|
||||||
// MCCNT1 レジスタ設定
|
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
|
||||||
|
|
||||||
// 25ms待ち
|
|
||||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
|
||||||
}
|
|
||||||
// ★ MROM対応
|
|
||||||
else{
|
|
||||||
scrambleMask |= TRM_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// MCCNT1 レジスタ設定
|
// MCCNT1 レジスタ設定
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);
|
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);
|
||||||
@ -560,18 +544,8 @@ HotSwState ChangeModeSecure(CardBootData *cbd)
|
|||||||
// コマンド作成・設定
|
// コマンド作成・設定
|
||||||
SetSecureCommand(S_CHG_MODE, cbd);
|
SetSecureCommand(S_CHG_MODE, cbd);
|
||||||
|
|
||||||
// ★ 3DM対応
|
// コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ)
|
||||||
if(cbd->cardType == DS_CARD_TYPE_2){
|
PreSendSecureCommand(cbd, &scrambleMask);
|
||||||
// MCCNT1 レジスタ設定
|
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param;
|
|
||||||
|
|
||||||
// 25ms待ち
|
|
||||||
OS_Sleep(COMMAND_DECRYPTION_WAIT);
|
|
||||||
}
|
|
||||||
// ★ MROM対応
|
|
||||||
else{
|
|
||||||
scrambleMask |= TRM_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// MCCNT1 レジスタ設定
|
// MCCNT1 レジスタ設定
|
||||||
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);
|
reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user