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