# # 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" 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_nandubi() { bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}') newbootsys=2 if [ "$bootsys" -eq "2" ]; then newbootsys=1 fi # 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,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 return $? ;; fsl,ls1012a-frdm | \ fsl,ls1012a-frwy-sdboot | \ fsl,ls1012a-rdb | \ fsl,ls1021a-iot-sdboot | \ fsl,ls1021a-twr | \ fsl,ls1021a-twr-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 ;; *) echo "Sysupgrade is not currently supported on $board" ;; esac return 1 } platform_do_upgrade() { local board=$(board_name) # Force the creation of fw_printenv.lock mkdir -p /var/lock touch /var/lock/fw_printenv.lock case "$board" in traverse,ls1043v | \ traverse,ls1043s) platform_do_upgrade_traverse_nandubi "$1" ;; fsl,ls1012a-frdm | \ fsl,ls1012a-rdb | \ fsl,ls1021a-twr | \ 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,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" ;; esac }