summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-04-04 12:26:25 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2011-04-04 16:41:38 +0200
commit8f5b0e497a896160116b6e9db13c2b4d40401e0b (patch)
tree6b3c88bcfa8923428912c75427a4529c75b208ab
parenteb133335e6441e4dd6b69b7f14ea71abba593470 (diff)
downloadbarebox-8f5b0e497a896160116b6e9db13c2b4d40401e0b.tar.gz
barebox-8f5b0e497a896160116b6e9db13c2b4d40401e0b.tar.xz
nand: Make different ecc modes optional
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/mtd/nand/Kconfig20
-rw-r--r--drivers/mtd/nand/Makefile5
-rw-r--r--drivers/mtd/nand/nand_base.c12
3 files changed, 32 insertions, 5 deletions
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 049f07c32d..70c23b4752 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -13,6 +13,26 @@ config NAND_WRITE
default y
prompt "Support writing to Nand"
+config NAND_ECC_SOFT
+ bool
+ default y
+ prompt "Support software ecc"
+
+config NAND_ECC_HW
+ bool
+ default y
+ prompt "Support hardware ecc"
+
+config NAND_ECC_HW_SYNDROME
+ bool
+ default y
+ prompt "Support syndrome hardware ecc controllers"
+
+config NAND_ECC_HW_NONE
+ bool
+ default y
+ prompt "Support skipping ecc support"
+
config NAND_IMX
bool
prompt "i.MX NAND driver"
diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
index a322e003f6..a2f4b35f62 100644
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -1,7 +1,10 @@
# Generic NAND options
-obj-$(CONFIG_NAND) += nand.o nand_ecc.o nand_hwecc.o nand_swecc.o nand_hwecc_syndrome.o
+obj-$(CONFIG_NAND) += nand.o nand_ecc.o
obj-$(CONFIG_NAND_WRITE) += nand_write.o
+obj-$(CONFIG_NAND_ECC_SOFT) += nand_ecc.o nand_swecc.o
+obj-$(CONFIG_NAND_ECC_HW) += nand_hwecc.o
+obj-$(CONFIG_NAND_ECC_HW_SYNDROME) += nand_hwecc_syndrome.o
obj-$(CONFIG_MTD_NAND_IDS) += nand_ids.o
obj-$(CONFIG_NAND) += nand_base.o nand_bbt.o
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 47e5ed6994..373e52a3b9 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -1322,20 +1322,24 @@ int nand_scan_tail(struct mtd_info *mtd)
chip->ecc.write_page_raw = nand_write_page_raw;
#endif
switch (chip->ecc.mode) {
+#ifdef CONFIG_NAND_ECC_HW
case NAND_ECC_HW:
nand_check_hwecc(mtd, chip);
nand_init_ecc_hw(chip);
break;
-
+#endif
+#ifdef CONFIG_NAND_ECC_HW_SYNDROME
case NAND_ECC_HW_SYNDROME:
nand_check_hwecc(mtd, chip);
nand_init_ecc_hw_syndrome(chip);
break;
-
+#endif
+#ifdef CONFIG_NAND_ECC_SOFT
case NAND_ECC_SOFT:
nand_init_ecc_soft(chip);
break;
-
+#endif
+#ifdef CONFIG_NAND_ECC_NONE
case NAND_ECC_NONE:
printk(KERN_WARNING "NAND_ECC_NONE selected by board driver. "
"This is not recommended !!\n");
@@ -1348,7 +1352,7 @@ int nand_scan_tail(struct mtd_info *mtd)
chip->ecc.size = mtd->writesize;
chip->ecc.bytes = 0;
break;
-
+#endif
default:
printk(KERN_WARNING "Invalid NAND_ECC_MODE %d\n",
chip->ecc.mode);