projects
/
openwrt
/
svn-archive
/
archive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[adm5120] flash driver fixes
[openwrt/svn-archive/archive.git]
/
target
/
linux
/
adm5120-2.6
/
files
/
drivers
/
mtd
/
maps
/
adm5120-flash.c
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 a60e6e54bc1fef6cc37f9cf42299440b1be8dfc4..25193a2f0220490be0a9b34ff2c8ec4b6dc3ad7b 100644
(file)
--- 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 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)
#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();
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);
}
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;
char *p;
ssize_t t;
- MAP_DBG(map, "copy
ing %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 (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);
(unsigned long)t, (from & BANK_OFFS_MASK),
(unsigned long)p);
-
- FLASH_LOCK();
adm5120_flash_switchbank(map, from);
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;
FLASH_UNLOCK();
p += t;
from += t;
@@
-485,7
+487,7
@@
static int adm5120_flash_probe(struct platform_device *dev)
}
MAP_INFO(map, "found at 0x%lX, size:%ldKiB, width:%d bits\n",
}
MAP_INFO(map, "found at 0x%lX, size:%ldKiB, width:%d bits\n",
- (unsigned long)map->phys, (unsigned long)
map
->size >> 10,
+ (unsigned long)map->phys, (unsigned long)
info->mtd
->size >> 10,
map->bankwidth*8);
info->mtd->owner = THIS_MODULE;
map->bankwidth*8);
info->mtd->owner = THIS_MODULE;