mediatek: add support for Buffalo WSR-2533DHP2
[openwrt/staging/jow.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 get_cmdline_var() {
6 local var=$1
7 local cmdlinevar tmp
8 local cmdline="$(cat /proc/cmdline)"
9
10 for cmdlinevar in $cmdline; do
11 tmp=${cmdlinevar##${var}}
12 [ "=" = "${tmp:0:1}" ] && echo ${tmp:1}
13 done
14 }
15
16 get_rootdev() {
17 local rootvol rootdev
18 rootvol=$(get_cmdline_var root)
19 rootvol=$(basename $rootvol)
20 [ -e /sys/class/block/$rootvol ] || {
21 rootvol=${rootvol%%[0-9]}
22 [ -e /sys/class/block/$rootvol ] && echo $rootvol
23 rootvol=${rootvol%%p}
24 [ -e /sys/class/block/$rootvol ] && echo $rootvol
25 return
26 }
27 [ -e /sys/class/block/$rootvol/partition ] || {
28 echo $rootvol
29 return
30 }
31 rootdev=$(busybox readlink -f /sys/class/block/$rootvol)
32 rootdev=$(basename ${rootdev%%/${rootvol}})
33 [ -e /sys/class/block/$rootdev ] && echo $rootdev
34 }
35
36 get_partition() {
37 for partname in /sys/class/block/$1/*/name; do
38 [ "$(cat ${partname})" = "$2" ] && {
39 basename ${partname%%/name}
40 break
41 }
42 done
43 }
44
45 platform_do_upgrade() {
46 local board=$(board_name)
47 local file_type=$(identify $1)
48
49 case "$board" in
50 bananapi,bpi-r64)
51 local rootdev=$(get_rootdev)
52 local fitpart=$(get_partition $rootdev production)
53 [ "$fitpart" ] || exit 1
54 dd if=/dev/zero of=/dev/$fitpart bs=4096 count=1 2>/dev/null
55 blockdev --rereadpt /dev/$rootdev
56 get_image "$1" | dd of=/dev/$fitpart
57 echo $rootdev > /tmp/sysupgrade.rootdev
58 ;;
59 buffalo,wsr-2533dhp2)
60 local magic="$(get_magic_long "$1")"
61
62 # use "mtd write" if the magic is "DHP2 (0x44485032)"
63 # or "DHP3 (0x44485033)"
64 if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then
65 buffalo_upgrade_ubinized "$1"
66 else
67 CI_KERNPART="firmware"
68 nand_do_upgrade "$1"
69 fi
70 ;;
71 linksys,e8450-ubi|\
72 mediatek,mt7622,ubi)
73 CI_KERNPART="fit"
74 nand_do_upgrade "$1"
75 ;;
76 linksys,e8450)
77 if grep -q mtdparts=slave /proc/cmdline; then
78 PART_NAME=firmware2
79 else
80 PART_NAME=firmware1
81 fi
82 default_do_upgrade "$1"
83 ;;
84 *)
85 default_do_upgrade "$1"
86 ;;
87 esac
88 }
89
90 PART_NAME=firmware
91
92 platform_check_image() {
93 local board=$(board_name)
94 local magic="$(get_magic_long "$1")"
95
96 [ "$#" -gt 1 ] && return 1
97
98 case "$board" in
99 buffalo,wsr-2533dhp2)
100 buffalo_check_image "$board" "$magic" "$1" || return 1
101 ;;
102 *)
103 [ "$magic" != "d00dfeed" ] && {
104 echo "Invalid image type."
105 return 1
106 }
107 return 0
108 ;;
109 esac
110
111 return 0
112 }
113
114 platform_copy_config_mmc() {
115 [ -e "$UPGRADE_BACKUP" ] || return
116 local rootdev=$(cat /tmp/sysupgrade.rootdev)
117 blockdev --rereadpt /dev/$rootdev
118 local datadev=$(get_partition $rootdev rootfs_data)
119 [ "$datadev" ] || echo "no rootfs_data partition, cannot keep configuration." >&2
120 dd if="$UPGRADE_BACKUP" of=/dev/$datadev
121 sync
122 }
123
124 platform_copy_config() {
125 case "$(board_name)" in
126 bananapi,bpi-r64)
127 platform_copy_config_mmc
128 ;;
129 esac
130 }