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