diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
old mode 100755
new mode 100644
index f84d9db..a2662c7
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -1691,8 +1691,9 @@
 			BOOT_IMAGE_HEADER_V2_OFFSET);
 		unsigned int recovery_dtbo_actual = 0;
 
-		imagesize_actual += ROUND_TO_PAGE(hdr1->recovery_dtbo_size,
-					page_mask);
+		recovery_dtbo_actual =
+			ROUND_TO_PAGE(hdr1->recovery_dtbo_size, page_mask);
+		imagesize_actual += recovery_dtbo_actual;
 
 		imagesize_actual += ROUND_TO_PAGE(hdr2->dtb_size, page_mask);
 
diff --git a/dev/gcdb/display/include/panel_truly_rm69090_qvga_cmd.h b/dev/gcdb/display/include/panel_truly_rm69090_qvga_cmd.h
old mode 100644
new mode 100755
index 9c073b6..5ee4cc6
--- a/dev/gcdb/display/include/panel_truly_rm69090_qvga_cmd.h
+++ b/dev/gcdb/display/include/panel_truly_rm69090_qvga_cmd.h
@@ -59,34 +59,46 @@
 /* Panel on/off command information                                          */
 /*---------------------------------------------------------------------------*/
 static char truly_rm69090_qvga_cmd_on_cmd0[] = {
-	0xFE, 0x00, 0x15, 0x80
+	0xFE, 0x01, 0x15, 0x80
 };
 
 static char truly_rm69090_qvga_cmd_on_cmd1[] = {
-	0x35, 0x00, 0x15, 0x80
+	0x6A, 0x03, 0x15, 0x80
 };
 
 static char truly_rm69090_qvga_cmd_on_cmd2[] = {
-	0x51, 0x80, 0x15, 0x80
+	0xFE, 0x00, 0x15, 0x80
 };
 
 static char truly_rm69090_qvga_cmd_on_cmd3[] = {
+	0x35, 0x00, 0x15, 0x80
+};
+
+static char truly_rm69090_qvga_cmd_on_cmd4[] = {
+	0x53, 0x20, 0x15, 0x80
+};
+
+static char truly_rm69090_qvga_cmd_on_cmd5[] = {
+	0x51, 0x80, 0x15, 0x80
+};
+
+static char truly_rm69090_qvga_cmd_on_cmd6[] = {
 	0x05, 0x00, 0x39, 0xC0,
 	0x2A, 0x00, 0x10, 0x01,
 	0x7F, 0xFF, 0xFF, 0xFF,
 };
 
