OpenOCD
Select one of the symbols to view example projects that use it.
Symbol previews are coming soon...
Outline
#define OPENOCD_FLASH_NAND_MXC_H
#define MXC_NF_BUFSIZ
#define MXC_NF_BUFADDR
#define MXC_NF_FADDR
#define MXC_NF_FCMD
#define MXC_NF_BUFCFG
#define MXC_NF_ECCSTATUS
#define MXC_NF_ECCMAINPOS
#define MXC_NF_V1_ECCSPAREPOS
#define MXC_NF_V2_SPAS
#define MXC_NF_FWP
#define MXC_NF_V1_UNLOCKSTART
#define MXC_NF_V1_UNLOCKEND
#define MXC_NF_V2_UNLOCKSTART0
#define MXC_NF_V2_UNLOCKSTART1
#define MXC_NF_V2_UNLOCKSTART2
#define MXC_NF_V2_UNLOCKSTART3
#define MXC_NF_V2_UNLOCKEND0
#define MXC_NF_V2_UNLOCKEND1
#define MXC_NF_V2_UNLOCKEND2
#define MXC_NF_V2_UNLOCKEND3
#define MXC_NF_FWPSTATUS
#define MXC_NF_CFG1
#define MXC_NF_CFG2
#define MXC_NF_MAIN_BUFFER0
#define MXC_NF_MAIN_BUFFER1
#define MXC_NF_MAIN_BUFFER2
#define MXC_NF_MAIN_BUFFER3
#define MXC_NF_V1_SPARE_BUFFER0
#define MXC_NF_V1_SPARE_BUFFER1
#define MXC_NF_V1_SPARE_BUFFER2
#define MXC_NF_V1_SPARE_BUFFER3
#define MXC_NF_V2_MAIN_BUFFER4
#define MXC_NF_V2_MAIN_BUFFER5
#define MXC_NF_V2_MAIN_BUFFER6
#define MXC_NF_V2_MAIN_BUFFER7
#define MXC_NF_V2_SPARE_BUFFER0
#define MXC_NF_V2_SPARE_BUFFER1
#define MXC_NF_V2_SPARE_BUFFER2
#define MXC_NF_V2_SPARE_BUFFER3
#define MXC_NF_V2_SPARE_BUFFER4
#define MXC_NF_V2_SPARE_BUFFER5
#define MXC_NF_V2_SPARE_BUFFER6
#define MXC_NF_V2_SPARE_BUFFER7
#define MXC_NF_MAIN_BUFFER_LEN
#define MXC_NF_SPARE_BUFFER_LEN
#define MXC_NF_SPARE_BUFFER_MAX
#define MXC_NF_BIT_ECC_4BIT
#define MXC_NF_BIT_SPARE_ONLY_EN
#define MXC_NF_BIT_ECC_EN
#define MXC_NF_BIT_INT_DIS
#define MXC_NF_BIT_BE_EN
#define MXC_NF_BIT_RESET_EN
#define MXC_NF_BIT_FORCE_CE
#define MXC_NF_V2_CFG1_PPB
#define MXC_NF_BIT_OP_FCI
#define MXC_NF_BIT_OP_FAI
#define MXC_NF_BIT_OP_FDI
#define MXC_NF_BIT_DATAOUT_TYPE
#define MXC_NF_BIT_OP_DONE
#define MXC_CCM_CGR2
#define MXC_GPR
#define MX2_FMCR
#define MX2_FMCR_NF_16BIT_SEL
#define MX2_FMCR_NF_FMS
#define MX25_RCSR
#define MX25_RCSR_NF_16BIT_SEL
#define MX25_RCSR_NF_FMS
#define MX25_RCSR_NF_4K
#define MX3_PCSR
#define MX3_PCSR_NF_16BIT_SEL
#define MX3_PCSR_NF_FMS
#define MX35_RCSR
#define MX35_RCSR_NF_16BIT_SEL
#define MX35_RCSR_NF_FMS
#define MX35_RCSR_NF_4K
mxc_version
MXC_VERSION_UKWN
MXC_VERSION_MX25
MXC_VERSION_MX27
MXC_VERSION_MX31
MXC_VERSION_MX35
mxc_dataout_type
MXC_NF_DATAOUT_PAGE
MXC_NF_DATAOUT_NANDID
MXC_NF_DATAOUT_NANDSTATUS
mxc_nf_finalize_action
MXC_NF_FIN_NONE
MXC_NF_FIN_DATAOUT
mxc_nf_flags
target_little_endian
nand_readonly
one_kb_sram
hw_ecc_enabled
biswap_enabled
mxc_nf_controller
mxc_version
mxc_base_addr
mxc_regs_addr
optype
fin
flags
Files
loading...
CodeScope
Development Tools
OpenOCD
src/flash/nand/mxc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/* SPDX-License-Identifier: GPL-2.0-or-later */
/***************************************************************************
* Copyright (C) 2009 by Alexei Babich *
* Rezonans plc., Chelyabinsk, Russia *
* impatt@mail.ru *
* *
* Copyright (C) 2011 by Erik Ahlen *
* Avalon Innovation, Sweden *
***************************************************************************/
/* ... */
#ifndef
OPENOCD_FLASH_NAND_MXC_H
#define
OPENOCD_FLASH_NAND_MXC_H
/*
* Freescale iMX OpenOCD NAND Flash controller support.
* based on Freescale iMX2* and iMX3* OpenOCD NAND Flash controller support.
*
* Many thanks to Ben Dooks for writing s3c24xx driver.
*/
/* ... */
#define
MXC_NF_BUFSIZ
(
mxc_nf_info
->
mxc_regs_addr
+
0x00
)
#define
MXC_NF_BUFADDR
(
mxc_nf_info
->
mxc_regs_addr
+
0x04
)
#define
MXC_NF_FADDR
(
mxc_nf_info
->
mxc_regs_addr
+
0x06
)
#define
MXC_NF_FCMD
(
mxc_nf_info
->
mxc_regs_addr
+
0x08
)
#define
MXC_NF_BUFCFG
(
mxc_nf_info
->
mxc_regs_addr
+
0x0a
)
#define
MXC_NF_ECCSTATUS
(
mxc_nf_info
->
mxc_regs_addr
+
0x0c
)
#define
MXC_NF_ECCMAINPOS
(
mxc_nf_info
->
mxc_regs_addr
+
0x0e
)
#define
MXC_NF_V1_ECCSPAREPOS
(
mxc_nf_info
->
mxc_regs_addr
+
0x10
)
#define
MXC_NF_V2_SPAS
(
mxc_nf_info
->
mxc_regs_addr
+
0x10
)
#define
MXC_NF_FWP
(
mxc_nf_info
->
mxc_regs_addr
+
0x12
)
#define
MXC_NF_V1_UNLOCKSTART
(
mxc_nf_info
->
mxc_regs_addr
+
0x14
)
#define
MXC_NF_V1_UNLOCKEND
(
mxc_nf_info
->
mxc_regs_addr
+
0x16
)
#define
MXC_NF_V2_UNLOCKSTART0
(
mxc_nf_info
->
mxc_regs_addr
+
0x20
)
#define
MXC_NF_V2_UNLOCKSTART1
(
mxc_nf_info
->
mxc_regs_addr
+
0x24
)
#define
MXC_NF_V2_UNLOCKSTART2
(
mxc_nf_info
->
mxc_regs_addr
+
0x28
)
#define
MXC_NF_V2_UNLOCKSTART3
(
mxc_nf_info
->
mxc_regs_addr
+
0x2c
)
#define
MXC_NF_V2_UNLOCKEND0
(
mxc_nf_info
->
mxc_regs_addr
+
0x22
)
#define
MXC_NF_V2_UNLOCKEND1
(
mxc_nf_info
->
mxc_regs_addr
+
0x26
)
#define
MXC_NF_V2_UNLOCKEND2
(
mxc_nf_info
->
mxc_regs_addr
+
0x2a
)
#define
MXC_NF_V2_UNLOCKEND3
(
mxc_nf_info
->
mxc_regs_addr
+
0x2e
)
#define
MXC_NF_FWPSTATUS
(
mxc_nf_info
->
mxc_regs_addr
+
0x18
)
/*
* all bits not marked as self-clearing bit
*/
/* ... */
#define
MXC_NF_CFG1
(
mxc_nf_info
->
mxc_regs_addr
+
0x1a
)
#define
MXC_NF_CFG2
(
mxc_nf_info
->
mxc_regs_addr
+
0x1c
)
#define
MXC_NF_MAIN_BUFFER0
(
mxc_nf_info
->
mxc_base_addr
+
0x0000
)
#define
MXC_NF_MAIN_BUFFER1
(
mxc_nf_info
->
mxc_base_addr
+
0x0200
)
#define
MXC_NF_MAIN_BUFFER2
(
mxc_nf_info
->
mxc_base_addr
+
0x0400
)
#define
MXC_NF_MAIN_BUFFER3
(
mxc_nf_info
->
mxc_base_addr
+
0x0600
)
#define
MXC_NF_V1_SPARE_BUFFER0
(
mxc_nf_info
->
mxc_base_addr
+
0x0800
)
#define
MXC_NF_V1_SPARE_BUFFER1
(
mxc_nf_info
->
mxc_base_addr
+
0x0810
)
#define
MXC_NF_V1_SPARE_BUFFER2
(
mxc_nf_info
->
mxc_base_addr
+
0x0820
)
#define
MXC_NF_V1_SPARE_BUFFER3
(
mxc_nf_info
->
mxc_base_addr
+
0x0830
)
#define
MXC_NF_V2_MAIN_BUFFER4
(
mxc_nf_info
->
mxc_base_addr
+
0x0800
)
#define
MXC_NF_V2_MAIN_BUFFER5
(
mxc_nf_info
->
mxc_base_addr
+
0x0a00
)
#define
MXC_NF_V2_MAIN_BUFFER6
(
mxc_nf_info
->
mxc_base_addr
+
0x0c00
)
#define
MXC_NF_V2_MAIN_BUFFER7
(
mxc_nf_info
->
mxc_base_addr
+
0x0e00
)
#define
MXC_NF_V2_SPARE_BUFFER0
(
mxc_nf_info
->
mxc_base_addr
+
0x1000
)
#define
MXC_NF_V2_SPARE_BUFFER1
(
mxc_nf_info
->
mxc_base_addr
+
0x1040
)
#define
MXC_NF_V2_SPARE_BUFFER2
(
mxc_nf_info
->
mxc_base_addr
+
0x1080
)
#define
MXC_NF_V2_SPARE_BUFFER3
(
mxc_nf_info
->
mxc_base_addr
+
0x10c0
)
#define
MXC_NF_V2_SPARE_BUFFER4
(
mxc_nf_info
->
mxc_base_addr
+
0x1100
)
#define
MXC_NF_V2_SPARE_BUFFER5
(
mxc_nf_info
->
mxc_base_addr
+
0x1140
)
#define
MXC_NF_V2_SPARE_BUFFER6
(
mxc_nf_info
->
mxc_base_addr
+
0x1180
)
#define
MXC_NF_V2_SPARE_BUFFER7
(
mxc_nf_info
->
mxc_base_addr
+
0x11c0
)
#define
MXC_NF_MAIN_BUFFER_LEN
512
#define
MXC_NF_SPARE_BUFFER_LEN
16
#define
MXC_NF_SPARE_BUFFER_MAX
64
#define
MXC_NF_V1_LAST_BUFFADDR
(
(
MXC_NF_V1_SPARE_BUFFER3
)
+
\
MXC_NF_SPARE_BUFFER_LEN
-
2
)
...
#define
MXC_NF_V2_LAST_BUFFADDR
(
(
MXC_NF_V2_SPARE_BUFFER7
)
+
\
MXC_NF_SPARE_BUFFER_LEN
-
2
)
...
/* bits in MXC_NF_CFG1 register */
#define
MXC_NF_BIT_ECC_4BIT
(
1
<
<
0
)
#define
MXC_NF_BIT_SPARE_ONLY_EN
(
1
<
<
2
)
#define
MXC_NF_BIT_ECC_EN
(
1
<
<
3
)
#define
MXC_NF_BIT_INT_DIS
(
1
<
<
4
)
#define
MXC_NF_BIT_BE_EN
(
1
<
<
5
)
#define
MXC_NF_BIT_RESET_EN
(
1
<
<
6
)
#define
MXC_NF_BIT_FORCE_CE
(
1
<
<
7
)
#define
MXC_NF_V2_CFG1_PPB
(
x
)
(
(
(
x
)
&
0x3
)
<
<
9
)
/* bits in MXC_NF_CFG2 register */
/*Flash Command Input*/
#define
MXC_NF_BIT_OP_FCI
(
1
<
<
0
)
/*
* Flash Address Input
*/
/* ... */
#define
MXC_NF_BIT_OP_FAI
(
1
<
<
1
)
/*
* Flash Data Input
*/
/* ... */
#define
MXC_NF_BIT_OP_FDI
(
1
<
<
2
)
/* see "enum mx_dataout_type" below */
#define
MXC_NF_BIT_DATAOUT_TYPE
(
x
)
(
(
x
)
<
<
3
)
#define
MXC_NF_BIT_OP_DONE
(
1
<
<
15
)
#define
MXC_CCM_CGR2
0x53f80028
#define
MXC_GPR
0x43fac008
#define
MX2_FMCR
0x10027814
#define
MX2_FMCR_NF_16BIT_SEL
(
1
<
<
4
)
#define
MX2_FMCR_NF_FMS
(
1
<
<
5
)
#define
MX25_RCSR
0x53f80018
#define
MX25_RCSR_NF_16BIT_SEL
(
1
<
<
14
)
#define
MX25_RCSR_NF_FMS
(
1
<
<
8
)
#define
MX25_RCSR_NF_4K
(
1
<
<
9
)
#define
MX3_PCSR
0x53f8000c
#define
MX3_PCSR_NF_16BIT_SEL
(
1
<
<
31
)
#define
MX3_PCSR_NF_FMS
(
1
<
<
30
)
#define
MX35_RCSR
0x53f80018
#define
MX35_RCSR_NF_16BIT_SEL
(
1
<
<
14
)
#define
MX35_RCSR_NF_FMS
(
1
<
<
8
)
#define
MX35_RCSR_NF_4K
(
1
<
<
9
)
78 defines
enum
mxc_version
{
MXC_VERSION_UKWN
=
0
,
MXC_VERSION_MX25
=
1
,
MXC_VERSION_MX27
=
2
,
MXC_VERSION_MX31
=
3
,
MXC_VERSION_MX35
=
4
...
}
;
enum
mxc_dataout_type
{
MXC_NF_DATAOUT_PAGE
=
1
,
MXC_NF_DATAOUT_NANDID
=
2
,
MXC_NF_DATAOUT_NANDSTATUS
=
4
,
...
}
;
enum
mxc_nf_finalize_action
{
MXC_NF_FIN_NONE
,
MXC_NF_FIN_DATAOUT
,
...
}
;
struct
mxc_nf_flags
{
unsigned
target_little_endian
:
1
;
unsigned
nand_readonly
:
1
;
unsigned
one_kb_sram
:
1
;
unsigned
hw_ecc_enabled
:
1
;
unsigned
biswap_enabled
:
1
;
...
}
;
struct
mxc_nf_controller
{
enum
mxc_version
mxc_version
;
uint32_t
mxc_base_addr
;
uint32_t
mxc_regs_addr
;
enum
mxc_dataout_type
optype
;
enum
mxc_nf_finalize_action
fin
;
struct
mxc_nf_flags
flags
;
...
}
;
/* ... */
#endif
/* OPENOCD_FLASH_NAND_MXC_H */