summaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/base-files/lib/upgrade/platform.sh
blob: d812a48720b83edbcf8e01f41462f3a749e9d44e (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
platform_do_upgrade() {                 
	local board=$(board_name)
	case "$board" in
	"unielec,u7623"*)
		#Keep the persisten random mac address (if it exists)
		mkdir -p /tmp/recovery
		mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
		[ -f "/tmp/recovery/mac_addr" ] && \
			mv -f /tmp/recovery/mac_addr /tmp/
		umount /tmp/recovery

		#1310720 is the offset in bytes from the start of eMMC and to
		#the location of the kernel (2560 512 byte sectors)
		get_image "$1" | dd of=/dev/mmcblk0 bs=1310720 seek=1 conv=fsync

		mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
		[ -f "/tmp/mac_addr" ] && mv -f /tmp/mac_addr /tmp/recovery
		sync
		umount /tmp/recovery
		;;
	*)
		default_do_upgrade "$1"
		;;
	esac
}

PART_NAME=firmware

platform_check_image() {                                                         
	local board=$(board_name)                                                
	local magic="$(get_magic_long "$1")"                                     

	[ "$#" -gt 1 ] && return 1                                               

	case "$board" in                                                       
	bananapi,bpi-r2|\
	"unielec,u7623"*)
		[ "$magic" != "27051956" ] && {   
			echo "Invalid image type."
			return 1                                     
		}                                                    
		return 0                                             
		;;                                                   

	*)                                                           
		echo "Sysupgrade is not supported on your board yet."
		return 1                                             
		;;                                
	esac                                      

	return 0                                                                                         
}

platform_copy_config_emmc() {
	mkdir -p /recovery
	mount -o rw,noatime /dev/mmcblk0p1 /recovery
	cp -af "$CONF_TAR" /recovery/
	sync
	umount /recovery
}

platform_copy_config() {
	case "$(board_name)" in
	"unielec,u7623"*)
		platform_copy_config_emmc
		;;
	esac
}