layerscape: add Traverse LS1043-S support
[openwrt/openwrt.git] / target / linux / layerscape / base-files / lib / upgrade / platform.sh
1 #!/bin/sh
2 #
3 # Copyright 2015-2018 Traverse Technologies
4 #
5 platform_do_upgrade_traverse_nandubi() {
6 bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
7 newbootsys=2
8 if [ "$bootsys" -eq "2" ]; then
9 newbootsys=1
10 fi
11 mkdir -p /tmp/image
12 cd /tmp/image
13 get_image "$1" > image.tar
14 ls -la image.tar
15 files=$(tar -tf image.tar)
16 echo "Files in image:"
17 echo $files
18 for f in $files
19 do
20 part_name=$(echo $f | awk -F '/' '{{print $2}}')
21 if [ -z "$part_name" ] || [ "$part_name" = "CONTROL" ]; then
22 continue
23 fi
24
25 [ "$part_name" = "root" ] && part_name="rootfs"
26
27 volume=$part_name
28 if [ "$part_name" = "kernel" ] || [ "$part_name" = "rootfs" ]; then
29 volume="${part_name}${newbootsys}"
30 fi
31 volume_id=$(ubinfo -d 0 --name $volume | awk '/Volume ID/ {print $3}')
32 file_size=$(tar -tvf image.tar $f | awk '{{print $3}}')
33 echo "$f size $file_size"
34 tar -xOf image.tar $f | ubiupdatevol -s $file_size /dev/ubi0_$volume_id -
35
36 echo "$volume upgraded"
37 done
38 fw_setenv bootsys $newbootsys
39 echo "Upgrade complete"
40 }
41 platform_copy_config() {
42 bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
43 rootvol=rootfs$bootsys
44 volume_id=$(ubinfo -d 0 --name $rootvol | awk '/Volume ID/ {print $3}')
45 mkdir -p /mnt/oldsys
46 mount -t ubifs -o rw,noatime /dev/ubi0_$volume_id /mnt/oldsys
47 cp -af "$CONF_TAR" /mnt/oldsys
48 umount /mnt/oldsys
49 }
50 platform_check_image() {
51 local board=$(board_name)
52
53 case "$board" in
54 traverse,ls1043v | \
55 traverse,ls1043s | \
56 traverse,five64)
57 local tar_file="$1"
58 local kernel_length=$( (tar xf $tar_file sysupgrade-traverse-five64/kernel -O | wc -c) 2> /dev/null)
59 local rootfs_length=$( (tar xf $tar_file sysupgrade-traverse-five64/root -O | wc -c) 2> /dev/null)
60 [ "$kernel_length" -eq 0 -o "$rootfs_length" -eq 0 ] && {
61 echo "The upgrade image is corrupt."
62 return 1
63 }
64 return 0
65 ;;
66 *)
67 echo "Sysupgrade is not currently supported on $board"
68 ;;
69 esac
70
71 return 1
72 }
73 platform_do_upgrade() {
74 local board=$(board_name)
75
76 case "$board" in
77 traverse,ls1043v | \
78 traverse,ls1043s | \
79 traverse,five64)
80 platform_do_upgrade_traverse_nandubi "$ARGV"
81 ;;
82 *)
83 echo "Sysupgrade is not currently supported on $board"
84 ;;
85 esac
86 }
87 platform_pre_upgrade() {
88 # Force the creation of fw_printenv.lock
89 mkdir -p /var/lock
90 touch /var/lock/fw_printenv.lock
91
92 export RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo ${RAMFS_COPY_BIN}"
93 export RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock ${RAMFS_COPY_DATA}"
94 }