bcm63xx: add a fixup for ath9k devices
[openwrt.git] / target / linux / brcm63xx / patches-3.3 / 405-bcm963xx_real_rootfs_length.patch
index 0476699..856b9e2 100644 (file)
        /* 240-255: Unused at present */
 --- a/drivers/mtd/bcm63xxpart.c
 +++ b/drivers/mtd/bcm63xxpart.c
-@@ -77,7 +77,7 @@ static int bcm63xx_parse_cfe_partitions(
-       int ret;
-       size_t retlen;
-       unsigned int rootfsaddr, kerneladdr, spareaddr;
--      unsigned int rootfslen, kernellen, sparelen, totallen;
-+      unsigned int rootfslen, kernellen, sparelen;
-       unsigned int cfelen, nvramlen;
-       int namelen = 0;
-       int i;
-@@ -111,14 +111,15 @@ static int bcm63xx_parse_cfe_partitions(
-               sscanf(buf->kernel_address, "%u", &kerneladdr);
-               sscanf(buf->kernel_length, "%u", &kernellen);
--              sscanf(buf->total_length, "%u", &totallen);
-+              rootfslen = buf->real_rootfs_length;
-               pr_info("CFE boot tag found with version %s and board type %s\n",
-                       tagversion, boardid);
-               kerneladdr = kerneladdr - BCM63XX_EXTENDED_SIZE;
-               rootfsaddr = kerneladdr + kernellen;
--              spareaddr = roundup(totallen, master->erasesize) + cfelen;
-+              rootfslen = roundup(rootfslen, master->erasesize);
-+              spareaddr = rootfsaddr + rootfslen;
-               sparelen = master->size - spareaddr - nvramlen;
-               rootfslen = spareaddr - rootfsaddr;
+@@ -131,7 +131,8 @@ static int bcm63xx_parse_cfe_partitions(
+               } else {
+                       /* OpenWrt layout */
+                       rootfsaddr = kerneladdr + kernellen;
+-                      rootfslen = spareaddr - rootfsaddr;
++                      rootfslen = buf->real_rootfs_length;
++                      spareaddr = rootfsaddr + rootfslen;
+               }
        } else {
+               pr_warn("CFE boot tag CRC invalid (expected %08x, actual %08x)\n",