From: Gabor Juhos Date: Mon, 12 Apr 2010 12:21:18 +0000 (+0000) Subject: ppc40x: add sysupgrade support X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=185965e128c6896cdda1cb0e9f28f4ebba557a73;p=openwrt%2Fstaging%2Frobimarko.git ppc40x: add sysupgrade support Cc: backfire@openwrt.org SVN-Revision: 20821 --- diff --git a/target/linux/ppc40x/base-files/lib/ppc40x.sh b/target/linux/ppc40x/base-files/lib/ppc40x.sh new file mode 100755 index 0000000000..8a6c487766 --- /dev/null +++ b/target/linux/ppc40x/base-files/lib/ppc40x.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# Copyright (C) 2010 OpenWrt.org +# + +ppc40x_board_name() { + local model + + model=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /model/ {print $2}' /proc/cpuinfo) + echo $model +} diff --git a/target/linux/ppc40x/base-files/lib/upgrade/platform.sh b/target/linux/ppc40x/base-files/lib/upgrade/platform.sh new file mode 100644 index 0000000000..ed08cab2a1 --- /dev/null +++ b/target/linux/ppc40x/base-files/lib/upgrade/platform.sh @@ -0,0 +1,38 @@ +# +# Copyright (C) 2010 OpenWrt.org +# + +. /lib/ppc40x.sh + +PART_NAME=firmware +RAMFS_COPY_DATA=/lib/ppc40x.sh + +platform_check_image() { + local board=$(ppc40x_board_name) + local magic="$(get_magic_word "$1")" + + [ "$ARGC" -gt 1 ] && return 1 + + case "$board" in + kilauea | openrb | magicbox) + [ "$magic" != "2705" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + esac + + echo "Sysupgrade is not yet supported on $board." + return 1 +} + +platform_do_upgrade() { + local board=$(ppc40x_board_name) + + case "$board" in + *) + default_do_upgrade "$ARGV" + ;; + esac +} diff --git a/target/linux/ppc40x/patches/004-magicbox.patch b/target/linux/ppc40x/patches/004-magicbox.patch index ff18b49fa0..0f9e192fcf 100644 --- a/target/linux/ppc40x/patches/004-magicbox.patch +++ b/target/linux/ppc40x/patches/004-magicbox.patch @@ -93,7 +93,7 @@ +} --- /dev/null +++ b/arch/powerpc/boot/dts/magicbox.dts -@@ -0,0 +1,281 @@ +@@ -0,0 +1,285 @@ +/* + * Device Tree Source for Magicbox boards + * @@ -316,19 +316,23 @@ + reg = <0x00000000 0xffc00000 0x00400000>; + #address-cells = <1>; + #size-cells = <1>; -+ partition@0 { ++ partition0@0 { + label = "linux"; + reg = <0x0 0x140000>; + }; -+ partition@120000 { ++ partition1@120000 { + label = "rootfs"; + reg = <0x140000 0x680000>; + }; -+ partition@7c0000 { ++ partition2@7c0000 { + label = "u-boot"; + reg = <0x7c0000 0x30000>; + read-only; + }; ++ partition3@0 { ++ label = "firmware"; ++ reg = <0x0 0x7c0000>; ++ }; + }; + }; + diff --git a/target/linux/ppc40x/patches/005-openrb.patch b/target/linux/ppc40x/patches/005-openrb.patch index 46ea6f6e06..a90fba88cc 100644 --- a/target/linux/ppc40x/patches/005-openrb.patch +++ b/target/linux/ppc40x/patches/005-openrb.patch @@ -74,7 +74,7 @@ +} --- /dev/null +++ b/arch/powerpc/boot/dts/openrb.dts -@@ -0,0 +1,276 @@ +@@ -0,0 +1,280 @@ +/* + * Device Tree Source for OpenRB boards + * @@ -292,19 +292,23 @@ + reg = <0x00000000 0xff800000 0x00800000>; + #address-cells = <1>; + #size-cells = <1>; -+ partition@0 { ++ partition0@0 { + label = "linux"; + reg = <0x0 0x140000>; + }; -+ partition@120000 { ++ partition1@120000 { + label = "rootfs"; + reg = <0x140000 0x680000>; + }; -+ partition@7c0000 { ++ partition2@7c0000 { + label = "u-boot"; + reg = <0x7c0000 0x30000>; + read-only; + }; ++ partition3@0 { ++ label = "firmware"; ++ reg = <0x0 0x7c0000>; ++ }; + }; + }; + diff --git a/target/linux/ppc40x/patches/110-kilauea_openwrt_flashmap.patch b/target/linux/ppc40x/patches/110-kilauea_openwrt_flashmap.patch index 5e5cc5298f..dac3b9efc1 100644 --- a/target/linux/ppc40x/patches/110-kilauea_openwrt_flashmap.patch +++ b/target/linux/ppc40x/patches/110-kilauea_openwrt_flashmap.patch @@ -1,17 +1,55 @@ --- a/arch/powerpc/boot/dts/kilauea.dts +++ b/arch/powerpc/boot/dts/kilauea.dts -@@ -157,12 +157,8 @@ +@@ -93,8 +93,8 @@ + compatible = "ibm,sdram-405ex", "ibm,sdram-4xx-ddr2"; + dcr-reg = <0x010 0x002>; + interrupt-parent = <&UIC2>; +- interrupts = <0x5 0x4 /* ECC DED Error */ +- 0x6 0x4>; /* ECC SEC Error */ ++ interrupts = <0x5 0x4 /* ECC DED Error */ ++ 0x6 0x4>; /* ECC SEC Error */ + }; + + CRYPTO: crypto@ef700000 { +@@ -148,30 +148,30 @@ + reg = <0x00000000 0x00000000 0x04000000>; + #address-cells = <1>; + #size-cells = <1>; +- partition@0 { ++ partition0@0 { + label = "kernel"; + reg = <0x00000000 0x001e0000>; + }; +- partition@1e0000 { ++ partition1@1e0000 { + label = "dtb"; reg = <0x001e0000 0x00020000>; }; - partition@200000 { +- partition@200000 { - label = "root"; - reg = <0x00200000 0x00200000>; -- }; -- partition@400000 { -- label = "user"; -- reg = <0x00400000 0x03b60000>; ++ partition2@200000 { + label = "rootfs"; + reg = <0x00200000 0x03d60000>; }; - partition@3f60000 { +- partition@400000 { +- label = "user"; +- reg = <0x00400000 0x03b60000>; +- }; +- partition@3f60000 { ++ partition3@3f60000 { label = "env"; + reg = <0x03f60000 0x00040000>; + }; +- partition@3fa0000 { ++ partition4@3fa0000 { + label = "u-boot"; + reg = <0x03fa0000 0x00060000>; + }; ++ partition5@0 { ++ label = "firmware"; ++ reg = <0x00000000 0x03f60000>; ++ }; + }; + + ndfc@1,0 {