layerscape: remove Traverse LS1043 boards
[openwrt/openwrt.git] / target / linux / layerscape / base-files / lib / upgrade / platform.sh
index a2ee81cf3a0284465dc78cb27611f17622141dfc..0b5d14b579cfbb1d3294239da89368b3c788d7a1 100644 (file)
-#!/bin/sh
 #
 # Copyright 2015-2019 Traverse Technologies
+# Copyright 2020 NXP
 #
 
 RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo"
 RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock"
 
-platform_do_upgrade_traverse_nandubi() {
-       bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
-       newbootsys=2
-       if [ "$bootsys" -eq "2" ]; then
-               newbootsys=1
+REQUIRE_IMAGE_METADATA=1
+
+platform_do_upgrade_sdboot() {
+       local diskdev partdev parttype=ext4
+       local tar_file="$1"
+       local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
+       board_dir=${board_dir%/}
+
+       export_bootdevice && export_partdevice diskdev 0 || {
+               echo "Unable to determine upgrade device"
+               return 1
+       }
+
+       if export_partdevice partdev 1; then
+               mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
+               echo "Writing kernel..."
+               tar xf $tar_file ${board_dir}/kernel -O > /mnt/fitImage
+               umount /mnt
+       fi
+
+       echo "Erasing rootfs..."
+       dd if=/dev/zero of=/dev/mmcblk0p2 bs=1M > /dev/null 2>&1
+       echo "Writing rootfs..."
+       tar xf $tar_file ${board_dir}/root -O  | dd of=/dev/mmcblk0p2 bs=512k > /dev/null 2>&1
+
+}
+
+platform_do_upgrade_traverse_slotubi() {
+       part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
+       echo "Active boot slot: ${part}"
+       new_active_sys="b"
+
+       if [ ! -z "${part}" ]; then
+               if [ "${part}" = "ubia" ]; then
+                       CI_UBIPART="ubib"
+               else
+                       CI_UBIPART="ubia"
+                       new_active_sys="a"
+               fi
        fi
+       echo "Updating UBI part ${CI_UBIPART}"
+       fw_setenv "openwrt_active_sys" "${new_active_sys}"
+       nand_do_upgrade "$1"
+       return $?
+}
 
-       # If nand_do_upgrade succeeds, we don't have an opportunity to add any actions of
-       # our own, so do it here and set back on failure
-       echo "Setting bootsys to #${newbootsys}"
-       fw_setenv bootsys $newbootsys
-       CI_UBIPART="nandubi"
-       CI_KERNPART="kernel${newbootsys}"
-       CI_ROOTPART="rootfs${newbootsys}"
-       nand_do_upgrade "$1" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
+platform_copy_config_sdboot() {
+       local diskdev partdev parttype=ext4
 
+       export_bootdevice && export_partdevice diskdev 0 || {
+               echo "Unable to determine upgrade device"
+               return 1
+       }
+
+       if export_partdevice partdev 1; then
+               mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
+               echo "Saving config backup..."
+               cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
+               umount /mnt
+       fi
+}
+platform_copy_config() {
+       local board=$(board_name)
+
+       case "$board" in
+       fsl,ls1012a-frwy-sdboot | \
+       fsl,ls1021a-iot-sdboot | \
+       fsl,ls1021a-twr-sdboot | \
+       fsl,ls1028a-rdb-sdboot | \
+       fsl,ls1043a-rdb-sdboot | \
+       fsl,ls1046a-frwy-sdboot | \
+       fsl,ls1046a-rdb-sdboot | \
+       fsl,ls1088a-rdb-sdboot | \
+       fsl,lx2160a-rdb-sdboot)
+               platform_copy_config_sdboot
+               ;;
+       esac
 }
 platform_check_image() {
        local board=$(board_name)
 
        case "$board" in
-       traverse,ls1043v | \
-       traverse,ls1043s)
-               nand_do_platform_check "traverse-ls1043" $1
+       traverse,ten64)
+               nand_do_platform_check "ten64-mtd" $1
                return $?
                ;;
-       fsl,ls1012a-frdm)
+       fsl,ls1012a-frdm | \
+       fsl,ls1012a-frwy-sdboot | \
+       fsl,ls1012a-rdb | \
+       fsl,ls1021a-iot-sdboot | \
+       fsl,ls1021a-twr | \
+       fsl,ls1021a-twr-sdboot | \
+       fsl,ls1028a-rdb | \
+       fsl,ls1028a-rdb-sdboot | \
+       fsl,ls1043a-rdb | \
+       fsl,ls1043a-rdb-sdboot | \
+       fsl,ls1046a-frwy | \
+       fsl,ls1046a-frwy-sdboot | \
+       fsl,ls1046a-rdb | \
+       fsl,ls1046a-rdb-sdboot | \
+       fsl,ls1088a-rdb | \
+       fsl,ls1088a-rdb-sdboot | \
+       fsl,ls2088a-rdb | \
+       fsl,lx2160a-rdb | \
+       fsl,lx2160a-rdb-sdboot)
                return 0
                ;;
        *)
@@ -50,14 +128,34 @@ platform_do_upgrade() {
        touch /var/lock/fw_printenv.lock
 
        case "$board" in
-       traverse,ls1043v | \
-       traverse,ls1043s)
-               platform_do_upgrade_traverse_nandubi "$1"
+       traverse,ten64)
+               platform_do_upgrade_traverse_slotubi "${1}"
                ;;
-       fsl,ls1012a-frdm)
+       fsl,ls1012a-frdm | \
+       fsl,ls1012a-rdb | \
+       fsl,ls1021a-twr | \
+       fsl,ls1028a-rdb | \
+       fsl,ls1043a-rdb | \
+       fsl,ls1046a-frwy | \
+       fsl,ls1046a-rdb | \
+       fsl,ls1088a-rdb | \
+       fsl,ls2088a-rdb | \
+       fsl,lx2160a-rdb)
                PART_NAME=firmware
                default_do_upgrade "$1"
                ;;
+       fsl,ls1012a-frwy-sdboot | \
+       fsl,ls1021a-iot-sdboot | \
+       fsl,ls1021a-twr-sdboot | \
+       fsl,ls1028a-rdb-sdboot | \
+       fsl,ls1043a-rdb-sdboot | \
+       fsl,ls1046a-frwy-sdboot | \
+       fsl,ls1046a-rdb-sdboot | \
+       fsl,ls1088a-rdb-sdboot | \
+       fsl,lx2160a-rdb-sdboot)
+               platform_do_upgrade_sdboot "$1"
+               return 0
+               ;;
        *)
                echo "Sysupgrade is not currently supported on $board"
                ;;