mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新:Akabane Jumpei)
スロットB関連の処理を削除 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1568 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
4e2e35740e
commit
ed927daf78
@ -58,9 +58,6 @@ void HOTSWi_SetCommand(GCDCmd64 *cndLE)
|
|||||||
cndBE.b[1] = cndLE->b[6];
|
cndBE.b[1] = cndLE->b[6];
|
||||||
cndBE.b[0] = cndLE->b[7];
|
cndBE.b[0] = cndLE->b[7];
|
||||||
|
|
||||||
//---- confirm CARD free
|
|
||||||
while( reg_HOTSW_MCCNT1 & REG_MI_MCCNT1_START_MASK ){}
|
|
||||||
|
|
||||||
// MCCMD レジスタ設定
|
// MCCMD レジスタ設定
|
||||||
reg_HOTSW_MCCMD0 = *(u32*)cndBE.b;
|
reg_HOTSW_MCCMD0 = *(u32*)cndBE.b;
|
||||||
reg_HOTSW_MCCMD1 = *(u32*)&cndBE.b[4];
|
reg_HOTSW_MCCMD1 = *(u32*)&cndBE.b[4];
|
||||||
|
|||||||
@ -63,9 +63,6 @@ typedef enum HotSwCallBackType{
|
|||||||
} HotSwCallBackType;
|
} HotSwCallBackType;
|
||||||
|
|
||||||
// Function prototype -------------------------------------------------------
|
// Function prototype -------------------------------------------------------
|
||||||
static BOOL IsSwap(void);
|
|
||||||
static u32 GetMcSlotShift(void);
|
|
||||||
static u32 GetMcSlotMask(void);
|
|
||||||
static u32 GetMcSlotMode(void);
|
static u32 GetMcSlotMode(void);
|
||||||
static void SetMcSlotMode(u32 mode);
|
static void SetMcSlotMode(u32 mode);
|
||||||
|
|
||||||
@ -105,9 +102,6 @@ static void GenVA_VB_VD(void);
|
|||||||
static HotSwState ReadImageReturnErrorCode(void* dest, s32 offset, s32 length, void* arg);
|
static HotSwState ReadImageReturnErrorCode(void* dest, s32 offset, s32 length, void* arg);
|
||||||
static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg);
|
static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg);
|
||||||
|
|
||||||
static s32 LockExCard(u16 lockID);
|
|
||||||
static s32 UnlockExCard(u16 lockID);
|
|
||||||
|
|
||||||
static HotSwState LoadBannerData(void);
|
static HotSwState LoadBannerData(void);
|
||||||
static HotSwState CheckCardAuthCode(void);
|
static HotSwState CheckCardAuthCode(void);
|
||||||
|
|
||||||
@ -176,11 +170,7 @@ static u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static CardSecureModeFunction s_funcTable[] = {
|
static CardSecureModeFunction s_funcTable[] = {
|
||||||
// DS Card Type 1
|
// Game Card
|
||||||
{ ReadIDSecure, ReadSegSecure, SwitchONPNGSecure, ChangeModeSecure},
|
|
||||||
// DS Card Type 2
|
|
||||||
{ ReadIDSecure, ReadSegSecure, SwitchONPNGSecure, ChangeModeSecure},
|
|
||||||
// TWL Card Type 1
|
|
||||||
{ ReadIDSecure, ReadSegSecure, SwitchONPNGSecure, ChangeModeSecure},
|
{ ReadIDSecure, ReadSegSecure, SwitchONPNGSecure, ChangeModeSecure},
|
||||||
// RomEmulation
|
// RomEmulation
|
||||||
{ ReadIDSecure_ROMEMU, ReadSegSecure_ROMEMU, SwitchONPNGSecure_ROMEMU, ChangeModeSecure_ROMEMU }
|
{ ReadIDSecure_ROMEMU, ReadSegSecure_ROMEMU, SwitchONPNGSecure_ROMEMU, ChangeModeSecure_ROMEMU }
|
||||||
@ -262,17 +252,7 @@ void HOTSW_Init(u32 threadPrio)
|
|||||||
s_CardLockID = (u16)tempLockID;
|
s_CardLockID = (u16)tempLockID;
|
||||||
}
|
}
|
||||||
|
|
||||||
// カードデータロード用スレッドの生成
|
|
||||||
OS_CreateThread(&HotSwThreadData.hotswThread,
|
|
||||||
HotSwThread,
|
|
||||||
NULL,
|
|
||||||
HotSwThreadData.hotswStack + HOTSW_THREAD_STACK_SIZE / sizeof(u64),
|
|
||||||
HOTSW_THREAD_STACK_SIZE,
|
|
||||||
threadPrio
|
|
||||||
);
|
|
||||||
|
|
||||||
// カードの状態監視用スレッドの生成 ( DSテレビ対策 )
|
// カードの状態監視用スレッドの生成 ( DSテレビ対策 )
|
||||||
// [TODO] 優先度の設定
|
|
||||||
OS_CreateThread(&HotSwThreadData.monitorThread,
|
OS_CreateThread(&HotSwThreadData.monitorThread,
|
||||||
MonitorThread,
|
MonitorThread,
|
||||||
NULL,
|
NULL,
|
||||||
@ -281,6 +261,15 @@ void HOTSW_Init(u32 threadPrio)
|
|||||||
threadPrio
|
threadPrio
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// カードデータロード用スレッドの生成 ※カード状態監視スレッドと優先度同じだけど、後に作成したこっちのスレッドが優先される
|
||||||
|
OS_CreateThread(&HotSwThreadData.hotswThread,
|
||||||
|
HotSwThread,
|
||||||
|
NULL,
|
||||||
|
HotSwThreadData.hotswStack + HOTSW_THREAD_STACK_SIZE / sizeof(u64),
|
||||||
|
HOTSW_THREAD_STACK_SIZE,
|
||||||
|
threadPrio
|
||||||
|
);
|
||||||
|
|
||||||
// メッセージキューの初期化
|
// メッセージキューの初期化
|
||||||
OS_InitMessageQueue( &HotSwThreadData.hotswQueue, &HotSwThreadData.hotswMsgBuffer[0], HOTSW_MSG_BUFFER_NUM );
|
OS_InitMessageQueue( &HotSwThreadData.hotswQueue, &HotSwThreadData.hotswMsgBuffer[0], HOTSW_MSG_BUFFER_NUM );
|
||||||
OS_InitMessageQueue( &HotSwThreadData.hotswDmaQueue, &HotSwThreadData.hotswDmaMsgBuffer[0], HOTSW_DMA_MSG_NUM );
|
OS_InitMessageQueue( &HotSwThreadData.hotswDmaQueue, &HotSwThreadData.hotswDmaMsgBuffer[0], HOTSW_DMA_MSG_NUM );
|
||||||
@ -319,21 +308,14 @@ void HOTSW_Init(u32 threadPrio)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static HotSwState LoadCardData(void)
|
static HotSwState LoadCardData(void)
|
||||||
{
|
{
|
||||||
OSTick start;
|
|
||||||
HotSwState retval = HOTSW_SUCCESS;
|
HotSwState retval = HOTSW_SUCCESS;
|
||||||
HotSwState state = HOTSW_SUCCESS;
|
HotSwState state = HOTSW_SUCCESS;
|
||||||
u32 romMode = HOTSW_ROM_MODE_NULL;
|
u32 romMode = HOTSW_ROM_MODE_NULL;
|
||||||
|
|
||||||
start = OS_GetTick();
|
|
||||||
|
|
||||||
s_isHotSwBusy = TRUE;
|
s_isHotSwBusy = TRUE;
|
||||||
|
|
||||||
// カードのロック
|
// カードのロック
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
CARD_LockRom(s_CardLockID);
|
CARD_LockRom(s_CardLockID);
|
||||||
#else
|
|
||||||
LockExCard(s_CardLockID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// カード電源リセット
|
// カード電源リセット
|
||||||
McPowerOff();
|
McPowerOff();
|
||||||
@ -397,11 +379,7 @@ static HotSwState LoadCardData(void)
|
|||||||
s_debuggerFlg = FALSE;
|
s_debuggerFlg = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
else{
|
|
||||||
s_debuggerFlg = FALSE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
// 初回のRomエミュレーション情報を使用
|
// 初回のRomエミュレーション情報を使用
|
||||||
if(HOTSWi_IsRomEmulation()){
|
if(HOTSWi_IsRomEmulation()){
|
||||||
OS_PutString("Read Emulation ROM\n");
|
OS_PutString("Read Emulation ROM\n");
|
||||||
@ -505,7 +483,7 @@ static HotSwState LoadCardData(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ゲームモードに移行
|
// ゲームモードに移行
|
||||||
state = s_funcTable[s_cbData.cardType].ChangeMode_S(&s_cbData);
|
state = s_funcTable[s_debuggerFlg].ChangeMode_S(&s_cbData);
|
||||||
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
||||||
|
|
||||||
// ---------------------- Game Mode ----------------------
|
// ---------------------- Game Mode ----------------------
|
||||||
@ -573,16 +551,10 @@ end:
|
|||||||
HOTSW_WaitCardCtrl();
|
HOTSW_WaitCardCtrl();
|
||||||
|
|
||||||
// カードのロック開放(※ロックIDは開放せずに持ち続ける)
|
// カードのロック開放(※ロックIDは開放せずに持ち続ける)
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
CARD_UnlockRom(s_CardLockID);
|
CARD_UnlockRom(s_CardLockID);
|
||||||
#else
|
|
||||||
UnlockExCard(s_CardLockID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
s_isHotSwBusy = FALSE;
|
s_isHotSwBusy = FALSE;
|
||||||
|
|
||||||
// OS_TPrintf( "Load Card Time : %dms\n\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -661,14 +633,14 @@ static HotSwState ReadSecureModeCardData(void)
|
|||||||
HotSwState state = HOTSW_SUCCESS;
|
HotSwState state = HOTSW_SUCCESS;
|
||||||
|
|
||||||
// PNG設定
|
// PNG設定
|
||||||
state = s_funcTable[s_cbData.cardType].SetPNG_S(&s_cbData);
|
state = s_funcTable[s_debuggerFlg].SetPNG_S(&s_cbData);
|
||||||
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
||||||
|
|
||||||
// DS側符号生成回路初期値設定 (レジスタ設定)
|
// DS側符号生成回路初期値設定 (レジスタ設定)
|
||||||
SetMCSCR();
|
SetMCSCR();
|
||||||
|
|
||||||
// ID読み込み
|
// ID読み込み
|
||||||
state = s_funcTable[s_cbData.cardType].ReadID_S(&s_cbData);
|
state = s_funcTable[s_debuggerFlg].ReadID_S(&s_cbData);
|
||||||
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
||||||
|
|
||||||
// カードIDの比較をして、一致しなければFALSEを返す
|
// カードIDの比較をして、一致しなければFALSEを返す
|
||||||
@ -678,7 +650,7 @@ static HotSwState ReadSecureModeCardData(void)
|
|||||||
|
|
||||||
if(retval == HOTSW_SUCCESS){
|
if(retval == HOTSW_SUCCESS){
|
||||||
// Secure領域のSegment読み込み
|
// Secure領域のSegment読み込み
|
||||||
state = s_funcTable[s_cbData.cardType].ReadSegment_S(&s_cbData);
|
state = s_funcTable[s_debuggerFlg].ReadSegment_S(&s_cbData);
|
||||||
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -751,12 +723,7 @@ BOOL HOTSWi_IsRunOnDebugger(void)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
BOOL HOTSWi_IsRomEmulation(void)
|
BOOL HOTSWi_IsRomEmulation(void)
|
||||||
{
|
{
|
||||||
return s_debuggerFlg &&
|
return s_debuggerFlg && s_romEmuInfo.isEnableSlot1;
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
s_romEmuInfo.isEnableSlot1;
|
|
||||||
#else
|
|
||||||
s_romEmuInfo.isEnableSlot2;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
@ -913,11 +880,7 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// カードのロック
|
// カードのロック
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
CARD_LockRom(s_CardLockID);
|
CARD_LockRom(s_CardLockID);
|
||||||
#else
|
|
||||||
LockExCard(s_CardLockID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while(size > 0 && state == HOTSW_SUCCESS){
|
while(size > 0 && state == HOTSW_SUCCESS){
|
||||||
// --- Boot Segment
|
// --- Boot Segment
|
||||||
@ -977,11 +940,8 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
|
|||||||
dest += sendSize;
|
dest += sendSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
// カードのアンロック
|
||||||
CARD_UnlockRom(s_CardLockID);
|
CARD_UnlockRom(s_CardLockID);
|
||||||
#else
|
|
||||||
UnlockExCard(s_CardLockID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{
|
{
|
||||||
HotSwPxiMessageForArm9 msg;
|
HotSwPxiMessageForArm9 msg;
|
||||||
@ -1372,13 +1332,7 @@ static void UnlockHotSwRsc(OSLockWord* word)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
BOOL HOTSW_IsCardExist(void)
|
BOOL HOTSW_IsCardExist(void)
|
||||||
{
|
{
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
if( !(reg_MI_MC1 & REG_MI_MC_SL1_CDET_MASK) ){
|
||||||
u32 mask = (u32)(REG_MI_MC_SL1_CDET_MASK << GetMcSlotShift());
|
|
||||||
#else
|
|
||||||
u32 mask = (u32)(REG_MI_MC_SL2_CDET_MASK >> GetMcSlotShift());
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if( !(reg_MI_MC1 & mask) ){
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -1403,48 +1357,6 @@ BOOL HOTSW_IsCardAccessible(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: IsSwap
|
|
||||||
|
|
||||||
Description: SCFG_MC1のSWPフラグを見て、スロットがスワップされているか判定する
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static BOOL IsSwap(void)
|
|
||||||
{
|
|
||||||
if( reg_MI_MC1 & REG_MI_MC1_SWP_MASK ){
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: GetMcSlotShift
|
|
||||||
|
|
||||||
Description: カードスロットのシフトビット数の取得
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static u32 GetMcSlotShift(void)
|
|
||||||
{
|
|
||||||
return (u32)(IsSwap() * REG_MI_MC_SL2_CDET_SHIFT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: GetMcSlotMask
|
|
||||||
|
|
||||||
Description: カードスロットのシフトビット数の取得
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static u32 GetMcSlotMask(void)
|
|
||||||
{
|
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
return (u32)(REG_MI_MC_SL1_MODE_MASK << GetMcSlotShift());
|
|
||||||
#else
|
|
||||||
return (u32)(REG_MI_MC_SL2_MODE_MASK >> GetMcSlotShift());
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: GetMcSlotMode
|
Name: GetMcSlotMode
|
||||||
|
|
||||||
@ -1452,11 +1364,7 @@ static u32 GetMcSlotMask(void)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static u32 GetMcSlotMode(void)
|
static u32 GetMcSlotMode(void)
|
||||||
{
|
{
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
return reg_MI_MC1 & REG_MI_MC_SL1_MODE_MASK;
|
||||||
return (reg_MI_MC1 & GetMcSlotMask()) >> GetMcSlotShift();
|
|
||||||
#else
|
|
||||||
return (reg_MI_MC1 & GetMcSlotMask()) << GetMcSlotShift();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1467,11 +1375,7 @@ static u32 GetMcSlotMode(void)
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void SetMcSlotMode(u32 mode)
|
static void SetMcSlotMode(u32 mode)
|
||||||
{
|
{
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
reg_MI_MC1 = (u32)((reg_MI_MC1 & ~REG_MI_MC_SL1_MODE_MASK) | mode);
|
||||||
reg_MI_MC1 = (u32)((reg_MI_MC1 & ~GetMcSlotMask()) | (mode << GetMcSlotShift()));
|
|
||||||
#else
|
|
||||||
reg_MI_MC1 = (u32)((reg_MI_MC1 & ~GetMcSlotMask()) | (mode >> GetMcSlotShift()));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1875,11 +1779,7 @@ static BOOL ChangeGameMode(void)
|
|||||||
{
|
{
|
||||||
HotSwState state;
|
HotSwState state;
|
||||||
|
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
CARD_LockRom(s_CardLockID);
|
CARD_LockRom(s_CardLockID);
|
||||||
#else
|
|
||||||
LockExCard(s_CardLockID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
McPowerOn();
|
McPowerOn();
|
||||||
|
|
||||||
@ -1909,9 +1809,9 @@ static BOOL ChangeGameMode(void)
|
|||||||
state = ChangeModeNormal(&s_cbData);
|
state = ChangeModeNormal(&s_cbData);
|
||||||
|
|
||||||
// ---------------------- Secure Mode ----------------------
|
// ---------------------- Secure Mode ----------------------
|
||||||
state = s_funcTable[s_cbData.cardType].SetPNG_S(&s_cbData);
|
state = s_funcTable[s_debuggerFlg].SetPNG_S(&s_cbData);
|
||||||
SetMCSCR();
|
SetMCSCR();
|
||||||
state = s_funcTable[s_cbData.cardType].ChangeMode_S(&s_cbData);
|
state = s_funcTable[s_debuggerFlg].ChangeMode_S(&s_cbData);
|
||||||
|
|
||||||
// ---------------------- Game Mode ----------------------
|
// ---------------------- Game Mode ----------------------
|
||||||
state = ReadIDGame(&s_cbData);
|
state = ReadIDGame(&s_cbData);
|
||||||
@ -1931,11 +1831,7 @@ static BOOL ChangeGameMode(void)
|
|||||||
|
|
||||||
HOTSW_WaitCardCtrl();
|
HOTSW_WaitCardCtrl();
|
||||||
|
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
CARD_UnlockRom(s_CardLockID);
|
CARD_UnlockRom(s_CardLockID);
|
||||||
#else
|
|
||||||
UnlockExCard(s_CardLockID);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(state == HOTSW_SUCCESS){
|
if(state == HOTSW_SUCCESS){
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -2155,14 +2051,6 @@ static void InterruptCallbackPxi(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
OS_TPrintf("... Pxi Message - value:%x ctrl:%x finalize:%x read:%x bootType:%x\n",
|
OS_TPrintf("... Pxi Message - value:%x ctrl:%x finalize:%x read:%x bootType:%x\n",
|
||||||
d.msg.value, d.msg.ctrl, d.msg.finalize, d.msg.read, d.msg.bootType);
|
d.msg.value, d.msg.ctrl, d.msg.finalize, d.msg.read, d.msg.bootType);
|
||||||
|
|
||||||
/*
|
|
||||||
if(d.msg.read){
|
|
||||||
OS_PutString("--- ARM7\n");
|
|
||||||
OS_TPrintf("src : 0x%08x\n", SYSMi_GetWork()->cardReadParam.src);
|
|
||||||
OS_TPrintf("dst : 0x%08x\n", SYSMi_GetWork()->cardReadParam.dest);
|
|
||||||
OS_TPrintf("size : 0x%08x\n", SYSMi_GetWork()->cardReadParam.size);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].read = (d.msg.read) ? TRUE : FALSE;
|
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].read = (d.msg.read) ? TRUE : FALSE;
|
||||||
#endif
|
#endif
|
||||||
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].ctrl = (d.msg.ctrl) ? TRUE : FALSE;
|
HotSwThreadData.hotswPxiMsg[HotSwThreadData.idx_ctrl].ctrl = (d.msg.ctrl) ? TRUE : FALSE;
|
||||||
@ -2198,73 +2086,6 @@ static void InterruptCallbackCardData(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: AllocateExCardBus
|
|
||||||
|
|
||||||
Description: アクセス権を設定する
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
#ifdef SDK_ARM9
|
|
||||||
static inline void SetExCardProcessor(MIProcessor proc)
|
|
||||||
{
|
|
||||||
reg_HOTSW_EXMEMCNT =
|
|
||||||
(u16)((reg_HOTSW_EXMEMCNT & ~HOTSW_EXMEMCNT_SELB_MASK) | (proc << HOTSW_EXMEMCNT_SELB_SHIFT));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: AllocateExCardBus
|
|
||||||
|
|
||||||
Description: スロットBへのアクセス権を設定する
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static void AllocateExCardBus(void)
|
|
||||||
{
|
|
||||||
#ifdef SDK_ARM9
|
|
||||||
// preset reset flag with status of disable interrupts in OSi_DoTryLockByWord
|
|
||||||
if ( ! ( reg_MI_MC & REG_MI_MC_SL2_CDET_MASK ) )
|
|
||||||
{
|
|
||||||
reg_MI_MCCNT1 |= REG_MI_MCCNT2_RESB_MASK;
|
|
||||||
}
|
|
||||||
SetExCardProcessor(MI_PROCESSOR_ARM9); // Arm9側で動作している場合
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: FreeExCardBus
|
|
||||||
|
|
||||||
Description: スロットBへのアクセス権を設定する
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static void FreeExCardBus(void)
|
|
||||||
{
|
|
||||||
#ifdef SDK_ARM9
|
|
||||||
SetExCardProcessor(MI_PROCESSOR_ARM7); // Card for SUB
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: LockSlotB
|
|
||||||
|
|
||||||
Description: スロットBをロックする
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static s32 LockExCard(u16 lockID)
|
|
||||||
{
|
|
||||||
return OS_LockByWord(lockID, (OSLockWord *)SLOT_B_LOCK_BUF, AllocateExCardBus);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
|
||||||
Name: UnlockSlotB
|
|
||||||
|
|
||||||
Description: スロットBをロックする
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
static s32 UnlockExCard(u16 lockID)
|
|
||||||
{
|
|
||||||
return OS_UnlockByWord(lockID, (OSLockWord *)SLOT_B_LOCK_BUF, FreeExCardBus);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: SetInterruptCallback
|
Name: SetInterruptCallback
|
||||||
SetInterruptCallbackEx
|
SetInterruptCallbackEx
|
||||||
@ -2291,11 +2112,7 @@ static void SetInterruptCallbackEx( OSIrqMask intr_bit, void *func )
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static void SetInterrupt(void)
|
static void SetInterrupt(void)
|
||||||
{
|
{
|
||||||
#ifndef DEBUG_USED_CARD_SLOT_B_
|
|
||||||
SetInterruptCallback( OS_IE_CARD_A_DET , InterruptCallbackCardDet );
|
SetInterruptCallback( OS_IE_CARD_A_DET , InterruptCallbackCardDet );
|
||||||
#else
|
|
||||||
SetInterruptCallback( OS_IE_CARD_B_DET , InterruptCallbackCardDet );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_NEW_DMA
|
#ifdef USE_NEW_DMA
|
||||||
(void)OS_EnableIrqMask(OS_IE_NDMA2);
|
(void)OS_EnableIrqMask(OS_IE_NDMA2);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user