diff --git a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h index c928aff9..ecc0ad32 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h +++ b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h @@ -103,9 +103,7 @@ extern "C" { + ((param) & LATENCY1_MASK) \ ) -//#define USE_SLOT_A - -#ifdef USE_SLOT_A +#ifndef DEBUG_USED_CARD_SLOT_B_ // Slot A #define SLOT_STATUS_MODE_SELECT_MSK 0x0c #define SLOT_STATUS_CDET_MSK 0x01 diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/customNDma.c b/build/libraries_sysmenu/hotsw/ARM7/src/customNDma.c index 49bca406..f3748541 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/customNDma.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/customNDma.c @@ -3,6 +3,7 @@ File: *---------------------------------------------------------------------------*/ #include +#include #include @@ -40,7 +41,11 @@ void HOTSW_NDmaCopy_Card(u32 ndmaNo, const void *src, void *dest, u32 size) //---- decide control register contData = NDMA_BLOCK_WORD_COUNT_1 | MI_NDMA_ENABLE; contData |= (MI_NDMA_SRC_FIX | MI_NDMA_DEST_INC | MI_NDMA_DEST_RELOAD_DISABLE); +#ifndef DEBUG_USED_CARD_SLOT_B_ + contData |= MI_NDMA_TIMING_CARD_A; +#else contData |= MI_NDMA_TIMING_CARD_B; +#endif //---- set interrupt enable contData |= MI_NDMA_IF_ENABLE; diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 95d4a9b6..e9a44e69 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -73,6 +73,7 @@ CardThreadData; // Function prototype ------------------------------------------------------- static BOOL IsSwap(void); static u32 GetMcSlotShift(void); +static u32 GetMcSlotMask(void); static void SetMcSlotMode(u32 mode); static BOOL CmpMcSlotMode(u32 mode); @@ -237,9 +238,9 @@ void HOTSW_Init(void) } else{ // OS_PutString("No Card...\n"); -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ SYSMi_GetWork()->flags.common.is1stCardChecked = TRUE; -#endif +//#endif } } @@ -271,10 +272,10 @@ static HotSwState LoadCardData(void) } // カードのロック -#ifdef DEBUG_USED_CARD_SLOT_B_ - LockExCard(s_cbData.lockID); +#ifndef DEBUG_USED_CARD_SLOT_B_ + CARD_LockRom(s_cbData.lockID); #else - OS_LockCard(s_cbData.lockID); + LockExCard(s_cbData.lockID); #endif // カード電源リセット @@ -436,10 +437,10 @@ static HotSwState LoadCardData(void) } // カードのロック開放 -#ifdef DEBUG_USED_CARD_SLOT_B_ - UnlockExCard(s_cbData.lockID); +#ifndef DEBUG_USED_CARD_SLOT_B_ + CARD_UnlockRom(s_cbData.lockID); #else - OS_UnlockCard(s_cbData.lockID); + UnlockExCard(s_cbData.lockID); #endif // カードロックIDの開放 @@ -471,7 +472,7 @@ static HotSwState LoadStaticModule(void) { HotSwState retval = HOTSW_SUCCESS; -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ // バナーリード if( s_cbData.pBootSegBuf->rh.s.banner_offset ) { // OS_TPrintf(" - Banner Loading...\n"); @@ -493,7 +494,7 @@ static HotSwState LoadStaticModule(void) SYSMi_GetWork()->flags.common.isExistCard = TRUE; } -#endif +//#endif s_cbData.arm9Stc = (u32)s_cbData.pBootSegBuf->rh.s.main_ram_address; // 配置先と再配置情報を取得 & Arm9の常駐モジュール残りを指定先に転送 @@ -781,7 +782,7 @@ static HotSwState ReadRomEmulationData(void) * * ノーマルモード時のカードIDを読み込む関数 * ----------------------------------------------------------------- */ -HotSwState ReadIDNormal(void) +static HotSwState ReadIDNormal(void) { // カード割り込みによるDMAコピー HOTSW_NDmaCopy_Card( HOTSW_DMA_NO, (u32 *)HOTSW_MCD1, &s_cbData.id_nml, sizeof(s_cbData.id_nml) ); @@ -876,7 +877,11 @@ static void DecryptObjectFile(void) * ----------------------------------------------------------------- */ BOOL HOTSW_IsCardExist(void) { +#ifndef DEBUG_USED_CARD_SLOT_B_ + 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; @@ -912,6 +917,19 @@ static u32 GetMcSlotShift(void) { return (u32)(IsSwap() * REG_MI_MC_SL2_CDET_SHIFT); } +/* ----------------------------------------------------------------- + * GetMcSlotMask関数 + * + * カードスロットのシフトビット数の取得 + * ----------------------------------------------------------------- */ +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 +} /* ----------------------------------------------------------------- * SetMcSlotMode関数 @@ -920,9 +938,11 @@ static u32 GetMcSlotShift(void) * ----------------------------------------------------------------- */ static void SetMcSlotMode(u32 mode) { - u32 mask = (u32)(REG_MI_MC_SL2_MODE_MASK >> GetMcSlotShift()); - - reg_MI_MC1 = (u32)((reg_MI_MC1 & ~mask) | (mode >> GetMcSlotShift())); +#ifndef DEBUG_USED_CARD_SLOT_B_ + reg_MI_MC1 = (u32)((reg_MI_MC1 & ~GetMcSlotMask()) | (mode << GetMcSlotShift())); +#else + reg_MI_MC1 = (u32)((reg_MI_MC1 & ~GetMcSlotMask()) | (mode >> GetMcSlotShift())); +#endif } /* ----------------------------------------------------------------- @@ -932,9 +952,11 @@ static void SetMcSlotMode(u32 mode) * ----------------------------------------------------------------- */ static BOOL CmpMcSlotMode(u32 mode) { - u32 mask = (u32)(REG_MI_MC_SL2_MODE_MASK >> GetMcSlotShift()); - - if((reg_MI_MC1 & mask) == (mode >> GetMcSlotShift())){ +#ifndef DEBUG_USED_CARD_SLOT_B_ + if((reg_MI_MC1 & GetMcSlotMask()) == (mode << GetMcSlotShift())){ +#else + if((reg_MI_MC1 & GetMcSlotMask()) == (mode >> GetMcSlotShift())){ +#endif return TRUE; } else{ @@ -1039,9 +1061,9 @@ static void McThread(void *arg) while(1){ // 活線挿抜抑制フラグが立っていたら処理しない if( !SYSMi_GetWork()->flags.common.isEnableHotSW ) { -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ SYSMi_GetWork()->flags.common.is1stCardChecked = TRUE; -#endif +//#endif break; } @@ -1107,10 +1129,10 @@ static void McThread(void *arg) if(retval != HOTSW_SUCCESS){ OS_TPrintf("ng... retval : %d\n", retval); // カードロックの開放 -#ifdef DEBUG_USED_CARD_SLOT_B_ - UnlockExCard(s_cbData.lockID); +#ifndef DEBUG_USED_CARD_SLOT_B_ + CARD_UnlockRom(s_cbData.lockID); #else - OS_UnlockCard(s_cbData.lockID); + UnlockExCard(s_cbData.lockID); #endif // カードロックIDの開放 OS_ReleaseLockID( s_cbData.lockID ); @@ -1140,9 +1162,9 @@ static void McThread(void *arg) isPulledOut = TRUE; } } -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ SYSMi_GetWork()->flags.common.is1stCardChecked = TRUE; -#endif +//#endif } } @@ -1161,7 +1183,7 @@ static void InterruptCallbackCard(void) OS_TPrintf("○ - idx_pulledOut : %d\n", s_ctData.idx_pulledOut); -#ifdef USE_SLOT_A +#ifndef DEBUG_USED_CARD_SLOT_B_ OS_SetIrqCheckFlagEx(OS_IE_CARD_A_IREQ); #else OS_SetIrqCheckFlagEx(OS_IE_CARD_B_IREQ); @@ -1186,7 +1208,7 @@ static void InterruptCallbackCardDet(void) OS_TPrintf("● - idx_insert : %d\n", s_ctData.idx_insert); -#ifdef USE_SLOT_A +#ifndef DEBUG_USED_CARD_SLOT_B_ OS_SetIrqCheckFlagEx(OS_IE_CARD_A_DET); #else OS_SetIrqCheckFlagEx(OS_IE_CARD_B_DET); @@ -1203,7 +1225,7 @@ static void InterruptCallbackCardData(void) // データ転送終了待ちまで寝ていたのを起こす OS_WakeupThreadDirect(&s_ctData.thread); -#ifdef USE_SLOT_A +#ifndef DEBUG_USED_CARD_SLOT_B_ OS_SetIrqCheckFlagEx(OS_IE_CARD_A_DATA); #else OS_SetIrqCheckFlagEx(OS_IE_CARD_B_DATA); @@ -1306,7 +1328,7 @@ static void SetInterruptCallbackEx( OSIrqMask intr_bit, void *func ) *---------------------------------------------------------------------------*/ static void SetInterrupt(void) { -#ifdef USE_SLOT_A +#ifndef DEBUG_USED_CARD_SLOT_B_ SetInterruptCallback( OS_IE_CARD_A_IREQ , InterruptCallbackCard ); SetInterruptCallback( OS_IE_CARD_A_DET , InterruptCallbackCardDet ); SetInterruptCallback( OS_IE_CARD_A_DATA , InterruptCallbackCardData ); diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 1d4b0384..fe1c5d22 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -119,12 +119,12 @@ TitleProperty *SYSM_ReadParameters( void ) while( !SYSMi_GetWork()->flags.common.isARM9Start ) { SVC_WaitByLoop( 0x1000 ); } -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ // ARM7のカードチェック完了を待つ while( !SYSMi_GetWork()->flags.common.is1stCardChecked ) { SVC_WaitByLoop( 0x1000 ); } -#endif +//#endif //----------------------------------------------------- // リセットパラメータの判定(リセットパラメータが有効かどうかは、ARM7でやってくれている) @@ -209,8 +209,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) if( ( SYSMi_GetWork()->flags.common.isOnDebugger && // ISデバッガが有効かつJTAGがまだ有効でない時 !( *(u8 *)( HW_SYS_CONF_BUF + HWi_WSYS09_OFFSET ) & HWi_WSYS09_JTAG_CPUJE_MASK ) ) || SYSM_IsInspectCard() || - ( ( PAD_Read() & PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) == - PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) + ( ( PAD_Read() & SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) == + SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) ) { s_bootTitle.flags.isAppRelocate = TRUE; s_bootTitle.flags.isAppLoadCompleted = TRUE; diff --git a/include/sysmenu/hotsw/common/hotsw.h b/include/sysmenu/hotsw/common/hotsw.h index 60645b17..e53a69e7 100644 --- a/include/sysmenu/hotsw/common/hotsw.h +++ b/include/sysmenu/hotsw/common/hotsw.h @@ -1,9 +1,21 @@ /*---------------------------------------------------------------------------* - Project: TwlSDK - File: Card.h + Project: TwlIPL + File: hotsw.h + + Copyright 2008 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: #$ + $Rev$ + $Author$ *---------------------------------------------------------------------------*/ -#ifndef __MY_CARD_H__ -#define __MY_CARD_H__ +#ifndef __SYSMENU_HOTSW_COMMON_HOTSW_H__ +#define __SYSMENU_HOTSW_COMMON_HOTSW_H__ #include @@ -40,4 +52,4 @@ SDK_INLINE void* HOTSW_GetRomEmulationBuffer(void) } /* extern "C" */ #endif -#endif // __MY_CARD_H__ \ No newline at end of file +#endif // __SYSMENU_HOTSW_COMMON_HOTSW_H__ diff --git a/include/sysmenu/hw/common/mmap.h b/include/sysmenu/hw/common/mmap.h index 68d8d2c9..0f5d8d5b 100644 --- a/include/sysmenu/hw/common/mmap.h +++ b/include/sysmenu/hw/common/mmap.h @@ -30,9 +30,9 @@ extern "C" { // SystemMenu自身のマップ情報定義 #define SYSM_OWN_ARM9_MMEM_ADDR 0x02800000 -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ #define SYSM_OWN_ARM9_MMEM_ADDR_END 0x02e73000 -#else +#if 0 #define SYSM_OWN_ARM9_MMEM_ADDR_END 0x02e76000 #endif #define SYSM_OWN_ARM9_MMEM_CODE_ADDR (SYSM_OWN_ARM9_MMEM_ADDR + SYSM_DMA_BUFOVER_BARRIER_SIZE) @@ -55,11 +55,11 @@ extern u32 SDK_AUTOLOAD_WRAM_START[]; // カードアプリ格納バッファ #define SYSM_CARD_ROM_HEADER_SIZE 0x1000 -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ #define SYSM_CARD_BANNER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END ) #define SYSM_CARD_BANNER_BUF_END ( SYSM_CARD_BANNER_BUF + 0x3000 ) #define SYSM_CARD_ROM_HEADER_BUF ( SYSM_CARD_BANNER_BUF_END ) -#else +#if 0 #define SYSM_CARD_ROM_HEADER_BUF ( SYSM_OWN_ARM9_MMEM_ADDR_END ) #endif #define SYSM_CARD_ROM_HEADER_BUF_END ( SYSM_CARD_ROM_HEADER_BUF + SYSM_CARD_ROM_HEADER_SIZE ) diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index bbbd31ae..115c4214 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -40,7 +40,7 @@ extern "C" { #define TITLE_ID_MACHINE_SETTINGS 0x000300055445534d // 本体設定のタイトルID -#define PAD_PRODUCTION_SHORTCUT_CARD_BOOT ( PAD_BUTTON_A | PAD_BUTTON_B \ +#define SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ( PAD_BUTTON_A | PAD_BUTTON_B \ | PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R ) // 量産工程で使用する初回起動設定をキャンセルしてカードブートするショートカットキー diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 43e2fbee..f226408e 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -52,7 +52,7 @@ typedef struct TitleID_HiLo { // ISデバッガROMエミュレーション情報 typedef struct SYSMRomEmuInfo { - // マジックコード(ISD_ROM_EMULATION_INFO_MAGIC_CODEの固定値) + // マジックコード(SYSM_ROMEMU_INFO_MAGIC_CODEの固定値) u32 magic_code; // フラグ類 u32 isEnableSlot1 : 1; @@ -99,10 +99,10 @@ typedef struct SYSM_work { vu32 isEnableHotSW :1; // 活線挿抜有効? vu32 isBusyHotSW :1; // 活線挿抜処理中? vu32 isCardLoadCompleted :1; // カードからデータロード完了? -#ifdef DEBUG_USED_CARD_SLOT_B_ +//#ifdef DEBUG_USED_CARD_SLOT_B_ vu32 isValidCardBanner :1; vu32 is1stCardChecked :1; -#endif +//#endif vu32 :0; }common; struct {