diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-07-21 11:05:46 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-07-21 11:05:46 +0000 | 
| commit | 3b1fa8d2b985eecfd3859e4694ba66193163fd2e (patch) | |
| tree | 5b47e2cd206afdab51aeda953b3ffeff9990c522 | |
| parent | c2ad7518481a4f60fa18a7f7148fcc266910319b (diff) | |
[adm5120] flash driver fixes
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8091 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -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 021441521..25193a2f0 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; | 
