aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2009-05-17 16:53:57 +0000
committerFlorian Fainelli <florian@openwrt.org>2009-05-17 16:53:57 +0000
commitd30d9400c0c12649a99f9036faac696f7023b910 (patch)
tree5b1c8c1a5cc46934ce4941e13308226e183f9b83 /target
parent0a0bddcf31d5acb80bc1e55f06aaba12f0d60a8c (diff)
downloadmaster-187ad058-d30d9400c0c12649a99f9036faac696f7023b910.tar.gz
master-187ad058-d30d9400c0c12649a99f9036faac696f7023b910.tar.bz2
master-187ad058-d30d9400c0c12649a99f9036faac696f7023b910.zip
[brcm63xx] add support for sysupgrade (#5117)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15900 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/brcm63xx/base-files/lib/upgrade/platform.sh16
-rw-r--r--target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c9
2 files changed, 24 insertions, 1 deletions
diff --git a/target/linux/brcm63xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm63xx/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000000..1a025f7d73
--- /dev/null
+++ b/target/linux/brcm63xx/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,16 @@
+PART_NAME=linux
+platform_check_image() {
+ [ "$ARGC" -gt 1 ] && return 1
+ case "$(get_magic_word "$1")" in
+ 3600)
+ # 6348GW-11 boards use openwrt-96348GW-11-squashfs-cfe.bin files
+ return 0
+ ;;
+ *)
+ echo "Invalid image type. Please use only .bin files"
+ return 1
+ ;;
+ esac
+}
+
+# use default for platform_do_upgrade()
diff --git a/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c b/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c
index d17baf2b05..33aafd8507 100644
--- a/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c
+++ b/target/linux/brcm63xx/files/drivers/mtd/maps/bcm963xx-flash.c
@@ -45,7 +45,7 @@ static struct map_info bcm963xx_map = {
static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition **pparts)
{
- int nrparts = 2, curpart = 0; /* CFE and NVRAM are always present. */
+ int nrparts = 3, curpart = 0; /* CFE,NVRAM and global LINUX are always present. */
struct bcm_tag *buf;
struct mtd_partition *parts;
int ret;
@@ -118,9 +118,16 @@ static int parse_cfe_partitions( struct mtd_info *master, struct mtd_partition *
parts[curpart].size += sparelen;
curpart++;
};
+
parts[curpart].name = "nvram";
parts[curpart].offset = master->size - master->erasesize;
parts[curpart].size = master->erasesize;
+
+ /* Global partition "linux" to make easy firmware upgrade */
+ curpart++;
+ parts[curpart].name = "linux";
+ parts[curpart].offset = parts[0].size;
+ parts[curpart].size = master->size - parts[0].size - parts[3].size;
for (i = 0; i < nrparts; i++)
printk(KERN_INFO PFX "Partition %d is %s offset %x and length %x\n", i, parts[i].name, parts[i].offset, parts[i].size);