diff options
author | Timo Ketola <timo@exertus.fi> | 2012-01-17 10:36:02 +0200 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2012-01-23 11:46:10 +0000 |
commit | 536ca77e38fee2967275c8e08354804adae87e82 (patch) | |
tree | 3f7124f991be04938eb589d84ed9b308365b1f6d /src/flash/nand/mxc.c | |
parent | a559f8a79187ec179d9950143c65dd107eb419f5 (diff) |
i.MX25: Add support for i.MX25 NAND Flash Controller
This patch is based on Erik Ahlén's work on i.MX35 NFC support. Basically it redefines the CCM.RCSR register which is in a different address in i.MX25.
Change-Id: Ia6faf9cb5efae5e564b72ef9a9b7c7f8bfde3ce0
Signed-off-by: Timo Ketola <timo@exertus.fi>
Reviewed-on: http://openocd.zylin.com/383
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/flash/nand/mxc.c')
-rw-r--r-- | src/flash/nand/mxc.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/flash/nand/mxc.c b/src/flash/nand/mxc.c index 50e4123b..b6694ca0 100644 --- a/src/flash/nand/mxc.c +++ b/src/flash/nand/mxc.c @@ -50,7 +50,8 @@ #define nfc_is_v1() (mxc_nf_info->mxc_version == MXC_VERSION_MX27 || \ mxc_nf_info->mxc_version == MXC_VERSION_MX31) -#define nfc_is_v2() (mxc_nf_info->mxc_version == MXC_VERSION_MX35) +#define nfc_is_v2() (mxc_nf_info->mxc_version == MXC_VERSION_MX25 || \ + mxc_nf_info->mxc_version == MXC_VERSION_MX35) /* This permits to print (in LOG_INFO) how much bytes * has been written after a page read or write. @@ -95,14 +96,18 @@ NAND_DEVICE_COMMAND_HANDLER(mxc_nand_device_command) nand->controller_priv = mxc_nf_info; if (CMD_ARGC < 4) { - LOG_ERROR("use \"nand device mxc target mx27|mx31|mx35 noecc|hwecc [biswap]\""); + LOG_ERROR("use \"nand device mxc target mx25|mx27|mx31|mx35 noecc|hwecc [biswap]\""); return ERROR_FAIL; } /* * check board type */ - if (strcmp(CMD_ARGV[2], "mx27") == 0) { + if (strcmp(CMD_ARGV[2], "mx25") == 0) { + mxc_nf_info->mxc_version = MXC_VERSION_MX25; + mxc_nf_info->mxc_base_addr = 0xBB000000; + mxc_nf_info->mxc_regs_addr = mxc_nf_info->mxc_base_addr + 0x1E00; + } else if (strcmp(CMD_ARGV[2], "mx27") == 0) { mxc_nf_info->mxc_version = MXC_VERSION_MX27; mxc_nf_info->mxc_base_addr = 0xD8000000; mxc_nf_info->mxc_regs_addr = mxc_nf_info->mxc_base_addr + 0x0E00; @@ -230,6 +235,10 @@ static int mxc_init(struct nand_device *nand) SREG = MX3_PCSR; SEL_16BIT = MX3_PCSR_NF_16BIT_SEL; SEL_FMS = MX3_PCSR_NF_FMS; + } else if (mxc_nf_info->mxc_version == MXC_VERSION_MX25) { + SREG = MX25_RCSR; + SEL_16BIT = MX25_RCSR_NF_16BIT_SEL; + SEL_FMS = MX25_RCSR_NF_FMS; } else if (mxc_nf_info->mxc_version == MXC_VERSION_MX35) { SREG = MX35_RCSR; SEL_16BIT = MX35_RCSR_NF_16BIT_SEL; |