91 pr_info(
"[ ftl configuration complete. ]\r\n");
94static void nfc_install_ucode(
unsigned int *bram0)
123 assert(!
"[WARNING] Configuration Error: Channel [WARNING]");
127 nfc_install_ucode((
unsigned int *)
NSC_UCODES[i]);
177 unsigned int chNo, wayNo, reqSlotTag;
181 for (wayNo = 0; wayNo <
USER_WAYS; ++wayNo)
224 for (j = 0; j < 6; j++)
229 xil_printf(
"[ NAND device reset complete. ]\r\n");
246 assert(!
"[WARNING] Configuration Error: Channel [WARNING]");
248 assert(!
"[WARNING] Configuration Error: WAY [WARNING]");
250 assert(!
"[WARNING] Configuration Error: BLOCK [WARNING]");
252 assert(!
"[WARNING] Configuration Error: BIT_PER_FLASH_CELL [WARNING]");
256 assert(!
"[WARNING] Configuration Error: Data buffer size is too large to be allocated to predefined range "
259 assert(!
"[WARNING] Configuration Error: Metadata for NAND request completion process is too large to be "
260 "allocated to predefined range [WARNING]");
262 assert(!
"[WARNING] Configuration Error: Metadata of FTL is too large to be allocated to DRAM [WARNING]");
void InitAddressMap()
Initialize the translation related maps.
unsigned int mbPerbadBlockSpace
void InitDataBuf()
Initialization process of the Data buffer.
unsigned int NSC_UCODES[]
void InitNandArray()
Send RESET and SET_FEATURE to all the flash dies.
void InitChCtlReg()
Initialize the base addresses of all channel controllers.
T4REGS chCtlReg[USER_CHANNELS]
void CheckConfigRestriction()
Check the configurations are legal before the initializations start.
void InitFTL()
The entry function for FTL initialization.
unsigned int storageCapacity_L
#define BITS_PER_FLASH_CELL
#define BYTES_PER_NVME_BLOCK
#define MB_PER_OVER_PROVISION_BLOCK_SPACE
#define USER_BLOCKS_PER_LUN
#define MAIN_BLOCKS_PER_LUN
#define MB_PER_MIN_FREE_BLOCK_SPACE
#define RESERVED_DATA_BUFFER_BASE_ADDR
#define FTL_MANAGEMENT_END_ADDR
#define DATA_BUFFER_MAP_ADDR
#define TEMPORARY_PAY_LOAD_ADDR
#define COMPLETE_FLAG_TABLE_ADDR
void V2FInitializeHandle(T4REGS *t4regs, void *t4nscRegisterBaseAddress)
void nfc_set_dqs_delay(int channel, unsigned int newValue)
void V2FReadIdSync(T4REGS *t4regs, int way, unsigned int *statusReport)
unsigned int GetFromFreeReqQ()
Get a free request from the free request queue.
void InitReqPool()
Initialize the request pool and the request queues.
#define REQ_SLOT_TAG_NONE
void SyncAllLowLevelReqDone()
Do schedule until all the requests are done.
void InitReqScheduler()
Initialize scheduling related tables.
unsigned int physicalBlock
unsigned int physicalPage
unsigned int dataBufFormat
Type of address stored in the SSD_REQ_FORMAT::dataBufInfo.
unsigned int nandAddr
Type of address stored in the SSD_REQ_FORMAT::nandInfo.
unsigned int rowAddrDependencyCheck
SSD_REQ_FORMAT reqPool[AVAILABLE_OUNTSTANDING_REQ_COUNT]
const int T4NSCu_Common_CodeWordLength
unsigned int T4NSCuCode_PlainOps[]
unsigned int T4NSCuCode_Common[]
const int T4NSCu_PlainOps_CodeWordLength