aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2007-07-21 11:05:46 +0000
committerGabor Juhos <juhosg@openwrt.org>2007-07-21 11:05:46 +0000
commita82a99d9d216880a577e187b8672e20abde5fc5e (patch)
tree91d0f21177ad4fe0d9660d982b9daa8a3a85323c /target
parentac02ee1e6ac68c7cea40bfd20bab706c1d2b8bac (diff)
downloadupstream-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.c26
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;