-static char truly_rm69090_qvga_cmd_on_cmd4[] = {
+static char truly_rm69090_qvga_cmd_on_cmd7[] = {
 	0x05, 0x00, 0x39, 0xC0,
 	0x2B, 0x00, 0x00, 0x01,
 	0xBF, 0xFF, 0xFF, 0xFF,
 };
 
-static char truly_rm69090_qvga_cmd_on_cmd5[] = {
+static char truly_rm69090_qvga_cmd_on_cmd8[] = {
 	0x11, 0x00, 0x05, 0x80
 };
 
-static char truly_rm69090_qvga_cmd_on_cmd6[] = {
+static char truly_rm69090_qvga_cmd_on_cmd9[] = {
 	0x29, 0x00, 0x05, 0x80
 };
 
@@ -94,13 +106,16 @@
 	{0x4, truly_rm69090_qvga_cmd_on_cmd0, 0x00},
 	{0x4, truly_rm69090_qvga_cmd_on_cmd1, 0x00},
 	{0x4, truly_rm69090_qvga_cmd_on_cmd2, 0x00},
-	{0xc, truly_rm69090_qvga_cmd_on_cmd3, 0x00},
-	{0xc, truly_rm69090_qvga_cmd_on_cmd4, 0x00},
-	{0x4, truly_rm69090_qvga_cmd_on_cmd5, 0x78},
-	{0x4, truly_rm69090_qvga_cmd_on_cmd6, 0x40}
+	{0x4, truly_rm69090_qvga_cmd_on_cmd3, 0x00},
+	{0x4, truly_rm69090_qvga_cmd_on_cmd4, 0x00},
+	{0x4, truly_rm69090_qvga_cmd_on_cmd5, 0x00},
+	{0xc, truly_rm69090_qvga_cmd_on_cmd6, 0x00},
+	{0xc, truly_rm69090_qvga_cmd_on_cmd7, 0x00},
+	{0x4, truly_rm69090_qvga_cmd_on_cmd8, 0x78},
+	{0x4, truly_rm69090_qvga_cmd_on_cmd9, 0x40}
 };
 
-#define TRULY_RM69090_QVGA_CMD_ON_COMMAND 7
+#define TRULY_RM69090_QVGA_CMD_ON_COMMAND 10
 
 
 static char truly_rm69090_qvga_cmdoff_cmd0[] = {
diff --git a/platform/msm_shared/avb/libavb/avb_slot_verify.c b/platform/msm_shared/avb/libavb/avb_slot_verify.c
index d70a147..f44a145 100644
--- a/platform/msm_shared/avb/libavb/avb_slot_verify.c
+++ b/platform/msm_shared/avb/libavb/avb_slot_verify.c
@@ -175,7 +175,8 @@
     goto out;
   }
 
-  if (avb_strcmp((const char*)hash_desc.hash_algorithm, "sha256") == 0) {
+  if (avb_strncmp((const char*)hash_desc.hash_algorithm, "sha256",
+                  avb_strlen ("sha256")) == 0) {
     uint32_t complete_len = hash_desc.salt_len + hash_desc.image_size;
     digest = avb_malloc(AVB_SHA256_DIGEST_SIZE);
     if(digest == NULL || hash_desc.salt_len > SALT_BUFF_OFFSET )
@@ -189,7 +190,8 @@
     hash_find(image_buf, complete_len, digest, CRYPTO_AUTH_ALG_SHA256);
     image_buf = SUB_SALT_BUFF_OFFSET(image_buf) +  hash_desc.salt_len;
     digest_len = AVB_SHA256_DIGEST_SIZE;
-  } else if (avb_strcmp((const char*)hash_desc.hash_algorithm, "sha512") == 0) {
+  } else if (avb_strncmp((const char*)hash_desc.hash_algorithm, "sha512",
+                  avb_strlen ("sha512")) == 0) {
     AvbSHA512Ctx sha512_ctx;
     uint8_t *dig;
     digest = avb_malloc(AVB_SHA512_DIGEST_SIZE);
@@ -365,7 +367,7 @@
   size_t num_descriptors;
   size_t n;
   bool is_main_vbmeta;
-  bool is_vbmeta_partition;
+  bool look_for_vbmeta_footer;
   AvbVBMetaData* vbmeta_image_data = NULL;
 
   ret = AVB_SLOT_VERIFY_RESULT_OK;
@@ -377,7 +379,14 @@
    * vbmeta struct.
    */
   is_main_vbmeta = (rollback_index_location == 0);
-  is_vbmeta_partition = (avb_strcmp(partition_name, "vbmeta") == 0);
+
+  /* Don't use footers for vbmeta partitions ('vbmeta' or
+   * 'vbmeta_<partition_name>').
+   */
+  look_for_vbmeta_footer = true;
+  if (avb_strncmp(partition_name, "vbmeta", avb_strlen("vbmeta")) == 0) {
+    look_for_vbmeta_footer = false;
+  }
 
   if (!avb_validate_utf8((const uint8_t*)partition_name, partition_name_len)) {
     avb_error("Partition name is not valid UTF-8.\n");
@@ -407,7 +416,7 @@
 
   vbmeta_offset = 0;
   vbmeta_size = VBMETA_MAX_SIZE;
-  if (is_vbmeta_partition) {
+  if (is_main_vbmeta) {
     io_ret = ops->read_from_partition(ops,
                                     partition_name,
                                     vbmeta_offset,
@@ -419,40 +428,40 @@
       goto out;
     }
   } else {
-    uint8_t footer_buf[AVB_FOOTER_SIZE];
-    size_t footer_num_read;
-    AvbFooter footer;
+    if (look_for_vbmeta_footer) {
+      uint8_t footer_buf[AVB_FOOTER_SIZE];
+      size_t footer_num_read;
+      AvbFooter footer;
+      io_ret = ops->read_from_partition(ops,
+                                        partition_name,
+                                        -AVB_FOOTER_SIZE,
+                                        AVB_FOOTER_SIZE,
+                                        footer_buf,
+                                        &footer_num_read);
+      if (io_ret == AVB_IO_RESULT_ERROR_OOM) {
+        ret = AVB_SLOT_VERIFY_RESULT_ERROR_OOM;
+        goto out;
+      } else if (io_ret != AVB_IO_RESULT_OK) {
+        avb_errorv(full_partition_name, ": Error loading footer.\n", NULL);
+        ret = AVB_SLOT_VERIFY_RESULT_ERROR_IO;
+        goto out;
+      }
+      avb_assert(footer_num_read == AVB_FOOTER_SIZE);
 
-    io_ret = ops->read_from_partition(ops,
-                                      partition_name,
-                                      -AVB_FOOTER_SIZE,
-                                      AVB_FOOTER_SIZE,
-                                      footer_buf,
-                                      &footer_num_read);
-    if (io_ret == AVB_IO_RESULT_ERROR_OOM) {
-      ret = AVB_SLOT_VERIFY_RESULT_ERROR_OOM;
-      goto out;
-    } else if (io_ret != AVB_IO_RESULT_OK) {
-      avb_errorv(full_partition_name, ": Error loading footer.\n", NULL);
-      ret = AVB_SLOT_VERIFY_RESULT_ERROR_IO;
-      goto out;
-    }
-    avb_assert(footer_num_read == AVB_FOOTER_SIZE);
-
-    if (!avb_footer_validate_and_byteswap((const AvbFooter*)footer_buf,
-                                          &footer)) {
-      avb_errorv(full_partition_name, ": No footer detected.\n", NULL);
-    } else {
-      /* Basic footer sanity check since the data is untrusted. */
-      if (footer.vbmeta_size > VBMETA_MAX_SIZE) {
-        avb_errorv(
-            full_partition_name, ": Invalid vbmeta size in footer.\n", NULL);
+      if (!avb_footer_validate_and_byteswap((const AvbFooter*)footer_buf,
+                                            &footer)) {
+        avb_errorv(full_partition_name, ": No footer detected.\n", NULL);
       } else {
-        vbmeta_offset = footer.vbmeta_offset;
-        vbmeta_size = footer.vbmeta_size;
+        /* Basic footer sanity check since the data is untrusted. */
+        if (footer.vbmeta_size > VBMETA_MAX_SIZE) {
+          avb_errorv(
+              full_partition_name, ": Invalid vbmeta size in footer.\n", NULL);
+        } else {
+          vbmeta_offset = footer.vbmeta_offset;
+          vbmeta_size = footer.vbmeta_size;
+        }
       }
     }
-
     vbmeta_buf = avb_malloc(vbmeta_size); // for chain partitions
     if (vbmeta_buf == NULL) {
         ret = AVB_SLOT_VERIFY_RESULT_ERROR_OOM;
@@ -474,7 +483,7 @@
      * go try to get it from the boot partition instead.
      */
     if (is_main_vbmeta && io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION &&
-        is_vbmeta_partition) {
+        !look_for_vbmeta_footer) {
       avb_debugv(full_partition_name,
                  ": No such partition. Trying 'boot' instead.\n",
                  NULL);
diff --git a/platform/msm_shared/avb/libavb/avb_sysdeps.h b/platform/msm_shared/avb/libavb/avb_sysdeps.h
index 55e3e19..6ed7d4f 100644
--- a/platform/msm_shared/avb/libavb/avb_sysdeps.h
+++ b/platform/msm_shared/avb/libavb/avb_sysdeps.h
@@ -75,6 +75,14 @@
  */
 int avb_strcmp(const char* s1, const char* s2);
 
+/* Compare |n| bytes in two strings.
+ *
+ * Return an integer less than, equal to, or greater than zero if the
+ * first |n| bytes of |s1| is found, respectively, to be less than,
+ * to match, or be greater than the first |n| bytes of |s2|.
+ */
+int avb_strncmp(const char* s1, const char* s2, size_t n);
+
 /* Copy |n| bytes from |src| to |dest|. */
 void* avb_memcpy(void* dest, const void* src, size_t n);
 
diff --git a/platform/msm_shared/avb/libavb/avb_sysdeps_posix.c b/platform/msm_shared/avb/libavb/avb_sysdeps_posix.c
index dfbfc39..a155ac6 100644
--- a/platform/msm_shared/avb/libavb/avb_sysdeps_posix.c
+++ b/platform/msm_shared/avb/libavb/avb_sysdeps_posix.c
@@ -46,6 +46,10 @@
   return strcmp(s1, s2);
 }
 
+int avb_strncmp(const char* s1, const char* s2, size_t n) {
+  return strncmp(s1, s2, n);
+}
+
 size_t avb_strlen(const char* str) {
   return strlen(str);
 }
