summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/mtdraw.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-02-27 11:01:17 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-03-04 11:00:33 +0100
commitc26ef8231fae4aac76b9b2dd8cb2ed12361d6624 (patch)
tree7fc7b2351abf24aab5325ae2b8018360afabd279 /drivers/mtd/mtdraw.c
parent5b85daacc6ddaa3a3a3f38788f6b1bfac3a1c8d3 (diff)
downloadbarebox-c26ef8231fae4aac76b9b2dd8cb2ed12361d6624.tar.gz
barebox-c26ef8231fae4aac76b9b2dd8cb2ed12361d6624.tar.xz
mtd: Add parameter to allow erasing bad blocks
While erasing bad blocks is a potentially dangerous operation it is sometimes needed during development or when some foreign code has touched the flash. This patch adds a device parameter 'erasebad' to allow erasing bad blocks. Since this is not wanted during production this is behind a Kconfig option. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mtd/mtdraw.c')
-rw-r--r--drivers/mtd/mtdraw.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/mtd/mtdraw.c b/drivers/mtd/mtdraw.c
index 5aaa0172da..384104ec27 100644
--- a/drivers/mtd/mtdraw.c
+++ b/drivers/mtd/mtdraw.c
@@ -241,7 +241,11 @@ static int mtdraw_erase(struct cdev *cdev, size_t count, loff_t _offset)
while (count > 0) {
debug("erase %d %d\n", erase.addr, erase.len);
- ret = mtd_block_isbad(mtd, erase.addr);
+ if (!mtd->allow_erasebad)
+ ret = mtd_block_isbad(mtd, erase.addr);
+ else
+ ret = 0;
+
if (ret > 0) {
printf("Skipping bad block at 0x%08x\n", erase.addr);
} else {