aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@openwrt.org>2012-10-25 19:49:20 +0000
committerHauke Mehrtens <hauke@openwrt.org>2012-10-25 19:49:20 +0000
commit4d69d9733e24b3210eed0db7f41d407d3e3103ed (patch)
tree9b3cc3cc27996ae5c60c1a3714c36934f9d31a31
parent151cd2e5377e7aec50a40b93f71dc6f5b5b37de9 (diff)
downloadmaster-187ad058-4d69d9733e24b3210eed0db7f41d407d3e3103ed.tar.gz
master-187ad058-4d69d9733e24b3210eed0db7f41d407d3e3103ed.tar.bz2
master-187ad058-4d69d9733e24b3210eed0db7f41d407d3e3103ed.zip
brcm47xx: check for .ELF header in partition parser
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. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33935 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch10
1 files changed, 8 insertions, 2 deletions
diff --git a/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch b/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch
index 5381e2f6cc..0c66603f2e 100644
--- a/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch
+++ b/target/linux/brcm47xx/patches-3.3/050-mtd-add-bcm47xx-part-parser.patch
@@ -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>
@@ -96,6 +96,11 @@
+ 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
@@ -149,7 +154,8 @@
+ }
+
+ /* 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;
+ }
+