Merge branch '2020-05-25-misc-fixes'
[oweals/u-boot.git] / doc / README.nand
index 545d88ca689c99962ae336966bfbaf31c9c1f0d4..ec461b2dc933b315a971607ee24a14e03a35e024 100644 (file)
@@ -1,3 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0+
 NAND FLASH commands and notes
 
 See NOTE below!!!
@@ -5,7 +6,6 @@ See NOTE below!!!
 # (C) Copyright 2003
 # Dave Ellis, SIXNET, dge@sixnetio.com
 #
-# SPDX-License-Identifier:     GPL-2.0+
 
 Commands:
 
@@ -116,7 +116,7 @@ Configuration Options:
       The maximum number of NAND chips per device to be supported.
 
    CONFIG_SYS_NAND_SELF_INIT
-      Traditionally, glue code in drivers/mtd/nand/nand.c has driven
+      Traditionally, glue code in drivers/mtd/nand/raw/nand.c has driven
       the initialization process -- it provides the mtd and nand
       structs, calls a board init function for a specific device,
       calls nand_scan(), and registers with mtd.
@@ -125,7 +125,7 @@ Configuration Options:
       run code between nand_scan_ident() and nand_scan_tail(), or other
       deviations from the "normal" flow.
 
-      If a board defines CONFIG_SYS_NAND_SELF_INIT, drivers/mtd/nand/nand.c
+      If a board defines CONFIG_SYS_NAND_SELF_INIT, drivers/mtd/nand/raw/nand.c
       will make one call to board_nand_init(), with no arguments.  That
       function is responsible for calling a driver init function for
       each NAND device on the board, that performs all initialization
@@ -136,15 +136,8 @@ Configuration Options:
       Example of new init to be added to the end of an existing driver
       init:
 
-       /*
-        * devnum is the device number to be used in nand commands
-        * and in mtd->name.  Must be less than
-        * CONFIG_SYS_NAND_MAX_DEVICE.
-        */
-       mtd = &nand_info[devnum];
-
        /* chip is struct nand_chip, and is now provided by the driver. */
-       mtd->priv = &chip;
+       mtd = nand_to_mtd(&chip);
 
        /*
         * Fill in appropriate values if this driver uses these fields,
@@ -165,7 +158,11 @@ Configuration Options:
        if (nand_scan_tail(mtd))
                error out
 
-       if (nand_register(devnum))
+       /*
+        * devnum is the device number to be used in nand commands
+        * and in mtd->name.  Must be less than CONFIG_SYS_MAX_NAND_DEVICE.
+        */
+       if (nand_register(devnum, mtd))
                error out
 
       In addition to providing more flexibility to the driver, it reduces
@@ -183,12 +180,6 @@ Configuration Options:
        And fetching device parameters flashed on device, by parsing
        ONFI parameter page.
 
-   CONFIG_BCH
-       Enables software based BCH ECC algorithm present in lib/bch.c
-       This is used by SoC platforms which do not have built-in ELM
-       hardware engine required for BCH ECC correction.
-
-
 Platform specific options
 =========================
    CONFIG_NAND_OMAP_GPMC
@@ -274,7 +265,7 @@ Platform specific options
 
                However, for 4K pagesize NAND
                NAND_PAGESIZE = 4096
-               NAND_OOBSIZE = 64
+               NAND_OOBSIZE = 224
                ECC_BYTES = 26
                2 + (4096 / 512) * 26 = 210 < NAND_OOBSIZE
                Thus BCH16 can be supported on 4K page NAND.
@@ -289,7 +280,7 @@ NOTE:
 =====
 
 The Disk On Chip driver is currently broken and has been for some time.
-There is a driver in drivers/mtd/nand, taken from Linux, that works with
+There is a driver in drivers/mtd/nand/raw, taken from Linux, that works with
 the current NAND system but has not yet been adapted to the u-boot
 environment.
 
@@ -310,7 +301,7 @@ Miscellaneous and testing commands:
   DANGEROUS!!! Factory set bad blocks will be lost. Use only
   to remove artificial bad blocks created with the "markbad" command.
 
-  "torture offset"
+  "torture offset [size]"
   Torture block to determine if it is still reliable.
   Enabled by the CONFIG_CMD_NAND_TORTURE configuration option.
   This command returns 0 if the block is still reliable, else 1.
@@ -327,6 +318,10 @@ Miscellaneous and testing commands:
   automate actions following a nand->write() error. This would e.g. be required
   in order to program or update safely firmware to NAND, especially for the UBI
   part of such firmware.
+  Optionally, a second parameter size can be given to test multiple blocks with
+  one call. If size is not a multiple of the NAND's erase size, then the block
+  that contains offset + size will be tested in full. If used with size, this
+  command returns 0 if all tested blocks have been found reliable, else 1.
 
 
 NAND locking command (for chips with active LOCKPRE pin)