brcm47xx: check for .ELF header in partition parser
authorHauke Mehrtens <hauke@hauke-m.de>
Thu, 25 Oct 2012 19:49:20 +0000 (19:49 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Thu, 25 Oct 2012 19:49:20 +0000 (19:49 +0000)
The image format for the wgt634u is different from the normal format.
Without this patch the partition parser detects a 128kb bigger
partition after every update.

This closes #11420

Thank you b.sander for the patch.

SVN-Revision: 33935

target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch

index 5381e2f6cc7a5183c9d65da3449feafba46e46fa..0c66603f2e10765cdb543eac5a6865b95d666a15 100644 (file)
@@ -26,7 +26,7 @@
  obj-$(CONFIG_MTD_CHAR)                += mtdchar.o
 --- /dev/null
 +++ b/drivers/mtd/bcm47xxpart.c
-@@ -0,0 +1,542 @@
+@@ -0,0 +1,548 @@
 +/*
 + *  Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
 + *  Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org>
 +      u32 offsets[TRX_MAX_OFFSET];    /* Offsets of partitions from start of header */
 +};
 +
++/* for WGT634U search the ELF-header of
++ * the kernel decompressor instead of TRX
++ */
++#define WGT634U_ELF_MAGIC     0x464c457f /*  ".ELF"  */
++
 +/* for Edimax Print servers which use an additional header
 + * then the firmware on flash looks like :
 + * EDIMAX HEADER | TRX HEADER
 +              }
 +
 +              /* found a TRX header */
-+              if (le32_to_cpu(trx->magic) == TRX_MAGIC)
++              if (le32_to_cpu(trx->magic) == TRX_MAGIC ||
++                  le32_to_cpu(trx->magic) == WGT634U_ELF_MAGIC)
 +                      goto found;
 +      }
 +