Add DFU single-device targeting to arm64 SHI

This is a breaking change so this is a v2. The
device expects to receive a variable 'DFUethaddr'
from the TFTP server during DFU. If this matches
the MAC address of the device or if it's blank,
which means it's an update targeting all devices,
then the update is applied. This is backwards
compatible since omitted variables are empty
by default.

BUG: 144182574
Test: untested as yet
Change-Id: I2fde4d5de88d81ceee3095bb1960300e0f95b2e1
diff --git a/tools/create_base_image_arm.sh b/tools/create_base_image_arm.sh
index 4cd673b..d79334b 100755
--- a/tools/create_base_image_arm.sh
+++ b/tools/create_base_image_arm.sh
@@ -203,15 +203,17 @@
 	setenv OldSha ${Sha}
 	setenv Sha
 	env import -t ${scriptaddr} 0x8000 ManifestVersion
+	echo "Manifest version $ManifestVersion";
 	if test "$ManifestVersion" = "1"; then
 		run manifest1
+	elif test "$ManifestVersion" = "2"; then
+		run manifest2
 	else
 		run manifestX
 	fi
 fi'
 setenv manifestX 'echo "***** ERROR: Unknown manifest version! *****";'
 setenv manifest1 '
-echo "Manifest version 1";
 env import -t ${scriptaddr} 0x8000
 if test "$Sha" != "$OldSha"; then
 	setenv serverip ${TftpServer}
@@ -228,6 +230,27 @@
 else
 	echo "Already have ${Sha}. Booting..."
 fi'
+setenv manifest2 '
+env import -t ${scriptaddr} 0x8000
+if test "$DFUethaddr" = "$ethaddr" || test "$DFUethaddr" = ""; then
+	if test "$Sha" != "$OldSha"; then
+		setenv serverip ${TftpServer}
+		setenv loadaddr 0x00200000
+		mmc dev 0 0;
+		file=$TplSplImg; offset=0x40; size=0x1f80; run tftpget1; setenv TplSplImg
+		file=$UbootItb;  offset=0x4000; size=0x2000; run tftpget1; setenv UbootItb
+		file=$TrustImg; offset=0x6000; size=0x2000; run tftpget1; setenv TrustImg
+		file=$RootfsImg; offset=0x8000; size=0; run tftpget1; setenv RootfsImg
+		file=$UbootEnv; offset=0x1fc0; size=0x40; run tftpget1; setenv UbootEnv
+		mw.b ${scriptaddr} 0 0x8000
+		env export -b ${scriptaddr} 0x8000
+		mmc write ${scriptaddr} 0x1fc0 0x40
+	else
+		echo "Already have ${Sha}. Booting..."
+	fi
+else
+	echo "Update ${Sha} isn't for me. Booting..."
+fi'
 setenv tftpget1 "
 mw.b ${loadaddr} 0 0x400000
 && tftp ${file}