Merge "platform: msm_shared: Update tune2 parameters from fuse"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 575e8e4..86b1f92 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -1084,7 +1084,16 @@
*/
if (is_gzip_package((unsigned char *)(image_addr + page_size), hdr->kernel_size))
{
+#ifdef ABOOT_IGNORE_BOOT_HEADER_ADDRS
+ /* Set default kernel decompression output address to be ABOOT_FORCE_KERNEL64_ADDR.
+ * Most likely gzip compressed kernel is used by arm64 kernel,
+ * and it is using ABOOT_FORCE_KERNEL64_ADDR for kernel start address.
+ * It can avoid an unnecessary memmove afterwords.
+ */
+ out_addr = (unsigned char *) ABOOT_FORCE_KERNEL64_ADDR;
+#else
out_addr = (unsigned char *)(image_addr + imagesize_actual + page_size);
+#endif
out_avai_len = target_get_max_flash_size() - imagesize_actual - page_size;
dprintf(INFO, "decompressing kernel image: start\n");
rc = decompress((unsigned char *)(image_addr + page_size),
@@ -1978,8 +1987,17 @@
*/
if (is_gzip_package((unsigned char *)(data + page_size), hdr->kernel_size))
{
+#ifdef ABOOT_IGNORE_BOOT_HEADER_ADDRS
+ /* Set default kernel decompression output address to be ABOOT_FORCE_KERNEL64_ADDR.
+ * Most likely gzip compressed kernel is used by arm64 kernel,
+ * and it is using ABOOT_FORCE_KERNEL64_ADDR for kernel start address.
+ * It can avoid an unnecessary memmove afterwords.
+ */
+ out_addr = (unsigned char *) ABOOT_FORCE_KERNEL64_ADDR;
+#else
out_addr = (unsigned char *)target_get_scratch_address();
out_addr = (unsigned char *)(out_addr + image_actual + page_size);
+#endif
out_avai_len = target_get_max_flash_size() - image_actual - page_size;
dprintf(INFO, "decompressing kernel image: start\n");
ret = decompress((unsigned char *)(ptr + page_size),
diff --git a/app/aboot/mdtp.c b/app/aboot/mdtp.c
index 8ed312b..578f4de 100644
--- a/app/aboot/mdtp.c
+++ b/app/aboot/mdtp.c
@@ -752,7 +752,6 @@
static int mdtp_tzbsp_dec_verify_DIP(DIP_t *enc_dip, DIP_t *dec_dip, uint32_t *verified)
{
unsigned char hash[HASH_LEN];
- unsigned char buf[HASH_LEN], digest[HASH_LEN];
SHA256_CTX sha256_ctx;
int ret;
@@ -763,9 +762,6 @@
arch_clean_invalidate_cache_range((addr_t)enc_dip, sizeof(DIP_t));
arch_invalidate_cache_range((addr_t)dec_dip, sizeof(DIP_t));
- /* workaround: Dummy call to hash_find prevents a boot loop when using the CE from TZ */
- hash_find(buf, HASH_LEN, digest, CRYPTO_AUTH_ALG_SHA1);
-
ret = mdtp_cipher_dip_cmd((uint8_t*)enc_dip, sizeof(DIP_t),
(uint8_t*)dec_dip, sizeof(DIP_t),
DIP_DECRYPT);
@@ -799,7 +795,6 @@
/* Encrypt a given DIP and calculate its integrity information */
static int mdtp_tzbsp_enc_hash_DIP(DIP_t *dec_dip, DIP_t *enc_dip)
{
- unsigned char buf[HASH_LEN], digest[HASH_LEN];
SHA256_CTX sha256_ctx;
int ret;
@@ -813,9 +808,6 @@
arch_clean_invalidate_cache_range((addr_t)dec_dip, sizeof(DIP_t));
arch_invalidate_cache_range((addr_t)enc_dip, sizeof(DIP_t));
- /* workaround: Dummy call to hash_find prevents a boot loop when using the CE from TZ */
- hash_find(buf, HASH_LEN, digest, CRYPTO_AUTH_ALG_SHA1);
-
ret = mdtp_cipher_dip_cmd((uint8_t*)dec_dip, sizeof(DIP_t),
(uint8_t*)enc_dip, sizeof(DIP_t),
DIP_ENCRYPT);
diff --git a/app/aboot/mdtp_fuse.c b/app/aboot/mdtp_fuse.c
index 81351f4..a66f87b 100644
--- a/app/aboot/mdtp_fuse.c
+++ b/app/aboot/mdtp_fuse.c
@@ -32,12 +32,11 @@
#include <partition_parser.h>
#include <string.h>
#include <stdlib.h>
-
+#include <reg.h>
#include "mdtp.h"
#include "scm.h"
#define MAX_METADATA_SIZE (0x1000)
-#define QFPROM_ADDR_SPACE_RAW (0)
/********************************************************************************/
@@ -156,21 +155,12 @@
*/
static int read_QFPROM_fuse(uint8_t *mask)
{
- static const uint32_t row_address = MDTP_EFUSE_ADDRESS;
- uint32_t addr_type = QFPROM_ADDR_SPACE_RAW;
- uint32_t row_data[2] = {0};
- uint32_t qfprom_api_status = 0;
+ uint32_t val = 0;
- /* Read the current row where the eFuse is located */
- (void) qfprom_read_row_cmd(row_address, addr_type, row_data, &qfprom_api_status);
- if (qfprom_api_status)
- {
- dprintf(CRITICAL, "mdtp: write_QFPROM_fuse: qsee_fuse_read failed. qfprom_api_status=%d", qfprom_api_status);
- return -1;
- }
+ val = readl(MDTP_EFUSE_ADDRESS);
/* Shift the read data to be reflected in mask */
- *mask = (uint8_t)(row_data[0] >> MDTP_EFUSE_START);
+ *mask = (uint8_t)(val >> MDTP_EFUSE_START);
return 0;
}
diff --git a/app/aboot/mdtp_ui.c b/app/aboot/mdtp_ui.c
index fcf7259..dcdf75f 100644
--- a/app/aboot/mdtp_ui.c
+++ b/app/aboot/mdtp_ui.c
@@ -34,33 +34,7 @@
#include <stdlib.h>
#include <string.h>
#include "mdtp.h"
-
-// Image dimensions
-#define MDTP_ERROR_MSG_WIDTH (1412)
-#define MDTP_ERROR_MSG_HEIGHT (212)
-#define MDTP_MAIN_TEXT_WIDTH (1364)
-#define MDTP_MAIN_TEXT_HEIGHT (288)
-#define MDTP_PIN_DIGIT_WIDTH (180)
-#define MDTP_PIN_DIGIT_HEIGHT (180)
-#define MDTP_OK_BUTTON_WIDTH (644)
-#define MDTP_OK_BUTTON_HEIGHT (158)
-#define MDTP_DIGITS_INSTRUCTIONS_WIDTH (1384)
-#define MDTP_DIGITS_INSTRUCTIONS_HEIGHT (166)
-#define MDTP_PIN_INSTRUCTIONS_WIDTH (920)
-#define MDTP_PIN_INSTRUCTIONS_HEIGHT (204)
-
-// Image offsets
-#define MDTP_ERROR_MSG_OFFSET (0x1000)
-#define MDTP_INITIAL_DELAY_OFFSET (0xDD000)
-#define MDTP_ENTER_PIN_OFFSET (0x1FD000)
-#define MDTP_INVALID_PIN_OFFSET (0x31D000)
-#define MDTP_PIN_DIGIT_0_OFFSET (0x43D000)
-#define MDTP_PIN_DIGITS_OFFSET (0x18000)
-#define MDTP_PIN_SELECTED_DIGIT_0_OFFSET (MDTP_PIN_DIGIT_0_OFFSET + 10*MDTP_PIN_DIGITS_OFFSET) // (0x52D000)
-#define MDTP_OK_BUTTON_OFFSET (0x61D000)
-#define MDTP_SELECTED_OK_BUTTON_OFFSET (0x668000)
-#define MDTP_DIGITS_INSTRUCTIONS_OFFSET (0x6B3000)
-#define MDTP_PIN_INSTRUCTIONS_OFFSET (0x75C000)
+#include "mdtp_ui_defs.h"
// Image releative locations
#define ERROR_MESSAGE_RELATIVE_Y_LOCATION (0.18)
@@ -70,8 +44,6 @@
#define OK_BUTTON_RELATIVE_Y_LOCATION (0.75)
#define OK_TEXT_RELATIVE_Y_LOCATION (0.82)
-#define DIGIT_SPACE (12)
-
#define MDTP_PRESSING_DELAY_MSEC (400)
#define MDTP_MAX_IMAGE_SIZE (1183000) //size in bytes, includes some extra bytes since we round up to block size in read
#define RGB888_BLACK (0x000000)
@@ -90,6 +62,8 @@
uint8_t image[MDTP_MAX_IMAGE_SIZE];
};
+struct mdtp_ui_defs mdtp_ui_defs_data;
+
/*----------------------------------------------------------------------------
* Global Variables
* -------------------------------------------------------------------------*/
@@ -286,10 +260,10 @@
if (fb_config)
{
- uint32_t x = CENTER_IMAGE_ON_X_AXIS(MDTP_ERROR_MSG_WIDTH,fb_config->width);
+ uint32_t x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.error_msg_width,fb_config->width);
uint32_t y = ((fb_config->height)*ERROR_MESSAGE_RELATIVE_Y_LOCATION);
- fbimg = mdtp_read_mmc_image(MDTP_ERROR_MSG_OFFSET, MDTP_ERROR_MSG_WIDTH, MDTP_ERROR_MSG_HEIGHT);
+ fbimg = mdtp_read_mmc_image(mdtp_ui_defs_data.error_msg_offset, mdtp_ui_defs_data.error_msg_width, mdtp_ui_defs_data.error_msg_height);
if (NULL == fbimg)
{
dprintf(CRITICAL,"ERROR: failed to read error image from mmc\n");
@@ -338,10 +312,10 @@
*/
static void display_initial_delay()
{
- uint32_t x = CENTER_IMAGE_ON_X_AXIS(MDTP_MAIN_TEXT_WIDTH,fb_config->width);
+ uint32_t x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.main_text_width,fb_config->width);
uint32_t y = (fb_config->height)*MAIN_TEXT_RELATIVE_Y_LOCATION;
- display_image(MDTP_INITIAL_DELAY_OFFSET, MDTP_MAIN_TEXT_WIDTH, MDTP_MAIN_TEXT_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.initial_delay_offset, mdtp_ui_defs_data.main_text_width, mdtp_ui_defs_data.main_text_height, x, y);
}
/**
@@ -349,10 +323,10 @@
*/
static void display_enter_pin()
{
- uint32_t x = CENTER_IMAGE_ON_X_AXIS(MDTP_MAIN_TEXT_WIDTH,fb_config->width);
+ uint32_t x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.main_text_width,fb_config->width);
uint32_t y = (fb_config->height)*MAIN_TEXT_RELATIVE_Y_LOCATION;
- display_image(MDTP_ENTER_PIN_OFFSET, MDTP_MAIN_TEXT_WIDTH, MDTP_MAIN_TEXT_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.enter_pin_offset, mdtp_ui_defs_data.main_text_width, mdtp_ui_defs_data.main_text_height, x, y);
}
/**
@@ -360,10 +334,10 @@
*/
static void display_invalid_pin()
{
- uint32_t x = CENTER_IMAGE_ON_X_AXIS(MDTP_MAIN_TEXT_WIDTH,fb_config->width);
+ uint32_t x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.main_text_width,fb_config->width);
uint32_t y = (fb_config->height)*MAIN_TEXT_RELATIVE_Y_LOCATION;
- display_image(MDTP_INVALID_PIN_OFFSET, MDTP_MAIN_TEXT_WIDTH, MDTP_MAIN_TEXT_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.invalid_pin_offset, mdtp_ui_defs_data.main_text_width, mdtp_ui_defs_data.main_text_height, x, y);
}
/**
@@ -371,10 +345,10 @@
*/
static void display_digits_instructions()
{
- uint32_t x = CENTER_IMAGE_ON_X_AXIS(MDTP_DIGITS_INSTRUCTIONS_WIDTH,fb_config->width);
+ uint32_t x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.digits_instructions_width,fb_config->width);
uint32_t y = (fb_config->height)*PIN_TEXT_RELATIVE_Y_LOCATION;
- display_image(MDTP_DIGITS_INSTRUCTIONS_OFFSET, MDTP_DIGITS_INSTRUCTIONS_WIDTH, MDTP_DIGITS_INSTRUCTIONS_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.digits_instructions_offset, mdtp_ui_defs_data.digits_instructions_width, mdtp_ui_defs_data.digits_instructions_height, x, y);
}
/**
@@ -384,7 +358,7 @@
{
uint32_t y = (fb_config->height)*PIN_TEXT_RELATIVE_Y_LOCATION;
- fbcon_clear_section(y, MDTP_DIGITS_INSTRUCTIONS_HEIGHT);
+ fbcon_clear_section(y, mdtp_ui_defs_data.digits_instructions_height);
}
/**
@@ -392,8 +366,8 @@
*/
static void display_digit(uint32_t x, uint32_t y, uint32_t digit)
{
- display_image(MDTP_PIN_DIGIT_0_OFFSET + digit*MDTP_PIN_DIGITS_OFFSET,
- MDTP_PIN_DIGIT_WIDTH, MDTP_PIN_DIGIT_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.pin_digit_0_offset + digit*mdtp_ui_defs_data.pin_digits_offset,
+ mdtp_ui_defs_data.pin_digit_width, mdtp_ui_defs_data.pin_digit_height, x, y);
}
/**
@@ -401,8 +375,8 @@
*/
static void display_selected_digit(uint32_t x, uint32_t y, uint32_t digit)
{
- display_image(MDTP_PIN_SELECTED_DIGIT_0_OFFSET + digit*MDTP_PIN_DIGITS_OFFSET,
- MDTP_PIN_DIGIT_WIDTH, MDTP_PIN_DIGIT_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.pin_selected_digit_0_offset + digit*mdtp_ui_defs_data.pin_digits_offset,
+ mdtp_ui_defs_data.pin_digit_width, mdtp_ui_defs_data.pin_digit_height, x, y);
}
/**
@@ -410,10 +384,10 @@
*/
static void display_ok_button()
{
- uint32_t ok_x = CENTER_IMAGE_ON_X_AXIS(MDTP_OK_BUTTON_WIDTH,fb_config->width);
+ uint32_t ok_x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.ok_button_width,fb_config->width);
uint32_t ok_y = (fb_config->height)*OK_BUTTON_RELATIVE_Y_LOCATION;
- display_image(MDTP_OK_BUTTON_OFFSET, MDTP_OK_BUTTON_WIDTH, MDTP_OK_BUTTON_HEIGHT, ok_x, ok_y);
+ display_image(mdtp_ui_defs_data.ok_button_offset, mdtp_ui_defs_data.ok_button_width, mdtp_ui_defs_data.ok_button_height, ok_x, ok_y);
}
/**
@@ -421,10 +395,10 @@
*/
static void display_selected_ok_button()
{
- uint32_t ok_x = CENTER_IMAGE_ON_X_AXIS(MDTP_OK_BUTTON_WIDTH,fb_config->width);
+ uint32_t ok_x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.ok_button_width,fb_config->width);
uint32_t ok_y = (fb_config->height)*OK_BUTTON_RELATIVE_Y_LOCATION;
- display_image(MDTP_SELECTED_OK_BUTTON_OFFSET, MDTP_OK_BUTTON_WIDTH, MDTP_OK_BUTTON_HEIGHT, ok_x, ok_y);
+ display_image(mdtp_ui_defs_data.selected_ok_button_offset, mdtp_ui_defs_data.ok_button_width, mdtp_ui_defs_data.ok_button_height, ok_x, ok_y);
}
/**
@@ -432,10 +406,10 @@
*/
static void display_pin_instructions()
{
- uint32_t x = CENTER_IMAGE_ON_X_AXIS(MDTP_PIN_INSTRUCTIONS_WIDTH,fb_config->width);
+ uint32_t x = CENTER_IMAGE_ON_X_AXIS(mdtp_ui_defs_data.pin_instructions_width,fb_config->width);
uint32_t y = (fb_config->height)*OK_TEXT_RELATIVE_Y_LOCATION;
- display_image(MDTP_PIN_INSTRUCTIONS_OFFSET, MDTP_PIN_INSTRUCTIONS_WIDTH, MDTP_PIN_INSTRUCTIONS_HEIGHT, x, y);
+ display_image(mdtp_ui_defs_data.pin_instructions_offset, mdtp_ui_defs_data.pin_instructions_width, mdtp_ui_defs_data.pin_instructions_height, x, y);
}
/**
@@ -445,7 +419,17 @@
{
uint32_t y = (fb_config->height)*OK_TEXT_RELATIVE_Y_LOCATION;
- fbcon_clear_section(y, MDTP_PIN_INSTRUCTIONS_HEIGHT);
+ fbcon_clear_section(y, mdtp_ui_defs_data.pin_instructions_height);
+}
+
+/**
+ * Initialize data structures required for MDTP UI.
+ */
+static void init_mdtp_ui_data()
+{
+ fb_config = fbcon_display();
+ alloc_mdtp_image();
+ mdtp_ui_defs_data = mdtp_get_target_ui_defs();
}
/**
@@ -456,8 +440,7 @@
if (g_initial_screen_displayed == true)
return;
- fb_config = fbcon_display();
- alloc_mdtp_image();
+ init_mdtp_ui_data();
if (fb_config)
{
@@ -471,12 +454,12 @@
g_pin_frames_y_location = ((fb_config->height)*PIN_RELATIVE_Y_LOCATION);
- uint32_t total_pin_length = pin_length*MDTP_PIN_DIGIT_WIDTH + DIGIT_SPACE*(pin_length - 1);
+ uint32_t total_pin_length = pin_length*mdtp_ui_defs_data.pin_digit_width + mdtp_ui_defs_data.digit_space*(pin_length - 1);
uint32_t complete_pin_centered = (fb_config->width - total_pin_length)/2;
for (uint32_t i=0; i<pin_length; i++)
{
- g_pin_frames_x_location[i] = complete_pin_centered + i*(DIGIT_SPACE+MDTP_PIN_DIGIT_WIDTH);
+ g_pin_frames_x_location[i] = complete_pin_centered + i*(mdtp_ui_defs_data.digit_space+mdtp_ui_defs_data.pin_digit_width);
}
for (uint32_t i=0; i<pin_length; i++)
@@ -609,8 +592,7 @@
*/
void display_error_msg()
{
- fb_config = fbcon_display();
- alloc_mdtp_image();
+ init_mdtp_ui_data();
if (fb_config)
{
diff --git a/app/aboot/mdtp_ui_defs.c b/app/aboot/mdtp_ui_defs.c
new file mode 100644
index 0000000..2c9fbb0
--- /dev/null
+++ b/app/aboot/mdtp_ui_defs.c
@@ -0,0 +1,68 @@
+/* Copyright (c) 2015, 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
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <compiler.h>
+#include "mdtp_ui_defs.h"
+
+struct mdtp_ui_defs mdtp_ui_defs_default = {
+ // Image dimensions
+ 1412, // error_msg_width;
+ 212, // error_msg_height;
+ 1364, // main_text_width;
+ 288, // main_text_height;
+ 180, // pin_digit_width;
+ 180, // pin_digit_height;
+ 644, // ok_button_width;
+ 158, // ok_button_height;
+ 1384, // digits_instructions_width;
+ 166, // digits_instructions_height;
+ 920, // pin_instructions_width;
+ 204, // pin_instructions_height;
+
+ // Image offsets
+ 0x1000, // error_msg_offset;
+ 0xDD000, // initial_delay_offset;
+ 0x1FD000, // enter_pin_offset;
+ 0x31D000, // invalid_pin_offset;
+ 0x43D000, // pin_digit_0_offset;
+ 0x18000, // pin_digits_offset;
+ 0x52D000, // pin_selected_digit_0_offset;
+ 0x61D000, // ok_button_offset;
+ 0x668000, // selected_ok_button_offset;
+ 0x6B3000, // digits_instructions_offset;
+ 0x75C000, // pin_instructions_offset;
+
+ //Display settings
+ 12 // mdtp_digit_space;
+};
+
+__WEAK struct mdtp_ui_defs mdtp_get_target_ui_defs()
+{
+ return mdtp_ui_defs_default;
+}
diff --git a/app/aboot/mdtp_ui_defs.h b/app/aboot/mdtp_ui_defs.h
new file mode 100644
index 0000000..15e3b51
--- /dev/null
+++ b/app/aboot/mdtp_ui_defs.h
@@ -0,0 +1,65 @@
+/* Copyright (c) 2015, 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
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <stdlib.h>
+
+struct mdtp_ui_defs {
+
+ // Image dimensions
+ uint32_t error_msg_width;
+ uint32_t error_msg_height;
+ uint32_t main_text_width;
+ uint32_t main_text_height;
+ uint32_t pin_digit_width;
+ uint32_t pin_digit_height;
+ uint32_t ok_button_width;
+ uint32_t ok_button_height;
+ uint32_t digits_instructions_width;
+ uint32_t digits_instructions_height;
+ uint32_t pin_instructions_width;
+ uint32_t pin_instructions_height;
+
+ // Image offsets
+ uint32_t error_msg_offset;
+ uint32_t initial_delay_offset;
+ uint32_t enter_pin_offset;
+ uint32_t invalid_pin_offset;
+ uint32_t pin_digit_0_offset;
+ uint32_t pin_digits_offset;
+ uint32_t pin_selected_digit_0_offset;
+ uint32_t ok_button_offset;
+ uint32_t selected_ok_button_offset;
+ uint32_t digits_instructions_offset;
+ uint32_t pin_instructions_offset;
+
+ //Display settings
+ uint32_t digit_space;
+};
+
+struct mdtp_ui_defs mdtp_get_target_ui_defs();
diff --git a/app/aboot/rules.mk b/app/aboot/rules.mk
index 7774788..cbc053a 100644
--- a/app/aboot/rules.mk
+++ b/app/aboot/rules.mk
@@ -15,5 +15,6 @@
OBJS += \
$(LOCAL_DIR)/mdtp.o \
$(LOCAL_DIR)/mdtp_ui.o \
- $(LOCAL_DIR)/mdtp_fuse.o
+ $(LOCAL_DIR)/mdtp_fuse.o \
+ $(LOCAL_DIR)/mdtp_ui_defs.o
endif
diff --git a/dev/gcdb/display/include/panel_fl10802_fwvga_video.h b/dev/gcdb/display/include/panel_fl10802_fwvga_video.h
index 8e30f57..80c64bd 100644
--- a/dev/gcdb/display/include/panel_fl10802_fwvga_video.h
+++ b/dev/gcdb/display/include/panel_fl10802_fwvga_video.h
@@ -210,7 +210,7 @@
static char fl10802_fwvga_video_on_cmd17[] = {
0x02, 0x00, 0x39, 0xC0,
- 0x53, 0x2C, 0xFF, 0xFF,
+ 0x53, 0x24, 0xFF, 0xFF,
};
static char fl10802_fwvga_video_on_cmd18[] = {
@@ -220,7 +220,7 @@
static char fl10802_fwvga_video_on_cmd19[] = {
0x02, 0x00, 0x39, 0xC0,
- 0x51, 0xFF, 0xFF, 0xFF,
+ 0x51, 0x00, 0xFF, 0xFF,
};
static char fl10802_fwvga_video_on_cmd20[] = {
@@ -231,6 +231,11 @@
0x29, 0x00, 0x05, 0x80
};
+static char fl10802_fwvga_video_on_cmd22[] = {
+ 0x02, 0x00, 0x39, 0xC0,
+ 0x51, 0xFF, 0xFF, 0xFF,
+};
+
static struct mipi_dsi_cmd fl10802_fwvga_video_on_command[] = {
{0x8, fl10802_fwvga_video_on_cmd0, 0x00},
{0xc, fl10802_fwvga_video_on_cmd1, 0x00},
@@ -253,10 +258,11 @@
{0x8, fl10802_fwvga_video_on_cmd18, 0x00},
{0x8, fl10802_fwvga_video_on_cmd19, 0x00},
{0x4, fl10802_fwvga_video_on_cmd20, 0x78},
- {0x4, fl10802_fwvga_video_on_cmd21, 0x78}
+ {0x4, fl10802_fwvga_video_on_cmd21, 0x78},
+ {0x8, fl10802_fwvga_video_on_cmd22, 0x00}
};
-#define FL10802_FWVGA_VIDEO_ON_COMMAND 22
+#define FL10802_FWVGA_VIDEO_ON_COMMAND 23
static char fl10802_fwvga_videooff_cmd0[] = {
diff --git a/dev/pmic/pmi8994/pm_app_smbchg.c b/dev/pmic/pmi8994/pm_app_smbchg.c
index 4d8a2db..d3d1d6b 100644
--- a/dev/pmic/pmi8994/pm_app_smbchg.c
+++ b/dev/pmic/pmi8994/pm_app_smbchg.c
@@ -203,8 +203,8 @@
{
//Ensure that Charging is enabled
err_flag |= pm_smbchg_chgr_enable_src(device_index, FALSE);
- err_flag |= pm_smbchg_chgr_set_chg_polarity_low(device_index, FALSE);
- err_flag |= pm_smbchg_bat_if_config_chg_cmd(device_index, PM_SMBCHG_BAT_IF_CMD__EN_BAT_CHG, TRUE);
+ err_flag |= pm_smbchg_chgr_set_chg_polarity_low(device_index, TRUE);
+ err_flag |= pm_smbchg_bat_if_config_chg_cmd(device_index, PM_SMBCHG_BAT_IF_CMD__EN_BAT_CHG, FALSE);
udelay(PM_WEAK_BATTERY_CHARGING_DELAY);
}
diff --git a/dev/pmic/pmi8994/pm_smbchg_chgr.c b/dev/pmic/pmi8994/pm_smbchg_chgr.c
index 2179772..629ba15 100644
--- a/dev/pmic/pmi8994/pm_smbchg_chgr.c
+++ b/dev/pmic/pmi8994/pm_smbchg_chgr.c
@@ -1084,7 +1084,7 @@
pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
- err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, 0x40, chg_pol_low, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, 0x40, (chg_pol_low ? 0x40 : 0), 0);
}
return err_flag;
diff --git a/platform/msm8952/platform.c b/platform/msm8952/platform.c
index af4f279..ec5a1d8 100644
--- a/platform/msm8952/platform.c
+++ b/platform/msm8952/platform.c
@@ -117,7 +117,7 @@
sections = 90;
while(sections--)
{
- arm_mmu_map_section(ddr_start + sections * MB, ddr_start + sections* MB, COMMON_MEMORY);
+ arm_mmu_map_section(ddr_start + sections * MB, ddr_start + sections* MB, SCRATCH_MEMORY);
}
diff --git a/project/msm8952.mk b/project/msm8952.mk
index 23bff86..54d4fa8 100644
--- a/project/msm8952.mk
+++ b/project/msm8952.mk
@@ -64,7 +64,7 @@
ifeq ($(ENABLE_MDTP_SUPPORT),1)
DEFINES += MDTP_SUPPORT=1
-DEFINES += MDTP_EFUSE_ADDRESS=0x0C858250 # QFPROM_RAW_QC_SPARE_REG_LSB_ADDR
+DEFINES += MDTP_EFUSE_ADDRESS=0x0005C250 # QFPROM_CORR_QC_SPARE_REG_LSB_ADDR
DEFINES += MDTP_EFUSE_START=0
endif
diff --git a/target/msm8909/oem_panel.c b/target/msm8909/oem_panel.c
index 6d84eef..7b6e473 100644
--- a/target/msm8909/oem_panel.c
+++ b/target/msm8909/oem_panel.c
@@ -319,6 +319,7 @@
memcpy(phy_db->timing,
fl10802_fwvga_video_timings, TIMING_SIZE);
pinfo->mipi.signature = FL10802_FWVGA_VIDEO_SIGNATURE;
+ pinfo->mipi.cmds_post_tg = 1;
break;
case UNKNOWN_PANEL:
default:
diff --git a/target/msm8952/mdtp_ui_defs.c b/target/msm8952/mdtp_ui_defs.c
new file mode 100644
index 0000000..7091f15
--- /dev/null
+++ b/target/msm8952/mdtp_ui_defs.c
@@ -0,0 +1,67 @@
+/* Copyright (c) 2015, 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
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation, Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "mdtp_ui_defs.h"
+
+struct mdtp_ui_defs mdtp_ui_defs_msm8952 = {
+ // Image dimensions
+ 952, // error_msg_width;
+ 143, // error_msg_height;
+ 920, // main_text_width;
+ 194, // main_text_height;
+ 120, // pin_digit_width;
+ 120, // pin_digit_height;
+ 432, // ok_button_width;
+ 106, // ok_button_height;
+ 932, // digits_instructions_width;
+ 112, // digits_instructions_height;
+ 620, // pin_instructions_width;
+ 137, // pin_instructions_height;
+
+ // Image offsets
+ 0x1000, // error_msg_offset;
+ 0x65000, // initial_delay_offset;
+ 0xE8000, // enter_pin_offset;
+ 0x16B000, // invalid_pin_offset;
+ 0x1EE000, // pin_digit_0_offset;
+ 0xB000, // pin_digits_offset;
+ 0x25C000, // pin_selected_digit_0_offset;
+ 0x2CA000, // ok_button_offset;
+ 0x2EC000, // selected_ok_button_offset;
+ 0x30E000, // digits_instructions_offset;
+ 0x35B000, // pin_instructions_offset;
+
+ //Display settings
+ 8 // digit_space;
+};
+
+struct mdtp_ui_defs mdtp_get_target_ui_defs()
+{
+ return mdtp_ui_defs_msm8952;
+}
diff --git a/target/msm8952/rules.mk b/target/msm8952/rules.mk
index c488c21..142cd88 100644
--- a/target/msm8952/rules.mk
+++ b/target/msm8952/rules.mk
@@ -2,6 +2,9 @@
INCLUDES += -I$(LOCAL_DIR)/include -I$(LK_TOP_DIR)/platform/msm_shared
INCLUDES += -I$(LK_TOP_DIR)/dev/gcdb/display -I$(LK_TOP_DIR)/dev/gcdb/display/include
+ifeq ($(ENABLE_MDTP_SUPPORT),1)
+INCLUDES += -I$(LK_TOP_DIR)/app/aboot
+endif
PLATFORM := msm8952
@@ -43,3 +46,7 @@
OBJS += \
$(LOCAL_DIR)/regulator.o
endif
+ifeq ($(ENABLE_MDTP_SUPPORT),1)
+OBJS += \
+ $(LOCAL_DIR)/mdtp_ui_defs.o
+endif
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index abe8937..f4664ec 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -55,8 +55,8 @@
#define DSC_VID_PANEL "dsc_vid_panel"
#define DSC_VID_PANEL_ADV7533_1080P "dsc_vid_panel_adv7533_1080p"
#define DSC_CMD_PANEL_ADV7533_1080P "dsc_cmd_panel_adv7533_1080p"
-#define DSC_CMD_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_cmd"
-#define DSC_VID_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_video"
+#define DSC_CMD_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_cmd:cfg:single_dsi"
+#define DSC_VID_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_video:cfg:single_dsi"
#define DSC_CMD_PANEL_ADV7533_1080P_STRING "1:dsi:0:qcom,mdss_dsi_adv7533_1080p:1:qcom,mdss_dsi_nt35597_dsc_wqxga_cmd:cfg:dual_dsi"
#define DSC_VID_PANEL_ADV7533_1080P_STRING "1:dsi:0:qcom,mdss_dsi_adv7533_1080p:1:qcom,mdss_dsi_nt35597_dsc_wqxga_video:cfg:dual_dsi"
diff --git a/target/msm8996/init.c b/target/msm8996/init.c
index e6cfeed..017b8d2 100644
--- a/target/msm8996/init.c
+++ b/target/msm8996/init.c
@@ -63,7 +63,7 @@
#endif
#define CE_INSTANCE 1
-#define CE_EE 1
+#define CE_EE 0
#define CE_FIFO_SIZE 64
#define CE_READ_PIPE 3
#define CE_WRITE_PIPE 2
@@ -155,6 +155,13 @@
pm_appsbl_set_dcin_suspend(1);
#endif
+
+ if (crypto_initialized())
+ {
+ crypto_eng_cleanup();
+ clock_ce_disable(CE_INSTANCE);
+ }
+
/* Tear down glink channels */
rpm_glink_uninit();
@@ -405,7 +412,7 @@
crypto_engine_type board_ce_type(void)
{
- return CRYPTO_ENGINE_TYPE_SW;
+ return CRYPTO_ENGINE_TYPE_HW;
}
/* Set up params for h/w CE. */