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