mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
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:
parent
f2858e12b7
commit
e0a0004d7d
@ -35,6 +35,7 @@ typedef unsigned long dword; /* Don't change */
|
|||||||
#define BOOLEAN int
|
#define BOOLEAN int
|
||||||
|
|
||||||
extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading);
|
extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading);
|
||||||
|
extern BOOL sdmcFormatNandLog( BOOL verify_flag);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
’è<EFBFBD>”’è‹`
|
’è<EFBFBD>”’è‹`
|
||||||
@ -131,6 +132,7 @@ static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err)
|
|||||||
case KAMI_NVRAM_IO:
|
case KAMI_NVRAM_IO:
|
||||||
case KAMI_MCU_IO:
|
case KAMI_MCU_IO:
|
||||||
case KAMI_CDC_GO_DSMODE:
|
case KAMI_CDC_GO_DSMODE:
|
||||||
|
case KAMI_CLEAR_NAND_ERRORLOG:
|
||||||
if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK))
|
if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK))
|
||||||
{
|
{
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR);
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR);
|
||||||
@ -277,6 +279,19 @@ static void KamiThread(void *arg)
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
|
KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 kamiNvramIo(u32 address, void* buffer, u32 size, BOOL is_read);
|
||||||
KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read);
|
KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read);
|
||||||
KAMIResult kamiCDC_GoDsMode( void );
|
KAMIResult kamiCDC_GoDsMode( void );
|
||||||
|
KAMIResult kamiClearNandErrorLog( void );
|
||||||
|
|
||||||
// (重要)
|
// (重要)
|
||||||
// ARM7が読み書きするためリード後はInvalidate、ライト前はフラッシュしてください。
|
// ARM7が読み書きするためリード後はInvalidate、ライト前はフラッシュしてください。
|
||||||
|
|||||||
@ -309,6 +309,42 @@ KAMIResult kamiCDC_GoDsMode( void )
|
|||||||
return KAMI_RESULT_SEND_ERROR;
|
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
|
PXIŠÖ˜A
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|||||||
@ -494,6 +494,13 @@ static BOOL WriteNandfirm(char* file_name)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// NANDログ情報のクリア
|
||||||
|
if (kamiClearNandErrorLog() != KAMI_RESULT_SUCCESS)
|
||||||
|
{
|
||||||
|
kamiFontPrintfConsoleEx(1, "Fail kamiClearNandErrorLog()\n");
|
||||||
|
result = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
kamiFontPrintfConsoleEx(0, "NAND Firm Import Start!\n");
|
kamiFontPrintfConsoleEx(0, "NAND Firm Import Start!\n");
|
||||||
|
|
||||||
// NAND書き込み
|
// NAND書き込み
|
||||||
|
|||||||
@ -64,7 +64,8 @@ typedef enum KamiCommand
|
|||||||
KAMI_NAND_IO,
|
KAMI_NAND_IO,
|
||||||
KAMI_NVRAM_IO,
|
KAMI_NVRAM_IO,
|
||||||
KAMI_MCU_IO,
|
KAMI_MCU_IO,
|
||||||
KAMI_CDC_GO_DSMODE
|
KAMI_CDC_GO_DSMODE,
|
||||||
|
KAMI_CLEAR_NAND_ERRORLOG
|
||||||
}
|
}
|
||||||
KamiCommand;
|
KamiCommand;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user