nandps
Vitis Drivers API Documentation
xnandps.h File Reference

Data Structures

struct  XNandPs_Config
 This typedef contains configuration information for the flash device. More...
 
struct  XNandPs_Geometry
 Flash geometry. More...
 
struct  XNandPs_Features
 ONFI Features and Optional commands supported See parameter page byte 6-7 and 8-9. More...
 
struct  XNandPs_BbtDesc
 Bad block table descriptor. More...
 
struct  XNandPs_BadBlockPattern
 Bad block pattern. More...
 
struct  XNandPs_EccConfig
 ECC configuration structure. More...
 
struct  XNandPsTag
 The XNandPs driver instance data. More...
 
struct  XNandPs_CommandFormat
 NAND Command format structures. More...
 

Macros

#define XNANDPS_MAX_TARGETS   1
 Max number of targets supported. More...
 
#define XNANDPS_MAX_BLOCKS   32768
 Max number of Blocks. More...
 
#define XNANDPS_MAX_PAGE_SIZE   16384
 Max page size of NAND flash. More...
 
#define XNANDPS_MAX_SPARE_SIZE   512
 Max spare bytes of a NAND flash page. More...
 
#define XNANDPS_MAX_LUNS   8
 Max number of LUNs. More...
 
#define XNANDPS_MAX_PAGES_PER_BLOCK   512
 Max number pages per block. More...
 
#define XNANDPS_ECC_BLOCK_SIZE   512
 ECC block size. More...
 
#define XNANDPS_ECC_BYTES   3
 ECC bytes per ECC block. More...
 
#define XNANDPS_PAGE_SIZE_512   512
 Page size 512. More...
 
#define XNANDPS_PAGE_SIZE_1024   1024
 Page size 1024. More...
 
#define XNANDPS_PAGE_SIZE_2048   2048
 Page size 2048. More...
 
#define XNANDPS_PAGE_SIZE_4096   4096
 Page size 4096. More...
 
#define XNANDPS_PAGE_SIZE_8192   8192
 Page size 8192. More...
 
#define XNANDPS_SPARE_SIZE_8   8
 Spare bytes size 8. More...
 
#define XNANDPS_SPARE_SIZE_16   16
 Spare bytes size 16. More...
 
#define XNANDPS_SPARE_SIZE_32   32
 Spare bytes size 32. More...
 
#define XNANDPS_SPARE_SIZE_64   64
 Spare bytes size 64. More...
 
#define XNANDPS_SPARE_SIZE_128   128
 Spare bytes size 128. More...
 
#define XNANDPS_SPARE_SIZE_256   256
 Spare bytes size 256. More...
 
#define XNANDPS_FLASH_WIDTH_8   8
 NAND Flash width 8-bit. More...
 
#define XNANDPS_FLASH_WIDTH_16   16
 NAND Flash width 16-bit. More...
 
#define XNANDPS_END_CMD_NONE   0
 No End command. More...
 
#define XNANDPS_END_CMD_INVALID   0
 End command invalid. More...
 
#define XNANDPS_CMD_PHASE   1
 End command in command phase. More...
 
#define XNANDPS_DATA_PHASE   2
 End command in data phase. More...
 
#define XNANDPS_PAGE_NOT_VALID   -1
 Page is not valid in command phase. More...
 
#define XNANDPS_COLUMN_NOT_VALID   -1
 Column is not valid in command phase. More...
 
#define XNANDPS_AXI_DATA_WIDTH   4
 AXI Data width for last transaction while reading and writing. More...
 
#define XNANDPS_START_CMD_SHIFT   3
 Start command shift. More...
 
#define XNANDPS_END_CMD_SHIFT   11
 End command shift. More...
 
#define XNANDPS_END_CMD_VALID_SHIFT   20
 End command valid shift. More...
 
#define XNANDPS_ADDR_CYCLES_SHIFT   21
 Address cycles shift. More...
 
#define XNANDPS_CHIP_ADDR_SHIFT   24
 Chip address shift. More...
 
#define XNANDPS_ECC_LAST_SHIFT   10
 Ecc last shift. More...
 
#define XNANDPS_CLEAR_CS_SHIFT   21
 clear chip select shift More...
 
#define XNANDPS_COMMAND_PHASE_MASK   0x00000000
 Command phase mask. More...
 
#define XNANDPS_DATA_PHASE_MASK   0x00080000
 Data phase mask. More...
 
#define XNANDPS_ECC_CORRECT_BYTE_MASK   0x1FF
 ECC error correction byte position mask, bits[11:3] of error code. More...
 
#define XNANDPS_ECC_CORRECT_BIT_MASK   0x7
 ECC error correction bit position mask, bits[0:2] of error code. More...
 
#define XNANDPS_CLR_CONFIG
 Interrupt settings. More...
 
#define XNANDPS_ECC_MEMCFG
 ECC memory configuration settings. More...
 
#define XNANDPS_ECC_CMD1
 ECC command 1 settings. More...
 
#define XNANDPS_ECC_CMD2
 ECC command 2 settings. More...
 
#define XNANDPS_CLR_CS   (0x1 << XNANDPS_CLEAR_CS_SHIFT)
 set Clear chip select More...
 
#define XNANDPS_ECC_LAST   (0x1 << XNANDPS_ECC_LAST_SHIFT)
 set Ecc last More...
 
#define OneHot(Value)   (!((Value) & (Value - 1)))
 OneHot is used to check if one and only one bit is set. More...
 

Typedefs

typedef struct XNandPsTag XNandPs
 The XNandPs driver instance data. More...
 

Enumerations

enum  XNandPs_EccMode { XNANDPS_ECC_NONE = 0, XNANDPS_ECC_SW, XNANDPS_ECC_HW, XNANDPS_ECC_ONDIE }
 

Functions

XNandPs_ConfigXNandPs_LookupConfig (u16 DeviceId)
 This function looks up the device configuration based on the unique device ID. More...
 
int XNandPs_CfgInitialize (XNandPs *InstancePtr, XNandPs_Config *ConfigPtr, u32 SmcBaseAddr, u32 FlashBaseAddr)
 This function initializes a specific XNandPs device/instance. More...
 
int XNandPs_Read (XNandPs *InstancePtr, u64 Offset, u32 Length, void *DestPtr, u8 *UserSparePtr)
 This function reads the data from the Flash device and copies it into the specified user buffer. More...
 
int XNandPs_ReadCache (XNandPs *InstancePtr, u64 Offset, u32 Length, void *DestPtr, u8 *UserSparePtr)
 This function reads the data from the Flash device using read page cache command and copies it into the specified user buffer. More...
 
int XNandPs_Write (XNandPs *InstancePtr, u64 Offset, u32 Length, void *SrcPtr, u8 *UserSparePtr)
 This function programs the flash device(s) with data specified in the user buffer. More...
 
int XNandPs_WriteCache (XNandPs *InstancePtr, u64 Offset, u32 Length, void *SrcPtr, u8 *UserSparePtr)
 This function programs the flash device(s) with data specified in the user buffer using program cache command. More...
 
int XNandPs_ReadSpareBytes (XNandPs *InstancePtr, u32 Page, u8 *Buf)
 This function reads the spare area of a page. More...
 
int XNandPs_WriteSpareBytes (XNandPs *InstancePtr, u32 Page, u8 *Buf)
 This function write to the spare area of a page. More...
 
int XNandPs_EraseBlock (XNandPs *InstancePtr, u32 BlockNum)
 This function erases a specific block in the NAND device. More...