From f47a4a58c5f96d00d557f42b068503d89952ec06 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Tue, 23 Sep 2008 11:05:54 +0000
Subject: [PATCH] fix sysupgrade support for brcm-2.4 and brcm47xx make mtd
 refresh based config append optional (leave enabled on x86)

SVN-Revision: 12657
---
 package/base-files/files/lib/upgrade/common.sh  | 17 +++++++++++++++--
 .../brcm-2.4/base-files/lib/upgrade/platform.sh | 16 ++++------------
 .../x86/base-files/lib/upgrade/platform.sh      |  2 ++
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh
index 59ac7a70b4..7fc31e8b45 100644
--- a/package/base-files/files/lib/upgrade/common.sh
+++ b/package/base-files/files/lib/upgrade/common.sh
@@ -130,11 +130,24 @@ jffs2_copy_config() {
 	fi
 }
 
+default_do_upgrade() {
+	if [ "$SAVE_CONFIG" -eq 1 -a -z "$USE_REFRESH" ]; then
+		get_image "$1" | mtd -j "$CONF_TAR" write - "${PART_NAME:-image}"
+	else
+		get_image "$1" | mtd write - "${PART_NAME:-image}"
+	fi
+	sync
+}
+
 do_upgrade() {
 	v "Performing system upgrade..."
-	platform_do_upgrade "$ARGV"
+	if type 'platform_do_upgrade' >/dev/null 2>/dev/null; then
+		platform_do_upgrade "$ARGV"
+	else
+		default_do_upgrade "$ARGV"
+	fi
 	
-	[ "$SAVE_CONFIG" -eq 1 ] && {
+	[ "$SAVE_CONFIG" -eq 1 -a -n "$USE_REFRESH" ] && {
 		v "Refreshing partitions"
 		if type 'platform_refresh_partitions' >/dev/null 2>/dev/null; then
 			platform_refresh_partitions
diff --git a/target/linux/brcm-2.4/base-files/lib/upgrade/platform.sh b/target/linux/brcm-2.4/base-files/lib/upgrade/platform.sh
index ac53b9d591..9921cf571a 100644
--- a/target/linux/brcm-2.4/base-files/lib/upgrade/platform.sh
+++ b/target/linux/brcm-2.4/base-files/lib/upgrade/platform.sh
@@ -1,24 +1,16 @@
+PART_NAME=linux
+
 platform_check_image() {
 	[ "$ARGC" -gt 1 ] && return 1
 
 	case "$(get_magic_word "$1")" in
 		# .trx files
 		4844) return 0;;
-		# .bin files
-		5735) return 0;;
 		*)
-			echo "Invalid image type"
+			echo "Invalid image type. Please use only .trx files"
 			return 1
 		;;
 	esac
 }
 
-platform_do_upgrade() {
-	get_image "$1" > $(find_mtd_part "linux")
-	sync
-}
-
-brcm_prepare_mtd() {
-	[ "$SAVE_CONFIG" -eq 1 ] && return 0
-}
-append sysupgrade_pre_upgrade brcm_prepare_mtd
+# use default for platform_do_upgrade()
diff --git a/target/linux/x86/base-files/lib/upgrade/platform.sh b/target/linux/x86/base-files/lib/upgrade/platform.sh
index f4c8334f36..6bae07b013 100644
--- a/target/linux/x86/base-files/lib/upgrade/platform.sh
+++ b/target/linux/x86/base-files/lib/upgrade/platform.sh
@@ -1,3 +1,5 @@
+USE_REFRESH=1
+
 platform_check_image() {
 	[ "$ARGC" -gt 1 ] && return 1
 
-- 
2.30.2