Просмотр исходного кода

flash related cleanups

SVN-Revision: 6446
Felix Fietkau 19 лет назад
Родитель
Сommit
c762548eee

+ 0 - 22
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);

+ 6 - 2
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;
 	}
 }
 

+ 1 - 0
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;
 };