📄 davincihd_nandflash_erase.c
字号:
/*
* Copyright 2007 by Spectrum Digital Incorporated.
* All rights reserved. Property of Spectrum Digital Incorporated.
*/
/*
* NAND Flash interface
*
*/
#include "davincihd_nandflash.h"
/*
* NAND Organization
*/
extern NAND_ORGANIZATION nand_org;
/*
* NAND Flash timeout
*/
extern Int32 nand_erase_timeout;
/* ------------------------------------------------------------------------ *
* *
* _NAND_eraseBlock( start_block, block_count ) *
* Erase the blocks of Flash memory *
* *
* Inputs: *
* start_block = start block *
* block_count = # of blocks *
* *
* Return: *
* =0 pass *
* >0 failed - bad pages *
* -1 timeout *
* *
* ------------------------------------------------------------------------ */
Int16 _NAND_eraseBlock( Uint32 start_block, Uint32 block_count )
{
Uint32 i;
Uint32 block_addr;
Uint32 status;
Uint32 retcode = 0;
for ( i = start_block ; i < start_block + block_count ; i++ )
{
/* Fix for large page addressing */
block_addr = i * nand_org.block_addr_incr;
/* Erase a single block */
_NAND_CMD( CMD_ERASE ); // Erase block
_NAND_BLOCK_ADDR( block_addr ); // Block Address
_NAND_CMD( CMD_ERASE_CONFIRM ); // Confirm Erase
if ( _NAND_busywait( nand_erase_timeout ) )
return NAND_ERR_TIMEOUT;
/* Check status of erase */
_NAND_CMD( CMD_STATUS ); // Check Status
status = NAND_DATA;
if ( status & CMD_STATUS_ERROR )
{
retcode++;
nand_org.invalid_block_table[nand_org.invalid_blocks++] = i;
}
}
return retcode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -