summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Klug <john.klug@multitech.com>2021-10-27 11:35:14 -0500
committerAndrii Pientsov <andrii.pientsov@globallogic.com>2021-11-17 16:05:58 +0200
commit09f86010fa32f39906800c694447e892a5e5ce05 (patch)
treed822590a2349f85ac9c15b83bf59da87d0a83900
parent473d2079064cdd361a7510b0f0d19bbb9ab17a5a (diff)
downloadmeta-mlinux-atmel-09f86010fa32f39906800c694447e892a5e5ce05.tar.gz
meta-mlinux-atmel-09f86010fa32f39906800c694447e892a5e5ce05.tar.bz2
meta-mlinux-atmel-09f86010fa32f39906800c694447e892a5e5ce05.zip
mlinux-firmware-upgrade with factory reset
-rwxr-xr-xrecipes-core/mlinux-scripts/mlinux-scripts/mlinux-firmware-upgrade66
-rw-r--r--recipes-core/mlinux-scripts/mlinux-scripts_%.bbappend2
2 files changed, 62 insertions, 6 deletions
diff --git a/recipes-core/mlinux-scripts/mlinux-scripts/mlinux-firmware-upgrade b/recipes-core/mlinux-scripts/mlinux-scripts/mlinux-firmware-upgrade
index a377309..a6e6d68 100755
--- a/recipes-core/mlinux-scripts/mlinux-scripts/mlinux-firmware-upgrade
+++ b/recipes-core/mlinux-scripts/mlinux-scripts/mlinux-firmware-upgrade
@@ -1,9 +1,41 @@
#!/bin/bash
dofile=/var/volatile/do_flash_upgrade
+dofactoryreset=0
+id=$(id -u)
+function usage {
+ echo "Usage: $0 -f upgrade.bin"
+ echo " \"-f\" factory reset"
+ echo " \"-h\" help"
+ exit 1
+}
+if (($(id -u) != 0)) ; then
+ echo "You must be root to do a flash upgrade"
+ exit 1
+fi
+while getopts "hf" arg; do
+ case $arg in
+ h)
+ usage
+ exit 1
+ ;;
+ f)
+ mtd=$(cat /proc/mtd)
+ if ! [[ $mtd =~ at91bootstrap ]] ; then
+ echo Factory reset option is only supported on Atmel devices
+ exit 1
+ fi
+ dofactoryreset=1
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+shift $((OPTIND-1))
+
if [ $# != 1 ]; then
- echo "Usage: $0 upgrade.bin"
- exit 1
+ usage
fi
set -e
@@ -45,6 +77,23 @@ for (( i = 0; i < ${#files[@]}; i++ )); do
done
if (( $tobeflashed )); then
+ if ((dofactoryreset == 1)) ; then
+ for name in "u-Boot Config" "u-Boot Redundant Config" ; do
+ part=$(echo "$mtd" | grep "$name" | sed 's/:.*//')
+ if [[ $part =~ ^mtd[0-9] ]] ; then
+ flash_erase /dev/${part} 0 0
+ fi
+ done
+ fuser -mk /var/config || true
+ for name in "User data" "Config" ; do
+ part=$(echo "$mtd" | grep "\"$name\"" | sed 's/:.*//')
+ num=$(echo "$part" | sed 's/mtd//')
+ if [[ $part =~ ^mtd[0-9] ]] ; then
+ umount -l /dev/mtdblock${num} || true
+ flash_erase -j /dev/${part} 0 0
+ fi
+ done
+ fi
mkdir -p /var/volatile/flash-upgrade
mv -f $upgrade /var/volatile/flash-upgrade/upgrade.bin
touch "${dofile}"
@@ -59,9 +108,16 @@ if (( $tobeflashed )); then
logger -s -t firmware_upgrade "Cannot set ownership of ${dofile} to root"
exit 1
fi
- logger -s -t firmware_upgrade "Rebooting"
- sleep 1
- reboot
+ if ((dofactoryreset == 1)) ; then
+ logger -s -t firmware_upgrade "Power Off"
+ sleep 1
+ poweroff
+ else
+ logger -s -t firmware_upgrade "Rebooting"
+ sleep 1
+ reboot
+ fi
+ # NOTREACHED
exit 0
else
logger -s -t firmware_upgrade "Nothing to be flashed!"
diff --git a/recipes-core/mlinux-scripts/mlinux-scripts_%.bbappend b/recipes-core/mlinux-scripts/mlinux-scripts_%.bbappend
index ecda287..39c0807 100644
--- a/recipes-core/mlinux-scripts/mlinux-scripts_%.bbappend
+++ b/recipes-core/mlinux-scripts/mlinux-scripts_%.bbappend
@@ -1,6 +1,6 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-PR .= ".mlinux0"
+PR .= ".mlinux1"
SRC_URI += " \
file://mlinux-firmware-upgrade \