mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ワンセグのスリープ時シャットダウン対策。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1080 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
e0a0004d7d
commit
0a4a3e2e1e
@ -12,6 +12,7 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include <twl/os/common/format_rom.h>
|
#include <twl/os/common/format_rom.h>
|
||||||
|
#include <twl/mcu.h>
|
||||||
#include <nitro/card/types.h>
|
#include <nitro/card/types.h>
|
||||||
#include <firm/os/common/system.h>
|
#include <firm/os/common/system.h>
|
||||||
#include <sysmenu.h>
|
#include <sysmenu.h>
|
||||||
@ -24,6 +25,9 @@
|
|||||||
|
|
||||||
#define DEBUG_MODE
|
#define DEBUG_MODE
|
||||||
|
|
||||||
|
// カード電源ONからROMヘッダロードまでの期間にスリープに入る時もワンセグ対策する場合
|
||||||
|
//#define HOWSW_DSTV_MORE_IMPORTANT_THAN_DEEP_SLEEP
|
||||||
|
|
||||||
// define -------------------------------------------------------------------
|
// define -------------------------------------------------------------------
|
||||||
#define CHATTERING_COUNTER 0x600
|
#define CHATTERING_COUNTER 0x600
|
||||||
#define COUNTER_A 0x100
|
#define COUNTER_A 0x100
|
||||||
@ -35,6 +39,8 @@
|
|||||||
|
|
||||||
#define SLOT_B_LOCK_BUF HW_CTRDG_LOCK_BUF
|
#define SLOT_B_LOCK_BUF HW_CTRDG_LOCK_BUF
|
||||||
|
|
||||||
|
#define HOTSW_DSTV_GAME_CODE 'JSNU'
|
||||||
|
|
||||||
#ifdef SDK_ARM9
|
#ifdef SDK_ARM9
|
||||||
#define reg_HOTSW_EXMEMCNT reg_MI_EXMEMCNT
|
#define reg_HOTSW_EXMEMCNT reg_MI_EXMEMCNT
|
||||||
#define HOTSW_EXMEMCNT_SELB_MASK REG_MI_EXMEMCNT_MPB_MASK
|
#define HOTSW_EXMEMCNT_SELB_MASK REG_MI_EXMEMCNT_MPB_MASK
|
||||||
@ -285,6 +291,9 @@ static HotSwState LoadCardData(void)
|
|||||||
// カード電源リセット
|
// カード電源リセット
|
||||||
#ifdef SDK_ARM7
|
#ifdef SDK_ARM7
|
||||||
McPowerOff();
|
McPowerOff();
|
||||||
|
#ifdef HOWSW_DSTV_MORE_IMPORTANT_THAN_DEEP_SLEEP
|
||||||
|
MCU_EnableDeepSleepToPowerLine( MCU_PWR_LINE_33, FALSE );
|
||||||
|
#endif
|
||||||
McPowerOn();
|
McPowerOn();
|
||||||
#else // SDK_ARM9
|
#else // SDK_ARM9
|
||||||
// ARM7にPXI経由でカード電源ONをお願い。ONになるまで待つ。
|
// ARM7にPXI経由でカード電源ONをお願い。ONになるまで待つ。
|
||||||
@ -313,6 +322,7 @@ static HotSwState LoadCardData(void)
|
|||||||
|
|
||||||
{
|
{
|
||||||
SYSMRomEmuInfo *romEmuInfo = (void *)&s_romEmuInfo;
|
SYSMRomEmuInfo *romEmuInfo = (void *)&s_romEmuInfo;
|
||||||
|
BOOL enableDeepSleep = TRUE;
|
||||||
|
|
||||||
// バナーリードが完了して、フラグ処理が終わるまでARM9と排他制御する
|
// バナーリードが完了して、フラグ処理が終わるまでARM9と排他制御する
|
||||||
LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
|
||||||
@ -321,6 +331,14 @@ static HotSwState LoadCardData(void)
|
|||||||
state = s_funcTable[s_cbData.cardType].ReadBootSegment_N(&s_cbData);
|
state = s_funcTable[s_cbData.cardType].ReadBootSegment_N(&s_cbData);
|
||||||
retval = (retval == HOTSW_SUCCESS) ? state : retval;
|
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エミュレーション情報ロードは初回のみ
|
// ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ
|
||||||
if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked )
|
if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked )
|
||||||
{
|
{
|
||||||
@ -1312,6 +1330,9 @@ static void McThread(void *arg)
|
|||||||
|
|
||||||
isPulledOut = TRUE;
|
isPulledOut = TRUE;
|
||||||
|
|
||||||
|
// ワンセグのスリープ時シャットダウン対策を戻す
|
||||||
|
MCU_EnableDeepSleepToPowerLine( MCU_PWR_LINE_33, TRUE );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user