ath79: mikrotik: update kernel on NAND using Yafut
[openwrt/staging/stintel.git] / target / linux / ath79 / mikrotik / base-files / lib / upgrade / platform.sh
1 # Copyright (C) 2011 OpenWrt.org
2
3 PART_NAME=firmware
4
5 REQUIRE_IMAGE_METADATA=1
6 platform_check_image() {
7 return 0
8 }
9
10 RAMFS_COPY_BIN='yafut'
11
12 platform_do_upgrade_mikrotik_nand() {
13 CI_KERNPART=none
14
15 local fw_mtd=$(find_mtd_part kernel)
16 fw_mtd="${fw_mtd/block/}"
17 [ -n "$fw_mtd" ] || return
18
19 local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$')
20 board_dir=${board_dir%/}
21 [ -n "$board_dir" ] || return
22
23 tar xf "$1" ${board_dir}/kernel -O | yafut -d "$fw_mtd" -w -i - -o kernel -m 0755 || return
24
25 nand_do_upgrade "$1"
26 }
27
28 platform_do_upgrade() {
29 local board=$(board_name)
30
31 case "$board" in
32 mikrotik,routerboard-493g|\
33 mikrotik,routerboard-912uag-2hpnd|\
34 mikrotik,routerboard-921gs-5hpacd-15s|\
35 mikrotik,routerboard-922uags-5hpacd|\
36 mikrotik,routerboard-sxt-5nd-r2)
37 platform_do_upgrade_mikrotik_nand "$1"
38 ;;
39 *)
40 # NOR devices: erase firmware if booted from initramfs
41 [ "$(rootfs_type)" = "tmpfs" ] && mtd erase firmware
42
43 default_do_upgrade "$1"
44 ;;
45 esac
46 }