xref: /linux/drivers/mtd/Kconfig (revision 492c826b9facefa84995f4dea917e301b5ee0884)
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	  'physmap' map driver (CONFIG_MTD_PHYSMAP) does this, for example.
152
153config MTD_OF_PARTS
154	def_bool y
155	depends on OF
156	help
157	  This provides a partition parsing function which derives
158	  the partition map from the children of the flash node,
159	  as described in Documentation/powerpc/booting-without-of.txt.
160
161config MTD_AR7_PARTS
162	tristate "TI AR7 partitioning support"
163	---help---
164	  TI AR7 partitioning support
165
166endif # MTD_PARTITIONS
167
168comment "User Modules And Translation Layers"
169
170config MTD_CHAR
171	tristate "Direct char device access to MTD devices"
172	help
173	  This provides a character device for each MTD device present in
174	  the system, allowing the user to read and write directly to the
175	  memory chips, and also use ioctl() to obtain information about
176	  the device, or to erase parts of it.
177
178config HAVE_MTD_OTP
179	bool
180	help
181	  Enable access to OTP regions using MTD_CHAR.
182
183config MTD_BLKDEVS
184	tristate "Common interface to block layer for MTD 'translation layers'"
185	depends on BLOCK
186	default n
187
188config MTD_BLOCK
189	tristate "Caching block device access to MTD devices"
190	depends on BLOCK
191	select MTD_BLKDEVS
192	---help---
193	  Although most flash chips have an erase size too large to be useful
194	  as block devices, it is possible to use MTD devices which are based
195	  on RAM chips in this manner. This block device is a user of MTD
196	  devices performing that function.
197
198	  At the moment, it is also required for the Journalling Flash File
199	  System(s) to obtain a handle on the MTD device when it's mounted
200	  (although JFFS and JFFS2 don't actually use any of the functionality
201	  of the mtdblock device).
202
203	  Later, it may be extended to perform read/erase/modify/write cycles
204	  on flash chips to emulate a smaller block size. Needless to say,
205	  this is very unsafe, but could be useful for file systems which are
206	  almost never written to.
207
208	  You do not need this option for use with the DiskOnChip devices. For
209	  those, enable NFTL support (CONFIG_NFTL) instead.
210
211config MTD_BLOCK_RO
212	tristate "Readonly block device access to MTD devices"
213	depends on MTD_BLOCK!=y && BLOCK
214	select MTD_BLKDEVS
215	help
216	  This allows you to mount read-only file systems (such as cramfs)
217	  from an MTD device, without the overhead (and danger) of the caching
218	  driver.
219
220	  You do not need this option for use with the DiskOnChip devices. For
221	  those, enable NFTL support (CONFIG_NFTL) instead.
222
223config FTL
224	tristate "FTL (Flash Translation Layer) support"
225	depends on BLOCK
226	select MTD_BLKDEVS
227	---help---
228	  This provides support for the original Flash Translation Layer which
229	  is part of the PCMCIA specification. It uses a kind of pseudo-
230	  file system on a flash device to emulate a block device with
231	  512-byte sectors, on top of which you put a 'normal' file system.
232
233	  You may find that the algorithms used in this code are patented
234	  unless you live in the Free World where software patents aren't
235	  legal - in the USA you are only permitted to use this on PCMCIA
236	  hardware, although under the terms of the GPL you're obviously
237	  permitted to copy, modify and distribute the code as you wish. Just
238	  not use it.
239
240config NFTL
241	tristate "NFTL (NAND Flash Translation Layer) support"
242	depends on BLOCK
243	select MTD_BLKDEVS
244	---help---
245	  This provides support for the NAND Flash Translation Layer which is
246	  used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
247	  file system on a flash device to emulate a block device with
248	  512-byte sectors, on top of which you put a 'normal' file system.
249
250	  You may find that the algorithms used in this code are patented
251	  unless you live in the Free World where software patents aren't
252	  legal - in the USA you are only permitted to use this on DiskOnChip
253	  hardware, although under the terms of the GPL you're obviously
254	  permitted to copy, modify and distribute the code as you wish. Just
255	  not use it.
256
257config NFTL_RW
258	bool "Write support for NFTL"
259	depends on NFTL
260	help
261	  Support for writing to the NAND Flash Translation Layer, as used
262	  on the DiskOnChip.
263
264config INFTL
265	tristate "INFTL (Inverse NAND Flash Translation Layer) support"
266	depends on BLOCK
267	select MTD_BLKDEVS
268	---help---
269	  This provides support for the Inverse NAND Flash Translation
270	  Layer which is used on M-Systems' newer DiskOnChip devices. It
271	  uses a kind of pseudo-file system on a flash device to emulate
272	  a block device with 512-byte sectors, on top of which you put
273	  a 'normal' file system.
274
275	  You may find that the algorithms used in this code are patented
276	  unless you live in the Free World where software patents aren't
277	  legal - in the USA you are only permitted to use this on DiskOnChip
278	  hardware, although under the terms of the GPL you're obviously
279	  permitted to copy, modify and distribute the code as you wish. Just
280	  not use it.
281
282config RFD_FTL
283        tristate "Resident Flash Disk (Flash Translation Layer) support"
284	depends on BLOCK
285	select MTD_BLKDEVS
286	---help---
287	  This provides support for the flash translation layer known
288	  as the Resident Flash Disk (RFD), as used by the Embedded BIOS
289	  of General Software. There is a blurb at:
290
291		http://www.gensw.com/pages/prod/bios/rfd.htm
292
293config SSFDC
294	tristate "NAND SSFDC (SmartMedia) read only translation layer"
295	depends on BLOCK
296	select MTD_BLKDEVS
297	help
298	  This enables read only access to SmartMedia formatted NAND
299	  flash. You can mount it with FAT file system.
300
301
302config SM_FTL
303	tristate "SmartMedia/xD new translation layer"
304	depends on EXPERIMENTAL && BLOCK
305	select MTD_BLKDEVS
306	select MTD_NAND_ECC
307	help
308	  This enables EXPERIMENTAL R/W support for SmartMedia/xD
309	  FTL (Flash translation layer).
310	  Write support is only lightly tested, therefore this driver
311	  isn't recommended to use with valuable data (anyway if you have
312	  valuable data, do backups regardless of software/hardware you
313	  use, because you never know what will eat your data...)
314	  If you only need R/O access, you can use older R/O driver
315	  (CONFIG_SSFDC)
316
317config MTD_OOPS
318	tristate "Log panic/oops to an MTD buffer"
319	help
320	  This enables panic and oops messages to be logged to a circular
321	  buffer in a flash partition where it can be read back at some
322	  later point.
323
324	  To use, add console=ttyMTDx to the kernel command line,
325	  where x is the MTD device number to use.
326
327config MTD_SWAP
328	tristate "Swap on MTD device support"
329	depends on MTD && SWAP
330	select MTD_BLKDEVS
331	help
332	  Provides volatile block device driver on top of mtd partition
333          suitable for swapping.  The mapping of written blocks is not saved.
334	  The driver provides wear leveling by storing erase counter into the
335	  OOB.
336
337source "drivers/mtd/chips/Kconfig"
338
339source "drivers/mtd/maps/Kconfig"
340
341source "drivers/mtd/devices/Kconfig"
342
343source "drivers/mtd/nand/Kconfig"
344
345source "drivers/mtd/onenand/Kconfig"
346
347source "drivers/mtd/lpddr/Kconfig"
348
349source "drivers/mtd/ubi/Kconfig"
350
351endif # MTD
352