summaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-03-01 11:54:33 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-03-01 11:54:33 +0000
commit278faa8f77fd87f2b20d98a93c3707ab72d2f696 (patch)
tree0acfb6abcad5c792a43aee45bebcc84e9bc0a30a /target
parentc634ebe6f0f9c8030f03c5cd32d4de8e9e0c3fea (diff)
flash related cleanups
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6446 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/brcm47xx-2.6/files/drivers/mtd/maps/bcm47xx-flash.c22
-rw-r--r--target/linux/brcm47xx-2.6/files/drivers/ssb/driver_mips/mips.c8
-rw-r--r--target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_mips.h1
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;
};