__s32 NFC_GetUniqueId(NFC_CMD_LIST *idcmd ,__u8 *idbuf) { __u32 i; __s32 ret; _enter_nand_critical(); nfc_repeat_mode_enable(); ret = nfc_set_cmd_register(idcmd); if (ret){ _exit_nand_critical(); return ret; } ret = _wait_cmdfifo_free(); ret |= _wait_cmd_finish(); /*get 5 bytes id value*/ for (i = 0; i < 32; i++){ *(idbuf + i) = NFC_READ_RAM_B(NFC_RAM0_BASE+i); } nfc_repeat_mode_disable(); _exit_nand_critical(); return ret; }
/******************************************************************************* * NFC_CopyBackWrite * * Description : copyback write one page data inside flash in single plane mode or multi plane mode * Arguments : *cwcmd -- the copyback read command sequence list head. rb_wait_mode -- 0 = do not care rb, 1 = set rb interrupt and do not wait rb ready. * Returns : 0 = success. -1 = fail. * Notes : the unit must be page. ********************************************************************************/ __s32 NFC_CopyBackWrite(NFC_CMD_LIST *cwcmd, __u8 rb_wait_mode) { __s32 ret; _enter_nand_critical(); ret = nfc_set_cmd_register(cwcmd); if (ret){ _exit_nand_critical(); return ret; } _wait_twb(); ret = _wait_cmdfifo_free(); ret |= _wait_cmd_finish(); _exit_nand_critical(); return ret; }
/******************************************************************************* * NFC_CopyBackRead * * Description : copyback read one page data inside flash in single plane mode or multi plane mode * Arguments : *crcmd -- the copyback read command sequence list head. * Returns : 0 = success. -1 = fail. * Notes : the unit must be page. ********************************************************************************/ __s32 NFC_CopyBackRead(NFC_CMD_LIST *crcmd) { __s32 ret; _enter_nand_critical(); ret = nfc_set_cmd_register(crcmd); if (ret){ _exit_nand_critical(); return ret; } ret = _wait_cmdfifo_free(); ret |= _wait_cmd_finish(); _exit_nand_critical(); return ret; }