1menuconfig MTD
2	tristate "Memory Technology Device (MTD) support"
3	depends on HAS_IOMEM
4	help
5	  Memory Technology Devices are flash, RAM and similar chips, often
6	  used for solid state file systems on embedded devices. This option
7	  will provide the generic support for MTD drivers to register
8	  themselves with the kernel and for potential users of MTD devices
9	  to enumerate the devices which are present and obtain a handle on
10	  them. It will also allow you to select individual drivers for
11	  particular hardware and users of MTD devices. If unsure, say N.
12
13if MTD
14
15config MTD_DEBUG
16	bool "Debugging"
17	help
18	  This turns on low-level debugging for the entire MTD sub-system.
19	  Normally, you should say 'N'.
20
21config MTD_DEBUG_VERBOSE
22	int "Debugging verbosity (0 = quiet, 3 = noisy)"
23	depends on MTD_DEBUG
24	default "0"
25	help
26	  Determines the verbosity level of the MTD debugging messages.
27
28config MTD_TESTS
29	tristate "MTD tests support"
30	depends on m
31	help
32	  This option includes various MTD tests into compilation. The tests
33	  should normally be compiled as kernel modules. The modules perform
34	  various checks and verifications when loaded.
35
36config MTD_PARTITIONS
37	bool "MTD partitioning support"
38	help
39	  If you have a device which needs to divide its flash chip(s) up
40	  into multiple 'partitions', each of which appears to the user as
41	  a separate MTD device, you require this option to be enabled. If
42	  unsure, say 'Y'.
43
44	  Note, however, that you don't need this option for the DiskOnChip
45	  devices. Partitioning on NFTL 'devices' is a different - that's the
46	  'normal' form of partitioning used on a block device.
47
48if MTD_PARTITIONS
49
50config MTD_REDBOOT_PARTS
51	tristate "RedBoot partition table parsing"
52	---help---
53	  RedBoot is a ROM monitor and bootloader which deals with multiple
54	  'images' in flash devices by putting a table one of the erase
55	  blocks on the device, similar to a partition table, which gives
56	  the offsets, lengths and names of all the images stored in the
57	  flash.
58
59	  If you need code which can detect and parse this table, and register
60	  MTD 'partitions' corresponding to each image in the table, enable
61	  this option.
62
63	  You will still need the parsing functions to be called by the driver
64	  for your particular device. It won't happen automatically. The
65	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
66	  example.
67
68if MTD_REDBOOT_PARTS
69
70config MTD_REDBOOT_DIRECTORY_BLOCK
71	int "Location of RedBoot partition table"
72	default "-1"
73	---help---
74	  This option is the Linux counterpart to the
75	  CYGNUM_REDBOOT_FIS_DIRECTORY_BLOCK RedBoot compile time
76	  option.
77
78	  The option specifies which Flash sectors holds the RedBoot
79	  partition table.  A zero or positive value gives an absolute
80	  erase block number. A negative value specifies a number of
81	  sectors before the end of the device.
82
83	  For example "2" means block number 2, "-1" means the last
84	  block and "-2" means the penultimate block.
85
86config MTD_REDBOOT_PARTS_UNALLOCATED
87	bool "Include unallocated flash regions"
88	help
89	  If you need to register each unallocated flash region as a MTD
90	  'partition', enable this option.
91
92config MTD_REDBOOT_PARTS_READONLY
93	bool "Force read-only for RedBoot system images"
94	help
95	  If you need to force read-only for 'RedBoot', 'RedBoot Config' and
96	  'FIS directory' images, enable this option.
97
98endif # MTD_REDBOOT_PARTS
99
100config MTD_CMDLINE_PARTS
101	bool "Command line partition table parsing"
102	depends on MTD_PARTITIONS = "y" && MTD = "y"
103	---help---
104	  Allow generic configuration of the MTD partition tables via the kernel
105	  command line. Multiple flash resources are supported for hardware where
106	  different kinds of flash memory are available.
107
108	  You will still need the parsing functions to be called by the driver
109	  for your particular device. It won't happen automatically. The
110	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
111	  example.
112
113	  The format for the command line is as follows:
114
115	  mtdparts=<mtddef>[;<mtddef]
116	  <mtddef>  := <mtd-id>:<partdef>[,<partdef>]
117	  <partdef> := <size>[@offset][<name>][ro]
118	  <mtd-id>  := unique id used in mapping driver/device
119	  <size>    := standard linux memsize OR "-" to denote all
120	  remaining space
121	  <name>    := (NAME)
122
123	  Due to the way Linux handles the command line, no spaces are
124	  allowed in the partition definition, including mtd id's and partition
125	  names.
126
127	  Examples:
128
129	  1 flash resource (mtd-id "sa1100"), with 1 single writable partition:
130	  mtdparts=sa1100:-
131
132	  Same flash, but 2 named partitions, the first one being read-only:
133	  mtdparts=sa1100:256k(ARMboot)ro,-(root)
134
135	  If unsure, say 'N'.
136
137config MTD_AFS_PARTS
138	tristate "ARM Firmware Suite partition parsing"
139	depends on ARM
140	---help---
141	  The ARM Firmware Suite allows the user to divide flash devices into
142	  multiple 'images'. Each such image has a header containing its name
143	  and offset/size etc.
144
145	  If you need code which can detect and parse these tables, and
146	  register MTD 'partitions' corresponding to each image detected,
147	  enable this option.
148
149	  You will still need the parsing functions to be called by the driver
150	  for your particular device. It won't happen automatically. The
151	  'armflash' map driver (CONFIG_MTD_ARM_INTEGRATOR) does this, for
152	  example.
153
154config MTD_OF_PARTS
155	def_bool y
156	depends on OF
157	help
158	  This provides a partition parsing function which derives
159	  the partition map from the children of the flash node,
160	  as described in Documentation/powerpc/booting-without-of.txt.
161
162config MTD_AR7_PARTS
163	tristate "TI AR7 partitioning support"
164	---help---
165	  TI AR7 partitioning support
166
167endif # MTD_PARTITIONS
168
169comment "User Modules And Translation Layers"
170
171config MTD_CHAR
172	tristate "Direct char device access to MTD devices"
173	help
174	  This provides a character device for each MTD device present in
175	  the system, allowing the user to read and write directly to the
176	  memory chips, and also use ioctl() to obtain information about
177	  the device, or to erase parts of it.
178
179config HAVE_MTD_OTP
180	bool
181	help
182	  Enable access to OTP regions using MTD_CHAR.
183
184config MTD_BLKDEVS
185	tristate "Common interface to block layer for MTD 'translation layers'"
186	depends on BLOCK
187	default n
188
189config MTD_BLOCK
190	tristate "Caching block device access to MTD devices"
191	depends on BLOCK
192	select MTD_BLKDEVS
193	---help---
194	  Although most flash chips have an erase size too large to be useful
195	  as block devices, it is possible to use MTD devices which are based
196	  on RAM chips in this manner. This block device is a user of MTD
197	  devices performing that function.
198
199	  At the moment, it is also required for the Journalling Flash File
200	  System(s) to obtain a handle on the MTD device when it's mounted
201	  (although JFFS and JFFS2 don't actually use any of the functionality
202	  of the mtdblock device).
203
204	  Later, it may be extended to perform read/erase/modify/write cycles
205	  on flash chips to emulate a smaller block size. Needless to say,
206	  this is very unsafe, but could be useful for file systems which are
207	  almost never written to.
208
209	  You do not need this option for use with the DiskOnChip devices. For
210	  those, enable NFTL support (CONFIG_NFTL) instead.
211
212config MTD_BLOCK_RO
213	tristate "Readonly block device access to MTD devices"
214	depends on MTD_BLOCK!=y && BLOCK
215	select MTD_BLKDEVS
216	help
217	  This allows you to mount read-only file systems (such as cramfs)
218	  from an MTD device, without the overhead (and danger) of the caching
219	  driver.
220
221	  You do not need this option for use with the DiskOnChip devices. For
222	  those, enable NFTL support (CONFIG_NFTL) instead.
223
224config FTL
225	tristate "FTL (Flash Translation Layer) support"
226	depends on BLOCK
227	select MTD_BLKDEVS
228	---help---
229	  This provides support for the original Flash Translation Layer which
230	  is part of the PCMCIA specification. It uses a kind of pseudo-
231	  file system on a flash device to emulate a block device with
232	  512-byte sectors, on top of which you put a 'normal' file system.
233
234	  You may find that the algorithms used in this code are patented
235	  unless you live in the Free World where software patents aren't
236	  legal - in the USA you are only permitted to use this on PCMCIA
237	  hardware, although under the terms of the GPL you're obviously
238	  permitted to copy, modify and distribute the code as you wish. Just
239	  not use it.
240
241config NFTL
242	tristate "NFTL (NAND Flash Translation Layer) support"
243	depends on BLOCK
244	select MTD_BLKDEVS
245	---help---
246	  This provides support for the NAND Flash Translation Layer which is
247	  used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
248	  file system on a flash device to emulate a block device with
249	  512-byte sectors, on top of which you put a 'normal' file system.
250
251	  You may find that the algorithms used in this code are patented
252	  unless you live in the Free World where software patents aren't
253	  legal - in the USA you are only permitted to use this on DiskOnChip
254	  hardware, although under the terms of the GPL you're obviously
255	  permitted to copy, modify and distribute the code as you wish. Just
256	  not use it.
257
258config NFTL_RW
259	bool "Write support for NFTL"
260	depends on NFTL
261	help
262	  Support for writing to the NAND Flash Translation Layer, as used
263	  on the DiskOnChip.
264
265config INFTL
266	tristate "INFTL (Inverse NAND Flash Translation Layer) support"
267	depends on BLOCK
268	select MTD_BLKDEVS
269	---help---
270	  This provides support for the Inverse NAND Flash Translation
271	  Layer which is used on M-Systems' newer DiskOnChip devices. It
272	  uses a kind of pseudo-file system on a flash device to emulate
273	  a block device with 512-byte sectors, on top of which you put
274	  a 'normal' file system.
275
276	  You may find that the algorithms used in this code are patented
277	  unless you live in the Free World where software patents aren't
278	  legal - in the USA you are only permitted to use this on DiskOnChip
279	  hardware, although under the terms of the GPL you're obviously
280	  permitted to copy, modify and distribute the code as you wish. Just
281	  not use it.
282
283config RFD_FTL
284        tristate "Resident Flash Disk (Flash Translation Layer) support"
285	depends on BLOCK
286	select MTD_BLKDEVS
287	---help---
288	  This provides support for the flash translation layer known
289	  as the Resident Flash Disk (RFD), as used by the Embedded BIOS
290	  of General Software. There is a blurb at:
291
292		http://www.gensw.com/pages/prod/bios/rfd.htm
293
294config SSFDC
295	tristate "NAND SSFDC (SmartMedia) read only translation layer"
296	depends on BLOCK
297	select MTD_BLKDEVS
298	help
299	  This enables read only access to SmartMedia formatted NAND
300	  flash. You can mount it with FAT file system.
301
302
303config SM_FTL
304	tristate "SmartMedia/xD new translation layer"
305	depends on EXPERIMENTAL && BLOCK
306	select MTD_BLKDEVS
307	select MTD_NAND_ECC
308	help
309	  This enables EXPERIMENTAL R/W support for SmartMedia/xD
310	  FTL (Flash translation layer).
311	  Write support is only lightly tested, therefore this driver
312	  isn't recommended to use with valuable data (anyway if you have
313	  valuable data, do backups regardless of software/hardware you
314	  use, because you never know what will eat your data...)
315	  If you only need R/O access, you can use older R/O driver
316	  (CONFIG_SSFDC)
317
318config MTD_OOPS
319	tristate "Log panic/oops to an MTD buffer"
320	help
321	  This enables panic and oops messages to be logged to a circular
322	  buffer in a flash partition where it can be read back at some
323	  later point.
324
325	  To use, add console=ttyMTDx to the kernel command line,
326	  where x is the MTD device number to use.
327
328config MTD_SWAP
329	tristate "Swap on MTD device support"
330	depends on MTD && SWAP
331	select MTD_BLKDEVS
332	help
333	  Provides volatile block device driver on top of mtd partition
334          suitable for swapping.  The mapping of written blocks is not saved.
335	  The driver provides wear leveling by storing erase counter into the
336	  OOB.
337
338source "drivers/mtd/chips/Kconfig"
339
340source "drivers/mtd/maps/Kconfig"
341
342source "drivers/mtd/devices/Kconfig"
343
344source "drivers/mtd/nand/Kconfig"
345
346source "drivers/mtd/onenand/Kconfig"
347
348source "drivers/mtd/lpddr/Kconfig"
349
350source "drivers/mtd/ubi/Kconfig"
351
352endif # MTD
353