layerscape: armv8_64b: add Traverse Ten64 NAND variant
[openwrt/staging/hauke.git] / target / linux / layerscape / base-files / lib / upgrade / platform.sh
1 #
2 # Copyright 2015-2019 Traverse Technologies
3 # Copyright 2020 NXP
4 #
5
6 RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo"
7 RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock"
8
9 REQUIRE_IMAGE_METADATA=1
10
11 platform_do_upgrade_sdboot() {
12 local diskdev partdev parttype=ext4
13 local tar_file="$1"
14 local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
15 board_dir=${board_dir%/}
16
17 export_bootdevice && export_partdevice diskdev 0 || {
18 echo "Unable to determine upgrade device"
19 return 1
20 }
21
22 if export_partdevice partdev 1; then
23 mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
24 echo "Writing kernel..."
25 tar xf $tar_file ${board_dir}/kernel -O > /mnt/fitImage
26 umount /mnt
27 fi
28
29 echo "Erasing rootfs..."
30 dd if=/dev/zero of=/dev/mmcblk0p2 bs=1M > /dev/null 2>&1
31 echo "Writing rootfs..."
32 tar xf $tar_file ${board_dir}/root -O | dd of=/dev/mmcblk0p2 bs=512k > /dev/null 2>&1
33
34 }
35 platform_do_upgrade_traverse_nandubi() {
36 bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
37 newbootsys=2
38 if [ "$bootsys" -eq "2" ]; then
39 newbootsys=1
40 fi
41
42 # If nand_do_upgrade succeeds, we don't have an opportunity to add any actions of
43 # our own, so do it here and set back on failure
44 echo "Setting bootsys to #${newbootsys}"
45 fw_setenv bootsys $newbootsys
46 CI_UBIPART="nandubi"
47 CI_KERNPART="kernel${newbootsys}"
48 CI_ROOTPART="rootfs${newbootsys}"
49 nand_do_upgrade "$1" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
50
51 }
52
53 platform_do_upgrade_traverse_slotubi() {
54 part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
55 echo "Active boot slot: ${part}"
56 new_active_sys="b"
57
58 if [ ! -z "${part}" ]; then
59 if [ "${part}" = "ubia" ]; then
60 CI_UBIPART="ubib"
61 else
62 CI_UBIPART="ubia"
63 new_active_sys="a"
64 fi
65 fi
66 echo "Updating UBI part ${CI_UBIPART}"
67 fw_setenv "openwrt_active_sys" "${new_active_sys}"
68 nand_do_upgrade "$1"
69 return $?
70 }
71
72 platform_copy_config_sdboot() {
73 local diskdev partdev parttype=ext4
74
75 export_bootdevice && export_partdevice diskdev 0 || {
76 echo "Unable to determine upgrade device"
77 return 1
78 }
79
80 if export_partdevice partdev 1; then
81 mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
82 echo "Saving config backup..."
83 cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
84 umount /mnt
85 fi
86 }
87 platform_copy_config() {
88 local board=$(board_name)
89
90 case "$board" in
91 fsl,ls1012a-frwy-sdboot | \
92 fsl,ls1021a-iot-sdboot | \
93 fsl,ls1021a-twr-sdboot | \
94 fsl,ls1028a-rdb-sdboot | \
95 fsl,ls1043a-rdb-sdboot | \
96 fsl,ls1046a-frwy-sdboot | \
97 fsl,ls1046a-rdb-sdboot | \
98 fsl,ls1088a-rdb-sdboot | \
99 fsl,lx2160a-rdb-sdboot)
100 platform_copy_config_sdboot
101 ;;
102 esac
103 }
104 platform_check_image() {
105 local board=$(board_name)
106
107 case "$board" in
108 traverse,ls1043v | \
109 traverse,ls1043s)
110 nand_do_platform_check "traverse-ls1043" $1
111 return $?
112 ;;
113 traverse,ten64)
114 nand_do_platform_check "ten64-mtd" $1
115 return $?
116 ;;
117 fsl,ls1012a-frdm | \
118 fsl,ls1012a-frwy-sdboot | \
119 fsl,ls1012a-rdb | \
120 fsl,ls1021a-iot-sdboot | \
121 fsl,ls1021a-twr | \
122 fsl,ls1021a-twr-sdboot | \
123 fsl,ls1028a-rdb | \
124 fsl,ls1028a-rdb-sdboot | \
125 fsl,ls1043a-rdb | \
126 fsl,ls1043a-rdb-sdboot | \
127 fsl,ls1046a-frwy | \
128 fsl,ls1046a-frwy-sdboot | \
129 fsl,ls1046a-rdb | \
130 fsl,ls1046a-rdb-sdboot | \
131 fsl,ls1088a-rdb | \
132 fsl,ls1088a-rdb-sdboot | \
133 fsl,ls2088a-rdb | \
134 fsl,lx2160a-rdb | \
135 fsl,lx2160a-rdb-sdboot)
136 return 0
137 ;;
138 *)
139 echo "Sysupgrade is not currently supported on $board"
140 ;;
141 esac
142
143 return 1
144 }
145 platform_do_upgrade() {
146 local board=$(board_name)
147
148 # Force the creation of fw_printenv.lock
149 mkdir -p /var/lock
150 touch /var/lock/fw_printenv.lock
151
152 case "$board" in
153 traverse,ls1043v | \
154 traverse,ls1043s)
155 platform_do_upgrade_traverse_nandubi "$1"
156 ;;
157 traverse,ten64)
158 platform_do_upgrade_traverse_slotubi "${1}"
159 ;;
160 fsl,ls1012a-frdm | \
161 fsl,ls1012a-rdb | \
162 fsl,ls1021a-twr | \
163 fsl,ls1028a-rdb | \
164 fsl,ls1043a-rdb | \
165 fsl,ls1046a-frwy | \
166 fsl,ls1046a-rdb | \
167 fsl,ls1088a-rdb | \
168 fsl,ls2088a-rdb | \
169 fsl,lx2160a-rdb)
170 PART_NAME=firmware
171 default_do_upgrade "$1"
172 ;;
173 fsl,ls1012a-frwy-sdboot | \
174 fsl,ls1021a-iot-sdboot | \
175 fsl,ls1021a-twr-sdboot | \
176 fsl,ls1028a-rdb-sdboot | \
177 fsl,ls1043a-rdb-sdboot | \
178 fsl,ls1046a-frwy-sdboot | \
179 fsl,ls1046a-rdb-sdboot | \
180 fsl,ls1088a-rdb-sdboot | \
181 fsl,lx2160a-rdb-sdboot)
182 platform_do_upgrade_sdboot "$1"
183 return 0
184 ;;
185 *)
186 echo "Sysupgrade is not currently supported on $board"
187 ;;
188 esac
189 }