ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000..0d83672
--- /dev/null
+++ b/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,87 @@
+PART_NAME=linux
+REQUIRE_IMAGE_METADATA=0
+
+platform_check_image() {
+	[ "$#" -gt 1 ] && return 1
+
+	case "$(board_name)" in
+		comtrend,vg-8050|\
+		comtrend,vr-3032u|\
+		huawei,hg253s-v2|\
+		netgear,dgnd3700-v2|\
+		sercomm,ad1018|\
+		sercomm,h500-s-lowi|\
+		sercomm,h500-s-vfes)
+			# NAND sysupgrade
+			return 0
+			;;
+	esac
+
+	case "$(get_magic_word "$1")" in
+		3600|3700|3800)
+			# CFE tag versions
+			return 0
+			;;
+		*)
+			echo "Invalid image type. Please use only .bin files"
+			return 1
+			;;
+	esac
+}
+
+cfe_jffs2_upgrade_tar() {
+	local tar_file="$1"
+	local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
+
+	if [ -z "$kernel_mtd" ]; then
+		echo "$CI_KERNPART partition not found"
+		return 1
+	fi
+
+	local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
+	board_dir=${board_dir%/}
+
+	local kernel_length=$(tar xf $tar_file ${board_dir}/kernel -O | wc -c 2> /dev/null)
+	local rootfs_length=$(tar xf $tar_file ${board_dir}/root -O | wc -c 2> /dev/null)
+
+	if [ "$kernel_length" = 0 ]; then
+		echo "kernel cannot be empty"
+		return 1
+	fi
+
+	flash_erase -j /dev/mtd${kernel_mtd} 0 0
+	tar xf $tar_file ${board_dir}/kernel -O | nandwrite /dev/mtd${kernel_mtd} -
+
+	local rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)"
+
+	nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "0" "0"
+
+	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
+
+	local root_ubivol="$(nand_find_volume $ubidev $CI_ROOTPART)"
+	tar xf $tar_file ${board_dir}/root -O | \
+		ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
+
+	nand_do_upgrade_success
+}
+
+platform_do_upgrade() {
+	case "$(board_name)" in
+		comtrend,vg-8050|\
+		comtrend,vr-3032u|\
+		huawei,hg253s-v2|\
+		netgear,dgnd3700-v2)
+			REQUIRE_IMAGE_METADATA=1
+			cfe_jffs2_upgrade_tar "$1"
+			;;
+		sercomm,ad1018|\
+		sercomm,h500-s-lowi|\
+		sercomm,h500-s-vfes)
+			REQUIRE_IMAGE_METADATA=1
+			nand_do_upgrade "$1"
+			;;
+		*)
+			default_do_upgrade "$1"
+			;;
+	esac
+}