Micron MT29F NAND driver
|
MT_uint8 NAND_Block_Erase | ( | nand_addr_t | addr | ) |
Erase operations are used to clear the contents of a block in the NAND Flash array to prepare its pages for program operations.
[in] | nand_addr_t | addr: any valid address within the block to erase (column address is ignored) |
NAND_SUCCESS | |
NAND_TIMEOUT |
Definition at line 605 of file nand_MT29F_lld.c.
References __build_cycle_addr(), __is_valid_addr(), __wait_for_ready(), CMD_ERASE_BLOCK, CMD_ERASE_BLOCK_CONFIRM, driver_status, DRIVER_STATUS_INITIALIZED, DRIVER_STATUS_NOT_INITIALIZED, NAND_ERASE_FAILED, NAND_ERASE_FAILED_WRITE_PROTECT, NAND_INVALID_NAND_ADDRESS, NAND_Read_Status(), NAND_SUCCESS, PLATFORM_Close(), PLATFORM_Open(), PLATFORM_SendAddr(), PLATFORM_SendCmd(), PLATFORM_Wait(), STATUS_FAIL, STATUS_WRITE_PROTECTED, and TIME_WB.
{ MT_uint8 row_address[5]; MT_uint8 status_reg; MT_uint8 ret; /* verify if driver is initialized */ if(DRIVER_STATUS_INITIALIZED != driver_status) return DRIVER_STATUS_NOT_INITIALIZED; /* check input parameters */ if(NAND_SUCCESS != __is_valid_addr(addr)) return NAND_INVALID_NAND_ADDRESS; __build_cycle_addr(addr, row_address); /* init board transfer */ PLATFORM_Open(); /* send command */ PLATFORM_SendCmd(CMD_ERASE_BLOCK); /* send row address (3rd, 4th, 5th cycle) */ PLATFORM_SendAddr(row_address[2]); PLATFORM_SendAddr(row_address[3]); PLATFORM_SendAddr(row_address[4]); /* send confirm command */ PLATFORM_SendCmd(CMD_ERASE_BLOCK_CONFIRM); /* wait */ PLATFORM_Wait(TIME_WB); ret = __wait_for_ready(); /* return if timeout occurs */ if (NAND_SUCCESS != ret) return ret; status_reg = NAND_Read_Status(); /* close board transfer */ PLATFORM_Close(); /* check if erase is good */ if(!(status_reg & STATUS_WRITE_PROTECTED)) return NAND_ERASE_FAILED_WRITE_PROTECT; if(status_reg & STATUS_FAIL) return NAND_ERASE_FAILED; return ret; }