From 9e88a824aad7d78529f300757cad9842d34868b9 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b08762b0-b915-fc4b-9d8c-17b2551a87ff> Date: Fri, 25 Jan 2008 00:26:09 +0000 Subject: [PATCH] =?UTF-8?q?(=E6=9B=B4=E6=96=B0:Akabane=20Jumpei)=20?= =?UTF-8?q?=E3=82=B9=E3=83=AD=E3=83=83=E3=83=88=E9=9B=BB=E6=BA=90On?= =?UTF-8?q?=E9=96=A2=E6=95=B0=E5=86=85=E3=81=A7off=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=82=E8=A1=8C=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E3=81=AE?= =?UTF-8?q?=E3=81=A7=E3=80=81On=E3=81=A8Off=E3=81=AE=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=82=92=E5=88=86=E9=9B=A2=E3=80=82=E3=82=B9=E3=83=AD=E3=83=83?= =?UTF-8?q?=E3=83=88=E9=9B=BB=E6=BA=90Off=E9=96=A2=E6=95=B0=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=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@514 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 0a6b04f1..2b9bc055 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -46,6 +46,7 @@ static void InterruptCallbackCardData(void); static void McThread(void *arg); static void McPowerOn(void); +static void McPowerOff(void); static void SetMCSCR(void); static void GenVA_VB_VD(void); @@ -207,7 +208,8 @@ BOOL HOTSW_Boot(void) OS_TPrintf("---------------- Card Boot Start ---------------\n"); #ifdef SDK_ARM7 - // カード電源ON + // カード電源リセット + McPowerOff(); McPowerOn(); #else // SDK_ARM9 // ARM7にPXI経由でカード電源ONをお願い。ONになるまで待つ。 @@ -883,33 +885,42 @@ static void McPowerOn(void) { OS_TPrintf("Slot State : %08x\n", reg_MI_MC1); - // SCFG_MC1 の Slot Status の M1,M0 を 11 にする - reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | 0xc0); - // 10ms待ち - OS_Sleep(10); + if((reg_MI_MC1 & SLOT_STATUS_MODE_SELECT_MSK) == SLOT_STATUS_MODE_00){ + // SCFG_MC1 の Slot Status の M1,M0 を 01 にする + reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_01); + // 1ms待ち + OS_Sleep(1); - // SCFG_MC1 の Slot Status の M1,M0 を 00 にする - reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | 0x00); - // 10ms待ち - OS_Sleep(10); + // SCFG_MC1 の Slot Status の M1,M0 を 10 にする + reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_10); + // 1ms待ち + OS_Sleep(1); - // SCFG_MC1 の Slot Status の M1,M0 を 01 にする - reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_01); - // 10ms待ち - OS_Sleep(10); - - // SCFG_MC1 の Slot Status の M1,M0 を 10 にする - reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_10); - // 10ms待ち - OS_Sleep(10); - - // リセットをhighに (RESB = 1にする) - reg_HOTSW_MCCNT1 = RESB_MASK; + // リセットをhighに (RESB = 1にする) + reg_HOTSW_MCCNT1 = RESB_MASK; - // 10ms待ち - OS_Sleep(10); + // 27ms待ち + OS_Sleep(27); - OS_TPrintf("Slot Power ON\n"); +// OS_TPrintf("MC Power ON\n"); + } +} + +/* ----------------------------------------------------------------- + * McPowerOff関数 + * ----------------------------------------------------------------- */ +static void McPowerOff(void) +{ + if((reg_MI_MC1 & SLOT_STATUS_MODE_SELECT_MSK) == SLOT_STATUS_MODE_10){ + // SCFG_MC1 の Slot Status の M1,M0 を 11 にする + reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_11); + + // SCFG_MC1 の Slot Status の M1,M0 が 00 になるまでポーリング + while((reg_MI_MC1 & SLOT_STATUS_MODE_SELECT_MSK) != SLOT_STATUS_MODE_00){} + + // この時点で MCCNT1の RESB は 0 になっている。 +// OS_TPrintf("MC Power Off\n"); + } } /*---------------------------------------------------------------------------*