98775c6a134b294b880d81140e5675e1ed72fb31
[openwrt/staging/thess.git] / target / linux / mediatek / mt7622 / base-files / lib / upgrade / platform.sh
1 REQUIRE_IMAGE_METADATA=1
2 RAMFS_COPY_BIN='fw_printenv fw_setenv blockdev'
3 RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
4
5 platform_do_upgrade() {
6 local board=$(board_name)
7 local file_type=$(identify $1)
8
9 case "$board" in
10 bananapi,bpi-r64)
11 export_bootdevice
12 export_partdevice rootdev 0
13 case "$rootdev" in
14 mmc*)
15 blockdev --rereadpt /dev/$rootdev || return 1
16 local fitpart=$(find_mmc_part "production" $rootdev)
17 [ "$fitpart" ] || return 1
18 dd if=/dev/zero of=$fitpart bs=4096 count=1 2>/dev/null
19 blockdev --rereadpt /dev/$rootdev
20 get_image "$1" | dd of=$fitpart
21 blockdev --rereadpt /dev/$rootdev
22 local datapart=$(find_mmc_part "rootfs_data" $rootdev)
23 [ "$datapart" ] || return 0
24 dd if=/dev/zero of=$datapart bs=4096 count=1 2>/dev/null
25 echo $datapart > /tmp/sysupgrade.datapart
26 ;;
27 *)
28 CI_KERNPART="fit"
29 nand_do_upgrade "$1"
30 ;;
31 esac
32 ;;
33 buffalo,wsr-2533dhp2)
34 local magic="$(get_magic_long "$1")"
35
36 # use "mtd write" if the magic is "DHP2 (0x44485032)"
37 # or "DHP3 (0x44485033)"
38 if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then
39 buffalo_upgrade_ubinized "$1"
40 else
41 CI_KERNPART="firmware"
42 nand_do_upgrade "$1"
43 fi
44 ;;
45 linksys,e8450-ubi|\
46 mediatek,mt7622,ubi)
47 CI_KERNPART="fit"
48 nand_do_upgrade "$1"
49 ;;
50 linksys,e8450)
51 if grep -q mtdparts=slave /proc/cmdline; then
52 PART_NAME=firmware2
53 else
54 PART_NAME=firmware1
55 fi
56 default_do_upgrade "$1"
57 ;;
58 totolink,a8000ru)
59 nand_do_upgrade "$1"
60 ;;
61 *)
62 default_do_upgrade "$1"
63 ;;
64 esac
65 }
66
67 PART_NAME=firmware
68
69 platform_check_image() {
70 local board=$(board_name)
71 local magic="$(get_magic_long "$1")"
72
73 [ "$#" -gt 1 ] && return 1
74
75 case "$board" in
76 buffalo,wsr-2533dhp2)
77 buffalo_check_image "$board" "$magic" "$1" || return 1
78 ;;
79 totolink,a8000ru)
80 nand_do_platform_check "$board" "$1"
81 ;;
82 *)
83 [ "$magic" != "d00dfeed" ] && {
84 echo "Invalid image type."
85 return 1
86 }
87 return 0
88 ;;
89 esac
90
91 return 0
92 }
93
94 platform_copy_config_mmc() {
95 [ -e "$UPGRADE_BACKUP" ] || return
96 local datapart=$(cat /tmp/sysupgrade.datapart)
97 [ "$datapart" ] || echo "no rootfs_data partition, cannot keep configuration." >&2
98 dd if="$UPGRADE_BACKUP" of=$datapart
99 sync
100 }
101
102 platform_copy_config() {
103 case "$(board_name)" in
104 bananapi,bpi-r64)
105 export_bootdevice
106 export_partdevice rootdev 0
107 if echo $rootdev | grep -q mmc; then
108 platform_copy_config_mmc
109 fi
110 ;;
111 esac
112 }