]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mtd/bcm63xxpart.c
[media] V4L2: soc_camera: Renesas R-Car VIN driver
[karo-tx-linux.git] / drivers / mtd / bcm63xxpart.c
index 63d2a64331f75d3287a68c2f72f8843cddc4f02d..6eeb84c81bc2ceb16a451fae1bc4194505b2dc7f 100644 (file)
@@ -37,8 +37,7 @@
 
 #define BCM63XX_EXTENDED_SIZE  0xBFC00000      /* Extended flash address */
 
-#define BCM63XX_MIN_CFE_SIZE   0x10000         /* always at least 64KiB */
-#define BCM63XX_MIN_NVRAM_SIZE 0x10000         /* always at least 64KiB */
+#define BCM63XX_CFE_BLOCK_SIZE 0x10000         /* always at least 64KiB */
 
 #define BCM63XX_CFE_MAGIC_OFFSET 0x4e0
 
@@ -79,7 +78,7 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
        unsigned int rootfsaddr, kerneladdr, spareaddr;
        unsigned int rootfslen, kernellen, sparelen, totallen;
        unsigned int cfelen, nvramlen;
-       int namelen = 0;
+       unsigned int cfe_erasesize;
        int i;
        u32 computed_crc;
        bool rootfs_first = false;
@@ -87,8 +86,11 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
        if (bcm63xx_detect_cfe(master))
                return -EINVAL;
 
-       cfelen = max_t(uint32_t, master->erasesize, BCM63XX_MIN_CFE_SIZE);
-       nvramlen = max_t(uint32_t, master->erasesize, BCM63XX_MIN_NVRAM_SIZE);
+       cfe_erasesize = max_t(uint32_t, master->erasesize,
+                             BCM63XX_CFE_BLOCK_SIZE);
+
+       cfelen = cfe_erasesize;
+       nvramlen = cfe_erasesize;
 
        /* Allocate memory for buffer */
        buf = vmalloc(sizeof(struct bcm_tag));
@@ -121,7 +123,6 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
                kerneladdr = kerneladdr - BCM63XX_EXTENDED_SIZE;
                rootfsaddr = rootfsaddr - BCM63XX_EXTENDED_SIZE;
                spareaddr = roundup(totallen, master->erasesize) + cfelen;
-               sparelen = master->size - spareaddr - nvramlen;
 
                if (rootfsaddr < kerneladdr) {
                        /* default Broadcom layout */
@@ -139,19 +140,15 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
                rootfslen = 0;
                rootfsaddr = 0;
                spareaddr = cfelen;
-               sparelen = master->size - cfelen - nvramlen;
        }
+       sparelen = master->size - spareaddr - nvramlen;
 
        /* Determine number of partitions */
-       namelen = 8;
-       if (rootfslen > 0) {
+       if (rootfslen > 0)
                nrparts++;
-               namelen += 6;
-       }
-       if (kernellen > 0) {
+
+       if (kernellen > 0)
                nrparts++;
-               namelen += 6;
-       }
 
        /* Ask kernel for more memory */
        parts = kzalloc(sizeof(*parts) * nrparts + 10 * nrparts, GFP_KERNEL);
@@ -193,17 +190,16 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
        parts[curpart].name = "nvram";
        parts[curpart].offset = master->size - nvramlen;
        parts[curpart].size = nvramlen;
+       curpart++;
 
        /* Global partition "linux" to make easy firmware upgrade */
-       curpart++;
        parts[curpart].name = "linux";
        parts[curpart].offset = cfelen;
        parts[curpart].size = master->size - cfelen - nvramlen;
 
        for (i = 0; i < nrparts; i++)
-               pr_info("Partition %d is %s offset %lx and length %lx\n", i,
-                       parts[i].name, (long unsigned int)(parts[i].offset),
-                       (long unsigned int)(parts[i].size));
+               pr_info("Partition %d is %s offset %llx and length %llx\n", i,
+                       parts[i].name, parts[i].offset, parts[i].size);
 
        pr_info("Spare partition is offset %x and length %x\n", spareaddr,
                sparelen);