ppc40x: add sysupgrade support
authorGabor Juhos <juhosg@openwrt.org>
Mon, 12 Apr 2010 12:21:18 +0000 (12:21 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Mon, 12 Apr 2010 12:21:18 +0000 (12:21 +0000)
Cc: backfire@openwrt.org
SVN-Revision: 20821

target/linux/ppc40x/base-files/lib/ppc40x.sh [new file with mode: 0755]
target/linux/ppc40x/base-files/lib/upgrade/platform.sh [new file with mode: 0644]
target/linux/ppc40x/patches/004-magicbox.patch
target/linux/ppc40x/patches/005-openrb.patch
target/linux/ppc40x/patches/110-kilauea_openwrt_flashmap.patch

diff --git a/target/linux/ppc40x/base-files/lib/ppc40x.sh b/target/linux/ppc40x/base-files/lib/ppc40x.sh
new file mode 100755 (executable)
index 0000000..8a6c487
--- /dev/null
@@ -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 (file)
index 0000000..ed08cab
--- /dev/null
@@ -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
+}
index ff18b49fa0b382542b8ba8c774fcb84c012f413b..0f9e192fcffb5e7bb6a556b229d604177beff5a7 100644 (file)
@@ -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
 + *
 +                              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>;
++                              };
 +                      };
 +              };
 +
index 46ea6f6e0655776953643f9bc0c38c2db750dd29..a90fba88cca2b3f95e5cf4efc32aa09eb1ad9e71 100644 (file)
@@ -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
 + *
 +                              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>;
++                              };
 +                      };
 +              };
 +
index 5e5cc5298ffcdfebf9420a77782f337daf0b489a..dac3b9efc11c2e36d7d992c41aa152617758d4f6 100644 (file)
@@ -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 {