3 bool "Raw NAND Device Support"
6 config SYS_NAND_SELF_INIT
9 This option, if enabled, provides more flexible and linux-like
10 NAND initialization process.
12 config SYS_NAND_DRIVER_ECC_LAYOUT
15 Omit standard ECC layouts to safe space. Select this if your driver
16 is known to provide its own ECC layout.
19 bool "Support Atmel NAND controller"
20 imply SYS_NAND_USE_FLASH_BBT
22 Enable this driver for NAND flash platforms using an Atmel NAND
26 bool "Support TI Davinci NAND controller"
28 Enable this driver for NAND flash controllers available in TI Davinci
29 and Keystone2 platforms
33 select SYS_NAND_SELF_INIT
37 bool "Support Denali NAND controller as a DT device"
39 depends on OF_CONTROL && DM
41 Enable the driver for NAND flash on platforms using a Denali NAND
42 controller as a DT device.
44 config NAND_DENALI_SPARE_AREA_SKIP_BYTES
45 int "Number of bytes skipped in OOB area"
46 depends on NAND_DENALI
49 This option specifies the number of bytes to skip from the beginning
50 of OOB area before last ECC sector data starts. This is potentially
51 used to preserve the bad block marker in the OOB area.
53 config NAND_LPC32XX_SLC
54 bool "Support LPC32XX_SLC controller"
56 Enable the LPC32XX SLC NAND controller.
59 bool "Support OMAP GPMC NAND controller"
60 depends on ARCH_OMAP2PLUS
62 Enables omap_gpmc.c driver for OMAPx and AMxxxx platforms.
63 GPMC controller is used for parallel NAND flash devices, and can
64 do ECC calculation (not ECC error detection) for HAM1, BCH4, BCH8
65 and BCH16 ECC algorithms.
67 config NAND_OMAP_GPMC_PREFETCH
68 bool "Enable GPMC Prefetch"
69 depends on NAND_OMAP_GPMC
72 On OMAP platforms that use the GPMC controller
73 (CONFIG_NAND_OMAP_GPMC_PREFETCH), this options enables the code that
74 uses the prefetch mode to speed up read operations.
77 bool "Enable ELM driver for OMAPxx and AMxx platforms."
78 depends on NAND_OMAP_GPMC && !OMAP34XX
80 ELM controller is used for ECC error detection (not ECC calculation)
81 of BCH4, BCH8 and BCH16 ECC algorithms.
82 Some legacy platforms like OMAP3xx do not have in-built ELM h/w engine,
83 thus such SoC platforms need to depend on software library for ECC error
84 detection. However ECC calculation on such plaforms would still be
85 done by GPMC controller.
88 bool "Support for Freescale NFC for VF610"
89 select SYS_NAND_SELF_INIT
90 select SYS_NAND_DRIVER_ECC_LAYOUT
93 Enables support for NAND Flash Controller on some Freescale
94 processors like the VF610, MCF54418 or Kinetis K70.
95 The driver supports a maximum 2k page size. The driver
96 currently does not support hardware ECC.
100 config NAND_VF610_NFC_DT
101 bool "Support Vybrid's vf610 NAND controller as a DT device"
102 depends on OF_CONTROL && MTD
104 Enable the driver for Vybrid's vf610 NAND flash on platforms
108 prompt "Hardware ECC strength"
109 depends on NAND_VF610_NFC
110 default SYS_NAND_VF610_NFC_45_ECC_BYTES
112 Select the ECC strength used in the hardware BCH ECC block.
114 config SYS_NAND_VF610_NFC_45_ECC_BYTES
115 bool "24-error correction (45 ECC bytes)"
117 config SYS_NAND_VF610_NFC_60_ECC_BYTES
118 bool "32-error correction (60 ECC bytes)"
125 bool "Support for NAND on PXA3xx and Armada 370/XP/38x"
126 select SYS_NAND_SELF_INIT
129 This enables the driver for the NAND flash device found on
130 PXA3xx processors (NFCv1) and also on Armada 370/XP (NFCv2).
133 bool "Support for NAND on Allwinner SoCs"
135 depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I
136 select SYS_NAND_SELF_INIT
137 select SYS_NAND_U_BOOT_LOCATIONS
138 select SPL_NAND_SUPPORT
141 Enable support for NAND. This option enables the standard and
143 The SPL driver only supports reading from the NAND using DMA
148 config NAND_SUNXI_SPL_ECC_STRENGTH
149 int "Allwinner NAND SPL ECC Strength"
152 config NAND_SUNXI_SPL_ECC_SIZE
153 int "Allwinner NAND SPL ECC Step Size"
156 config NAND_SUNXI_SPL_USABLE_PAGE_SIZE
157 int "Allwinner NAND SPL Usable Page Size"
163 bool "Configure Arasan Nand"
164 select SYS_NAND_SELF_INIT
167 This enables Nand driver support for Arasan nand flash
168 controller. This uses the hardware ECC for read and
172 bool "MXC NAND support"
173 depends on CPU_ARM926EJS || CPU_ARM1136 || MX5
176 This enables the NAND driver for the NAND flash controller on the
177 i.MX27 / i.MX31 / i.MX5 rocessors.
180 bool "MXS NAND support"
181 depends on MX23 || MX28 || MX6 || MX7
182 select SYS_NAND_SELF_INIT
185 select APBH_DMA_BURST if ARCH_MX6 || ARCH_MX7
186 select APBH_DMA_BURST8 if ARCH_MX6 || ARCH_MX7
188 This enables NAND driver for the NAND flash controller on the
194 bool "Support MXS NAND controller as a DT device"
195 depends on OF_CONTROL && MTD
197 Enable the driver for MXS NAND flash on platforms using
200 config NAND_MXS_USE_MINIMUM_ECC
201 bool "Use minimum ECC strength supported by the controller"
207 bool "Support for Zynq Nand controller"
208 select SYS_NAND_SELF_INIT
211 This enables Nand driver support for Nand flash controller
214 config NAND_ZYNQ_USE_BOOTLOADER1_TIMINGS
215 bool "Enable use of 1st stage bootloader timing for NAND"
218 This flag prevent U-boot reconfigure NAND flash controller and reuse
219 the NAND timing from 1st stage bootloader.
221 comment "Generic NAND options"
223 config SYS_NAND_BLOCK_SIZE
224 hex "NAND chip eraseblock size"
225 depends on ARCH_SUNXI
227 Number of data bytes in one eraseblock for the NAND chip on the
228 board. This is the multiple of NAND_PAGE_SIZE and the number of
231 config SYS_NAND_PAGE_SIZE
232 hex "NAND chip page size"
233 depends on ARCH_SUNXI
235 Number of data bytes in one page for the NAND chip on the
236 board, not including the OOB area.
238 config SYS_NAND_OOBSIZE
239 hex "NAND chip OOB size"
240 depends on ARCH_SUNXI
242 Number of bytes in the Out-Of-Band area for the NAND chip on
245 # Enhance depends when converting drivers to Kconfig which use this config
246 # option (mxc_nand, ndfc, omap_gpmc).
247 config SYS_NAND_BUSWIDTH_16BIT
248 bool "Use 16-bit NAND interface"
249 depends on NAND_VF610_NFC || NAND_OMAP_GPMC || NAND_MXC || ARCH_DAVINCI
251 Indicates that NAND device has 16-bit wide data-bus. In absence of this
252 config, bus-width of NAND device is assumed to be either 8-bit and later
253 determined by reading ONFI params.
254 Above config is useful when NAND device's bus-width information cannot
255 be determined from on-chip ONFI params, like in following scenarios:
256 - SPL boot does not support reading of ONFI parameters. This is done to
257 keep SPL code foot-print small.
258 - In current U-Boot flow using nand_init(), driver initialization
259 happens in board_nand_init() which is called before any device probe
260 (nand_scan_ident + nand_scan_tail), thus device's ONFI parameters are
261 not available while configuring controller. So a static CONFIG_NAND_xx
262 is needed to know the device's bus-width in advance.
266 config SYS_NAND_U_BOOT_LOCATIONS
267 bool "Define U-boot binaries locations in NAND"
269 Enable CONFIG_SYS_NAND_U_BOOT_OFFS though Kconfig.
270 This option should not be enabled when compiling U-boot for boards
271 defining CONFIG_SYS_NAND_U_BOOT_OFFS in their include/configs/<board>.h
274 config SYS_NAND_U_BOOT_OFFS
275 hex "Location in NAND to read U-Boot from"
276 default 0x800000 if NAND_SUNXI
277 depends on SYS_NAND_U_BOOT_LOCATIONS
279 Set the offset from the start of the nand where u-boot should be
282 config SYS_NAND_U_BOOT_OFFS_REDUND
283 hex "Location in NAND to read U-Boot from"
284 default SYS_NAND_U_BOOT_OFFS
285 depends on SYS_NAND_U_BOOT_LOCATIONS
287 Set the offset from the start of the nand where the redundant u-boot
288 should be loaded from.
290 config SPL_NAND_AM33XX_BCH
291 bool "Enables SPL-NAND driver which supports ELM based"
292 depends on NAND_OMAP_GPMC && !OMAP34XX
295 Hardware ECC correction. This is useful for platforms which have ELM
296 hardware engine and use NAND boot mode.
297 Some legacy platforms like OMAP3xx do not have in-built ELM h/w engine,
298 so those platforms should use CONFIG_SPL_NAND_SIMPLE for enabling
299 SPL-NAND driver with software ECC correction support.
301 config SPL_NAND_DENALI
302 bool "Support Denali NAND controller for SPL"
304 This is a small implementation of the Denali NAND controller
307 config SPL_NAND_SIMPLE
308 bool "Use simple SPL NAND driver"
309 depends on !SPL_NAND_AM33XX_BCH
311 Support for NAND boot using simple NAND drivers that
312 expose the cmd_ctrl() interface.