diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-03-01 11:54:33 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-03-01 11:54:33 +0000 |
commit | 278faa8f77fd87f2b20d98a93c3707ab72d2f696 (patch) | |
tree | 0acfb6abcad5c792a43aee45bebcc84e9bc0a30a | |
parent | c634ebe6f0f9c8030f03c5cd32d4de8e9e0c3fea (diff) |
flash related cleanups
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6446 3c298f89-4303-0410-b956-a3cf2f4a3e73
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; }; |