[U-Boot] [PATCH v2 3/4] nand: lpc32xx: add ECC layout for small page NAND

slemieux.tyco at gmail.com slemieux.tyco at gmail.com
Wed Jul 29 18:14:09 CEST 2015


From: Sylvain Lemieux <slemieux at tycoint.com>

Incorporate ECC layout for small page NAND from legacy
LPCLinux NXP BSP.
The code taken from the legacy patch is:
- lpc32xx SLC NAND driver (ECC layout for small page)

This layout is matching the lpc32xx NAND SLC Kernel driver:
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/drivers/mtd/nand/lpc32xx_slc.c?id=refs/tags/v4.1.3

Signed-off-by: Sylvain Lemieux <slemieux at tycoint.com>
---
Changes from v1 to v2:
* Move ECC layout for small page NAND into a separate patch.

The legacy BSP patch (u-boot-2009.03_lpc32x0-v1.07.patch.tar.bz2)
was downloaded from the LPCLinux Web site.

 drivers/mtd/nand/lpc32xx_nand_slc.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/mtd/nand/lpc32xx_nand_slc.c b/drivers/mtd/nand/lpc32xx_nand_slc.c
index b8b33e3..14f66dd 100644
--- a/drivers/mtd/nand/lpc32xx_nand_slc.c
+++ b/drivers/mtd/nand/lpc32xx_nand_slc.c
@@ -108,6 +108,19 @@ struct lpc32xx_nand_slc_regs {
 #define NAND_LARGE_BLOCK_PAGE_SIZE	2048
 #define NAND_SMALL_BLOCK_PAGE_SIZE	512
 
+/* NAND ECC Layout for small page NAND devices
+ * Note: For large page devices, the default layouts are used. */
+static struct nand_ecclayout lpc32xx_nand_oob_16 = {
+	.eccbytes = 6,
+	.eccpos = {10, 11, 12, 13, 14, 15},
+	.oobfree = {
+		{.offset = 0,
+		 . length = 4},
+		{.offset = 6,
+		 . length = 4}
+		}
+};
+
 #if defined(CONFIG_DMA_LPC32XX) && !defined(CONFIG_SPL_BUILD)
 /* DMA Descriptors
  * For Large Block: 17 descriptors = ((16 Data and ECC Read) + 1 Spare Area)
@@ -502,6 +515,9 @@ int board_nand_init(struct nand_chip *lpc32xx_chip)
 #endif
 	lpc32xx_chip->ecc.strength = 1;
 
+	if (CONFIG_SYS_NAND_ECCSIZE != NAND_LARGE_BLOCK_PAGE_SIZE)
+		lpc32xx_chip->ecc.layout = &lpc32xx_nand_oob_16;
+
 #if defined(CONFIG_SYS_NAND_USE_FLASH_BBT)
 	lpc32xx_chip->bbt_options |= NAND_BBT_USE_FLASH;
 #endif
-- 
1.8.3.1



More information about the U-Boot mailing list