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