Merge branch 'for-4.19/cougar' into for-linus
[sfrench/cifs-2.6.git] / drivers / mtd / nand / raw / Kconfig
1 config MTD_NAND_ECC
2         tristate
3
4 config MTD_NAND_ECC_SMC
5         bool "NAND ECC Smart Media byte order"
6         depends on MTD_NAND_ECC
7         default n
8         help
9           Software ECC according to the Smart Media Specification.
10           The original Linux implementation had byte 0 and 1 swapped.
11
12
13 menuconfig MTD_NAND
14         tristate "Raw/Parallel NAND Device Support"
15         depends on MTD
16         select MTD_NAND_ECC
17         help
18           This enables support for accessing all type of raw/parallel
19           NAND flash devices. For further information see
20           <http://www.linux-mtd.infradead.org/doc/nand.html>.
21
22 if MTD_NAND
23
24 config MTD_NAND_BCH
25         tristate
26         select BCH
27         depends on MTD_NAND_ECC_BCH
28         default MTD_NAND
29
30 config MTD_NAND_ECC_BCH
31         bool "Support software BCH ECC"
32         default n
33         help
34           This enables support for software BCH error correction. Binary BCH
35           codes are more powerful and cpu intensive than traditional Hamming
36           ECC codes. They are used with NAND devices requiring more than 1 bit
37           of error correction.
38
39 config MTD_SM_COMMON
40         tristate
41         default n
42
43 config MTD_NAND_DENALI
44         tristate
45
46 config MTD_NAND_DENALI_PCI
47         tristate "Support Denali NAND controller on Intel Moorestown"
48         select MTD_NAND_DENALI
49         depends on PCI
50         help
51           Enable the driver for NAND flash on Intel Moorestown, using the
52           Denali NAND controller core.
53
54 config MTD_NAND_DENALI_DT
55         tristate "Support Denali NAND controller as a DT device"
56         select MTD_NAND_DENALI
57         depends on HAS_DMA && HAVE_CLK && OF
58         help
59           Enable the driver for NAND flash on platforms using a Denali NAND
60           controller as a DT device.
61
62 config MTD_NAND_GPIO
63         tristate "GPIO assisted NAND Flash driver"
64         depends on GPIOLIB || COMPILE_TEST
65         depends on HAS_IOMEM
66         help
67           This enables a NAND flash driver where control signals are
68           connected to GPIO pins, and commands and data are communicated
69           via a memory mapped interface.
70
71 config MTD_NAND_AMS_DELTA
72         tristate "NAND Flash device on Amstrad E3"
73         depends on MACH_AMS_DELTA
74         default y
75         help
76           Support for NAND flash on Amstrad E3 (Delta).
77
78 config MTD_NAND_OMAP2
79         tristate "NAND Flash device on OMAP2, OMAP3, OMAP4 and Keystone"
80         depends on (ARCH_OMAP2PLUS || ARCH_KEYSTONE)
81         help
82           Support for NAND flash on Texas Instruments OMAP2, OMAP3, OMAP4
83           and Keystone platforms.
84
85 config MTD_NAND_OMAP_BCH
86         depends on MTD_NAND_OMAP2
87         bool "Support hardware based BCH error correction"
88         default n
89         select BCH
90         help
91           This config enables the ELM hardware engine, which can be used to
92           locate and correct errors when using BCH ECC scheme. This offloads
93           the cpu from doing ECC error searching and correction. However some
94           legacy OMAP families like OMAP2xxx, OMAP3xxx do not have ELM engine
95           so this is optional for them.
96
97 config MTD_NAND_OMAP_BCH_BUILD
98         def_tristate MTD_NAND_OMAP2 && MTD_NAND_OMAP_BCH
99
100 config MTD_NAND_RICOH
101         tristate "Ricoh xD card reader"
102         default n
103         depends on PCI
104         select MTD_SM_COMMON
105         help
106           Enable support for Ricoh R5C852 xD card reader
107           You also need to enable ether
108           NAND SSFDC (SmartMedia) read only translation layer' or new
109           expermental, readwrite
110           'SmartMedia/xD new translation layer'
111
112 config MTD_NAND_AU1550
113         tristate "Au1550/1200 NAND support"
114         depends on MIPS_ALCHEMY
115         help
116           This enables the driver for the NAND flash controller on the
117           AMD/Alchemy 1550 SOC.
118
119 config MTD_NAND_S3C2410
120         tristate "NAND Flash support for Samsung S3C SoCs"
121         depends on ARCH_S3C24XX || ARCH_S3C64XX
122         help
123           This enables the NAND flash controller on the S3C24xx and S3C64xx
124           SoCs
125
126           No board specific support is done by this driver, each board
127           must advertise a platform_device for the driver to attach.
128
129 config MTD_NAND_S3C2410_DEBUG
130         bool "Samsung S3C NAND driver debug"
131         depends on MTD_NAND_S3C2410
132         help
133           Enable debugging of the S3C NAND driver
134
135 config MTD_NAND_NDFC
136         tristate "NDFC NanD Flash Controller"
137         depends on 4xx
138         select MTD_NAND_ECC_SMC
139         help
140          NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs
141
142 config MTD_NAND_S3C2410_CLKSTOP
143         bool "Samsung S3C NAND IDLE clock stop"
144         depends on MTD_NAND_S3C2410
145         default n
146         help
147           Stop the clock to the NAND controller when there is no chip
148           selected to save power. This will mean there is a small delay
149           when the is NAND chip selected or released, but will save
150           approximately 5mA of power when there is nothing happening.
151
152 config MTD_NAND_TANGO
153         tristate "NAND Flash support for Tango chips"
154         depends on ARCH_TANGO || COMPILE_TEST
155         help
156           Enables the NAND Flash controller on Tango chips.
157
158 config MTD_NAND_DISKONCHIP
159         tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation)"
160         depends on HAS_IOMEM
161         select REED_SOLOMON
162         select REED_SOLOMON_DEC16
163         help
164           This is a reimplementation of M-Systems DiskOnChip 2000,
165           Millennium and Millennium Plus as a standard NAND device driver,
166           as opposed to the earlier self-contained MTD device drivers.
167           This should enable, among other things, proper JFFS2 operation on
168           these devices.
169
170 config MTD_NAND_DISKONCHIP_PROBE_ADVANCED
171         bool "Advanced detection options for DiskOnChip"
172         depends on MTD_NAND_DISKONCHIP
173         help
174           This option allows you to specify nonstandard address at which to
175           probe for a DiskOnChip, or to change the detection options.  You
176           are unlikely to need any of this unless you are using LinuxBIOS.
177           Say 'N'.
178
179 config MTD_NAND_DISKONCHIP_PROBE_ADDRESS
180         hex "Physical address of DiskOnChip" if MTD_NAND_DISKONCHIP_PROBE_ADVANCED
181         depends on MTD_NAND_DISKONCHIP
182         default "0"
183         ---help---
184         By default, the probe for DiskOnChip devices will look for a
185         DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
186         This option allows you to specify a single address at which to probe
187         for the device, which is useful if you have other devices in that
188         range which get upset when they are probed.
189
190         (Note that on PowerPC, the normal probe will only check at
191         0xE4000000.)
192
193         Normally, you should leave this set to zero, to allow the probe at
194         the normal addresses.
195
196 config MTD_NAND_DISKONCHIP_PROBE_HIGH
197         bool "Probe high addresses"
198         depends on MTD_NAND_DISKONCHIP_PROBE_ADVANCED
199         help
200           By default, the probe for DiskOnChip devices will look for a
201           DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
202           This option changes to make it probe between 0xFFFC8000 and
203           0xFFFEE000.  Unless you are using LinuxBIOS, this is unlikely to be
204           useful to you.  Say 'N'.
205
206 config MTD_NAND_DISKONCHIP_BBTWRITE
207         bool "Allow BBT writes on DiskOnChip Millennium and 2000TSOP"
208         depends on MTD_NAND_DISKONCHIP
209         help
210           On DiskOnChip devices shipped with the INFTL filesystem (Millennium
211           and 2000 TSOP/Alon), Linux reserves some space at the end of the
212           device for the Bad Block Table (BBT).  If you have existing INFTL
213           data on your device (created by non-Linux tools such as M-Systems'
214           DOS drivers), your data might overlap the area Linux wants to use for
215           the BBT.  If this is a concern for you, leave this option disabled and
216           Linux will not write BBT data into this area.
217           The downside of leaving this option disabled is that if bad blocks
218           are detected by Linux, they will not be recorded in the BBT, which
219           could cause future problems.
220           Once you enable this option, new filesystems (INFTL or others, created
221           in Linux or other operating systems) will not use the reserved area.
222           The only reason not to enable this option is to prevent damage to
223           preexisting filesystems.
224           Even if you leave this disabled, you can enable BBT writes at module
225           load time (assuming you build diskonchip as a module) with the module
226           parameter "inftl_bbt_write=1".
227
228 config MTD_NAND_DOCG4
229         tristate "Support for DiskOnChip G4"
230         depends on HAS_IOMEM
231         select BCH
232         select BITREVERSE
233         help
234           Support for diskonchip G4 nand flash, found in various smartphones and
235           PDAs, among them the Palm Treo680, HTC Prophet and Wizard, Toshiba
236           Portege G900, Asus P526, and O2 XDA Zinc.
237
238           With this driver you will be able to use UBI and create a ubifs on the
239           device, so you may wish to consider enabling UBI and UBIFS as well.
240
241           These devices ship with the Mys/Sandisk SAFTL formatting, for which
242           there is currently no mtd parser, so you may want to use command line
243           partitioning to segregate write-protected blocks. On the Treo680, the
244           first five erase blocks (256KiB each) are write-protected, followed
245           by the block containing the saftl partition table.  This is probably
246           typical.
247
248 config MTD_NAND_SHARPSL
249         tristate "Support for NAND Flash on Sharp SL Series (C7xx + others)"
250         depends on ARCH_PXA
251
252 config MTD_NAND_CAFE
253         tristate "NAND support for OLPC CAFÉ chip"
254         depends on PCI
255         select REED_SOLOMON
256         select REED_SOLOMON_DEC16
257         help
258           Use NAND flash attached to the CAFÉ chip designed for the OLPC
259           laptop.
260
261 config MTD_NAND_CS553X
262         tristate "NAND support for CS5535/CS5536 (AMD Geode companion chip)"
263         depends on X86_32
264         depends on !UML && HAS_IOMEM
265         help
266           The CS553x companion chips for the AMD Geode processor
267           include NAND flash controllers with built-in hardware ECC
268           capabilities; enabling this option will allow you to use
269           these. The driver will check the MSRs to verify that the
270           controller is enabled for NAND, and currently requires that
271           the controller be in MMIO mode.
272
273           If you say "m", the module will be called cs553x_nand.
274
275 config MTD_NAND_ATMEL
276         tristate "Support for NAND Flash / SmartMedia on AT91"
277         depends on ARCH_AT91
278         select MFD_ATMEL_SMC
279         help
280           Enables support for NAND Flash / Smart Media Card interface
281           on Atmel AT91 processors.
282
283 config MTD_NAND_MARVELL
284         tristate "NAND controller support on Marvell boards"
285         depends on PXA3xx || ARCH_MMP || PLAT_ORION || ARCH_MVEBU || \
286                    COMPILE_TEST
287         depends on HAS_IOMEM
288         help
289           This enables the NAND flash controller driver for Marvell boards,
290           including:
291           - PXA3xx processors (NFCv1)
292           - 32-bit Armada platforms (XP, 37x, 38x, 39x) (NFCv2)
293           - 64-bit Aramda platforms (7k, 8k) (NFCv2)
294
295 config MTD_NAND_SLC_LPC32XX
296         tristate "NXP LPC32xx SLC Controller"
297         depends on ARCH_LPC32XX
298         help
299           Enables support for NXP's LPC32XX SLC (i.e. for Single Level Cell
300           chips) NAND controller. This is the default for the PHYTEC 3250
301           reference board which contains a NAND256R3A2CZA6 chip.
302
303           Please check the actual NAND chip connected and its support
304           by the SLC NAND controller.
305
306 config MTD_NAND_MLC_LPC32XX
307         tristate "NXP LPC32xx MLC Controller"
308         depends on ARCH_LPC32XX
309         help
310           Uses the LPC32XX MLC (i.e. for Multi Level Cell chips) NAND
311           controller. This is the default for the WORK92105 controller
312           board.
313
314           Please check the actual NAND chip connected and its support
315           by the MLC NAND controller.
316
317 config MTD_NAND_CM_X270
318         tristate "Support for NAND Flash on CM-X270 modules"
319         depends on MACH_ARMCORE
320
321 config MTD_NAND_PASEMI
322         tristate "NAND support for PA Semi PWRficient"
323         depends on PPC_PASEMI
324         help
325           Enables support for NAND Flash interface on PA Semi PWRficient
326           based boards
327
328 config MTD_NAND_TMIO
329         tristate "NAND Flash device on Toshiba Mobile IO Controller"
330         depends on MFD_TMIO
331         help
332           Support for NAND flash connected to a Toshiba Mobile IO
333           Controller in some PDAs, including the Sharp SL6000x.
334
335 config MTD_NAND_NANDSIM
336         tristate "Support for NAND Flash Simulator"
337         help
338           The simulator may simulate various NAND flash chips for the
339           MTD nand layer.
340
341 config MTD_NAND_GPMI_NAND
342         tristate "GPMI NAND Flash Controller driver"
343         depends on MTD_NAND && MXS_DMA
344         help
345          Enables NAND Flash support for IMX23, IMX28 or IMX6.
346          The GPMI controller is very powerful, with the help of BCH
347          module, it can do the hardware ECC. The GPMI supports several
348          NAND flashs at the same time.
349
350 config MTD_NAND_BRCMNAND
351         tristate "Broadcom STB NAND controller"
352         depends on ARM || ARM64 || MIPS
353         help
354           Enables the Broadcom NAND controller driver. The controller was
355           originally designed for Set-Top Box but is used on various BCM7xxx,
356           BCM3xxx, BCM63xxx, iProc/Cygnus and more.
357
358 config MTD_NAND_BCM47XXNFLASH
359         tristate "Support for NAND flash on BCM4706 BCMA bus"
360         depends on BCMA_NFLASH
361         help
362           BCMA bus can have various flash memories attached, they are
363           registered by bcma as platform devices. This enables driver for
364           NAND flash memories. For now only BCM4706 is supported.
365
366 config MTD_NAND_PLATFORM
367         tristate "Support for generic platform NAND driver"
368         depends on HAS_IOMEM
369         help
370           This implements a generic NAND driver for on-SOC platform
371           devices. You will need to provide platform-specific functions
372           via platform_data.
373
374 config MTD_NAND_ORION
375         tristate "NAND Flash support for Marvell Orion SoC"
376         depends on PLAT_ORION
377         help
378           This enables the NAND flash controller on Orion machines.
379
380           No board specific support is done by this driver, each board
381           must advertise a platform_device for the driver to attach.
382
383 config MTD_NAND_OXNAS
384         tristate "NAND Flash support for Oxford Semiconductor SoC"
385         depends on ARCH_OXNAS || COMPILE_TEST
386         depends on HAS_IOMEM
387         help
388           This enables the NAND flash controller on Oxford Semiconductor SoCs.
389
390 config MTD_NAND_FSL_ELBC
391         tristate "NAND support for Freescale eLBC controllers"
392         depends on FSL_SOC
393         select FSL_LBC
394         help
395           Various Freescale chips, including the 8313, include a NAND Flash
396           Controller Module with built-in hardware ECC capabilities.
397           Enabling this option will enable you to use this to control
398           external NAND devices.
399
400 config MTD_NAND_FSL_IFC
401         tristate "NAND support for Freescale IFC controller"
402         depends on FSL_SOC || ARCH_LAYERSCAPE || SOC_LS1021A
403         select FSL_IFC
404         select MEMORY
405         help
406           Various Freescale chips e.g P1010, include a NAND Flash machine
407           with built-in hardware ECC capabilities.
408           Enabling this option will enable you to use this to control
409           external NAND devices.
410
411 config MTD_NAND_FSL_UPM
412         tristate "Support for NAND on Freescale UPM"
413         depends on PPC_83xx || PPC_85xx
414         select FSL_LBC
415         help
416           Enables support for NAND Flash chips wired onto Freescale PowerPC
417           processor localbus with User-Programmable Machine support.
418
419 config MTD_NAND_MPC5121_NFC
420         tristate "MPC5121 built-in NAND Flash Controller support"
421         depends on PPC_MPC512x
422         help
423           This enables the driver for the NAND flash controller on the
424           MPC5121 SoC.
425
426 config MTD_NAND_VF610_NFC
427         tristate "Support for Freescale NFC for VF610/MPC5125"
428         depends on (SOC_VF610 || COMPILE_TEST)
429         depends on HAS_IOMEM
430         help
431           Enables support for NAND Flash Controller on some Freescale
432           processors like the VF610, MPC5125, MCF54418 or Kinetis K70.
433           The driver supports a maximum 2k page size. With 2k pages and
434           64 bytes or more of OOB, hardware ECC with up to 32-bit error
435           correction is supported. Hardware ECC is only enabled through
436           device tree.
437
438 config MTD_NAND_MXC
439         tristate "MXC NAND support"
440         depends on ARCH_MXC
441         help
442           This enables the driver for the NAND flash controller on the
443           MXC processors.
444
445 config MTD_NAND_SH_FLCTL
446         tristate "Support for NAND on Renesas SuperH FLCTL"
447         depends on SUPERH || COMPILE_TEST
448         depends on HAS_IOMEM
449         help
450           Several Renesas SuperH CPU has FLCTL. This option enables support
451           for NAND Flash using FLCTL.
452
453 config MTD_NAND_DAVINCI
454         tristate "Support NAND on DaVinci/Keystone SoC"
455         depends on ARCH_DAVINCI || (ARCH_KEYSTONE && TI_AEMIF)
456         help
457           Enable the driver for NAND flash chips on Texas Instruments
458           DaVinci/Keystone processors.
459
460 config MTD_NAND_TXX9NDFMC
461         tristate "NAND Flash support for TXx9 SoC"
462         depends on SOC_TX4938 || SOC_TX4939
463         help
464           This enables the NAND flash controller on the TXx9 SoCs.
465
466 config MTD_NAND_SOCRATES
467         tristate "Support for NAND on Socrates board"
468         depends on SOCRATES
469         help
470           Enables support for NAND Flash chips wired onto Socrates board.
471
472 config MTD_NAND_NUC900
473         tristate "Support for NAND on Nuvoton NUC9xx/w90p910 evaluation boards."
474         depends on ARCH_W90X900
475         help
476           This enables the driver for the NAND Flash on evaluation board based
477           on w90p910 / NUC9xx.
478
479 config MTD_NAND_JZ4740
480         tristate "Support for JZ4740 SoC NAND controller"
481         depends on MACH_JZ4740
482         help
483                 Enables support for NAND Flash on JZ4740 SoC based boards.
484
485 config MTD_NAND_JZ4780
486         tristate "Support for NAND on JZ4780 SoC"
487         depends on MACH_JZ4780 && JZ4780_NEMC
488         help
489           Enables support for NAND Flash connected to the NEMC on JZ4780 SoC
490           based boards, using the BCH controller for hardware error correction.
491
492 config MTD_NAND_FSMC
493         tristate "Support for NAND on ST Micros FSMC"
494         depends on OF
495         depends on PLAT_SPEAR || ARCH_NOMADIK || ARCH_U8500 || MACH_U300
496         help
497           Enables support for NAND Flash chips on the ST Microelectronics
498           Flexible Static Memory Controller (FSMC)
499
500 config MTD_NAND_XWAY
501         bool "Support for NAND on Lantiq XWAY SoC"
502         depends on LANTIQ && SOC_TYPE_XWAY
503         help
504           Enables support for NAND Flash chips on Lantiq XWAY SoCs. NAND is attached
505           to the External Bus Unit (EBU).
506
507 config MTD_NAND_SUNXI
508         tristate "Support for NAND on Allwinner SoCs"
509         depends on ARCH_SUNXI
510         help
511           Enables support for NAND Flash chips on Allwinner SoCs.
512
513 config MTD_NAND_HISI504
514         tristate "Support for NAND controller on Hisilicon SoC Hip04"
515         depends on ARCH_HISI || COMPILE_TEST
516         help
517           Enables support for NAND controller on Hisilicon SoC Hip04.
518
519 config MTD_NAND_QCOM
520         tristate "Support for NAND on QCOM SoCs"
521         depends on ARCH_QCOM
522         help
523           Enables support for NAND flash chips on SoCs containing the EBI2 NAND
524           controller. This controller is found on IPQ806x SoC.
525
526 config MTD_NAND_MTK
527         tristate "Support for NAND controller on MTK SoCs"
528         depends on ARCH_MEDIATEK || COMPILE_TEST
529         help
530           Enables support for NAND controller on MTK SoCs.
531           This controller is found on mt27xx, mt81xx, mt65xx SoCs.
532
533 endif # MTD_NAND