4a6a91b5f5dd49c7a5d281f649459373321a8ce3
[openwrt/staging/aparcar.git] / target / linux / ipq807x / base-files / lib / upgrade / platform.sh
1 PART_NAME=firmware
2 REQUIRE_IMAGE_METADATA=1
3
4 RAMFS_COPY_BIN='fw_printenv fw_setenv head'
5 RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
6
7 xiaomi_initramfs_prepare() {
8 # Wipe UBI if running initramfs
9 [ "$(rootfs_type)" = "tmpfs" ] || return 0
10
11 local rootfs_mtdnum="$( find_mtd_index rootfs )"
12 if [ ! "$rootfs_mtdnum" ]; then
13 echo "unable to find mtd partition rootfs"
14 return 1
15 fi
16
17 local kern_mtdnum="$( find_mtd_index ubi_kernel )"
18 if [ ! "$kern_mtdnum" ]; then
19 echo "unable to find mtd partition ubi_kernel"
20 return 1
21 fi
22
23 ubidetach -m "$rootfs_mtdnum"
24 ubiformat /dev/mtd$rootfs_mtdnum -y
25
26 ubidetach -m "$kern_mtdnum"
27 ubiformat /dev/mtd$kern_mtdnum -y
28 }
29
30 platform_check_image() {
31 return 0;
32 }
33
34 platform_pre_upgrade() {
35 case "$(board_name)" in
36 redmi,ax6|\
37 xiaomi,ax3600|\
38 xiaomi,ax9000)
39 xiaomi_initramfs_prepare
40 ;;
41 esac
42 }
43
44 platform_do_upgrade() {
45 case "$(board_name)" in
46 dynalink,dl-wrx36)
47 nand_do_upgrade "$1"
48 ;;
49 edgecore,eap102)
50 active="$(fw_printenv -n active)"
51 if [ "$active" -eq "1" ]; then
52 CI_UBIPART="rootfs2"
53 else
54 CI_UBIPART="rootfs1"
55 fi
56 # force altbootcmd which handles partition change in u-boot
57 fw_setenv bootcount 3
58 fw_setenv upgrade_available 1
59 nand_do_upgrade "$1"
60 ;;
61 edimax,cax1800)
62 nand_do_upgrade "$1"
63 ;;
64 qnap,301w)
65 kernelname="0:HLOS"
66 rootfsname="rootfs"
67 mmc_do_upgrade "$1"
68 ;;
69 zyxel,nbg7815)
70 local config_mtdnum="$(find_mtd_index 0:bootconfig)"
71 [ -z "$config_mtdnum" ] && reboot
72 part_num="$(hexdump -e '1/1 "%01x|"' -n 1 -s 168 -C /dev/mtd$config_mtdnum | cut -f 1 -d "|" | head -n1)"
73 if [ "$part_num" -eq "0" ]; then
74 kernelname="0:HLOS"
75 rootfsname="rootfs"
76 mmc_do_upgrade "$1"
77 else
78 kernelname="0:HLOS_1"
79 rootfsname="rootfs_1"
80 mmc_do_upgrade "$1"
81 fi
82 ;;
83 redmi,ax6|\
84 xiaomi,ax3600|\
85 xiaomi,ax9000)
86 # Make sure that UART is enabled
87 fw_setenv boot_wait on
88 fw_setenv uart_en 1
89
90 # Enforce single partition.
91 fw_setenv flag_boot_rootfs 0
92 fw_setenv flag_last_success 0
93 fw_setenv flag_boot_success 1
94 fw_setenv flag_try_sys1_failed 8
95 fw_setenv flag_try_sys2_failed 8
96
97 # Kernel and rootfs are placed in 2 different UBI
98 CI_KERN_UBIPART="ubi_kernel"
99 CI_ROOT_UBIPART="rootfs"
100 nand_do_upgrade "$1"
101 ;;
102 *)
103 default_do_upgrade "$1"
104 ;;
105 esac
106 }