[RFC/PATCH] flash_eraseall: extra care if NOR flash is not BIT_WRITEABLE
Sebastian Andrzej Siewior
sebastian at breakpoint.cc
Mon Mar 23 18:42:18 EDT 2009
this is difficult because it depends on CONFIG_JFFS2_FS_WRITEBUFFER
Signed-off-by: Sebastian Andrzej Siewior <sebastian at breakpoint.cc>
---
flash_eraseall.c | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/flash_eraseall.c b/flash_eraseall.c
index 0a4010e..3591db5 100644
--- a/flash_eraseall.c
+++ b/flash_eraseall.c
@@ -64,12 +64,24 @@ static int prepare_clean_marker(mtd_info_t *meminfo)
cleanmarker.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK);
cleanmarker.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
+ cleanmarker.totlen = cpu_to_je32(sizeof(struct jffs2_unknown_node));
switch (meminfo->type) {
case MTD_ROM:
case MTD_RAM:
+ break;
+
case MTD_NORFLASH:
- cleanmarker.totlen = cpu_to_je32(sizeof(struct jffs2_unknown_node));
+ /* only if the kernel is compiled with
+ * CONFIG_JFFS2_FS_WRITEBUFFER
+ * Now, how to check that?
+ */
+ if (!(meminfo->flags & MTD_BIT_WRITEABLE)) {
+ int l;
+
+ l = meminfo->writesize > 16 ? meminfo->writesize : 16;
+ cleanmarker.totlen = cpu_to_je32(l);
+ }
break;
case MTD_DATAFLASH:
--
1.6.0.6
More information about the linux-mtd
mailing list