Merge tag 'char-misc-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregk...
[linux-2.6-block.git] / drivers / mtd / Kconfig
1 menuconfig 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
13 if MTD
14
15 config 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
26 config 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
63 config 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
79 config 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
88 config MTD_AR7_PARTS
89         tristate "TI AR7 partitioning support"
90         help
91           TI AR7 partitioning support
92
93 config 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
101 config 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
108 menu "Partition parsers"
109 source "drivers/mtd/parsers/Kconfig"
110 endmenu
111
112 comment "User Modules And Translation Layers"
113
114 #
115 # MTD block device support is select'ed if needed
116 #
117 config MTD_BLKDEVS
118         tristate
119
120 config 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
143 config 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
155 config 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
172 config 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
189 config 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
196 config 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
214 config 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
225 config 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
234 config 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
249 config 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
256 config 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
266 config 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
279 source "drivers/mtd/chips/Kconfig"
280
281 source "drivers/mtd/maps/Kconfig"
282
283 source "drivers/mtd/devices/Kconfig"
284
285 source "drivers/mtd/nand/Kconfig"
286
287 source "drivers/mtd/lpddr/Kconfig"
288
289 source "drivers/mtd/spi-nor/Kconfig"
290
291 source "drivers/mtd/ubi/Kconfig"
292
293 endif # MTD