aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath79/generic/base-files/lib/upgrade/redboot-fis.sh
blob: f45d9a2e790ec47f6d00259ee774cec5e2770f5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
platform_check_image_redboot_fis() {
	if [ "$(get_magic_word "$1")" != "7379" ]; then
		v "Unknown image format, aborting!"
		return 1
	else
		return 0
	fi
}

platform_do_upgrade_redboot_fis() {
	local append
	local sysup_file="$1"
	local kern_part="$2"

	if [ "$(get_magic_word "$sysup_file")" = "7379" ]; then
		local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')

		[ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"

		if grep -q "mtd1.*loader" /proc/mtd; then
			tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
				mtd -r $append write - loader:firmware

		else
			local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)

			tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
				mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
		fi
	fi
}