9a2c13cf4db014e11e3b62ca8cbc519dbc406975
[openwrt/openwrt.git] / target / linux / ipq40xx / base-files / lib / upgrade / platform.sh
1 PART_NAME=firmware
2 REQUIRE_IMAGE_METADATA=1
3
4 RAMFS_COPY_BIN='fw_printenv fw_setenv'
5 RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
6
7 platform_check_image() {
8 case "$(board_name)" in
9 asus,rt-ac58u)
10 CI_UBIPART="UBI_DEV"
11 local ubidev=$(nand_find_ubi $CI_UBIPART)
12 local asus_root=$(nand_find_volume $ubidev jffs2)
13
14 [ -n "$asus_root" ] || return 0
15
16 cat << EOF
17 jffs2 partition is still present.
18 There's probably no space left
19 to install the filesystem.
20
21 You need to delete the jffs2 partition first:
22 # ubirmvol /dev/ubi0 --name=jffs2
23
24 Once this is done. Retry.
25 EOF
26 return 1
27 ;;
28 esac
29 return 0;
30 }
31
32 zyxel_do_upgrade() {
33 local tar_file="$1"
34
35 local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
36 board_dir=${board_dir%/}
37
38 tar Oxf $tar_file ${board_dir}/kernel | mtd write - kernel
39
40 if [ "$SAVE_CONFIG" -eq 1 ]; then
41 tar Oxf $tar_file ${board_dir}/root | mtd -j "$CONF_TAR" write - rootfs
42 else
43 tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
44 fi
45 }
46
47 platform_do_upgrade() {
48 case "$(board_name)" in
49 8dev,jalapeno |\
50 alfa-network,ap120c-ac |\
51 avm,fritzbox-7530 |\
52 qxwlan,e2600ac-c2)
53 nand_do_upgrade "$ARGV"
54 ;;
55 asus,map-ac2200)
56 CI_KERNPART="linux"
57 nand_do_upgrade "$1"
58 ;;
59 asus,rt-ac58u)
60 CI_UBIPART="UBI_DEV"
61 CI_KERNPART="linux"
62 nand_do_upgrade "$1"
63 ;;
64 linksys,ea6350v3)
65 platform_do_upgrade_linksys "$ARGV"
66 ;;
67 openmesh,a42 |\
68 openmesh,a62)
69 PART_NAME="inactive"
70 platform_do_upgrade_openmesh "$ARGV"
71 ;;
72 meraki,mr33)
73 CI_KERNPART="part.safe"
74 nand_do_upgrade "$1"
75 ;;
76 zyxel,nbg6617)
77 zyxel_do_upgrade "$1"
78 ;;
79 *)
80 default_do_upgrade "$ARGV"
81 ;;
82 esac
83 }
84
85 platform_nand_pre_upgrade() {
86 case "$(board_name)" in
87 alfa-network,ap120c-ac)
88 part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
89 if [ "$part" = "rootfs1" ]; then
90 fw_setenv active 2 || exit 1
91 CI_UBIPART="rootfs2"
92 else
93 fw_setenv active 1 || exit 1
94 CI_UBIPART="rootfs1"
95 fi
96 ;;
97 asus,rt-ac58u)
98 CI_UBIPART="UBI_DEV"
99 CI_KERNPART="linux"
100 ;;
101 meraki,mr33)
102 CI_KERNPART="part.safe"
103 ;;
104 esac
105 }