aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@openwrt.org>2013-09-15 15:47:45 +0000
committerHauke Mehrtens <hauke@openwrt.org>2013-09-15 15:47:45 +0000
commit734c329b428ea12f5817b83fa974cb84880a2b8e (patch)
tree2ec037130263e35446b0c69e048ea73c3efd64ed /target/linux/brcm47xx
parent4382cb6c9c6e7838803ff2cea67d956f89137a35 (diff)
downloadupstream-734c329b428ea12f5817b83fa974cb84880a2b8e.tar.gz
upstream-734c329b428ea12f5817b83fa974cb84880a2b8e.tar.bz2
upstream-734c329b428ea12f5817b83fa974cb84880a2b8e.zip
brcm47xx: mtd: bcm47xxpart: detect block aligned Squashfs partition
Most of the bcm47xx devices use TRX format for storing kernel and some partition like Squashfs or JFFS2. This is pretty flexible solution, CFE (the bootloader) just writes (and later boots) TRX at some hardcoded place and paritions can vary in the size. However some devices don't use TRX format. Very recently we have discovered ZTE H218N that has kernel and rootfs partitions at some "random" places. This patch allows Linux find a rootfs partition after installing custom image with a CFE bootloader. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37998 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm47xx')
-rw-r--r--target/linux/brcm47xx/patches-3.10/029-mtd-bcm47xxpart_detect_block_aligned_Squashfs_partition.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/029-mtd-bcm47xxpart_detect_block_aligned_Squashfs_partition.patch b/target/linux/brcm47xx/patches-3.10/029-mtd-bcm47xxpart_detect_block_aligned_Squashfs_partition.patch
new file mode 100644
index 0000000000..0efe16f9d4
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.10/029-mtd-bcm47xxpart_detect_block_aligned_Squashfs_partition.patch
@@ -0,0 +1,40 @@
+mtd: bcm47xxpart: detect block aligned Squashfs partition
+
+Most of the bcm47xx devices use TRX format for storing kernel and some
+partition like Squashfs or JFFS2. This is pretty flexible solution, CFE
+(the bootloader) just writes (and later boots) TRX at some hardcoded
+place and paritions can vary in the size.
+
+However some devices don't use TRX format. Very recently we have
+discovered ZTE H218N that has kernel and rootfs partitions at some
+"random" places.
+
+This patch allows Linux find a rootfs partition after installing custom
+image with a CFE bootloader.
+
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+
+--- a/drivers/mtd/bcm47xxpart.c
++++ b/drivers/mtd/bcm47xxpart.c
+@@ -33,6 +33,7 @@
+ #define ML_MAGIC1 0x39685a42
+ #define ML_MAGIC2 0x26594131
+ #define TRX_MAGIC 0x30524448
++#define SQSH_MAGIC 0x71736873 /* shsq */
+
+ struct trx_header {
+ uint32_t magic;
+@@ -170,6 +171,13 @@ static int bcm47xxpart_parse(struct mtd_
+ offset = rounddown(offset + trx->length, blocksize);
+ continue;
+ }
++
++ /* Squashfs on devices not using TRX */
++ if (buf[0x000 / 4] == SQSH_MAGIC) {
++ bcm47xxpart_add_part(&parts[curr_part++], "rootfs",
++ offset, 0);
++ continue;
++ }
+ }
+
+ /* Look for NVRAM at the end of the last block. */