Add nexus_clear_eflash function

Additionally we use this function at the end of nexus_flash to reset the
board and boot from the just-flashed image

Change-Id: Ia1915a32a3dcfd08771757773ff8ed65e49ae572
diff --git a/platforms/nexus/setup.sh b/platforms/nexus/setup.sh
index 61951c0..d23a6cf 100644
--- a/platforms/nexus/setup.sh
+++ b/platforms/nexus/setup.sh
@@ -158,6 +158,23 @@
     opentitantool gpio write RESET true
 }
 
+function nexus_clear_eflash
+{
+    # Clear the first page of the eflash to prevent restarting from the
+    # loaded program at the next soft reset.
+    if [[ -z "${NEXUS_ID}" ]]; then
+        echo "Run set-nexus-id first"
+        return 1
+    fi
+
+    echo "Clearing nexus-${NEXUS_ID} eflash"
+    local zeros=$(mktemp)
+    dd if=/dev/zero of=${zeros} bs=512 count=1
+    nexus_reset
+    opentitantool bootstrap "${zeros}"
+    rm ${zeros}
+}
+
 function nexus_flash
 {
     # Write tar file to nexus SPI flash and verify
@@ -208,7 +225,7 @@
     fi
     rm "${readback_file}"
 
-    nexus_reset
+    nexus_clear_eflash # overwrite spi_passthrough in eflash
 }
 
 function nexus_clear_flash
diff --git a/platforms/sparrow/setup.sh b/platforms/sparrow/setup.sh
index 6bebc9d..93cbecd 100644
--- a/platforms/sparrow/setup.sh
+++ b/platforms/sparrow/setup.sh
@@ -154,6 +154,23 @@
     opentitantool gpio write RESET true
 }
 
+function sparrow_clear_eflash
+{
+    # Clear the first page of the eflash to prevent restarting from the
+    # loaded program at the next soft reset.
+    if [[ -z "${SPARROW_ID}" ]]; then
+        echo "Run set-sparrow-id first"
+        return 1
+    fi
+
+    echo "Clearing sparrow-${SPARROW_ID} eflash"
+    local zeros=$(mktemp)
+    dd if=/dev/zero of=${zeros} bs=512 count=1
+    sparrow_reset
+    opentitantool bootstrap "${zeros}"
+    rm ${zeros}
+}
+
 function sparrow_flash
 {
     # Write tar file to sparrow SPI flash and verify
@@ -204,7 +221,7 @@
     fi
     rm "${readback_file}"
 
-    sparrow_reset
+    sparrow_clear_eflash
 }
 
 function sparrow_clear_flash