Merge tag 'hsi-for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi
[linux-2.6-block.git] / drivers / mtd / Kconfig
1 menuconfig 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
12 if MTD
13
14 config 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
25 config 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
62 config 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
78 config 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
87 config MTD_AR7_PARTS
88         tristate "TI AR7 partitioning support"
89         help
90           TI AR7 partitioning support
91
92 config 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
100 config 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
107 menu "Partition parsers"
108 source "drivers/mtd/parsers/Kconfig"
109 endmenu
110
111 comment "User Modules And Translation Layers"
112
113 #
114 # MTD block device support is select'ed if needed
115 #
116 config MTD_BLKDEVS
117         tristate
118
119 config 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
142 config 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
154 config 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
171 config 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
188 config 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
195 config 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
213 config 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
224 config 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
233 config 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
248 config 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
255 config 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
265 config 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
278 source "drivers/mtd/chips/Kconfig"
279
280 source "drivers/mtd/maps/Kconfig"
281
282 source "drivers/mtd/devices/Kconfig"
283
284 source "drivers/mtd/nand/Kconfig"
285
286 source "drivers/mtd/lpddr/Kconfig"
287
288 source "drivers/mtd/spi-nor/Kconfig"
289
290 source "drivers/mtd/ubi/Kconfig"
291
292 endif # MTD