Nandファームインポート時にNVRAMのNANDエラー記憶領域をクリアするべく sdmcFormatNandLog() を追加しました。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1079 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
kamikawa 2008-04-08 05:23:54 +00:00
parent f2858e12b7
commit e0a0004d7d
5 changed files with 61 additions and 1 deletions

View File

@ -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);
/*---------------------------------------------------------------------------*
è<EFBFBD>è`
@ -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);
}

View File

@ -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、ライト前はフラッシュしてください。

View File

@ -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ŠÖ˜A
*---------------------------------------------------------------------------*/

View File

@ -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書き込み

View File

@ -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;