[U-Boot] [PATCH 1/2] NAND Nomadik: add CONFIG_NAND_NOMADIK_16BIT option

Alessandro Rubini rubini-list at gnudd.com
Mon Jan 18 23:13:49 CET 2010


Signed-off-by: Alessandro Rubini <rubini at gnudd.com>
Cc: Gregory Hermant <gregory.hermant at calao-systems.com>
---
 drivers/mtd/nand/nomadik.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/nand/nomadik.c b/drivers/mtd/nand/nomadik.c
index b76f4cb..149f68b 100644
--- a/drivers/mtd/nand/nomadik.c
+++ b/drivers/mtd/nand/nomadik.c
@@ -196,13 +196,20 @@ static void nomadik_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 
 int board_nand_init(struct nand_chip *chip)
 {
-	/* Set up the FSMC_PCR0 for nand access*/
-	writel(0x0000004a, REG_FSMC_PCR0);
-	/* Set up FSMC_PMEM0, FSMC_PATT0 with timing data for access */
+	u32 pcr0_val;
+
+	chip->options = NAND_COPYBACK |	NAND_CACHEPRG | NAND_NO_PADDING;
+	pcr0_val = 0x0000004a; /* Enabled, nand, enable ecc hw */
+
+#ifdef CONFIG_NAND_NOMADIK_16BIT
+	chip->options |= NAND_BUSWIDTH_16;
+	pcr0_val |= 0x00000010; /* 16-bit access */
+#endif
+	/* Set up FSMC control0, PMEM0, PATT0 with timing data for access */
+	writel(pcr0_val, REG_FSMC_PCR0);
 	writel(0x00020401, REG_FSMC_PMEM0);
 	writel(0x00020404, REG_FSMC_PATT0);
 
-	chip->options = NAND_COPYBACK |	NAND_CACHEPRG | NAND_NO_PADDING;
 	chip->cmd_ctrl = nomadik_nand_hwcontrol;
 	chip->dev_ready = nomadik_nand_ready;
 	/* The chip allows 32bit reads, so avoid the default 8bit copy */
-- 
1.6.0.2


More information about the U-Boot mailing list