40197cfaa8e6469b54efdae82aa290998b40903e
[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 jjplus,ja76pf2)
51 redboot_fis_do_upgrade "$1" linux
52 ;;
53 openmesh,mr600-v1|\
54 openmesh,mr600-v2|\
55 openmesh,mr900-v1|\
56 openmesh,om2p-v2|\
57 openmesh,om2p-v4|\
58 openmesh,om2p-hs-v1|\
59 openmesh,om2p-hs-v2|\
60 openmesh,om2p-hs-v3|\
61 openmesh,om2p-hs-v4|\
62 openmesh,om2p-lc|\
63 openmesh,om5p)
64 PART_NAME="inactive"
65 platform_do_upgrade_openmesh "$1"
66 ;;
67 plasmacloud,pa300|\
68 plasmacloud,pa300e)
69 PART_NAME="inactive"
70 platform_do_upgrade_dualboot_datachk "$1"
71 ;;
72 ubnt,routerstation|\
73 ubnt,routerstation-pro)
74 redboot_fis_do_upgrade "$1" kernel
75 ;;
76 *)
77 default_do_upgrade "$1"
78 ;;
79 esac
80 }