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