mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-02 20:17:29 +03:00
flash related cleanups
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6446 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
c634ebe6f0
commit
278faa8f77
@ -77,26 +77,6 @@ struct trx_header {
|
|||||||
extern struct ssb_bus ssb;
|
extern struct ssb_bus ssb;
|
||||||
static struct mtd_info *bcm947xx_mtd;
|
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 = {
|
static struct map_info bcm947xx_map = {
|
||||||
name: "Physically mapped flash",
|
name: "Physically mapped flash",
|
||||||
size: WINDOW_SIZE,
|
size: WINDOW_SIZE,
|
||||||
@ -426,8 +406,6 @@ int __init init_bcm947xx_map(void)
|
|||||||
}
|
}
|
||||||
simple_map_init(&bcm947xx_map);
|
simple_map_init(&bcm947xx_map);
|
||||||
|
|
||||||
bcm947xx_map.copy_from = bcm947xx_map_copy_from;
|
|
||||||
|
|
||||||
if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {
|
if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {
|
||||||
printk("Failed to do_map_probe\n");
|
printk("Failed to do_map_probe\n");
|
||||||
iounmap((void *)bcm947xx_map.virt);
|
iounmap((void *)bcm947xx_map.virt);
|
||||||
|
@ -165,12 +165,16 @@ static void ssb_mips_flash_detect(struct ssb_mipscore *mcore)
|
|||||||
{
|
{
|
||||||
struct ssb_bus *bus = mcore->dev->bus;
|
struct ssb_bus *bus = mcore->dev->bus;
|
||||||
|
|
||||||
|
mcore->flash_buswidth = 2;
|
||||||
if (bus->chipco.dev) {
|
if (bus->chipco.dev) {
|
||||||
mcore->flash_window = 0x1c000000;
|
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 {
|
} else {
|
||||||
mcore->flash_window = 0x1fc00000;
|
mcore->flash_window = 0x1fc00000;
|
||||||
mcore->flash_window_size = 0x400000;
|
mcore->flash_window_size = 0x00400000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ struct ssb_mipscore {
|
|||||||
int nr_serial_ports;
|
int nr_serial_ports;
|
||||||
struct ssb_serial_port serial_ports[4];
|
struct ssb_serial_port serial_ports[4];
|
||||||
|
|
||||||
|
int flash_buswidth;
|
||||||
u32 flash_window;
|
u32 flash_window;
|
||||||
u32 flash_window_size;
|
u32 flash_window_size;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user