[brcm63xx] add support for sysupgrade (#5117)
[openwrt.git] / target / linux / brcm63xx / files / drivers / mtd / maps / bcm963xx-flash.c
index 6f74945..33aafd8 100644 (file)
@@ -45,7 +45,7 @@ static struct map_info bcm963xx_map = {
 
 static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition **pparts)
 {
-       int nrparts = 2, curpart = 0; /* CFE and NVRAM are always present. */
+       int nrparts = 3, curpart = 0; /* CFE,NVRAM and global LINUX are always present. */
        struct bcm_tag *buf;
        struct mtd_partition *parts;
        int ret;
@@ -118,9 +118,16 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition *
                        parts[curpart].size += sparelen;
                curpart++;
        };
+       
        parts[curpart].name = "nvram";
        parts[curpart].offset = master->size - master->erasesize;
        parts[curpart].size = master->erasesize;
+
+       /* Global partition "linux" to make easy firmware upgrade */
+       curpart++;
+       parts[curpart].name = "linux";
+       parts[curpart].offset = parts[0].size;
+       parts[curpart].size = master->size - parts[0].size - parts[3].size;
        
        for (i = 0; i < nrparts; i++)
                printk(KERN_INFO PFX "Partition %d is %s offset %x and length %x\n", i, parts[i].name, parts[i].offset, parts[i].size);
@@ -155,14 +162,14 @@ static int bcm963xx_probe(struct platform_device *pdev)
 
        r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 
        bcm963xx_map.phys = r->start;
-       bcm963xx_map.size = (r->end - r->start);
-       bcm963xx_map.virt = ioremap(r->start, r->end - r->start);
+       bcm963xx_map.size = (r->end - r->start) + 1;
+       bcm963xx_map.virt = ioremap(r->start, r->end - r->start + 1);
 
        if (!bcm963xx_map.virt) {
                printk(KERN_ERR PFX "Failed to ioremap\n");
                return -EIO;
        }
-       printk(KERN_INFO PFX "0x%08x at 0x%08x\n", (r->end - r->start) + 1, r->start);
+       printk(KERN_INFO PFX "0x%08lx at 0x%08x\n", bcm963xx_map.size, bcm963xx_map.phys);
 
        simple_map_init(&bcm963xx_map);
 
This page took 0.032651 seconds and 4 git commands to generate.