Merge "platform: msm8952: Add QCM2150 support to msm8952"
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);
}
diff --git a/target/init.c b/target/init.c
index fa30f3e..bb40155 100644
--- a/target/init.c
+++ b/target/init.c
@@ -315,6 +315,7 @@
case SDA429:
case SDA439:
case QM215:
+ case QCM2150:
/* SDCC HC DDR CONFIG has shifted by 4 bytes for these platform */
ret += 4;
break;
@@ -405,6 +406,7 @@
case SDA429:
case SDA439:
case QM215:
+ case QCM2150:
case SDM429W:
config->vib_type = VIB_LRA_TYPE;
config->hap_rate_cfg1 = QPNP_HAP_RATE_CFG1_41;
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index c7f2da3..8446481 100755
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -428,6 +428,7 @@
case SDM439:
case SDM429W:
case QM215:
+ case QCM2150:
board->baseband = BASEBAND_MSM;
break;
case APQ8052: