ipq40xx: sysupgrade: drop disabled UBI to UBI logic
[openwrt/staging/neocturne.git] / target / linux / ipq40xx / base-files / lib / upgrade / linksys.sh
1 linksys_get_target_firmware() {
2 local cur_boot_part mtd_ubi0
3
4 cur_boot_part="$(/usr/sbin/fw_printenv -n boot_part)"
5 if [ -z "${cur_boot_part}" ]; then
6 mtd_ubi0=$(cat /sys/devices/virtual/ubi/ubi0/mtd_num)
7 case "$(grep -E "^mtd${mtd_ubi0}:" /proc/mtd | cut -d '"' -f 2)" in
8 kernel|rootfs)
9 cur_boot_part=1
10 ;;
11 alt_kernel|alt_rootfs)
12 cur_boot_part=2
13 ;;
14 esac
15 >&2 printf "Current boot_part='%s' selected from ubi0/mtd_num='%s'" \
16 "${cur_boot_part}" "${mtd_ubi0}"
17 fi
18
19 # OEM U-Boot for EA6350v3, EA8300 and MR8300; bootcmd=
20 # if test $auto_recovery = no;
21 # then bootipq;
22 # elif test $boot_part = 1;
23 # then run bootpart1;
24 # else run bootpart2;
25 # fi
26
27 case "$cur_boot_part" in
28 1)
29 fw_setenv -s - <<-EOF
30 boot_part 2
31 auto_recovery yes
32 EOF
33 printf "alt_kernel"
34 return
35 ;;
36 2)
37 fw_setenv -s - <<-EOF
38 boot_part 1
39 auto_recovery yes
40 EOF
41 printf "kernel"
42 return
43 ;;
44 *)
45 return
46 ;;
47 esac
48 }
49
50 platform_do_upgrade_linksys() {
51 local magic_long="$(get_magic_long "$1")"
52
53 local rm_oem_fw_vols="squashfs ubifs" # from OEM [alt_]rootfs UBI
54 local vol
55
56 mkdir -p /var/lock
57 local part_label="$(linksys_get_target_firmware)"
58 touch /var/lock/fw_printenv.lock
59
60 if [ -z "$part_label" ]; then
61 echo "cannot find target partition"
62 exit 1
63 fi
64
65 local target_mtd=$(find_mtd_part "$part_label")
66
67 [ "$magic_long" = "73797375" ] && {
68 CI_KERNPART="$part_label"
69 if [ "$part_label" = "kernel" ]; then
70 CI_UBIPART="rootfs"
71 else
72 CI_UBIPART="alt_rootfs"
73 fi
74
75 local mtdnum="$(find_mtd_index "$CI_UBIPART")"
76 if [ ! "$mtdnum" ]; then
77 echo "cannot find ubi mtd partition $CI_UBIPART"
78 return 1
79 fi
80
81 local ubidev="$(nand_find_ubi "$CI_UBIPART")"
82 if [ ! "$ubidev" ]; then
83 ubiattach -m "$mtdnum"
84 sync
85 ubidev="$(nand_find_ubi "$CI_UBIPART")"
86 fi
87
88 if [ "$ubidev" ]; then
89 for vol in $rm_oem_fw_vols; do
90 ubirmvol "/dev/$ubidev" -N "$vol" 2>/dev/null
91 done
92 fi
93
94 # complete std upgrade
95 nand_upgrade_tar "$1"
96 }
97
98 [ "$magic_long" = "27051956" ] && {
99 echo "writing \"$1\" image to \"$part_label\""
100 get_image "$1" | mtd write - "$part_label"
101 }
102 }