#include <linux/freezer.h>
#include <linux/sysfs.h>
#include <linux/bitops.h>
+#include <linux/slab.h>
+#include <linux/mtd/nand_ecc.h>
#include "nand/sm_common.h"
#include "sm_ftl.h"
-#ifdef CONFIG_SM_FTL_MUSEUM
-#include <linux/mtd/nand_ecc.h>
-#endif
struct workqueue_struct *cache_flush_workqueue;
static int sm_correct_sector(uint8_t *buffer, struct sm_oob *oob)
{
-#ifdef CONFIG_SM_FTL_MUSEUM
uint8_t ecc[3];
__nand_calculate_ecc(buffer, SM_SMALL_PAGE, ecc);
__nand_calculate_ecc(buffer, SM_SMALL_PAGE, ecc);
if (__nand_correct_data(buffer, ecc, oob->ecc2, SM_SMALL_PAGE) < 0)
return -EIO;
-#endif
return 0;
}
oob.data_status = 0;
}
-#ifdef CONFIG_SM_FTL_MUSEUM
if (ftl->smallpagenand) {
__nand_calculate_ecc(buf + boffset,
SM_SMALL_PAGE, oob.ecc1);
__nand_calculate_ecc(buf + boffset + SM_SMALL_PAGE,
SM_SMALL_PAGE, oob.ecc2);
}
-#endif
if (!sm_write_sector(ftl, zone, block, boffset,
buf + boffset, &oob))
continue;
/* Try to read all unread areas of the cache block*/
- for_each_bit(sector_num, &ftl->cache_data_invalid_bitmap,
+ for_each_set_bit(sector_num, &ftl->cache_data_invalid_bitmap,
ftl->block_size / SM_SECTOR_SIZE) {
if (!sm_read_sector(ftl,