summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2016-12-12 17:34:27 -0800
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2017-01-11 13:38:42 +0100
commit05faa6a4346eeb7631fe72bcbb9aa7d414bee791 (patch)
treea8e97e5a4723de1d495faf0ef515c91240c5bea3
parenta04088c51e85ea49c436f6564ac2c5552890166c (diff)
The boot partition configuration needs to be done _after_ writing to the boot partition (hence after flashing SPL and U-Boot). Move the whole migration script to the end by using the wrapup.sh script. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
-rw-r--r--recipes-bsp/tezi-metadata/files/apalis-imx6/prepare.sh67
-rw-r--r--recipes-bsp/tezi-metadata/files/apalis-imx6/wrapup.sh75
2 files changed, 75 insertions, 67 deletions
diff --git a/recipes-bsp/tezi-metadata/files/apalis-imx6/prepare.sh b/recipes-bsp/tezi-metadata/files/apalis-imx6/prepare.sh
deleted file mode 100644
index 858faab..0000000
--- a/recipes-bsp/tezi-metadata/files/apalis-imx6/prepare.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-#
-# (c) Toradex AG 2016
-#
-# Apalis iMX6 in-field hardware update script
-#
-# One-time configurations (non-reversible!):
-# - Fuse SoC to use eMMC Fast Boot mode
-# - Enable eMMC H/W reset capabilities
-# Required configurations
-# - Configure Boot Bus mode (due to eMMC Fast Boot mode above)
-#
-# Other configurations
-# - Boot from eMMC boot partition
-#
-
-PRODUCT_ID=$1
-BOARD_REV=$2
-SERIAL=$3
-IMAGE_FOLDER=$4
-
-error_exit () {
- echo "$1" 1>&2
- exit 1
-}
-
-# Do a basic validation that we do this on one of our modules
-case $PRODUCT_ID in
-0027|0028|0029|0035) ;;
-*) error_exit "This script is meant to be run on a Apalis iMX6. Aborting...";
-esac
-
-# Fuse SoC's BOOT_CFG to enable eMMC Fast Boot mode, if necsary
-# WARNING: Fusing is a one-time operation, do not change values
-# here unless you are absolutely sure what your are doing.
-if [ ! -f /sys/fsl_otp/HW_OCOTP_CFG4 ]; then
- echo "Fusing not supported."
-elif grep -q 0x5072 /sys/fsl_otp/HW_OCOTP_CFG4; then
- echo "No new value for BOOT_CFG required."
-else
- echo 0x5072 > /sys/fsl_otp/HW_OCOTP_CFG4
- if [ "$?" != "0" ]; then
- error_exit "Writing fuse BOOT_CFG failed! Aborting..."
- fi
-fi
-
-# eMMC configurations
-MMCDEV=/dev/mmcblk0
-
-# Set boot bus mode
-if ! mmc bootbus set single_hs x1 x8 ${MMCDEV}; then
- error_exit "Setting boot bus mode failed"
-fi
-
-# Enable eMMC boot partition 1 (mmcblkXboot0) and boot ack
-if ! mmc bootpart enable 1 1 ${MMCDEV}; then
- error_exit "Setting bootpart failed"
-fi
-
-# Enable eMMC H/W Reset feature
-# Since this is a one-time operation, it will fail the second time. Ignore
-# errors and redirect stderr to stdout.
-mmc hwreset enable ${MMCDEV} 2>&1
-
-echo "Apalis iMX6 in-field hardware update script ended successfully."
-
-exit 0
diff --git a/recipes-bsp/tezi-metadata/files/apalis-imx6/wrapup.sh b/recipes-bsp/tezi-metadata/files/apalis-imx6/wrapup.sh
index c52d3c2..2588776 100644
--- a/recipes-bsp/tezi-metadata/files/apalis-imx6/wrapup.sh
+++ b/recipes-bsp/tezi-metadata/files/apalis-imx6/wrapup.sh
@@ -1,3 +1,78 @@
#!/bin/sh
+#
+# (c) Toradex AG 2016
+#
+# Apalis iMX6 in-field hardware update script
+#
+# One-time configurations (non-reversible!):
+# - Fuse SoC to use eMMC Fast Boot mode
+# - Enable eMMC H/W reset capabilities
+# Required configurations
+# - Configure Boot Bus mode (due to eMMC Fast Boot mode above)
+#
+# Other configurations
+# - Boot from eMMC boot partition (must run as wrapup script)
+#
+
+PRODUCT_ID=$1
+BOARD_REV=$2
+SERIAL=$3
+IMAGE_FOLDER=$4
+
+error_exit () {
+ echo "$1" 1>&2
+ exit 1
+}
+
+# Do a basic validation that we do this on one of our modules
+case $PRODUCT_ID in
+0027|0028|0029|0035) ;;
+*) error_exit "This script is meant to be run on a Apalis iMX6. Aborting...";
+esac
+
+# Fuse SoC's BOOT_CFG to enable eMMC Fast Boot mode, if necsary
+# WARNING: Fusing is a one-time operation, do not change values
+# here unless you are absolutely sure what your are doing.
+BOOT_CFG=0x5072
+if [ ! -f /sys/fsl_otp/HW_OCOTP_CFG4 ]; then
+ echo "Fusing not supported."
+elif grep -q ${BOOT_CFG} /sys/fsl_otp/HW_OCOTP_CFG4; then
+ echo "No new value for BOOT_CFG required."
+else
+ echo ${BOOT_CFG} > /sys/fsl_otp/HW_OCOTP_CFG4
+ if [ "$?" != "0" ]; then
+ error_exit "Writing fuse BOOT_CFG failed! Aborting..."
+ fi
+ echo "Fuse BOOT_CFG updated to ${BOOT_CFG}."
+fi
+
+# eMMC configurations
+MMCDEV=/dev/mmcblk0
+
+# Enable eMMC H/W Reset feature. This need to be executed before the other
+# eMMC settings, it seems that this command resets all settings.
+# Since this is a one-time operation, it will fail the second time. Ignore
+# errors and redirect stderr to stdout.
+mmc hwreset enable ${MMCDEV} 2>&1
+if [ "$?" == "0" ]; then
+ echo "H/W Reset permanently enabled on ${MMCDEV}"
+fi
+
+# Set boot bus mode
+if ! mmc bootbus set single_hs x1 x8 ${MMCDEV}; then
+ error_exit "Setting boot bus mode failed"
+fi
+
+# Enable eMMC boot partition 1 (mmcblkXboot0) and boot ack
+# Make sure everything hit the eMMC when execute this command. Otherwise
+# the eMMC will reset the configuration.
+sync
+if ! mmc bootpart enable 1 1 ${MMCDEV}; then
+ error_exit "Setting bootpart failed"
+fi
+
+mmc extcsd read ${MMCDEV} | grep -e BOOT_BUS_CONDITIONS -e PARTITION_CONFIG -e RST_N_FUNCTION
+
+echo "Apalis iMX6 in-field hardware update script ended successfully."
exit 0