xref: /OK3568_Linux_fs/kernel/drivers/mtd/chips/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyunmenu "RAM/ROM/Flash chip drivers"
3*4882a593Smuzhiyun	depends on MTD!=n
4*4882a593Smuzhiyun
5*4882a593Smuzhiyunconfig MTD_CFI
6*4882a593Smuzhiyun	tristate "Detect flash chips by Common Flash Interface (CFI) probe"
7*4882a593Smuzhiyun	select MTD_GEN_PROBE
8*4882a593Smuzhiyun	select MTD_CFI_UTIL
9*4882a593Smuzhiyun	help
10*4882a593Smuzhiyun	  The Common Flash Interface specification was developed by Intel,
11*4882a593Smuzhiyun	  AMD and other flash manufactures that provides a universal method
12*4882a593Smuzhiyun	  for probing the capabilities of flash devices. If you wish to
13*4882a593Smuzhiyun	  support any device that is CFI-compliant, you need to enable this
14*4882a593Smuzhiyun	  option. Visit <https://www.amd.com/products/nvd/overview/cfi.html>
15*4882a593Smuzhiyun	  for more information on CFI.
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunconfig MTD_JEDECPROBE
18*4882a593Smuzhiyun	tristate "Detect non-CFI AMD/JEDEC-compatible flash chips"
19*4882a593Smuzhiyun	select MTD_GEN_PROBE
20*4882a593Smuzhiyun	select MTD_CFI_UTIL
21*4882a593Smuzhiyun	help
22*4882a593Smuzhiyun	  This option enables JEDEC-style probing of flash chips which are not
23*4882a593Smuzhiyun	  compatible with the Common Flash Interface, but will use the common
24*4882a593Smuzhiyun	  CFI-targeted flash drivers for any chips which are identified which
25*4882a593Smuzhiyun	  are in fact compatible in all but the probe method. This actually
26*4882a593Smuzhiyun	  covers most AMD/Fujitsu-compatible chips and also non-CFI
27*4882a593Smuzhiyun	  Intel chips.
28*4882a593Smuzhiyun
29*4882a593Smuzhiyunconfig MTD_GEN_PROBE
30*4882a593Smuzhiyun	tristate
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunconfig MTD_CFI_ADV_OPTIONS
33*4882a593Smuzhiyun	bool "Flash chip driver advanced configuration options"
34*4882a593Smuzhiyun	depends on MTD_GEN_PROBE
35*4882a593Smuzhiyun	help
36*4882a593Smuzhiyun	  If you need to specify a specific endianness for access to flash
37*4882a593Smuzhiyun	  chips, or if you wish to reduce the size of the kernel by including
38*4882a593Smuzhiyun	  support for only specific arrangements of flash chips, say 'Y'. This
39*4882a593Smuzhiyun	  option does not directly affect the code, but will enable other
40*4882a593Smuzhiyun	  configuration options which allow you to do so.
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun	  If unsure, say 'N'.
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunchoice
45*4882a593Smuzhiyun	prompt "Flash cmd/query data swapping"
46*4882a593Smuzhiyun	depends on MTD_CFI_ADV_OPTIONS
47*4882a593Smuzhiyun	default MTD_CFI_NOSWAP
48*4882a593Smuzhiyun	help
49*4882a593Smuzhiyun	  This option defines the way in which the CPU attempts to arrange
50*4882a593Smuzhiyun	  data bits when writing the 'magic' commands to the chips. Saying
51*4882a593Smuzhiyun	  'NO', which is the default when CONFIG_MTD_CFI_ADV_OPTIONS isn't
52*4882a593Smuzhiyun	  enabled, means that the CPU will not do any swapping; the chips
53*4882a593Smuzhiyun	  are expected to be wired to the CPU in 'host-endian' form.
54*4882a593Smuzhiyun	  Specific arrangements are possible with the BIG_ENDIAN_BYTE and
55*4882a593Smuzhiyun	  LITTLE_ENDIAN_BYTE, if the bytes are reversed.
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunconfig MTD_CFI_NOSWAP
58*4882a593Smuzhiyun	depends on !ARCH_IXP4XX || CPU_BIG_ENDIAN
59*4882a593Smuzhiyun	bool "NO"
60*4882a593Smuzhiyun
61*4882a593Smuzhiyunconfig MTD_CFI_BE_BYTE_SWAP
62*4882a593Smuzhiyun	bool "BIG_ENDIAN_BYTE"
63*4882a593Smuzhiyun
64*4882a593Smuzhiyunconfig MTD_CFI_LE_BYTE_SWAP
65*4882a593Smuzhiyun	depends on !ARCH_IXP4XX
66*4882a593Smuzhiyun	bool "LITTLE_ENDIAN_BYTE"
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunendchoice
69*4882a593Smuzhiyun
70*4882a593Smuzhiyunconfig MTD_CFI_GEOMETRY
71*4882a593Smuzhiyun	bool "Specific CFI Flash geometry selection"
72*4882a593Smuzhiyun	depends on MTD_CFI_ADV_OPTIONS
73*4882a593Smuzhiyun	select MTD_MAP_BANK_WIDTH_1 if  !(MTD_MAP_BANK_WIDTH_2 || \
74*4882a593Smuzhiyun		 MTD_MAP_BANK_WIDTH_4  || MTD_MAP_BANK_WIDTH_8 || \
75*4882a593Smuzhiyun		 MTD_MAP_BANK_WIDTH_16 || MTD_MAP_BANK_WIDTH_32)
76*4882a593Smuzhiyun	select MTD_CFI_I1 if !(MTD_CFI_I2 || MTD_CFI_I4 || MTD_CFI_I8)
77*4882a593Smuzhiyun	help
78*4882a593Smuzhiyun	  This option does not affect the code directly, but will enable
79*4882a593Smuzhiyun	  some other configuration options which would allow you to reduce
80*4882a593Smuzhiyun	  the size of the kernel by including support for only certain
81*4882a593Smuzhiyun	  arrangements of CFI chips. If unsure, say 'N' and all options
82*4882a593Smuzhiyun	  which are supported by the current code will be enabled.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_1
85*4882a593Smuzhiyun	bool "Support  8-bit buswidth" if MTD_CFI_GEOMETRY
86*4882a593Smuzhiyun	default y
87*4882a593Smuzhiyun	help
88*4882a593Smuzhiyun	  If you wish to support CFI devices on a physical bus which is
89*4882a593Smuzhiyun	  8 bits wide, say 'Y'.
90*4882a593Smuzhiyun
91*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_2
92*4882a593Smuzhiyun	bool "Support 16-bit buswidth" if MTD_CFI_GEOMETRY
93*4882a593Smuzhiyun	default y
94*4882a593Smuzhiyun	help
95*4882a593Smuzhiyun	  If you wish to support CFI devices on a physical bus which is
96*4882a593Smuzhiyun	  16 bits wide, say 'Y'.
97*4882a593Smuzhiyun
98*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_4
99*4882a593Smuzhiyun	bool "Support 32-bit buswidth" if MTD_CFI_GEOMETRY
100*4882a593Smuzhiyun	default y
101*4882a593Smuzhiyun	help
102*4882a593Smuzhiyun	  If you wish to support CFI devices on a physical bus which is
103*4882a593Smuzhiyun	  32 bits wide, say 'Y'.
104*4882a593Smuzhiyun
105*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_8
106*4882a593Smuzhiyun	bool "Support 64-bit buswidth" if MTD_CFI_GEOMETRY
107*4882a593Smuzhiyun	default n
108*4882a593Smuzhiyun	help
109*4882a593Smuzhiyun	  If you wish to support CFI devices on a physical bus which is
110*4882a593Smuzhiyun	  64 bits wide, say 'Y'.
111*4882a593Smuzhiyun
112*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_16
113*4882a593Smuzhiyun	bool "Support 128-bit buswidth" if MTD_CFI_GEOMETRY
114*4882a593Smuzhiyun	default n
115*4882a593Smuzhiyun	help
116*4882a593Smuzhiyun	  If you wish to support CFI devices on a physical bus which is
117*4882a593Smuzhiyun	  128 bits wide, say 'Y'.
118*4882a593Smuzhiyun
119*4882a593Smuzhiyunconfig MTD_MAP_BANK_WIDTH_32
120*4882a593Smuzhiyun	bool "Support 256-bit buswidth" if MTD_CFI_GEOMETRY
121*4882a593Smuzhiyun	select MTD_COMPLEX_MAPPINGS if HAS_IOMEM
122*4882a593Smuzhiyun	default n
123*4882a593Smuzhiyun	help
124*4882a593Smuzhiyun	  If you wish to support CFI devices on a physical bus which is
125*4882a593Smuzhiyun	  256 bits wide, say 'Y'.
126*4882a593Smuzhiyun
127*4882a593Smuzhiyunconfig MTD_CFI_I1
128*4882a593Smuzhiyun	bool "Support 1-chip flash interleave" if MTD_CFI_GEOMETRY
129*4882a593Smuzhiyun	default y
130*4882a593Smuzhiyun	help
131*4882a593Smuzhiyun	  If your flash chips are not interleaved - i.e. you only have one
132*4882a593Smuzhiyun	  flash chip addressed by each bus cycle, then say 'Y'.
133*4882a593Smuzhiyun
134*4882a593Smuzhiyunconfig MTD_CFI_I2
135*4882a593Smuzhiyun	bool "Support 2-chip flash interleave" if MTD_CFI_GEOMETRY
136*4882a593Smuzhiyun	default y
137*4882a593Smuzhiyun	help
138*4882a593Smuzhiyun	  If your flash chips are interleaved in pairs - i.e. you have two
139*4882a593Smuzhiyun	  flash chips addressed by each bus cycle, then say 'Y'.
140*4882a593Smuzhiyun
141*4882a593Smuzhiyunconfig MTD_CFI_I4
142*4882a593Smuzhiyun	bool "Support 4-chip flash interleave" if MTD_CFI_GEOMETRY
143*4882a593Smuzhiyun	default n
144*4882a593Smuzhiyun	help
145*4882a593Smuzhiyun	  If your flash chips are interleaved in fours - i.e. you have four
146*4882a593Smuzhiyun	  flash chips addressed by each bus cycle, then say 'Y'.
147*4882a593Smuzhiyun
148*4882a593Smuzhiyunconfig MTD_CFI_I8
149*4882a593Smuzhiyun	bool "Support 8-chip flash interleave" if MTD_CFI_GEOMETRY
150*4882a593Smuzhiyun	default n
151*4882a593Smuzhiyun	help
152*4882a593Smuzhiyun	  If your flash chips are interleaved in eights - i.e. you have eight
153*4882a593Smuzhiyun	  flash chips addressed by each bus cycle, then say 'Y'.
154*4882a593Smuzhiyun
155*4882a593Smuzhiyunconfig MTD_OTP
156*4882a593Smuzhiyun	bool "Protection Registers aka one-time programmable (OTP) bits"
157*4882a593Smuzhiyun	depends on MTD_CFI_ADV_OPTIONS
158*4882a593Smuzhiyun	default n
159*4882a593Smuzhiyun	help
160*4882a593Smuzhiyun	  This enables support for reading, writing and locking so called
161*4882a593Smuzhiyun	  "Protection Registers" present on some flash chips.
162*4882a593Smuzhiyun	  A subset of them are pre-programmed at the factory with a
163*4882a593Smuzhiyun	  unique set of values. The rest is user-programmable.
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun	  The user-programmable Protection Registers contain one-time
166*4882a593Smuzhiyun	  programmable (OTP) bits; when programmed, register bits cannot be
167*4882a593Smuzhiyun	  erased. Each Protection Register can be accessed multiple times to
168*4882a593Smuzhiyun	  program individual bits, as long as the register remains unlocked.
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun	  Each Protection Register has an associated Lock Register bit. When a
171*4882a593Smuzhiyun	  Lock Register bit is programmed, the associated Protection Register
172*4882a593Smuzhiyun	  can only be read; it can no longer be programmed. Additionally,
173*4882a593Smuzhiyun	  because the Lock Register bits themselves are OTP, when programmed,
174*4882a593Smuzhiyun	  Lock Register bits cannot be erased. Therefore, when a Protection
175*4882a593Smuzhiyun	  Register is locked, it cannot be unlocked.
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun	  This feature should therefore be used with extreme care. Any mistake
178*4882a593Smuzhiyun	  in the programming of OTP bits will waste them.
179*4882a593Smuzhiyun
180*4882a593Smuzhiyunconfig MTD_CFI_INTELEXT
181*4882a593Smuzhiyun	tristate "Support for CFI command set 0001 (Intel/Sharp chips)"
182*4882a593Smuzhiyun	depends on MTD_GEN_PROBE
183*4882a593Smuzhiyun	select MTD_CFI_UTIL
184*4882a593Smuzhiyun	help
185*4882a593Smuzhiyun	  The Common Flash Interface defines a number of different command
186*4882a593Smuzhiyun	  sets which a CFI-compliant chip may claim to implement. This code
187*4882a593Smuzhiyun	  provides support for command set 0001, used on Intel StrataFlash
188*4882a593Smuzhiyun	  and other parts.
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunconfig MTD_CFI_AMDSTD
191*4882a593Smuzhiyun	tristate "Support for CFI command set 0002 (AMD/Fujitsu/Spansion chips)"
192*4882a593Smuzhiyun	depends on MTD_GEN_PROBE
193*4882a593Smuzhiyun	select MTD_CFI_UTIL
194*4882a593Smuzhiyun	help
195*4882a593Smuzhiyun	  The Common Flash Interface defines a number of different command
196*4882a593Smuzhiyun	  sets which a CFI-compliant chip may claim to implement. This code
197*4882a593Smuzhiyun	  provides support for command set 0002, used on chips including
198*4882a593Smuzhiyun	  the AMD Am29LV320.
199*4882a593Smuzhiyun
200*4882a593Smuzhiyunconfig MTD_CFI_STAA
201*4882a593Smuzhiyun	tristate "Support for CFI command set 0020 (ST (Advanced Architecture) chips)"
202*4882a593Smuzhiyun	depends on MTD_GEN_PROBE
203*4882a593Smuzhiyun	select MTD_CFI_UTIL
204*4882a593Smuzhiyun	help
205*4882a593Smuzhiyun	  The Common Flash Interface defines a number of different command
206*4882a593Smuzhiyun	  sets which a CFI-compliant chip may claim to implement. This code
207*4882a593Smuzhiyun	  provides support for command set 0020.
208*4882a593Smuzhiyun
209*4882a593Smuzhiyunconfig MTD_CFI_UTIL
210*4882a593Smuzhiyun	tristate
211*4882a593Smuzhiyun
212*4882a593Smuzhiyunconfig MTD_RAM
213*4882a593Smuzhiyun	tristate "Support for RAM chips in bus mapping"
214*4882a593Smuzhiyun	help
215*4882a593Smuzhiyun	  This option enables basic support for RAM chips accessed through
216*4882a593Smuzhiyun	  a bus mapping driver.
217*4882a593Smuzhiyun
218*4882a593Smuzhiyunconfig MTD_ROM
219*4882a593Smuzhiyun	tristate "Support for ROM chips in bus mapping"
220*4882a593Smuzhiyun	help
221*4882a593Smuzhiyun	  This option enables basic support for ROM chips accessed through
222*4882a593Smuzhiyun	  a bus mapping driver.
223*4882a593Smuzhiyun
224*4882a593Smuzhiyunconfig MTD_ABSENT
225*4882a593Smuzhiyun	tristate "Support for absent chips in bus mapping"
226*4882a593Smuzhiyun	help
227*4882a593Smuzhiyun	  This option enables support for a dummy probing driver used to
228*4882a593Smuzhiyun	  allocated placeholder MTD devices on systems that have socketed
229*4882a593Smuzhiyun	  or removable media.  Use of this driver as a fallback chip probe
230*4882a593Smuzhiyun	  preserves the expected registration order of MTD device nodes on
231*4882a593Smuzhiyun	  the system regardless of media presence.  Device nodes created
232*4882a593Smuzhiyun	  with this driver will return -ENODEV upon access.
233*4882a593Smuzhiyun
234*4882a593Smuzhiyunconfig MTD_XIP
235*4882a593Smuzhiyun	bool "XIP aware MTD support"
236*4882a593Smuzhiyun	depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && ARCH_MTD_XIP
237*4882a593Smuzhiyun	default y if XIP_KERNEL
238*4882a593Smuzhiyun	help
239*4882a593Smuzhiyun	  This allows MTD support to work with flash memory which is also
240*4882a593Smuzhiyun	  used for XIP purposes.  If you're not sure what this is all about
241*4882a593Smuzhiyun	  then say N.
242*4882a593Smuzhiyun
243*4882a593Smuzhiyunendmenu
244