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