diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2007-07-21 11:05:46 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2007-07-21 11:05:46 +0000 |
commit | a82a99d9d216880a577e187b8672e20abde5fc5e (patch) | |
tree | 91d0f21177ad4fe0d9660d982b9daa8a3a85323c /target | |
parent | ac02ee1e6ac68c7cea40bfd20bab706c1d2b8bac (diff) | |
download | upstream-a82a99d9d216880a577e187b8672e20abde5fc5e.tar.gz upstream-a82a99d9d216880a577e187b8672e20abde5fc5e.tar.bz2 upstream-a82a99d9d216880a577e187b8672e20abde5fc5e.zip |
flash driver fixes
SVN-Revision: 8091
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/adm5120-2.6/files/drivers/mtd/maps/adm5120-flash.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/target/linux/adm5120-2.6/files/drivers/mtd/maps/adm5120-flash.c b/target/linux/adm5120-2.6/files/drivers/mtd/maps/adm5120-flash.c index 021441521d..25193a2f02 100644 --- a/target/linux/adm5120-2.6/files/drivers/mtd/maps/adm5120-flash.c +++ b/target/linux/adm5120-2.6/files/drivers/mtd/maps/adm5120-flash.c @@ -50,7 +50,11 @@ #define DRV_DESC "ADM5120 flash MAP driver" #define MAX_PARSED_PARTS 8 -#define MAP_DBG(m, f, a...) printk(KERN_DEBUG "%s: " f, (m->name) , ## a) +#ifdef ADM5120_FLASH_DEBUG +#define MAP_DBG(m, f, a...) printk(KERN_INFO "%s: " f, (m->name) , ## a) +#else +#define MAP_DBG(m, f, a...) do {} while (0) +#endif #define MAP_ERR(m, f, a...) printk(KERN_ERR "%s: " f, (m->name) , ## a) #define MAP_INFO(m, f, a...) printk(KERN_INFO "%s: " f, (m->name) , ## a) @@ -145,7 +149,7 @@ static void adm5120_flash_switchbank(struct map_info *map, if (bank > 1) BUG(); - MAP_DBG(map, "ofs=%lu, switching to bank %u\n", ofs, bank); + MAP_DBG(map, "switching to bank %u, ofs=%lX\n", bank, ofs); amap->switch_bank(bank); } @@ -190,26 +194,24 @@ static void adm5120_flash_copy_from(struct map_info *map, void *to, char *p; ssize_t t; - MAP_DBG(map, "copying %lu byte(s) from %lu to %lX\n", - (unsigned long)len, from, (unsigned long)to); + MAP_DBG(map, "copy_from, to=%lX, from=%lX, len=%lX\n", + (unsigned long)to, from, (unsigned long)len); if (from > amap->chip_size) return; p = (char *)to; while (len > 0) { - if (len > BANK_SIZE - (from & BANK_OFFS_MASK)) - t = BANK_SIZE - (from & BANK_OFFS_MASK); - else - t = len; + t = len; + if (from < BANK_SIZE && from+len > BANK_SIZE) + t = BANK_SIZE-from; - MAP_DBG(map, "copying %lu byte(s) from %lu to %lX\n", + FLASH_LOCK(); + MAP_DBG(map, "copying %lu byte(s) from %lX to %lX\n", (unsigned long)t, (from & BANK_OFFS_MASK), (unsigned long)p); - - FLASH_LOCK(); adm5120_flash_switchbank(map, from); - inline_map_copy_from(map, to, (from & BANK_OFFS_MASK), t); + inline_map_copy_from(map, p, (from & BANK_OFFS_MASK), t); FLASH_UNLOCK(); p += t; from += t; |