diff options
3 files changed, 7 insertions, 24 deletions
| diff --git a/target/linux/brcm47xx-2.6/files/drivers/mtd/maps/bcm47xx-flash.c b/target/linux/brcm47xx-2.6/files/drivers/mtd/maps/bcm47xx-flash.c index 93cda8b32..50fff896f 100644 --- a/target/linux/brcm47xx-2.6/files/drivers/mtd/maps/bcm47xx-flash.c +++ b/target/linux/brcm47xx-2.6/files/drivers/mtd/maps/bcm47xx-flash.c @@ -77,26 +77,6 @@ struct trx_header {  extern struct ssb_bus ssb;  static struct mtd_info *bcm947xx_mtd; -static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len) -{ -#define MIPS_MEMCPY_ALIGN 4 -	map_word ret; -	ssize_t transfer; -	ssize_t done = 0; -	if ((len >= MIPS_MEMCPY_ALIGN) && (!(from & (MIPS_MEMCPY_ALIGN - 1))) && (!(((unsigned int)to & (MIPS_MEMCPY_ALIGN - 1))))) { -		done = len & ~(MIPS_MEMCPY_ALIGN - 1); -		memcpy_fromio(to, map->virt + from, done); -	} -	while (done < len) { -		ret = map->read(map, from + done); -		transfer = len - done; -		if (transfer > map->bankwidth) -			transfer = map->bankwidth; -		memcpy((void *)((unsigned long)to + done), &ret.x[0], transfer); -		done += transfer; -	} -} -  static struct map_info bcm947xx_map = {  	name: "Physically mapped flash",  	size: WINDOW_SIZE, @@ -426,8 +406,6 @@ int __init init_bcm947xx_map(void)  	}  	simple_map_init(&bcm947xx_map); -	bcm947xx_map.copy_from = bcm947xx_map_copy_from; -	  	if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {  		printk("Failed to do_map_probe\n");  		iounmap((void *)bcm947xx_map.virt); diff --git a/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_mips/mips.c b/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_mips/mips.c index c6aaeede8..65916b17b 100644 --- a/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_mips/mips.c +++ b/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_mips/mips.c @@ -165,12 +165,16 @@ static void ssb_mips_flash_detect(struct ssb_mipscore *mcore)  {  	struct ssb_bus *bus = mcore->dev->bus; +	mcore->flash_buswidth = 2;  	if (bus->chipco.dev) {  		mcore->flash_window = 0x1c000000; -		mcore->flash_window_size = 0x800000; +		mcore->flash_window_size = 0x02000000; +		if ((ssb_read32(bus->chipco.dev, SSB_CHIPCO_FLASH_CFG) +				& SSB_CHIPCO_CFG_DS16) == 0) +			mcore->flash_buswidth = 1;  	} else {  		mcore->flash_window = 0x1fc00000; -		mcore->flash_window_size = 0x400000; +		mcore->flash_window_size = 0x00400000;  	}  } diff --git a/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_mips.h b/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_mips.h index b1ce1144d..61c766550 100644 --- a/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_mips.h +++ b/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_mips.h @@ -22,6 +22,7 @@ struct ssb_mipscore {  	int nr_serial_ports;  	struct ssb_serial_port serial_ports[4]; +	int flash_buswidth;  	u32 flash_window;  	u32 flash_window_size;  }; | 
