From e0a0004d7dc45beab5cfb040d7a0ff47e4025e8b Mon Sep 17 00:00:00 2001 From: kamikawa Date: Tue, 8 Apr 2008 05:23:54 +0000 Subject: [PATCH] =?UTF-8?q?Nand=E3=83=95=E3=82=A1=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=88=E6=99=82=E3=81=AB?= =?UTF-8?q?NVRAM=E3=81=AENAND=E3=82=A8=E3=83=A9=E3=83=BC=E8=A8=98=E6=86=B6?= =?UTF-8?q?=E9=A0=98=E5=9F=9F=E3=82=92=E3=82=AF=E3=83=AA=E3=82=A2=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=81=B9=E3=81=8F=20sdmcFormatNandLog()=20=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=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@1079 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../ARM7.TWL/src/kami_pxi.c | 15 ++++++++ .../ARM9.TWL/include/kami_pxi.h | 1 + .../ARM9.TWL/src/kami_pxi.c | 36 +++++++++++++++++++ .../ARM9.TWL/src/process_nandfirm.c | 7 ++++ .../NandInitializerRed/common/include/fifo.h | 3 +- 5 files changed, 61 insertions(+), 1 deletion(-) diff --git a/build/systemMenu_RED/NandInitializerRed/ARM7.TWL/src/kami_pxi.c b/build/systemMenu_RED/NandInitializerRed/ARM7.TWL/src/kami_pxi.c index 6c243b6f..82d205cb 100644 --- a/build/systemMenu_RED/NandInitializerRed/ARM7.TWL/src/kami_pxi.c +++ b/build/systemMenu_RED/NandInitializerRed/ARM7.TWL/src/kami_pxi.c @@ -35,6 +35,7 @@ typedef unsigned long dword; /* Don't change */ #define BOOLEAN int extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading); +extern BOOL sdmcFormatNandLog( BOOL verify_flag); /*---------------------------------------------------------------------------* 定数定義 @@ -131,6 +132,7 @@ static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) case KAMI_NVRAM_IO: case KAMI_MCU_IO: case KAMI_CDC_GO_DSMODE: + case KAMI_CLEAR_NAND_ERRORLOG: if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK)) { KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR); @@ -277,6 +279,19 @@ static void KamiThread(void *arg) } break; + case KAMI_CLEAR_NAND_ERRORLOG: + { + if (sdmcFormatNandLog(TRUE)) + { + KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); + } + else + { + KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); + } + } + break; + default: KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); } diff --git a/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/include/kami_pxi.h b/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/include/kami_pxi.h index c35eb26a..73d26325 100644 --- a/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/include/kami_pxi.h +++ b/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/include/kami_pxi.h @@ -63,6 +63,7 @@ KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); KAMIResult kamiNvramIo(u32 address, void* buffer, u32 size, BOOL is_read); KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read); KAMIResult kamiCDC_GoDsMode( void ); +KAMIResult kamiClearNandErrorLog( void ); // (重要) // ARM7が読み書きするためリード後はInvalidate、ライト前はフラッシュしてください。 diff --git a/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/kami_pxi.c b/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/kami_pxi.c index c6ae12d7..bf83c127 100644 --- a/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/kami_pxi.c +++ b/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/kami_pxi.c @@ -309,6 +309,42 @@ KAMIResult kamiCDC_GoDsMode( void ) return KAMI_RESULT_SEND_ERROR; } +/*---------------------------------------------------------------------------* + Name: kamiClearNandErrorLog + + Description: NVRAMのNANDエラー情報をクリアします。 + + Arguments: None. + + Returns: + *---------------------------------------------------------------------------*/ + +KAMIResult kamiClearNandErrorLog( void ) +{ + OSIntrMode enabled; + + // ロック + enabled = OS_DisableInterrupts(); + if (kamiWork.lock) + { + (void)OS_RestoreInterrupts(enabled); + return KAMI_RESULT_BUSY; + } + kamiWork.lock = TRUE; + (void)OS_RestoreInterrupts(enabled); + + kamiWork.callback = NULL; + kamiWork.arg = 0; + kamiWork.data = 0; + + if (KamiSendPxiCommand(KAMI_CLEAR_NAND_ERRORLOG, 0, (u8)0)) + { + KamiWaitBusy(); + return (KAMIResult)kamiWork.result; + } + return KAMI_RESULT_SEND_ERROR; +} + /*---------------------------------------------------------------------------* PXI関連 *---------------------------------------------------------------------------*/ diff --git a/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/process_nandfirm.c b/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/process_nandfirm.c index 967b8660..3ea23f69 100644 --- a/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/process_nandfirm.c +++ b/build/systemMenu_RED/NandInitializerRed/ARM9.TWL/src/process_nandfirm.c @@ -494,6 +494,13 @@ static BOOL WriteNandfirm(char* file_name) } #endif + // NANDログ情報のクリア + if (kamiClearNandErrorLog() != KAMI_RESULT_SUCCESS) + { + kamiFontPrintfConsoleEx(1, "Fail kamiClearNandErrorLog()\n"); + result = FALSE; + } + kamiFontPrintfConsoleEx(0, "NAND Firm Import Start!\n"); // NAND書き込み diff --git a/build/systemMenu_RED/NandInitializerRed/common/include/fifo.h b/build/systemMenu_RED/NandInitializerRed/common/include/fifo.h index 47af57a9..4e616355 100644 --- a/build/systemMenu_RED/NandInitializerRed/common/include/fifo.h +++ b/build/systemMenu_RED/NandInitializerRed/common/include/fifo.h @@ -64,7 +64,8 @@ typedef enum KamiCommand KAMI_NAND_IO, KAMI_NVRAM_IO, KAMI_MCU_IO, - KAMI_CDC_GO_DSMODE + KAMI_CDC_GO_DSMODE, + KAMI_CLEAR_NAND_ERRORLOG } KamiCommand;