|
@@ -27,6 +27,7 @@
|
|
|
|
|
|
/* Magics */
|
|
|
#define BOARD_DATA_MAGIC 0x5246504D /* MPFR */
|
|
|
+#define BOARD_DATA_MAGIC2 0xBD0D0BBD
|
|
|
#define CFE_MAGIC 0x43464531 /* 1EFC */
|
|
|
#define FACTORY_MAGIC 0x59544346 /* FCTY */
|
|
|
#define POT_MAGIC1 0x54544f50 /* POTT */
|
|
@@ -192,6 +193,21 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
|
|
offset, 0);
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
+ /* Read middle of the block */
|
|
|
+ if (mtd_read(master, offset + 0x8000, 0x4,
|
|
|
+ &bytes_read, (uint8_t *)buf) < 0) {
|
|
|
+ pr_err("mtd_read error while parsing (offset: 0x%X)!\n",
|
|
|
+ offset);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Some devices (ex. WNDR3700v3) don't have a standard 'MPFR' */
|
|
|
+ if (buf[0x000 / 4] == BOARD_DATA_MAGIC2) {
|
|
|
+ bcm47xxpart_add_part(&parts[curr_part++], "board_data",
|
|
|
+ offset, MTD_WRITEABLE);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Look for NVRAM at the end of the last block. */
|