Description
Source
Call Graph
Start Line: 213
unsigned char SkipBlockNandFlash_EraseBlock(struct SkipBlockNandFlash *skipBlock, unsigned short block, unsigned int eraseType)
{
unsigned char error;
const struct NandSpareScheme *scheme;
unsigned char spare[NandCommon_MAXPAGESPARESIZE];
// TRACE_INFO("SkipBlockNandFlash_EraseBlock(%d)\n\r", block);
if (eraseType != SCRUB_ERASE) {
// Check block status
if (CheckBlock(skipBlock, block) != GOODBLOCK) {
TRACE_INFO("SkipBlockNandFlash_EraseBlock: Block is BAD\n\r");
return NandCommon_ERROR_BADBLOCK;
}
}
// Erase block
error = RawNandFlash_EraseBlock(RAW(skipBlock), block);
if (error) {
// Try to mark the block as BAD
TRACE_ERROR("SkipBlockNandFlash_EraseBlock: Cannot erase block, try to mark it BAD\n\r");
// Retrieve model scheme
scheme = NandFlashModel_GetScheme(MODEL(skipBlock));
memset(spare, 0xFF, NandCommon_MAXPAGESPARESIZE);
NandSpareScheme_WriteBadBlockMarker(scheme, spare, NandBlockStatus_BAD);
return RawNandFlash_WritePage(RAW(skipBlock), block, 0, 0, spare);
}
return 0;
}