108 lines
3.4 KiB
C
108 lines
3.4 KiB
C
/*
|
|
* STMicroelectronics NAND Controller
|
|
*
|
|
* See ADCS #7864584: "NAND Flash support upgrades for FMI Functional
|
|
* Secification".
|
|
*
|
|
* Copyright (c) 2008 STMicroelectronics Limited
|
|
* Author: Angus Clark <angus.clark@st.com>
|
|
*
|
|
* May be copied or modified under the terms of the GNU General Public
|
|
* License. See linux/COPYING for more information.
|
|
*
|
|
*/
|
|
|
|
#ifndef STM_NANDC_REGS_H
|
|
#define STM_NANDC_REGS_H
|
|
|
|
#define EMINAND_CONFIG_SIZE 0x1000
|
|
|
|
/* Register Addresses (OFFSET from EMINAND_CONFIG_BASE) */
|
|
#define EMINAND_BOOTBANK_CONFIG 0x000
|
|
#define EMINAND_RBN_STATUS 0x004
|
|
#define EMINAND_INTERRUPT_ENABLE 0x010
|
|
#define EMINAND_INTERRUPT_STATUS 0x014
|
|
#define EMINAND_INTERRUPT_CLEAR 0x018
|
|
#define EMINAND_INTERRUPT_EDGECONFIG 0x01C
|
|
#define EMINAND_CONTROL_TIMING 0x040
|
|
#define EMINAND_WEN_TIMING 0x044
|
|
#define EMINAND_REN_TIMING 0x048
|
|
#define EMINAND_FLEXMODE_CONFIG 0x100
|
|
#define EMINAND_MUXCONTROL_REG 0x104
|
|
#define EMINAND_CSN_ALTERNATE 0x108
|
|
#define EMINAND_FLEX_DATAWRITE_CONFIG 0x10C
|
|
#define EMINAND_FLEX_DATAREAD_CONFIG 0x110
|
|
#define EMINAND_FLEX_COMMAND_REG 0x114
|
|
#define EMINAND_FLEX_ADDRESS_REG 0x118
|
|
#define EMINAND_FLEX_DATA 0x120
|
|
#define EMINAND_VERSION_REG 0x144
|
|
#define EMINAND_MULTI_CS_CONFIG_REG 0x1EC
|
|
|
|
|
|
/* Advanced Flex Mode registers (OFFSET from EMINAND_CONFIG_BASE) */
|
|
#define EMINAND_AFM_SEQUENCE_REG_1 0x200
|
|
#define EMINAND_AFM_SEQUENCE_REG_2 0x204
|
|
#define EMINAND_AFM_SEQUENCE_REG_3 0x208
|
|
#define EMINAND_AFM_SEQUENCE_REG_4 0x20C
|
|
#define EMINAND_AFM_ADDRESS_REG 0x210
|
|
#define EMINAND_AFM_EXTRA_REG 0x214
|
|
#define EMINAND_AFM_COMMAND_REG 0x218
|
|
#define EMINAND_AFM_SEQUENCE_CONFIG_REG 0x21C
|
|
#define EMINAND_AFM_GENERIC_CONFIG_REG 0x220
|
|
#define EMINAND_AFM_SEQUENCE_STATUS_REG 0x240
|
|
#define EMINAND_AFM_ECC_CHECKCODE_REG_0 0x280
|
|
#define EMINAND_AFM_ECC_CHECKCODE_REG_1 0x284
|
|
#define EMINAND_AFM_ECC_CHECKCODE_REG_2 0x288
|
|
#define EMINAND_AFM_ECC_CHECKCODE_REG_3 0x28C
|
|
#define EMINAND_AFM_DATA_FIFO 0x300
|
|
|
|
/* AFM Commands */
|
|
#define AFM_STOP 0x0
|
|
#define AFM_CMD 0x1
|
|
#define AFM_INC 0x2
|
|
#define AFM_DEC_JUMP 0x3
|
|
#define AFM_DATA 0x4
|
|
#define AFM_SPARE 0x5
|
|
#define AFM_CHECK 0x6
|
|
#define AFM_ADDR 0x7
|
|
#define AFM_WRBN 0xA
|
|
|
|
/* FLEX: Address Register Fields */
|
|
#define FLX_ADDR_REG_RBN (0x1 << 27)
|
|
#define FLX_ADDR_REG_BEAT_1 (0x1 << 28)
|
|
#define FLX_ADDR_REG_BEAT_2 (0x2 << 28)
|
|
#define FLX_ADDR_REG_BEAT_3 (0x3 << 28)
|
|
#define FLX_ADDR_REG_BEAT_4 (0x0 << 28)
|
|
#define FLX_ADDR_REG_ADD8_VALID (0x1 << 30)
|
|
#define FLX_ADDR_REG_CSN_STATUS (0x1 << 31)
|
|
|
|
/* FLEX: Commad Register fields */
|
|
#define FLX_CMD_REG_RBN (0x1 << 27)
|
|
#define FLX_CMD_REG_BEAT_1 (0x1 << 28)
|
|
#define FLX_CMD_REG_BEAT_2 (0x2 << 28)
|
|
#define FLX_CMD_REG_BEAT_3 (0x3 << 28)
|
|
#define FLX_CMD_REG_BEAT_4 (0x0 << 28)
|
|
#define FLX_CMD_REG_CSN_STATUS (0x1 << 31)
|
|
#define FLX_CMD(x) (((x) & 0xff) | \
|
|
FLX_CMD_REG_RBN | \
|
|
FLX_CMD_REG_BEAT_1 | \
|
|
FLX_CMD_REG_CSN_STATUS)
|
|
|
|
/* FLEX: Data Config fields */
|
|
#define FLX_DATA_CFG_RBN (0x1 << 27)
|
|
#define FLX_DATA_CFG_BEAT_1 (0x1 << 28)
|
|
#define FLX_DATA_CFG_BEAT_2 (0x2 << 28)
|
|
#define FLX_DATA_CFG_BEAT_3 (0x3 << 28)
|
|
#define FLX_DATA_CFG_BEAT_4 (0x0 << 28)
|
|
#define FLX_DATA_CFG_BYTES_1 (0x0 << 30)
|
|
#define FLX_DATA_CFG_BYTES_2 (0x1 << 30)
|
|
#define FLX_DATA_CFG_CSN_STATUS (0x1 << 31)
|
|
|
|
/* AFM: Sequence Config fields */
|
|
#define AFM_SEQ_CFG_GO (0x1 << 26)
|
|
#define AFM_SEQ_CFG_DIR_WRITE (0x1 << 24)
|
|
|
|
|
|
|
|
#endif /* STM_NANDC_REGS_H */
|