ワンセグのスリープ時シャットダウン対策。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1080 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-04-08 05:49:43 +00:00
parent e0a0004d7d
commit 0a4a3e2e1e

View File

@ -12,6 +12,7 @@
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <twl/os/common/format_rom.h>
#include <twl/mcu.h>
#include <nitro/card/types.h>
#include <firm/os/common/system.h>
#include <sysmenu.h>
@ -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;
}
}