From 470b0a90d6a21cb72b671215f12ec7ec8a0db2c0 Mon Sep 17 00:00:00 2001
From: David Woodhouse <dwmw2@infradead.org>
Date: Mon, 23 Oct 2006 14:29:04 +0100
Subject: [PATCH] =?UTF-8?q?[MTD]=20NAND:=20Disable=20ECC=20checking=20on?=
 =?UTF-8?q?=20CAF=C3=89=20since=20it's=20broken=20for=20now?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
---
 drivers/mtd/nand/cafe.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/cafe.c b/drivers/mtd/nand/cafe.c
index 10132efd0588..6bcb430b951c 100644
--- a/drivers/mtd/nand/cafe.c
+++ b/drivers/mtd/nand/cafe.c
@@ -67,6 +67,9 @@ module_param(skipbbt, int, 0644);
 static int debug = 0;
 module_param(debug, int, 0644);
 
+static int checkecc = 0;
+module_param(checkecc, int, 0644);
+
 /* Hrm. Why isn't this already conditional on something in the struct device? */
 #define cafe_dev_dbg(dev, args...) do { if (debug) dev_dbg(dev, ##args); } while(0)
 
@@ -214,7 +217,7 @@ static void cafe_nand_cmdfunc(struct mtd_info *mtd, unsigned command,
 		writel(cafe->ctl2 | 0x100 | NAND_CMD_READSTART, cafe->mmio + CAFE_NAND_CTRL2);
 
  do_command:
-#if 1
+#if 0
 	/* http://dev.laptop.org/ticket/200
 	   ECC on read only works if we read precisely 0x80e bytes */
 	if (cafe->datalen == 2112)
@@ -382,7 +385,7 @@ static int cafe_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip,
 	chip->read_buf(mtd, buf, mtd->writesize);
 	chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
 
-	if (readl(cafe->mmio + CAFE_NAND_ECC_RESULT) & (1<<18)) {
+	if (checkecc && readl(cafe->mmio + CAFE_NAND_ECC_RESULT) & (1<<18)) {
 		unsigned short syn[8];
 		int i;
 
-- 
GitLab