ath79: add Senao 'failsafe' sysupgrade procedure
[openwrt/openwrt.git] / target / linux / ath79 / generic / base-files / lib / upgrade / platform.sh
1 #
2 # Copyright (C) 2011 OpenWrt.org
3 #
4
5 PART_NAME=firmware
6 REQUIRE_IMAGE_METADATA=1
7
8 RAMFS_COPY_BIN='fw_printenv fw_setenv'
9 RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
10
11 redboot_fis_do_upgrade() {
12 local append
13 local sysup_file="$1"
14 local kern_part="$2"
15 local magic=$(get_magic_word "$sysup_file")
16
17 if [ "$magic" = "4349" ]; then
18 local kern_length=0x$(dd if="$sysup_file" bs=2 skip=1 count=4 2>/dev/null)
19
20 [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
21 dd if="$sysup_file" bs=64k skip=1 2>/dev/null | \
22 mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
23
24 elif [ "$magic" = "7379" ]; then
25 local board_dir=$(tar tf $sysup_file | grep -m 1 '^sysupgrade-.*/$')
26 local kern_length=$(tar xf $sysup_file ${board_dir}kernel -O | wc -c)
27
28 [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
29 tar xf $sysup_file ${board_dir}kernel ${board_dir}root -O | \
30 mtd -r $append -F$kern_part:$kern_length:0x80060000,rootfs write - $kern_part:rootfs
31
32 else
33 echo "Unknown image, aborting!"
34 return 1
35 fi
36 }
37
38 platform_check_image() {
39 return 0
40 }
41
42 platform_do_upgrade() {
43 local board=$(board_name)
44
45 case "$board" in
46 adtran,bsap1800-v2|\
47 adtran,bsap1840)
48 redboot_fis_do_upgrade "$1" vmlinux_2
49 ;;
50 engenius,eap1200h|\
51 engenius,eap300-v2|\
52 engenius,eap600|\
53 engenius,ecb600|\
54 engenius,ens202ext-v1|\
55 engenius,enstationac-v1)
56 IMAGE_LIST="tar tzf $1"
57 IMAGE_CMD="tar xzOf $1"
58 KERNEL_PART="loader"
59 ROOTFS_PART="fwconcat0"
60 KERNEL_FILE="uImage-lzma.bin"
61 ROOTFS_FILE="root.squashfs"
62 platform_do_upgrade_failsafe_datachk "$1"
63 ;;
64 jjplus,ja76pf2)
65 redboot_fis_do_upgrade "$1" linux
66 ;;
67 openmesh,mr600-v1|\
68 openmesh,mr600-v2|\
69 openmesh,mr900-v1|\
70 openmesh,mr900-v2|\
71 openmesh,mr1750-v1|\
72 openmesh,mr1750-v2|\
73 openmesh,om2p-v2|\
74 openmesh,om2p-v4|\
75 openmesh,om2p-hs-v1|\
76 openmesh,om2p-hs-v2|\
77 openmesh,om2p-hs-v3|\
78 openmesh,om2p-hs-v4|\
79 openmesh,om2p-lc|\
80 openmesh,om5p)
81 PART_NAME="inactive"
82 platform_do_upgrade_openmesh "$1"
83 ;;
84 plasmacloud,pa300|\
85 plasmacloud,pa300e)
86 PART_NAME="inactive"
87 platform_do_upgrade_dualboot_datachk "$1"
88 ;;
89 ubnt,routerstation|\
90 ubnt,routerstation-pro)
91 redboot_fis_do_upgrade "$1" kernel
92 ;;
93 *)
94 default_do_upgrade "$1"
95 ;;
96 esac
97 }