diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/Kconfig | 33 | ||||
-rw-r--r-- | fs/jffs2/Makefile | 6 | ||||
-rw-r--r-- | fs/jffs2/fs.c | 6 | ||||
-rw-r--r-- | fs/jffs2/nodelist.h | 4 | ||||
-rw-r--r-- | fs/jffs2/os-linux.h | 28 | ||||
-rw-r--r-- | fs/jffs2/scan.c | 12 | ||||
-rw-r--r-- | fs/jffs2/super.c | 4 | ||||
-rw-r--r-- | fs/jffs2/wbuf.c | 8 |
8 files changed, 33 insertions, 68 deletions
diff --git a/fs/Kconfig b/fs/Kconfig index 07835d24c785..475769c25d64 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -1063,33 +1063,18 @@ config JFFS2_FS_DEBUG | |||
1063 | If reporting bugs, please try to have available a full dump of the | 1063 | If reporting bugs, please try to have available a full dump of the |
1064 | messages at debug level 1 while the misbehaviour was occurring. | 1064 | messages at debug level 1 while the misbehaviour was occurring. |
1065 | 1065 | ||
1066 | config JFFS2_FS_NAND | 1066 | config JFFS2_FS_WRITEBUFFER |
1067 | bool "JFFS2 support for NAND flash" | 1067 | bool "JFFS2 write-buffering support" |
1068 | depends on JFFS2_FS | 1068 | depends on JFFS2_FS |
1069 | default n | 1069 | default y |
1070 | help | 1070 | help |
1071 | This enables the support for NAND flash in JFFS2. NAND is a newer | 1071 | This enables the write-buffering support in JFFS2. |
1072 | type of flash chip design than the traditional NOR flash, with | ||
1073 | higher density but a handful of characteristics which make it more | ||
1074 | interesting for the file system to use. | ||
1075 | 1072 | ||
1076 | Say 'N' unless you have NAND flash. | 1073 | This functionality is required to support JFFS2 on the following |
1077 | 1074 | types of flash devices: | |
1078 | config JFFS2_FS_NOR_ECC | 1075 | - NAND flash |
1079 | bool "JFFS2 support for ECC'd NOR flash (EXPERIMENTAL)" | 1076 | - NOR flash with transparent ECC |
1080 | depends on JFFS2_FS && EXPERIMENTAL | 1077 | - DataFlash |
1081 | default n | ||
1082 | help | ||
1083 | This enables the experimental support for NOR flash with transparent | ||
1084 | ECC for JFFS2. This type of flash chip is not common, however it is | ||
1085 | available from ST Microelectronics. | ||
1086 | |||
1087 | config JFFS2_FS_DATAFLASH | ||
1088 | bool "JFFS2 support for DataFlash (EXPERIMENTAL)" | ||
1089 | depends on JFFS2_FS && EXPERIMENTAL | ||
1090 | default n | ||
1091 | help | ||
1092 | This enables the experimental support for JFFS2 on DataFlash devices. | ||
1093 | 1078 | ||
1094 | config JFFS2_COMPRESSION_OPTIONS | 1079 | config JFFS2_COMPRESSION_OPTIONS |
1095 | bool "Advanced compression options for JFFS2" | 1080 | bool "Advanced compression options for JFFS2" |
diff --git a/fs/jffs2/Makefile b/fs/jffs2/Makefile index 6c2ebe176b40..f1afe681ecd6 100644 --- a/fs/jffs2/Makefile +++ b/fs/jffs2/Makefile | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Makefile for the Linux Journalling Flash File System v2 (JFFS2) | 2 | # Makefile for the Linux Journalling Flash File System v2 (JFFS2) |
3 | # | 3 | # |
4 | # $Id: Makefile.common,v 1.8 2005/02/09 09:17:40 pavlov Exp $ | 4 | # $Id: Makefile.common,v 1.9 2005/02/09 09:23:53 pavlov Exp $ |
5 | # | 5 | # |
6 | 6 | ||
7 | obj-$(CONFIG_JFFS2_FS) += jffs2.o | 7 | obj-$(CONFIG_JFFS2_FS) += jffs2.o |
@@ -11,9 +11,7 @@ jffs2-y += read.o nodemgmt.o readinode.o write.o scan.o gc.o | |||
11 | jffs2-y += symlink.o build.o erase.o background.o fs.o writev.o | 11 | jffs2-y += symlink.o build.o erase.o background.o fs.o writev.o |
12 | jffs2-y += super.o | 12 | jffs2-y += super.o |
13 | 13 | ||
14 | jffs2-$(CONFIG_JFFS2_FS_NAND) += wbuf.o | 14 | jffs2-$(CONFIG_JFFS2_FS_WRITEBUFFER) += wbuf.o |
15 | jffs2-$(CONFIG_JFFS2_FS_NOR_ECC) += wbuf.o | ||
16 | jffs2-$(CONFIG_JFFS2_FS_DATAFLASH) += wbuf.o | ||
17 | jffs2-$(CONFIG_JFFS2_RUBIN) += compr_rubin.o | 15 | jffs2-$(CONFIG_JFFS2_RUBIN) += compr_rubin.o |
18 | jffs2-$(CONFIG_JFFS2_RTIME) += compr_rtime.o | 16 | jffs2-$(CONFIG_JFFS2_RTIME) += compr_rtime.o |
19 | jffs2-$(CONFIG_JFFS2_ZLIB) += compr_zlib.o | 17 | jffs2-$(CONFIG_JFFS2_ZLIB) += compr_zlib.o |
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index 5b7c960a0475..c91c66e5e869 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * For licensing information, see the file 'LICENCE' in this directory. | 8 | * For licensing information, see the file 'LICENCE' in this directory. |
9 | * | 9 | * |
10 | * $Id: fs.c,v 1.52 2005/02/09 09:17:40 pavlov Exp $ | 10 | * $Id: fs.c,v 1.53 2005/02/09 09:23:53 pavlov Exp $ |
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
@@ -450,13 +450,11 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent) | |||
450 | 450 | ||
451 | c = JFFS2_SB_INFO(sb); | 451 | c = JFFS2_SB_INFO(sb); |
452 | 452 | ||
453 | #ifndef CONFIG_JFFS2_FS_NAND | 453 | #ifndef CONFIG_JFFS2_FS_WRITEBUFFER |
454 | if (c->mtd->type == MTD_NANDFLASH) { | 454 | if (c->mtd->type == MTD_NANDFLASH) { |
455 | printk(KERN_ERR "jffs2: Cannot operate on NAND flash unless jffs2 NAND support is compiled in.\n"); | 455 | printk(KERN_ERR "jffs2: Cannot operate on NAND flash unless jffs2 NAND support is compiled in.\n"); |
456 | return -EINVAL; | 456 | return -EINVAL; |
457 | } | 457 | } |
458 | #endif | ||
459 | #ifndef CONFIG_JFFS2_FS_DATAFLASH | ||
460 | if (c->mtd->type == MTD_DATAFLASH) { | 458 | if (c->mtd->type == MTD_DATAFLASH) { |
461 | printk(KERN_ERR "jffs2: Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in.\n"); | 459 | printk(KERN_ERR "jffs2: Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in.\n"); |
462 | return -EINVAL; | 460 | return -EINVAL; |
diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h index a4864d05ea92..8c122838bf6d 100644 --- a/fs/jffs2/nodelist.h +++ b/fs/jffs2/nodelist.h | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * For licensing information, see the file 'LICENCE' in this directory. | 8 | * For licensing information, see the file 'LICENCE' in this directory. |
9 | * | 9 | * |
10 | * $Id: nodelist.h,v 1.126 2004/11/19 15:06:29 dedekind Exp $ | 10 | * $Id: nodelist.h,v 1.127 2005/02/09 09:23:53 pavlov Exp $ |
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
@@ -462,7 +462,7 @@ int jffs2_do_mount_fs(struct jffs2_sb_info *c); | |||
462 | /* erase.c */ | 462 | /* erase.c */ |
463 | void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count); | 463 | void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count); |
464 | 464 | ||
465 | #ifdef CONFIG_JFFS2_FS_NAND | 465 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
466 | /* wbuf.c */ | 466 | /* wbuf.c */ |
467 | int jffs2_flush_wbuf_gc(struct jffs2_sb_info *c, uint32_t ino); | 467 | int jffs2_flush_wbuf_gc(struct jffs2_sb_info *c, uint32_t ino); |
468 | int jffs2_flush_wbuf_pad(struct jffs2_sb_info *c); | 468 | int jffs2_flush_wbuf_pad(struct jffs2_sb_info *c); |
diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h index af27b84007a1..8989cd685e46 100644 --- a/fs/jffs2/os-linux.h +++ b/fs/jffs2/os-linux.h | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * For licensing information, see the file 'LICENCE' in this directory. | 8 | * For licensing information, see the file 'LICENCE' in this directory. |
9 | * | 9 | * |
10 | * $Id: os-linux.h,v 1.53 2005/02/09 09:17:41 pavlov Exp $ | 10 | * $Id: os-linux.h,v 1.54 2005/02/09 09:23:53 pavlov Exp $ |
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
@@ -97,16 +97,12 @@ static inline void jffs2_init_inode_info(struct jffs2_inode_info *f) | |||
97 | #endif | 97 | #endif |
98 | } | 98 | } |
99 | 99 | ||
100 | #ifdef CONFIG_JFFS2_FS_DATAFLASH | ||
101 | #define SECTOR_ADDR(x) ( ((unsigned long)(x) / (unsigned long)(c->sector_size)) * c->sector_size ) | ||
102 | #else | ||
103 | #define SECTOR_ADDR(x) ( ((unsigned long)(x) & ~(c->sector_size-1)) ) | ||
104 | #endif | ||
105 | 100 | ||
106 | #define jffs2_is_readonly(c) (OFNI_BS_2SFFJ(c)->s_flags & MS_RDONLY) | 101 | #define jffs2_is_readonly(c) (OFNI_BS_2SFFJ(c)->s_flags & MS_RDONLY) |
107 | #define jffs2_is_writebuffered(c) (c->wbuf != NULL) | 102 | #define jffs2_is_writebuffered(c) (c->wbuf != NULL) |
108 | 103 | ||
109 | #if (!defined CONFIG_JFFS2_FS_NAND && !defined CONFIG_JFFS2_FS_NOR_ECC && !defined CONFIG_JFFS2_FS_DATAFLASH) | 104 | #ifndef CONFIG_JFFS2_FS_WRITEBUFFER |
105 | #define SECTOR_ADDR(x) ( ((unsigned long)(x) & ~(c->sector_size-1)) ) | ||
110 | #define jffs2_can_mark_obsolete(c) (1) | 106 | #define jffs2_can_mark_obsolete(c) (1) |
111 | #define jffs2_cleanmarker_oob(c) (0) | 107 | #define jffs2_cleanmarker_oob(c) (0) |
112 | #define jffs2_write_nand_cleanmarker(c,jeb) (-EIO) | 108 | #define jffs2_write_nand_cleanmarker(c,jeb) (-EIO) |
@@ -129,6 +125,7 @@ static inline void jffs2_init_inode_info(struct jffs2_inode_info *f) | |||
129 | 125 | ||
130 | #else /* NAND and/or ECC'd NOR support present */ | 126 | #else /* NAND and/or ECC'd NOR support present */ |
131 | 127 | ||
128 | #define SECTOR_ADDR(x) ( ((unsigned long)(x) / (unsigned long)(c->sector_size)) * c->sector_size ) | ||
132 | #define jffs2_can_mark_obsolete(c) ((c->mtd->type == MTD_NORFLASH && !(c->mtd->flags & MTD_ECC)) || c->mtd->type == MTD_RAM) | 129 | #define jffs2_can_mark_obsolete(c) ((c->mtd->type == MTD_NORFLASH && !(c->mtd->flags & MTD_ECC)) || c->mtd->type == MTD_RAM) |
133 | #define jffs2_cleanmarker_oob(c) (c->mtd->type == MTD_NANDFLASH) | 130 | #define jffs2_cleanmarker_oob(c) (c->mtd->type == MTD_NANDFLASH) |
134 | 131 | ||
@@ -150,25 +147,16 @@ int jffs2_flush_wbuf_gc(struct jffs2_sb_info *c, uint32_t ino); | |||
150 | int jffs2_flush_wbuf_pad(struct jffs2_sb_info *c); | 147 | int jffs2_flush_wbuf_pad(struct jffs2_sb_info *c); |
151 | int jffs2_nand_flash_setup(struct jffs2_sb_info *c); | 148 | int jffs2_nand_flash_setup(struct jffs2_sb_info *c); |
152 | void jffs2_nand_flash_cleanup(struct jffs2_sb_info *c); | 149 | void jffs2_nand_flash_cleanup(struct jffs2_sb_info *c); |
153 | #ifdef CONFIG_JFFS2_FS_NOR_ECC | 150 | |
154 | #define jffs2_nor_ecc(c) (c->mtd->type == MTD_NORFLASH && (c->mtd->flags & MTD_ECC)) | 151 | #define jffs2_nor_ecc(c) (c->mtd->type == MTD_NORFLASH && (c->mtd->flags & MTD_ECC)) |
155 | int jffs2_nor_ecc_flash_setup(struct jffs2_sb_info *c); | 152 | int jffs2_nor_ecc_flash_setup(struct jffs2_sb_info *c); |
156 | void jffs2_nor_ecc_flash_cleanup(struct jffs2_sb_info *c); | 153 | void jffs2_nor_ecc_flash_cleanup(struct jffs2_sb_info *c); |
157 | #else | 154 | |
158 | #define jffs2_nor_ecc(c) (0) | ||
159 | #define jffs2_nor_ecc_flash_setup(c) (0) | ||
160 | #define jffs2_nor_ecc_flash_cleanup(c) do {} while (0) | ||
161 | #endif /* NOR ECC */ | ||
162 | #ifdef CONFIG_JFFS2_FS_DATAFLASH | ||
163 | #define jffs2_dataflash(c) (c->mtd->type == MTD_DATAFLASH) | 155 | #define jffs2_dataflash(c) (c->mtd->type == MTD_DATAFLASH) |
164 | int jffs2_dataflash_setup(struct jffs2_sb_info *c); | 156 | int jffs2_dataflash_setup(struct jffs2_sb_info *c); |
165 | void jffs2_dataflash_cleanup(struct jffs2_sb_info *c); | 157 | void jffs2_dataflash_cleanup(struct jffs2_sb_info *c); |
166 | #else | 158 | |
167 | #define jffs2_dataflash(c) (0) | 159 | #endif /* WRITEBUFFER */ |
168 | #define jffs2_dataflash_setup(c) (0) | ||
169 | #define jffs2_dataflash_cleanup(c) do {} while (0) | ||
170 | #endif /* DATAFLASH */ | ||
171 | #endif /* NAND */ | ||
172 | 160 | ||
173 | /* erase.c */ | 161 | /* erase.c */ |
174 | static inline void jffs2_erase_pending_trigger(struct jffs2_sb_info *c) | 162 | static inline void jffs2_erase_pending_trigger(struct jffs2_sb_info *c) |
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index e8c43746c82e..bc6c99980026 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * For licensing information, see the file 'LICENCE' in this directory. | 8 | * For licensing information, see the file 'LICENCE' in this directory. |
9 | * | 9 | * |
10 | * $Id: scan.c,v 1.117 2005/02/09 09:17:41 pavlov Exp $ | 10 | * $Id: scan.c,v 1.118 2005/02/09 09:23:53 pavlov Exp $ |
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
@@ -68,7 +68,7 @@ static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblo | |||
68 | static inline int min_free(struct jffs2_sb_info *c) | 68 | static inline int min_free(struct jffs2_sb_info *c) |
69 | { | 69 | { |
70 | uint32_t min = 2 * sizeof(struct jffs2_raw_inode); | 70 | uint32_t min = 2 * sizeof(struct jffs2_raw_inode); |
71 | #if defined CONFIG_JFFS2_FS_NAND || defined CONFIG_JFFS2_FS_NOR_ECC || defined CONFIG_JFFS2_FS_DATAFLASH | 71 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
72 | if (!jffs2_can_mark_obsolete(c) && min < c->wbuf_pagesize) | 72 | if (!jffs2_can_mark_obsolete(c) && min < c->wbuf_pagesize) |
73 | return c->wbuf_pagesize; | 73 | return c->wbuf_pagesize; |
74 | #endif | 74 | #endif |
@@ -228,7 +228,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c) | |||
228 | c->dirty_size -= c->nextblock->dirty_size; | 228 | c->dirty_size -= c->nextblock->dirty_size; |
229 | c->nextblock->dirty_size = 0; | 229 | c->nextblock->dirty_size = 0; |
230 | } | 230 | } |
231 | #if defined CONFIG_JFFS2_FS_NAND || defined CONFIG_JFFS2_FS_NOR_ECC || defined CONFIG_JFFS2_FS_DATAFLASH | 231 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
232 | if (!jffs2_can_mark_obsolete(c) && c->nextblock && (c->nextblock->free_size & (c->wbuf_pagesize-1))) { | 232 | if (!jffs2_can_mark_obsolete(c) && c->nextblock && (c->nextblock->free_size & (c->wbuf_pagesize-1))) { |
233 | /* If we're going to start writing into a block which already | 233 | /* If we're going to start writing into a block which already |
234 | contains data, and the end of the data isn't page-aligned, | 234 | contains data, and the end of the data isn't page-aligned, |
@@ -294,7 +294,7 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo | |||
294 | uint32_t hdr_crc, buf_ofs, buf_len; | 294 | uint32_t hdr_crc, buf_ofs, buf_len; |
295 | int err; | 295 | int err; |
296 | int noise = 0; | 296 | int noise = 0; |
297 | #ifdef CONFIG_JFFS2_FS_NAND | 297 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
298 | int cleanmarkerfound = 0; | 298 | int cleanmarkerfound = 0; |
299 | #endif | 299 | #endif |
300 | 300 | ||
@@ -303,7 +303,7 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo | |||
303 | 303 | ||
304 | D1(printk(KERN_DEBUG "jffs2_scan_eraseblock(): Scanning block at 0x%x\n", ofs)); | 304 | D1(printk(KERN_DEBUG "jffs2_scan_eraseblock(): Scanning block at 0x%x\n", ofs)); |
305 | 305 | ||
306 | #ifdef CONFIG_JFFS2_FS_NAND | 306 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
307 | if (jffs2_cleanmarker_oob(c)) { | 307 | if (jffs2_cleanmarker_oob(c)) { |
308 | int ret = jffs2_check_nand_cleanmarker(c, jeb); | 308 | int ret = jffs2_check_nand_cleanmarker(c, jeb); |
309 | D2(printk(KERN_NOTICE "jffs_check_nand_cleanmarker returned %d\n",ret)); | 309 | D2(printk(KERN_NOTICE "jffs_check_nand_cleanmarker returned %d\n",ret)); |
@@ -338,7 +338,7 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo | |||
338 | ofs += 4; | 338 | ofs += 4; |
339 | 339 | ||
340 | if (ofs == EMPTY_SCAN_SIZE(c->sector_size)) { | 340 | if (ofs == EMPTY_SCAN_SIZE(c->sector_size)) { |
341 | #ifdef CONFIG_JFFS2_FS_NAND | 341 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
342 | if (jffs2_cleanmarker_oob(c)) { | 342 | if (jffs2_cleanmarker_oob(c)) { |
343 | /* scan oob, take care of cleanmarker */ | 343 | /* scan oob, take care of cleanmarker */ |
344 | int ret = jffs2_check_oob_empty(c, jeb, cleanmarkerfound); | 344 | int ret = jffs2_check_oob_empty(c, jeb, cleanmarkerfound); |
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 6b2a441d2766..3bfc121a4674 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * For licensing information, see the file 'LICENCE' in this directory. | 8 | * For licensing information, see the file 'LICENCE' in this directory. |
9 | * | 9 | * |
10 | * $Id: super.c,v 1.104 2004/11/23 15:37:31 gleixner Exp $ | 10 | * $Id: super.c,v 1.105 2005/02/09 09:23:54 pavlov Exp $ |
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
@@ -309,7 +309,7 @@ static int __init init_jffs2_fs(void) | |||
309 | int ret; | 309 | int ret; |
310 | 310 | ||
311 | printk(KERN_INFO "JFFS2 version 2.2." | 311 | printk(KERN_INFO "JFFS2 version 2.2." |
312 | #ifdef CONFIG_JFFS2_FS_NAND | 312 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
313 | " (NAND)" | 313 | " (NAND)" |
314 | #endif | 314 | #endif |
315 | " (C) 2001-2003 Red Hat, Inc.\n"); | 315 | " (C) 2001-2003 Red Hat, Inc.\n"); |
diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c index a35e007e5bf8..890258505a7f 100644 --- a/fs/jffs2/wbuf.c +++ b/fs/jffs2/wbuf.c | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | * For licensing information, see the file 'LICENCE' in this directory. | 10 | * For licensing information, see the file 'LICENCE' in this directory. |
11 | * | 11 | * |
12 | * $Id: wbuf.c,v 1.88 2005/02/09 09:17:41 pavlov Exp $ | 12 | * $Id: wbuf.c,v 1.89 2005/02/09 09:23:54 pavlov Exp $ |
13 | * | 13 | * |
14 | */ | 14 | */ |
15 | 15 | ||
@@ -604,7 +604,7 @@ int jffs2_flush_wbuf_pad(struct jffs2_sb_info *c) | |||
604 | return ret; | 604 | return ret; |
605 | } | 605 | } |
606 | 606 | ||
607 | #ifdef CONFIG_JFFS2_FS_DATAFLASH | 607 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
608 | #define PAGE_DIV(x) ( ((unsigned long)(x) / (unsigned long)(c->wbuf_pagesize)) * (unsigned long)(c->wbuf_pagesize) ) | 608 | #define PAGE_DIV(x) ( ((unsigned long)(x) / (unsigned long)(c->wbuf_pagesize)) * (unsigned long)(c->wbuf_pagesize) ) |
609 | #define PAGE_MOD(x) ( (unsigned long)(x) % (unsigned long)(c->wbuf_pagesize) ) | 609 | #define PAGE_MOD(x) ( (unsigned long)(x) % (unsigned long)(c->wbuf_pagesize) ) |
610 | #else | 610 | #else |
@@ -1198,7 +1198,6 @@ void jffs2_nand_flash_cleanup(struct jffs2_sb_info *c) | |||
1198 | kfree(c->wbuf); | 1198 | kfree(c->wbuf); |
1199 | } | 1199 | } |
1200 | 1200 | ||
1201 | #ifdef CONFIG_JFFS2_FS_DATAFLASH | ||
1202 | int jffs2_dataflash_setup(struct jffs2_sb_info *c) { | 1201 | int jffs2_dataflash_setup(struct jffs2_sb_info *c) { |
1203 | c->cleanmarker_size = 0; /* No cleanmarkers needed */ | 1202 | c->cleanmarker_size = 0; /* No cleanmarkers needed */ |
1204 | 1203 | ||
@@ -1219,9 +1218,7 @@ int jffs2_dataflash_setup(struct jffs2_sb_info *c) { | |||
1219 | void jffs2_dataflash_cleanup(struct jffs2_sb_info *c) { | 1218 | void jffs2_dataflash_cleanup(struct jffs2_sb_info *c) { |
1220 | kfree(c->wbuf); | 1219 | kfree(c->wbuf); |
1221 | } | 1220 | } |
1222 | #endif | ||
1223 | 1221 | ||
1224 | #ifdef CONFIG_JFFS2_FS_NOR_ECC | ||
1225 | int jffs2_nor_ecc_flash_setup(struct jffs2_sb_info *c) { | 1222 | int jffs2_nor_ecc_flash_setup(struct jffs2_sb_info *c) { |
1226 | /* Cleanmarker is actually larger on the flashes */ | 1223 | /* Cleanmarker is actually larger on the flashes */ |
1227 | c->cleanmarker_size = 16; | 1224 | c->cleanmarker_size = 16; |
@@ -1241,4 +1238,3 @@ int jffs2_nor_ecc_flash_setup(struct jffs2_sb_info *c) { | |||
1241 | void jffs2_nor_ecc_flash_cleanup(struct jffs2_sb_info *c) { | 1238 | void jffs2_nor_ecc_flash_cleanup(struct jffs2_sb_info *c) { |
1242 | kfree(c->wbuf); | 1239 | kfree(c->wbuf); |
1243 | } | 1240 | } |
1244 | #endif | ||