summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-04-12 12:21:18 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-04-12 12:21:18 +0000
commit185965e128c6896cdda1cb0e9f28f4ebba557a73 (patch)
tree6e3b21894ce41b97a2acbd093c9655dfaecb46c3
parentbc4cd8c850516ab3adfd5b4748d8b3430718fbcf (diff)
downloadmaster-31e0f0ae-185965e128c6896cdda1cb0e9f28f4ebba557a73.tar.gz
master-31e0f0ae-185965e128c6896cdda1cb0e9f28f4ebba557a73.tar.bz2
master-31e0f0ae-185965e128c6896cdda1cb0e9f28f4ebba557a73.zip
ppc40x: add sysupgrade support
Cc: backfire@openwrt.org SVN-Revision: 20821
-rwxr-xr-xtarget/linux/ppc40x/base-files/lib/ppc40x.sh11
-rw-r--r--target/linux/ppc40x/base-files/lib/upgrade/platform.sh38
-rw-r--r--target/linux/ppc40x/patches/004-magicbox.patch12
-rw-r--r--target/linux/ppc40x/patches/005-openrb.patch12
-rw-r--r--target/linux/ppc40x/patches/110-kilauea_openwrt_flashmap.patch52
5 files changed, 110 insertions, 15 deletions
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 {