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