📄 onenand.inc
字号:
/*;====================================================================
; File Name : OneNand.a
; Function : OneNand Register Address(Assembly)
; Program :
; Version : 0.0
; History
; 13/NOV/2003 : First Writing
;====================================================================*/
@ GBLL BIG_ENDIAN__
@BIG_ENDIAN__ SETL {FALSE}
/*;======================================
; OneNand Registers
; OneNand is mapped Bank0 of S3C2410
;======================================*/
;/****************************************************************************/
;/* OneNAND Register Address Definitions */
;/****************************************************************************/
.equ ONLD_REG_MANUF_ID, 0x0001E000
.equ ONLD_REG_DEV_ID, 0x0001E002
.equ ONLD_REG_VER_ID, 0x0001E004
.equ ONLD_REG_DATABUF_SIZE, 0x0001E006
.equ ONLD_REG_BOOTBUF_SIZE, 0x0001E008
.equ ONLD_REG_BUF_AMOUNT, 0x0001E00A
.equ ONLD_REG_TECH, 0x0001E00C
.equ ONLD_REG_START_ADDR1, 0x0001E200
.equ ONLD_REG_START_ADDR2, 0x0001E202
.equ ONLD_REG_START_ADDR3, 0x0001E204
.equ ONLD_REG_START_ADDR4, 0x0001E206
.equ ONLD_REG_START_ADDR5, 0x0001E208
.equ ONLD_REG_START_ADDR6, 0x0001E20A
.equ ONLD_REG_START_ADDR7, 0x0001E20C
.equ ONLD_REG_START_ADDR8, 0x0001E20E
.equ ONLD_REG_START_BUF, 0x0001E400
.equ ONLD_REG_CMD, 0x0001E440
.equ ONLD_REG_SYS_CONF1, 0x0001E442
.equ ONLD_REG_SYS_CONF2, 0x0001E444
.equ ONLD_REG_CTRL_STAT, 0x0001E480
.equ ONLD_REG_INT, 0x0001E482
.equ ONLD_REG_ULOCK_START_BA, 0x0001E498
.equ ONLD_REG_ULOCK_END_BA, 0x0001E49A
.equ ONLD_REG_WR_PROTECT_STAT, 0x0001E49C
.equ ONLD_REG_ECC_STAT, 0x0001FE00
.equ ONLD_REG_ECC_RSLT_MB0, 0x0001FE02
.equ ONLD_REG_ECC_RSLT_SB0, 0x0001FE04
.equ ONLD_REG_ECC_RSLT_MB1, 0x0001FE06
.equ ONLD_REG_ECC_RSLT_SB1, 0x0001FE08
.equ ONLD_REG_ECC_RSLT_MB2, 0x0001FE0A
.equ ONLD_REG_ECC_RSLT_SB2, 0x0001FE0C
.equ ONLD_REG_ECC_RSLT_MB3, 0x0001FE0E
.equ ONLD_REG_ECC_RSLT_SB3, 0x0001FE10
;/****************************************************************************/
;/* OneNAND Main Buffer Address */
;/****************************************************************************/
.equ ONLD_BT_MB0_ADDR, 0x00000000
.equ ONLD_BT_MB1_ADDR, 0x00000200
.equ ONLD_DT_MB00_ADDR, 0x00000400
.equ ONLD_DT_MB01_ADDR, 0x00000600
.equ ONLD_DT_MB02_ADDR, 0x00000800
.equ ONLD_DT_MB03_ADDR, 0x00000A00
.equ ONLD_DT_MB10_ADDR, 0x00000C00
.equ ONLD_DT_MB11_ADDR, 0x00000E00
.equ ONLD_DT_MB12_ADDR, 0x00001000
.equ ONLD_DT_MB13_ADDR, 0x00001200
.equ ONLD_BT_SB0_ADDR, 0x00010000
.equ ONLD_BT_SB1_ADDR, 0x00010010
.equ ONLD_DT_SB00_ADDR, 0x00010020
.equ ONLD_DT_SB01_ADDR, 0x00010030
.equ ONLD_DT_SB02_ADDR, 0x00010040
.equ ONLD_DT_SB03_ADDR, 0x00010050
.equ ONLD_DT_SB10_ADDR, 0x00010060
.equ ONLD_DT_SB11_ADDR, 0x00010070
.equ ONLD_DT_SB12_ADDR, 0x00010080
.equ ONLD_DT_SB13_ADDR, 0x00010090
;/****************************************************************************/
;/* OneNAND Register Masking values */
;/****************************************************************************/
.equ MASK_DFS, 0x8000
.equ MASK_FBA, 0x01FF
.equ MASK_DBS, 0x8000
.equ MASK_FCBA, 0x01FF
.equ MASK_FCPA, 0x00FC
.equ MASK_FCSA, 0x0003
.equ MASK_FPA, 0x00FC
.equ MASK_FSA, 0x0003
.equ MASK_BSA, 0x0F00
.equ MASK_BSC, 0x0003
;/****************************************************************************/
;/* OneNAND Start Buffer Register Setting values */
;/****************************************************************************/
.equ BSA_BT_BUF0, 0x0800
.equ BSA_BT_BUF1, 0x0900
.equ BSA_DT_BUF00, 0x0000
.equ BSA_DT_BUF01, 0x0100
.equ BSA_DT_BUF02, 0x0200
.equ BSA_DT_BUF03, 0x0300
.equ BSA_DT_BUF10, 0x0400
.equ BSA_DT_BUF11, 0x0500
.equ BSA_DT_BUF12, 0x0600
.equ BSA_DT_BUF13, 0x0700
.equ BSC_1_SECTOR, 0x0001
.equ BSC_2_SECTOR, 0x0002
.equ BSC_3_SECTOR, 0x0003
.equ BSC_4_SECTOR, 0x0000
;/****************************************************************************/
;/* OneNAND Command Set */
;/****************************************************************************/
.equ ONLD_CMD_READ_PAGE, 0x0000
.equ ONLD_CMD_READ_SPARE, 0x0013
.equ ONLD_CMD_WRITE_PAGE, 0x0080
.equ ONLD_CMD_WRITE_SPARE, 0x001A
.equ ONLD_CMD_CPBACK_PRGM, 0x001B
.equ ONLD_CMD_ULOCK_NAND, 0x0023
.equ ONLD_CMD_LOCK_NAND, 0x002A
.equ ONLD_CMD_LOCK_TIGHT, 0x002C
.equ ONLD_CMD_ULOCK_BTRAM, 0x0027
.equ ONLD_CMD_LOCK_BTRAM, 0x0029
.equ ONLD_CMD_ERASE_BLK, 0x0094
.equ ONLD_CMD_RST_NF_CORE, 0x00F0
.equ ONLD_CMD_RESET, 0x00F3
.equ ONLD_CMD_CACHE_PRGM, 0x008C
.equ ONLD_CMD_OPT_ACCESS, 0x0065
;/****************************************************************************/
;/* OneNAND System Configureation1 Register Values */
;/****************************************************************************/
.equ SYNC_READ_MODE, 0x8000
.equ ASYNC_READ_MODE, 0x0000
.equ BST_RD_LATENCY_8, 0x0000 /* N/A */
.equ BST_RD_LATENCY_9, 0x1000 /* N/A */
.equ BST_RD_LATENCY_10, 0x2000 /* N/A */
.equ BST_RD_LATENCY_3, 0x3000 /* min */
.equ BST_RD_LATENCY_4, 0x4000 /* default */
.equ BST_RD_LATENCY_5, 0x5000
.equ BST_RD_LATENCY_6, 0x6000
.equ BST_RD_LATENCY_7, 0x7000
.equ BST_LENGTH_CONT, 0x0000 /* default */
.equ BST_LENGTH_4WD, 0x0200
.equ BST_LENGTH_8WD, 0x0400
.equ BST_LENGTH_16WD, 0x0600
.equ BST_LENGTH_32WD, 0x0800 /* N/A on spare */
.equ CONF1_ECC_ON, 0xFEFF
.equ CONF1_ECC_OFF, 0x0100 /* (~CONF1_ECC_ON) 0x0100 */
.equ RDY_POLAR, 0x0080
.equ INT_POLAR, 0x0040
.equ IOBE_ENABLE, 0x0020
.equ BWPS_UNLOCKED, 0x0001
;/****************************************************************************/
;/* OneNAND Controller Status Register Values */
;/****************************************************************************/
.equ CTRL_BUSY, 0x8000
.equ FAULT_CHK, 0x4000
.equ READ_BUSY, 0x2000
.equ WRITE_BUSY, 0x1000
.equ ERASE_BUSY, 0x0800
.equ RESET_BUSY, 0x0400
.equ PRE_CACHEPROGRAM_FAIL, 0x0010
.equ CUR_PROGRAM_FAIL, 0x0400 /* 0x0080 */
.equ TIME_OUT, 0x0001
;/****************************************************************************/
;/* OneNAND Interrupt Status Register Values */
;/****************************************************************************/
.equ INT_MASTER, 0x8000
.equ INT_CLEAR, 0x0000
.equ INT_READ, 0x0080
.equ INT_WRITE, 0x0040
.equ INT_ERASE, 0x0020
.equ INT_RESET, 0x0010
.equ PEND_INT, (INT_MASTER)
.equ PEND_READ, (INT_MASTER + INT_READ)
.equ PEND_WRITE, (INT_MASTER + INT_WRITE)
.equ PEND_ERASE, (INT_MASTER + INT_ERASE)
.equ PEND_RESET, (INT_MASTER + INT_RESET)
;/****************************************************************************/
;/* OneNAND Write Protection Status Register Values */
;/****************************************************************************/
.equ UNLOCKED_STAT, 0x0004
.equ LOCKED_STAT, 0x0002
.equ LOCK_TIGHTEN_STAT, 0x0001
;/****************************************************************************/
;/* OneNAND ECC Status Register Valuies */
;/****************************************************************************/
.equ ECC_SB0_NO_ERR, 0x0000
.equ ECC_SB0_1BIT_ERR, 0x0001
.equ ECC_SB0_2BIT_ERR, 0x0002
.equ ECC_MB0_NO_ERR, 0x0000
.equ ECC_MB0_1BIT_ERR, 0x0004
.equ ECC_MB0_2BIT_ERR, 0x0008
.equ ECC_SB1_NO_ERR, 0x0000
.equ ECC_SB1_1BIT_ERR, 0x0010
.equ ECC_SB1_2BIT_ERR, 0x0020
.equ ECC_MB1_NO_ERR, 0x0000
.equ ECC_MB1_1BIT_ERR, 0x0040
.equ ECC_MB1_2BIT_ERR, 0x0080
.equ ECC_SB2_NO_ERR, 0x0000
.equ ECC_SB2_1BIT_ERR, 0x0100
.equ ECC_SB2_2BIT_ERR, 0x0200
.equ ECC_MB2_NO_ERR, 0x0000
.equ ECC_MB2_1BIT_ERR, 0x0400
.equ ECC_MB2_2BIT_ERR, 0x0800
.equ ECC_SB3_NO_ERR, 0x0000
.equ ECC_SB3_1BIT_ERR, 0x1000
.equ ECC_SB3_2BIT_ERR, 0x2000
.equ ECC_MB3_NO_ERR, 0x0000
.equ ECC_MB3_1BIT_ERR, 0x4000
.equ ECC_MB3_2BIT_ERR, 0x8000
.equ ECC_ANY_2BIT_ERR, 0xAAAA
.equ ECC_ANY_BIT_ERR, 0xFFFF
.equ ECC_MAIN_BIT_ERR, 0xCCCC
.equ ECC_SPARE_BIT_ERR, 0x3333
.equ ECC_REG_CLEAR, 0x0000
;/****************************************************************************/
;/* OneNAND Misc Values */
;/****************************************************************************/
.equ SECTOR0, 0x0000
.equ SECTOR1, 0x0001
.equ SECTOR2, 0x0002
.equ SECTOR3, 0x0003
.equ DATA_BUF0, 0x0000
.equ DATA_BUF1, 0x0001
.equ SECTOR0_OFFSET, 0x0000
.equ SECTOR1_OFFSET, 0x0200
.equ SECTOR2_OFFSET, 0x0400
.equ SECTOR3_OFFSET, 0x0600
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -