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