From 8ad7f47288cd2c36e6dbe28256d92ca5be532227 Mon Sep 17 00:00:00 2001 From: nakasima Date: Wed, 5 Mar 2008 05:03:57 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=BB=E3=82=AD=E3=83=A5=E3=82=A2=E3=82=B3?= =?UTF-8?q?=E3=83=9E=E3=83=B3=E3=83=89=E5=88=9D=E5=9B=9E=E9=80=81=E4=BF=A1?= =?UTF-8?q?=E9=83=A8=E5=88=86=E3=81=AE=E5=85=B1=E9=80=9A=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@818 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../hotsw/ARM7/src/dsCardCommon.c | 92 +++++++------------ 1 file changed, 33 insertions(+), 59 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c b/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c index beeab4de..16b58ac7 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/dsCardCommon.c @@ -18,6 +18,7 @@ // Function prototype ------------------------------------------------------- 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 * @@ -345,19 +368,9 @@ HotSwState ReadIDSecure(CardBootData *cbd) // コマンド作成・設定 SetSecureCommand(S_RD_ID, cbd); - // ★ 3DM対応 - if(cbd->cardType == DS_CARD_TYPE_2){ - // MCCNT1 レジスタ設定 - reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param; + // コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ) + PreSendSecureCommand(cbd, &scrambleMask); - // 25ms待ち - OS_Sleep(COMMAND_DECRYPTION_WAIT); - } - // ★ MROM対応 - else{ - scrambleMask |= TRM_MASK; - } - // NewDMA転送の準備 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 レジスタ設定 HOTSWi_SetCommand(&cndLE); - 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); - } - else{ - // MROM対応 - scrambleMask |= TRM_MASK; - } + // コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ) + PreSendSecureCommand(cbd, &scrambleMask); for(k=0; kcardType == DS_CARD_TYPE_2){ - // 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; - } + // コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ) + PreSendSecureCommand(cbd, &scrambleMask); // MCCNT1 レジスタ設定 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); - // ★ 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); - } - // ★ MROM対応 - else{ - scrambleMask |= TRM_MASK; - } + // コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ) + PreSendSecureCommand(cbd, &scrambleMask); // MCCNT1 レジスタ設定 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); - // ★ 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); - } - // ★ MROM対応 - else{ - scrambleMask |= TRM_MASK; - } + // コマンド初回送信(NTR-MROMはレイテンシクロック設定変更のみ) + PreSendSecureCommand(cbd, &scrambleMask); // MCCNT1 レジスタ設定 reg_HOTSW_MCCNT1 = START_MASK | scrambleMask | cbd->pBootSegBuf->rh.s.secure_cmd_param | (cbd->secureLatency & LATENCY1_MASK);