rename patch
[openwrt.git] / target / linux / brcm63xx / patches-2.6.35 / 040-bcm963xx_flashmap.patch
index ad7d73a..29c4f85 100644 (file)
@@ -73,7 +73,7 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +obj-$(CONFIG_MTD_BCM963XX)    += bcm963xx-flash.o
 --- /dev/null
 +++ b/drivers/mtd/maps/bcm963xx-flash.c
-@@ -0,0 +1,267 @@
+@@ -0,0 +1,276 @@
 +/*
 + * Copyright (C) 2006-2008  Florian Fainelli <florian@openwrt.org>
 + *                        Mike Albon <malbon@openwrt.org>
@@ -101,6 +101,8 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +#include <linux/slab.h>
 +#include <linux/vmalloc.h>
 +#include <linux/platform_device.h>
++#include <linux/magic.h>
++#include <linux/jffs2.h>
 +
 +#include <bcm_tag.h>
 +#include <asm/io.h>
@@ -110,6 +112,12 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +
 +#define PFX KBUILD_MODNAME ": "
 +
++struct squashfs_super_block {
++      __le32 s_magic;
++      __le32 pad0[9];
++      __le64 bytes_used;
++};
++
 +extern int parse_redboot_partitions(struct mtd_info *master, struct mtd_partition **pparts, unsigned long fis_origin);
 +static struct mtd_partition *parsed_parts;
 +
@@ -120,7 +128,6 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +       .bankwidth     = BUSWIDTH,
 +};
 +
-+
 +static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition **pparts)
 +{
 +      int nrparts = 3, curpart = 0; /* CFE,NVRAM and global LINUX are always present. */
@@ -129,11 +136,11 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +      int ret;
 +      size_t retlen;
 +      unsigned int rootfsaddr, kerneladdr, spareaddr;
-+      unsigned int rootfslen, kernellen, sparelen, totallen;
++      unsigned int rootfslen, kernellen, sparelen;
 +      int namelen = 0;
-+      int i;
++      int i, offset;
 +      char *boardid;
-+        char *tagversion;
++      char *tagversion;
 +
 +      /* Allocate memory for buffer */
 +      buf = vmalloc(sizeof(struct bcm_tag));
@@ -149,7 +156,7 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +
 +      sscanf(buf->kernelAddress, "%u", &kerneladdr);
 +      sscanf(buf->kernelLength, "%u", &kernellen);
-+      sscanf(buf->totalLength, "%u", &totallen);
++      rootfslen = *(uint32_t *)(&(buf->rootLength[0]));
 +      tagversion = &(buf->tagVersion[0]);
 +      boardid = &(buf->boardid[0]);
 +
@@ -157,9 +164,11 @@ Signed-off-by: Axel Gembe <ago@bastart.eu.org>
 +
 +      kerneladdr = kerneladdr - EXTENDED_SIZE;
 +      rootfsaddr = kerneladdr + kernellen;
-+      spareaddr = roundup(totallen, master->erasesize) + master->erasesize;
++
++      rootfslen = ( ( rootfslen % master->erasesize ) > 0 ? (((rootfslen / master->erasesize) + 1 ) * master->erasesize) : rootfslen);
++
++      spareaddr = rootfsaddr + rootfslen;
 +      sparelen = master->size - spareaddr - master->erasesize;
-+      rootfslen = spareaddr - rootfsaddr;
 +
 +      /* Determine number of partitions */
 +      namelen = 8;
This page took 0.024964 seconds and 4 git commands to generate.