From b73bbdbef5379e5308979f70a7de0fb60bd3435b Mon Sep 17 00:00:00 2001 From: nakasima Date: Mon, 17 Mar 2008 05:10:25 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=AC=E9=80=9A?= =?UTF-8?q?=E4=BF=A1=E7=94=A8=E3=81=AB=E3=82=AB=E3=83=BC=E3=83=89=E3=82=B9?= =?UTF-8?q?=E3=83=AD=E3=83=83=E3=83=88=EF=BC=92=E3=81=AE=E9=9B=BB=E6=BA=90?= =?UTF-8?q?=E3=82=92ON=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@890 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/boot/ARM7/src/bootAPI.c | 8 ++++ .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 47 +++++++++++++++++++ include/sysmenu/hotsw/common/hotsw.h | 3 ++ 3 files changed, 58 insertions(+) diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 0cb41770..7df30f26 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -227,6 +227,14 @@ BOOL BOOT_WaitStart( void ) REG_SND_SMX_CNT_E_MASK; } +#ifdef SDK_ARM7 + // デバッガではTWLカードスロット2を電源ON + if ( SYSM_IsRunOnDebugger() ) + { + HOTSWi_TurnCardPowerOn( 2 ); + } +#endif // SDK_ARM7 + #if defined(FIRM_USE_TWLSDK_KEYS) || defined(SYSMENU_DISABLE_RETAIL_BOOT) // TwlSDK内の鍵を使っている時は製品用CPUではTWLアプリはブートしない if ( ! (*(u8*)HWi_WSYS08_ADDR & HWi_WSYS08_OP_OPT_MASK) ) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index a9c6e6f9..2f8f3b62 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -1094,6 +1095,52 @@ static void McPowerOff(void) } } +/*---------------------------------------------------------------------------* + Name: HOTSWi_TurnCardPowerOn + + Description: デバッガ通信用にカードスロットの電源をONにする。 + + Arguments: None. + + Returns: None. + *---------------------------------------------------------------------------*/ +void HOTSWi_TurnCardPowerOn(u32 slot) +{ + u32 shift; + u32 mask = slot >= 2 ? (u32)REG_MI_MC_SL2_CDET_MASK : (u32)REG_MI_MC_SL1_CDET_MASK; + + // カードが差さっていなければONしない + if ( reg_MI_MC & mask ) + { + return; + } + + shift = slot >= 2 ? (u32)REG_MI_MC_SL2_MODE_SHIFT : (u32)REG_MI_MC_SL1_MODE_SHIFT; + mask = slot >= 2 ? (u32)REG_MI_MC_SL2_MODE_MASK : (u32)REG_MI_MC_SL1_MODE_MASK; + + // 電源が落ちている最中なら待つ + if ( (reg_MI_MC & mask) == (0x3 << shift) ) + { + OS_SpinWait( OS_MSEC_TO_CPUCYC(1) ); + } + + if ( (reg_MI_MC & mask) == (0x0 << shift) ) + { + reg_MI_MC = (u16)((reg_MI_MC & ~mask) | (0x1 << shift)); + // VDDの安定期間 + OS_SpinWait( OS_MSEC_TO_CPUCYC(100) ); + + reg_MI_MC = (u16)((reg_MI_MC & ~mask) | (0x2 << shift)); + // RESBのLow期間 + OS_SpinWait( OS_MSEC_TO_CPUCYC(1) ); + + reg_MI_MCCNT1_B = REG_MI_MCCNT1_RESB_MASK; + + // RESBのHigh期間 + OS_SpinWait( OS_MSEC_TO_CPUCYC(100) ); + } +} + /*---------------------------------------------------------------------------* Name: SetMCSCR diff --git a/include/sysmenu/hotsw/common/hotsw.h b/include/sysmenu/hotsw/common/hotsw.h index b4669fc8..501a4708 100644 --- a/include/sysmenu/hotsw/common/hotsw.h +++ b/include/sysmenu/hotsw/common/hotsw.h @@ -84,6 +84,9 @@ SDK_INLINE void* HOTSW_GetRomEmulationBuffer(void) } #endif // SDK_ARM9 +// デバッガ通信用にカードスロットの電源をONにする。 +void HOTSWi_TurnCardPowerOn(u32 slot); + #ifdef __cplusplus } /* extern "C" */ #endif