Merge "ginstall: add flash unlock support for gflt"
diff --git a/ginstall/ginstall.py b/ginstall/ginstall.py
index 983d76c..5db5493 100755
--- a/ginstall/ginstall.py
+++ b/ginstall/ginstall.py
@@ -346,6 +346,13 @@
   return subprocess.call(cmd)
 
 
+def UnlockMtd(mtddevname):
+  """Unlocks an mtd partition."""
+  VerbosePrint('Unlocking flash partition %r\n', mtddevname)
+  cmd = ['flash_unlock', mtddevname]
+  return subprocess.call(cmd)
+
+
 def Nandwrite(f, mtddevname):
   """Write file to NAND flash using nandwrite."""
   cmd = ['nandwrite', '--quiet', '--markbad', mtddevname]
@@ -415,6 +422,9 @@
   """Write an image to an mtd device."""
   if not isinstance(f, FileWithSecureHash):
     f = FileWithSecureHash(f, None)
+  if GetPlatform().startswith('GFLT'):
+    if UnlockMtd(mtddevname):
+      raise IOError('Flash unlocking failed.')
   if EraseMtd(mtddevname):
     raise IOError('Flash erase failed.')
   VerbosePrint('Writing to mtd partition %r\n', mtddevname)
diff --git a/ginstall/install_test.sh b/ginstall/install_test.sh
index 38064f5..4338bac 100755
--- a/ginstall/install_test.sh
+++ b/ginstall/install_test.sh
@@ -182,7 +182,9 @@
 expected="\
 psback
 logos ginstall
+flash_unlock ${tmpdir}/dev/mtd6
 flash_erase --quiet ${tmpdir}/dev/mtd6 0 0
+flash_unlock ${tmpdir}/dev/mtd0
 flash_erase --quiet ${tmpdir}/dev/mtd0 0 0
 hnvram -q -w ACTIVATED_KERNEL_NAME=kernel0"
 
diff --git a/ginstall/testdata/bin/flash_unlock b/ginstall/testdata/bin/flash_unlock
new file mode 120000
index 0000000..3c2bde7
--- /dev/null
+++ b/ginstall/testdata/bin/flash_unlock
@@ -0,0 +1 @@
+write_args_to_file
\ No newline at end of file