Micron MT29F NAND driver

The BLOCK LOCK READ STATUS (7Ah) command is used to determine the protection status of individual blocks.

Parameters:
[in]nand_addr_tblock_addr: address of block to check (column is ignored)
Returns:
Value of block status register
Return values:
MT_uint8block_lock_status_reg: value of block status register
Pseudo Code Steps
  1. Send block lock read status command (7Ah)
  2. Send block address (row only cycles)

Definition at line 1381 of file nand_MT29F_lld.c.

References __build_cycle_addr(), __is_valid_addr(), CMD_BLOCK_LOCK_READ_STATUS, driver_status, DRIVER_STATUS_INITIALIZED, DRIVER_STATUS_NOT_INITIALIZED, NAND_INVALID_NAND_ADDRESS, NAND_SUCCESS, NUM_OF_ADDR_CYCLE, PLATFORM_Close(), PLATFORM_Open(), PLATFORM_ReadData(), PLATFORM_SendAddr(), and PLATFORM_SendCmd().

                                                       {
   MT_uint8 block_addr_stream[NUM_OF_ADDR_CYCLE];
   MT_uint8 block_lock_status_reg;

   /* 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(block_addr))
      return NAND_INVALID_NAND_ADDRESS;

   /* build address cycles for block address */
   __build_cycle_addr(block_addr, block_addr_stream);

   /* init board transfer */
   PLATFORM_Open();

   /* send command*/
   PLATFORM_SendCmd(CMD_BLOCK_LOCK_READ_STATUS);

   /* send row address (3rd, 4th, 5th cycle) */
   PLATFORM_SendAddr(block_addr_stream[2]);
   PLATFORM_SendAddr(block_addr_stream[3]);
   PLATFORM_SendAddr(block_addr_stream[4]);

   block_lock_status_reg = PLATFORM_ReadData();

   /* close board transfer */
   PLATFORM_Close();

   /* return the value of block status register */
   return block_lock_status_reg;

}