xref: /linux-6.15/drivers/mtd/Kconfig (revision ac37d352)
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_OF_PARTS
64	tristate "OpenFirmware partitioning information support"
65	default y
66	depends on OF
67	help
68	  This provides a partition parsing function which derives
69	  the partition map from the children of the flash node,
70	  as described in Documentation/devicetree/bindings/mtd/partition.txt.
71
72menu "Partition parsers"
73source "drivers/mtd/parsers/Kconfig"
74endmenu
75
76comment "User Modules And Translation Layers"
77
78#
79# MTD block device support is select'ed if needed
80#
81config MTD_BLKDEVS
82	tristate
83
84config MTD_BLOCK
85	tristate "Caching block device access to MTD devices"
86	depends on BLOCK
87	select MTD_BLKDEVS
88	help
89	  Although most flash chips have an erase size too large to be useful
90	  as block devices, it is possible to use MTD devices which are based
91	  on RAM chips in this manner. This block device is a user of MTD
92	  devices performing that function.
93
94	  At the moment, it is also required for the Journalling Flash File
95	  System(s) to obtain a handle on the MTD device when it's mounted
96	  (although JFFS and JFFS2 don't actually use any of the functionality
97	  of the mtdblock device).
98
99	  Later, it may be extended to perform read/erase/modify/write cycles
100	  on flash chips to emulate a smaller block size. Needless to say,
101	  this is very unsafe, but could be useful for file systems which are
102	  almost never written to.
103
104	  You do not need this option for use with the DiskOnChip devices. For
105	  those, enable NFTL support (CONFIG_NFTL) instead.
106
107config MTD_BLOCK_RO
108	tristate "Readonly block device access to MTD devices"
109	depends on MTD_BLOCK!=y && BLOCK
110	select MTD_BLKDEVS
111	help
112	  This allows you to mount read-only file systems (such as cramfs)
113	  from an MTD device, without the overhead (and danger) of the caching
114	  driver.
115
116	  You do not need this option for use with the DiskOnChip devices. For
117	  those, enable NFTL support (CONFIG_NFTL) instead.
118
119config FTL
120	tristate "FTL (Flash Translation Layer) support"
121	depends on BLOCK
122	select MTD_BLKDEVS
123	help
124	  This provides support for the original Flash Translation Layer which
125	  is part of the PCMCIA specification. It uses a kind of pseudo-
126	  file system on a flash device to emulate a block device with
127	  512-byte sectors, on top of which you put a 'normal' file system.
128
129	  You may find that the algorithms used in this code are patented
130	  unless you live in the Free World where software patents aren't
131	  legal - in the USA you are only permitted to use this on PCMCIA
132	  hardware, although under the terms of the GPL you're obviously
133	  permitted to copy, modify and distribute the code as you wish. Just
134	  not use it.
135
136config NFTL
137	tristate "NFTL (NAND Flash Translation Layer) support"
138	depends on BLOCK
139	select MTD_BLKDEVS
140	help
141	  This provides support for the NAND Flash Translation Layer which is
142	  used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
143	  file system on a flash device to emulate a block device with
144	  512-byte sectors, on top of which you put a 'normal' file system.
145
146	  You may find that the algorithms used in this code are patented
147	  unless you live in the Free World where software patents aren't
148	  legal - in the USA you are only permitted to use this on DiskOnChip
149	  hardware, although under the terms of the GPL you're obviously
150	  permitted to copy, modify and distribute the code as you wish. Just
151	  not use it.
152
153config NFTL_RW
154	bool "Write support for NFTL"
155	depends on NFTL
156	help
157	  Support for writing to the NAND Flash Translation Layer, as used
158	  on the DiskOnChip.
159
160config INFTL
161	tristate "INFTL (Inverse NAND Flash Translation Layer) support"
162	depends on BLOCK
163	select MTD_BLKDEVS
164	help
165	  This provides support for the Inverse NAND Flash Translation
166	  Layer which is used on M-Systems' newer DiskOnChip devices. It
167	  uses a kind of pseudo-file system on a flash device to emulate
168	  a block device with 512-byte sectors, on top of which you put
169	  a 'normal' file system.
170
171	  You may find that the algorithms used in this code are patented
172	  unless you live in the Free World where software patents aren't
173	  legal - in the USA you are only permitted to use this on DiskOnChip
174	  hardware, although under the terms of the GPL you're obviously
175	  permitted to copy, modify and distribute the code as you wish. Just
176	  not use it.
177
178config RFD_FTL
179	tristate "Resident Flash Disk (Flash Translation Layer) support"
180	depends on BLOCK
181	select MTD_BLKDEVS
182	help
183	  This provides support for the flash translation layer known
184	  as the Resident Flash Disk (RFD), as used by the Embedded BIOS
185	  of General Software. There is a blurb at:
186
187		http://www.gensw.com/pages/prod/bios/rfd.htm
188
189config SSFDC
190	tristate "NAND SSFDC (SmartMedia) read only translation layer"
191	depends on BLOCK
192	select MTD_BLKDEVS
193	help
194	  This enables read only access to SmartMedia formatted NAND
195	  flash. You can mount it with FAT file system.
196
197config SM_FTL
198	tristate "SmartMedia/xD new translation layer"
199	depends on BLOCK
200	select MTD_BLKDEVS
201	select MTD_NAND_ECC_SW_HAMMING
202	help
203	  This enables EXPERIMENTAL R/W support for SmartMedia/xD
204	  FTL (Flash translation layer).
205	  Write support is only lightly tested, therefore this driver
206	  isn't recommended to use with valuable data (anyway if you have
207	  valuable data, do backups regardless of software/hardware you
208	  use, because you never know what will eat your data...)
209	  If you only need R/O access, you can use older R/O driver
210	  (CONFIG_SSFDC)
211
212config MTD_OOPS
213	tristate "Log panic/oops to an MTD buffer"
214	help
215	  This enables panic and oops messages to be logged to a circular
216	  buffer in a flash partition where it can be read back at some
217	  later point.
218
219config MTD_SWAP
220	tristate "Swap on MTD device support"
221	depends on MTD && SWAP
222	select MTD_BLKDEVS
223	help
224	  Provides volatile block device driver on top of mtd partition
225	  suitable for swapping.  The mapping of written blocks is not saved.
226	  The driver provides wear leveling by storing erase counter into the
227	  OOB.
228
229config MTD_PARTITIONED_MASTER
230	bool "Retain master device when partitioned"
231	default n
232	depends on MTD
233	help
234	  For historical reasons, by default, either a master is present or
235	  several partitions are present, but not both. The concern was that
236	  data listed in multiple partitions was dangerous; however, SCSI does
237	  this and it is frequently useful for applications. This config option
238	  leaves the master in even if the device is partitioned. It also makes
239	  the parent of the partition device be the master device, rather than
240	  what lies behind the master.
241
242source "drivers/mtd/chips/Kconfig"
243
244source "drivers/mtd/maps/Kconfig"
245
246source "drivers/mtd/devices/Kconfig"
247
248source "drivers/mtd/nand/Kconfig"
249
250source "drivers/mtd/lpddr/Kconfig"
251
252source "drivers/mtd/spi-nor/Kconfig"
253
254source "drivers/mtd/ubi/Kconfig"
255
256source "drivers/mtd/hyperbus/Kconfig"
257
258endif # MTD
259