Description
Source
Call Graph
Start Line: 294
unsigned char SkipBlockNandFlash_ReadBlock(const struct SkipBlockNandFlash *skipBlock, unsigned short block, void *data)
{
unsigned int numPagesPerBlock, pageSize;
// Page index
unsigned short i;
// Error returned by SkipBlockNandFlash_WritePage
unsigned char error = 0;
// Retrieve model information
pageSize = NandFlashModel_GetPageDataSize(MODEL(skipBlock));
numPagesPerBlock = NandFlashModel_GetBlockSizeInPages(MODEL(skipBlock));
// Check that the block is not BAD if data is requested
if (CheckBlock(skipBlock, block) != GOODBLOCK) {
TRACE_ERROR("SkipBlockNandFlash_ReadBlock: Block is BAD.\n\r");
return NandCommon_ERROR_BADBLOCK;
}
// Read all the pages of the block
for (i = 0; i < numPagesPerBlock; i++) {
error = EccNandFlash_ReadPage(ECC(skipBlock), block, i, data, 0);
if (error) {
TRACE_ERROR("SkipBlockNandFlash_ReadBlock: Cannot read page %d of block %d.\n\r", i, block);
return error;
}
data = (void *) ((unsigned char *) data + pageSize);
}
return 0;
}