X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=doc%2FREADME.nand;h=ec461b2dc933b315a971607ee24a14e03a35e024;hb=d181191e1215204d825db7837ed2c64a5196a734;hp=0ff56331d5f92ec1ba0dbea186e40d36b4a06cb2;hpb=980267a1445b7b4d8e8d05ef57799d92ba4a2ee3;p=oweals%2Fu-boot.git diff --git a/doc/README.nand b/doc/README.nand index 0ff56331d5..ec461b2dc9 100644 --- a/doc/README.nand +++ b/doc/README.nand @@ -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: @@ -94,7 +94,7 @@ Configuration Options: address of u-boot MTD partition in NAND. CONFIG_CMD_NAND - Enables NAND support and commmands. + Enables NAND support and commands. CONFIG_CMD_NAND_TORTURE Enables the torture command (see description of this command below). @@ -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)