--- zzzz-none-000/linux-2.6.28.10/include/linux/mtd/cfi.h 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/include/linux/mtd/cfi.h 2011-08-24 10:33:39.000000000 +0000 @@ -300,7 +300,8 @@ if (((type * interleave) > bankwidth) && ((uint8_t)cmd_ofs == 0xaa)) addr |= (type >> 1)*interleave; - return addr; + /*--- printk("[%s], addr=%#x, cmd_ofs=%#x, type=%#x, interleave=%#x \n", __FUNCTION__, addr, cmd_ofs, type, interleave); ---*/ + return addr ; } /* @@ -450,16 +451,17 @@ val = cfi_build_cmd(cmd, map, cfi); if (prev_val) - *prev_val = map_read(map, addr); + *prev_val = map_cmd_read(map, addr); - map_write(map, val, addr); + /*--- printk("[%s], addr=%#x, val=%#x map_cmd_write %pF\n", __FUNCTION__, addr, val, map->cmd_write); ---*/ + map_cmd_write(map, val, addr); return addr - base; } static inline uint8_t cfi_read_query(struct map_info *map, uint32_t addr) { - map_word val = map_read(map, addr); + map_word val = map_cmd_read(map, addr); if (map_bankwidth_is_1(map)) { return val.x[0]; @@ -475,7 +477,7 @@ static inline uint16_t cfi_read_query16(struct map_info *map, uint32_t addr) { - map_word val = map_read(map, addr); + map_word val = map_cmd_read(map, addr); if (map_bankwidth_is_1(map)) { return val.x[0] & 0xff; @@ -489,8 +491,17 @@ } } + +extern unsigned int tffs_panic_mode; static inline void cfi_udelay(int us) { + if(tffs_panic_mode) { + for(; us > 1000; us -= 1000) { + udelay(1000); + } + udelay(us); + return; + } if (us >= 1000) { msleep((us+999)/1000); } else { @@ -532,3 +543,4 @@ #endif /* __MTD_CFI_H__ */ +