From 0a4a3e2e1e591dc89880c56bc793df5792262ec2 Mon Sep 17 00:00:00 2001 From: nakasima Date: Tue, 8 Apr 2008 05:49:43 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=AF=E3=83=B3=E3=82=BB=E3=82=B0=E3=81=AE?= =?UTF-8?q?=E3=82=B9=E3=83=AA=E3=83=BC=E3=83=97=E6=99=82=E3=82=B7=E3=83=A3?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=83=80=E3=82=A6=E3=83=B3=E5=AF=BE=E7=AD=96?= =?UTF-8?q?=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@1080 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index a73fb5cc..f9abf426 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -12,6 +12,7 @@ *---------------------------------------------------------------------------*/ #include #include +#include #include #include #include @@ -24,6 +25,9 @@ #define DEBUG_MODE +// カード電源ONからROMヘッダロードまでの期間にスリープに入る時もワンセグ対策する場合 +//#define HOWSW_DSTV_MORE_IMPORTANT_THAN_DEEP_SLEEP + // define ------------------------------------------------------------------- #define CHATTERING_COUNTER 0x600 #define COUNTER_A 0x100 @@ -35,6 +39,8 @@ #define SLOT_B_LOCK_BUF HW_CTRDG_LOCK_BUF +#define HOTSW_DSTV_GAME_CODE 'JSNU' + #ifdef SDK_ARM9 #define reg_HOTSW_EXMEMCNT reg_MI_EXMEMCNT #define HOTSW_EXMEMCNT_SELB_MASK REG_MI_EXMEMCNT_MPB_MASK @@ -285,6 +291,9 @@ static HotSwState LoadCardData(void) // カード電源リセット #ifdef SDK_ARM7 McPowerOff(); +#ifdef HOWSW_DSTV_MORE_IMPORTANT_THAN_DEEP_SLEEP + MCU_EnableDeepSleepToPowerLine( MCU_PWR_LINE_33, FALSE ); +#endif McPowerOn(); #else // SDK_ARM9 // ARM7にPXI経由でカード電源ONをお願い。ONになるまで待つ。 @@ -313,6 +322,7 @@ static HotSwState LoadCardData(void) { SYSMRomEmuInfo *romEmuInfo = (void *)&s_romEmuInfo; + BOOL enableDeepSleep = TRUE; // バナーリードが完了して、フラグ処理が終わるまでARM9と排他制御する LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc); @@ -321,6 +331,14 @@ static HotSwState LoadCardData(void) state = s_funcTable[s_cbData.cardType].ReadBootSegment_N(&s_cbData); retval = (retval == HOTSW_SUCCESS) ? state : retval; + // ワンセグ差込み時はカードバス電源をディープスリープ(PFM)に入れない + // (スリープ時シャットダウン対策。カードロード中にスリープしても良いように早目に設定) + if ( *(u32*)(s_cbData.pBootSegBuf->rh.s.game_code) == HOTSW_DSTV_GAME_CODE ) + { + enableDeepSleep = FALSE; + } + MCU_EnableDeepSleepToPowerLine( MCU_PWR_LINE_33, enableDeepSleep ); + // ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked ) { @@ -1312,6 +1330,9 @@ static void McThread(void *arg) isPulledOut = TRUE; + // ワンセグのスリープ時シャットダウン対策を戻す + MCU_EnableDeepSleepToPowerLine( MCU_PWR_LINE_33, TRUE ); + break; } }