xref: /linux-6.15/drivers/mtd/Kconfig (revision dd84cb02)
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	select MTD_PARSER_IMAGETAG
98	help
99	  This provides partition parsing for BCM63xx devices with CFE
100	  bootloaders.
101
102config MTD_BCM47XX_PARTS
103	tristate "BCM47XX partitioning support"
104	depends on BCM47XX || ARCH_BCM_5301X
105	help
106	  This provides partitions parser for devices based on BCM47xx
107	  boards.
108
109menu "Partition parsers"
110source "drivers/mtd/parsers/Kconfig"
111endmenu
112
113comment "User Modules And Translation Layers"
114
115#
116# MTD block device support is select'ed if needed
117#
118config MTD_BLKDEVS
119	tristate
120
121config MTD_BLOCK
122	tristate "Caching block device access to MTD devices"
123	depends on BLOCK
124	select MTD_BLKDEVS
125	help
126	  Although most flash chips have an erase size too large to be useful
127	  as block devices, it is possible to use MTD devices which are based
128	  on RAM chips in this manner. This block device is a user of MTD
129	  devices performing that function.
130
131	  At the moment, it is also required for the Journalling Flash File
132	  System(s) to obtain a handle on the MTD device when it's mounted
133	  (although JFFS and JFFS2 don't actually use any of the functionality
134	  of the mtdblock device).
135
136	  Later, it may be extended to perform read/erase/modify/write cycles
137	  on flash chips to emulate a smaller block size. Needless to say,
138	  this is very unsafe, but could be useful for file systems which are
139	  almost never written to.
140
141	  You do not need this option for use with the DiskOnChip devices. For
142	  those, enable NFTL support (CONFIG_NFTL) instead.
143
144config MTD_BLOCK_RO
145	tristate "Readonly block device access to MTD devices"
146	depends on MTD_BLOCK!=y && BLOCK
147	select MTD_BLKDEVS
148	help
149	  This allows you to mount read-only file systems (such as cramfs)
150	  from an MTD device, without the overhead (and danger) of the caching
151	  driver.
152
153	  You do not need this option for use with the DiskOnChip devices. For
154	  those, enable NFTL support (CONFIG_NFTL) instead.
155
156config FTL
157	tristate "FTL (Flash Translation Layer) support"
158	depends on BLOCK
159	select MTD_BLKDEVS
160	help
161	  This provides support for the original Flash Translation Layer which
162	  is part of the PCMCIA specification. It uses a kind of pseudo-
163	  file system on a flash device to emulate a block device with
164	  512-byte sectors, on top of which you put a 'normal' file system.
165
166	  You may find that the algorithms used in this code are patented
167	  unless you live in the Free World where software patents aren't
168	  legal - in the USA you are only permitted to use this on PCMCIA
169	  hardware, although under the terms of the GPL you're obviously
170	  permitted to copy, modify and distribute the code as you wish. Just
171	  not use it.
172
173config NFTL
174	tristate "NFTL (NAND Flash Translation Layer) support"
175	depends on BLOCK
176	select MTD_BLKDEVS
177	help
178	  This provides support for the NAND Flash Translation Layer which is
179	  used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
180	  file system on a flash device to emulate a block device with
181	  512-byte sectors, on top of which you put a 'normal' file system.
182
183	  You may find that the algorithms used in this code are patented
184	  unless you live in the Free World where software patents aren't
185	  legal - in the USA you are only permitted to use this on DiskOnChip
186	  hardware, although under the terms of the GPL you're obviously
187	  permitted to copy, modify and distribute the code as you wish. Just
188	  not use it.
189
190config NFTL_RW
191	bool "Write support for NFTL"
192	depends on NFTL
193	help
194	  Support for writing to the NAND Flash Translation Layer, as used
195	  on the DiskOnChip.
196
197config INFTL
198	tristate "INFTL (Inverse NAND Flash Translation Layer) support"
199	depends on BLOCK
200	select MTD_BLKDEVS
201	help
202	  This provides support for the Inverse NAND Flash Translation
203	  Layer which is used on M-Systems' newer DiskOnChip devices. It
204	  uses a kind of pseudo-file system on a flash device to emulate
205	  a block device with 512-byte sectors, on top of which you put
206	  a 'normal' file system.
207
208	  You may find that the algorithms used in this code are patented
209	  unless you live in the Free World where software patents aren't
210	  legal - in the USA you are only permitted to use this on DiskOnChip
211	  hardware, although under the terms of the GPL you're obviously
212	  permitted to copy, modify and distribute the code as you wish. Just
213	  not use it.
214
215config RFD_FTL
216	tristate "Resident Flash Disk (Flash Translation Layer) support"
217	depends on BLOCK
218	select MTD_BLKDEVS
219	help
220	  This provides support for the flash translation layer known
221	  as the Resident Flash Disk (RFD), as used by the Embedded BIOS
222	  of General Software. There is a blurb at:
223
224		http://www.gensw.com/pages/prod/bios/rfd.htm
225
226config SSFDC
227	tristate "NAND SSFDC (SmartMedia) read only translation layer"
228	depends on BLOCK
229	select MTD_BLKDEVS
230	help
231	  This enables read only access to SmartMedia formatted NAND
232	  flash. You can mount it with FAT file system.
233
234config SM_FTL
235	tristate "SmartMedia/xD new translation layer"
236	depends on BLOCK
237	select MTD_BLKDEVS
238	select MTD_NAND_ECC_SW_HAMMING
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