lld.h
来自「SAMSUNG S3C6410 CPU BSP for winmobile6」· C头文件 代码 · 共 261 行 · 第 1/2 页
H
261 行
#define LLD_FLAG_ASYNC_OP (1 << 0) /* Write/Erase/Copy */
#define LLD_FLAG_SYNC_OP (0 << 0) /* Write/Erase/Copy */
#define LLD_FLAG_SYNC_OP_INV (~LLD_FLAG_ASYNC_OP)/* Write/Erase/Copy */
#define LLD_FLAG_ECC_ON (1 << 1)
#define LLD_FLAG_ECC_OFF (0 << 1)
#define LLD_FLAG_ECC_OFF_INV (~LLD_FLAG_ECC_ON)
/*****************************************************************************/
/* LLD IO Ctrl Code */
/*****************************************************************************/
/* IOC Code */
#define IOC_SET_SECURE_LT 0x01 /* Set Lock-Tighten */
#define IOC_GET_SECURE_STAT 0x02 /* Get Secure Status */
#define IOC_RESET_NAND_DEV 0x03 /* Reset NAND Device */
#define IOC_SET_BLOCK_LOCK 0x04 /* Block Lock */ /* added for XSR v1.5.x */
/* IOC Return Value */
#define LLD_IOC_SECURE_LT 0x01 /* Lock-Tight */
#define LLD_IOC_SECURE_LS 0x02 /* Locked Status */
#define LLD_IOC_SECURE_US 0x04 /* Unlocked Status */
/* Set Device lock-tight */
#define LLD_IOC_SET_SECURE_LT XSR_IOCTL_CODE(XSR_MODULE_LLD, \
IOC_SET_SECURE_LT, \
XSR_METHOD_INOUT_DIRECT, \
XSR_ANY_ACCESS)
/* Set Device lock-tight */ /* added for XSR v1.5.x */
#define LLD_IOC_SET_BLOCK_LOCK XSR_IOCTL_CODE(XSR_MODULE_LLD, \
IOC_SET_BLOCK_LOCK, \
XSR_METHOD_INOUT_DIRECT, \
XSR_ANY_ACCESS)
/* Get Device security status
return value
DEV_LT : Device is lock-tighten
DEV_AL : All blocks of device are locked
DEV_UL : There is an unlocked block */
#define LLD_IOC_GET_SECURE_STAT XSR_IOCTL_CODE(XSR_MODULE_LLD, \
IOC_GET_SECURE_STAT, \
XSR_METHOD_INOUT_DIRECT, \
XSR_READ_ACCESS)
/* Reset Nand Device */
#define LLD_IOC_RESET_NAND_DEV XSR_IOCTL_CODE(XSR_MODULE_LLD, \
IOC_RESET_NAND_DEV, \
XSR_METHOD_INOUT_DIRECT, \
XSR_ANY_ACCESS)
/*****************************************************************************/
/* Data Structures */
/*****************************************************************************/
typedef struct { /* offset size */
UINT8 nMCode; /* Manufacturer Code 0x00 1 */
UINT8 nDCode; /* Device Code 0x01 1 */
UINT16 nNumOfBlks; /* The Number of Blocks 0x02 2 */
UINT16 nPgsPerBlk; /* The Number of Pages per Block 0x04 2 */
UINT16 nBlksInRsv; /* The Number of Blocks 0x06 2
in Reserved Block Pool */
UINT8 nSctsPerPg; /* The Number of Sectors per Page 0x08 1 */
UINT8 nNumOfPlane; /* The Number of Plane 0x09 1 */
UINT8 nMEFlag; /* Multiple Erase Flag 0x0A 1 */
UINT8 nBWidth; /* Device Bus Width 0x0C 1 */
UINT8 nBadPos; /* BadBlock Information Position 0x0E 1 */
UINT8 nLsnPos; /* LSN Position 0x0E 1 */
UINT8 nEccPos; /* ECC Value Position 0x0F 1 */
UINT8 aUID[XSR_UID_SIZE]; /* UID 0x10 16,
0xFF(absence case of UID) */
/* Op Time based on nano second */
UINT32 nTrTime; /* Physical Read Operation Time 0x20 2 */
UINT32 nTwTime; /* Physical Write Operation Time 0x22 2 */
UINT32 nTeTime; /* Physical Erase Operation Time 0x24 2 */
UINT32 nTfTime; /* Data Transfer Time 0x26 2 */
} LLDSpec;
typedef struct {
UINT16 nMEListSbn; /* MEList Semi-physical Block Number */
UINT16 nMEListPbn; /* MEList Physical Block Number */
} LLDMEList;
typedef struct {
LLDMEList *pstMEList; /* Pointer to LLDMEList */
UINT16 nNumOfMList; /* Number of Entries of LLDMEList */
UINT16 nBitMapErr; /* Error Bitmap Position of MEList */
BOOL32 bFlag; /* Valid Flag */
} LLDMEArg;
/*****************************************************************************/
/* LLD Function Table Data Structures */
/*****************************************************************************/
typedef struct {
INT32 (*Init) (VOID *pParm);
INT32 (*Open) (UINT32 nDev);
INT32 (*Close) (UINT32 nDev);
INT32 (*Read) (UINT32 nDev, UINT32 nPsn, UINT32 nScts,
UINT8 *pMBuf, UINT8 *pSBuf, UINT32 nFlag);
INT32 (*Write) (UINT32 nDev, UINT32 nPsn, UINT32 nScts,
UINT8 *pMBuf, UINT8 *pSBuf, UINT32 nFlag);
INT32 (*MRead) (UINT32 nDev, UINT32 nPsn, UINT32 nScts,
SGL *pstSGL, UINT8 *pSBuf, UINT32 nFlag);
INT32 (*MWrite) (UINT32 nDev, UINT32 nPsn, UINT32 nScts,
SGL *pstSGL, UINT8 *pSBuf, UINT32 nFlag,
UINT32 *pErrPsn);
INT32 (*CopyBack) (UINT32 nDev, CpBkArg *pstCpArg,
UINT32 nFlag);
INT32 (*Erase) (UINT32 nDev, UINT32 Pbn, UINT32 nFlag);
INT32 (*GetDevInfo) (UINT32 nDev, LLDSpec *pstDevInfo);
INT32 (*ChkInitBadBlk) (UINT32 nDev, UINT32 Pbn);
INT32 (*FlushOp) (UINT32 nDev);
INT32 (*SetRWArea) (UINT32 nDev, UINT32 nSUbn, UINT32 nUBlks);
INT32 (*GetPrevOpData) (UINT32 nDev, UINT8 *pMBuf, UINT8 *pSBuf);
INT32 (*IOCtl) (UINT32 nDev, UINT32 nCmd,
UINT8 *pBufI, UINT32 nLenI,
UINT8 *pBufO, UINT32 nLenO,
UINT32 *pByteRet);
INT32 (*MErase) (UINT32 nDev, LLDMEArg *pstMEArg,
UINT32 nFlag);
INT32 (*EraseVerify) (UINT32 nDev, LLDMEArg *pstMEArg,
UINT32 nFlag);
} LowFuncTbl;
#endif /* _XSR_LLD_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?