]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mtd/bcm47xxpart.c
Merge branch 'drm-tda998x-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into...
[karo-tx-linux.git] / drivers / mtd / bcm47xxpart.c
index 8057f52a45b706b63d0311acd23eb078ed046428..cc13ea5ce4d58f6cb532d151d5f22d9aa46e8c2c 100644 (file)
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 
-/* 10 parts were found on sflash on Netgear WNDR4500 */
-#define BCM47XXPART_MAX_PARTS          12
+/*
+ * NAND flash on Netgear R6250 was verified to contain 15 partitions.
+ * This will result in allocating too big array for some old devices, but the
+ * memory will be freed soon anyway (see mtd_device_parse_register).
+ */
+#define BCM47XXPART_MAX_PARTS          20
 
 /*
  * Amount of bytes we read when analyzing each block of flash memory.
@@ -168,18 +172,26 @@ static int bcm47xxpart_parse(struct mtd_info *master,
                                i++;
                        }
 
-                       bcm47xxpart_add_part(&parts[curr_part++], "linux",
-                                            offset + trx->offset[i], 0);
-                       i++;
+                       if (trx->offset[i]) {
+                               bcm47xxpart_add_part(&parts[curr_part++],
+                                                    "linux",
+                                                    offset + trx->offset[i],
+                                                    0);
+                               i++;
+                       }
 
                        /*
                         * Pure rootfs size is known and can be calculated as:
                         * trx->length - trx->offset[i]. We don't fill it as
                         * we want to have jffs2 (overlay) in the same mtd.
                         */
-                       bcm47xxpart_add_part(&parts[curr_part++], "rootfs",
-                                            offset + trx->offset[i], 0);
-                       i++;
+                       if (trx->offset[i]) {
+                               bcm47xxpart_add_part(&parts[curr_part++],
+                                                    "rootfs",
+                                                    offset + trx->offset[i],
+                                                    0);
+                               i++;
+                       }
 
                        last_trx_part = curr_part - 1;