diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-02-27 11:01:17 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-03-04 11:00:33 +0100 |
commit | c26ef8231fae4aac76b9b2dd8cb2ed12361d6624 (patch) | |
tree | 7fc7b2351abf24aab5325ae2b8018360afabd279 /drivers/mtd/mtdraw.c | |
parent | 5b85daacc6ddaa3a3a3f38788f6b1bfac3a1c8d3 (diff) | |
download | barebox-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.c | 6 |
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 { |