Merge "platform: msm_shared: Fixed some misspelling errors" into lk.lnx.1.0-dev.1.0
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 2f8a853..1e134ba 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -773,10 +773,6 @@
enter_critical_section();
- /* Initialise wdog to catch early kernel crashes */
-#if WDOG_SUPPORT
- msm_wdog_init();
-#endif
/* do any platform specific cleanup before kernel entry */
platform_uninit();
@@ -3567,6 +3563,11 @@
{
unsigned reboot_mode = 0;
+ /* Initialise wdog to catch early lk crashes */
+#if WDOG_SUPPORT
+ msm_wdog_init();
+#endif
+
/* Setup page size information for nv storage */
if (target_is_emmc_boot())
{
diff --git a/dev/gcdb/display/include/panel_hx8394f_720p_video.h b/dev/gcdb/display/include/panel_hx8394f_720p_video.h
index a3819b7..4442d3b 100644
--- a/dev/gcdb/display/include/panel_hx8394f_720p_video.h
+++ b/dev/gcdb/display/include/panel_hx8394f_720p_video.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016, 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
@@ -86,8 +86,8 @@
static char hx8394f_720p_video_on_cmd4[] = {
0x16, 0x00, 0x29, 0xC0,
0xB4, 0x6C, 0x6D, 0x6C,
- 0x6D, 0x6C, 0x6D, 0x01,
- 0x01, 0xFF, 0x75, 0x00,
+ 0x6A, 0x6C, 0x6D, 0x01,
+ 0x05, 0xFF, 0x77, 0x00,
0x3f, 0x6C, 0x6D, 0x6C,
0x6D, 0x6C, 0x6D, 0x01,
0x01, 0xFF, 0xFF, 0xFF,
diff --git a/platform/msm_shared/dload_util.c b/platform/msm_shared/dload_util.c
index 58f498a..f00e4df 100644
--- a/platform/msm_shared/dload_util.c
+++ b/platform/msm_shared/dload_util.c
@@ -42,9 +42,11 @@
{
if (mode == NORMAL_DLOAD)
{
+#if !DISABLE_DLOAD_MODE
writel(NORMAL_DLOAD_COOKIE_0, target_dload_mode_addr);
writel(NORMAL_DLOAD_COOKIE_1,
target_dload_mode_addr + sizeof(uint32_t));
+#endif
}
else if (mode == EMERGENCY_DLOAD)
{
diff --git a/platform/msm_shared/include/scm.h b/platform/msm_shared/include/scm.h
index 8d81b29..128d14b 100644
--- a/platform/msm_shared/include/scm.h
+++ b/platform/msm_shared/include/scm.h
@@ -468,4 +468,5 @@
int scm_call2_atomic(uint32_t svc, uint32_t cmd, uint32_t arg1, uint32_t arg2);
uint32_t scm_io_write(uint32_t address, uint32_t val);
int is_scm_call_available(uint32_t svc_id, uint32_t cmd_id);
+int scm_disable_sdi();
#endif
diff --git a/platform/msm_shared/reboot.c b/platform/msm_shared/reboot.c
index 9071096..f3441cd 100644
--- a/platform/msm_shared/reboot.c
+++ b/platform/msm_shared/reboot.c
@@ -120,14 +120,19 @@
* For other cases do a hard reset
*/
#if USE_PON_REBOOT_REG
- if(reboot_reason == NORMAL_DLOAD || reboot_reason == EMERGENCY_DLOAD)
+ if(reboot_reason == NORMAL_DLOAD || reboot_reason == EMERGENCY_DLOAD) {
#else
if(reboot_reason == FASTBOOT_MODE || reboot_reason == NORMAL_DLOAD ||
- reboot_reason == EMERGENCY_DLOAD || reboot_reason == RECOVERY_MODE)
+ reboot_reason == EMERGENCY_DLOAD || reboot_reason == RECOVERY_MODE) {
#endif
reset_type = PON_PSHOLD_WARM_RESET;
- else
+#if DISABLE_DLOAD_MODE
+ if (reboot_reason == NORMAL_DLOAD)
+ reset_type = PON_PSHOLD_HARD_RESET;
+#endif
+ } else {
reset_type = PON_PSHOLD_HARD_RESET;
+ }
pmic_reset_configure(reset_type);
diff --git a/platform/msm_shared/scm.c b/platform/msm_shared/scm.c
index b46a504..05b5b6c 100644
--- a/platform/msm_shared/scm.c
+++ b/platform/msm_shared/scm.c
@@ -65,7 +65,6 @@
if (!scm_initialized)
{
scm_init();
- scm_initialized = true;
}
#endif
@@ -113,6 +112,12 @@
if (ret < 0)
dprintf(CRITICAL, "Failed to initialize SCM\n");
+
+ scm_initialized = true;
+
+#if DISABLE_DLOAD_MODE
+ scm_disable_sdi();
+#endif
}
/**
@@ -1332,6 +1337,21 @@
return ret;
}
+int scm_disable_sdi()
+{
+ int ret = 0;
+
+ scm_check_boot_fuses();
+
+ /* Make WDOG_DEBUG DISABLE scm call only in non-secure boot */
+ if(!(secure_boot_enabled || wdog_debug_fuse_disabled)) {
+ ret = scm_call2_atomic(SCM_SVC_BOOT, WDOG_DEBUG_DISABLE, 1, 0);
+ if(ret)
+ dprintf(CRITICAL, "Failed to disable secure wdog debug: %d\n", ret);
+ }
+ return ret;
+}
+
#if PLATFORM_USE_SCM_DLOAD
int scm_dload_mode(enum reboot_reason mode)
{
@@ -1339,9 +1359,12 @@
uint32_t dload_type;
dprintf(SPEW, "DLOAD mode: %d\n", mode);
- if (mode == NORMAL_DLOAD)
+ if (mode == NORMAL_DLOAD) {
dload_type = SCM_DLOAD_MODE;
- else if(mode == EMERGENCY_DLOAD)
+#if DISABLE_DLOAD_MODE
+ return 0;
+#endif
+ } else if(mode == EMERGENCY_DLOAD)
dload_type = SCM_EDLOAD_MODE;
else
dload_type = 0;
@@ -1359,16 +1382,11 @@
return ret;
}
- scm_check_boot_fuses();
-
- /* Make WDOG_DEBUG DISABLE scm call only in non-secure boot */
- if(!(secure_boot_enabled || wdog_debug_fuse_disabled)) {
- ret = scm_call2_atomic(SCM_SVC_BOOT, WDOG_DEBUG_DISABLE, 1, 0);
- if(ret)
- dprintf(CRITICAL, "Failed to disable the wdog debug \n");
- }
-
+#if !DISABLE_DLOAD_MODE
+ return scm_disable_sdi();
+#else
return ret;
+#endif
}
bool scm_device_enter_dload()
diff --git a/platform/msm_shared/wdog.c b/platform/msm_shared/wdog.c
index d1f4033..a6af333 100644
--- a/platform/msm_shared/wdog.c
+++ b/platform/msm_shared/wdog.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016, 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
@@ -35,11 +35,37 @@
#include <target.h>
#include <scm.h>
#include <dload_util.h>
+#include <kernel/thread.h>
+
+#define WDOG_FEED_FREQUENCY 1000
+
+static int wdog_feed_handler(void *param) {
+ while(1) {
+ writel(1, APPS_WDOG_RESET_REG);
+ thread_sleep(WDOG_FEED_FREQUENCY);
+ }
+ return 0;
+}
+
+static void wdog_feed_func_thread(void)
+{
+ static bool is_thread_start;
+ thread_t *thr;
+
+ if (!is_thread_start) {
+ thr = thread_create("wdogfeed", wdog_feed_handler,
+ 0, DEFAULT_PRIORITY, DEFAULT_STACK_SIZE);
+ if (!thr) {
+ dprintf(CRITICAL, "ERROR: create feed dog thread failed!!\n");
+ return;
+ }
+ thread_resume(thr);
+ is_thread_start = true;
+ }
+}
void msm_wdog_init()
{
- uint32_t ret;
-
/* Set Bite and Bark times 10s */
writel(0x77FD3, APPS_WDOG_BARK_VAL_REG);
writel(0x77FD3, APPS_WDOG_BITE_VAL_REG);
@@ -50,13 +76,7 @@
/* Enable WDOG */
writel((readl(APPS_WDOG_CTL_REG) | 0x1), APPS_WDOG_CTL_REG);
- /* Write to the Boot MISC register to put the device in dload mode*/
- ret = scm_call2_atomic(SCM_SVC_BOOT, SCM_DLOAD_CMD, SCM_DLOAD_MODE, 0);
+ wdog_feed_func_thread();
- if (ret) {
- ret = scm_io_write(TCSR_BOOT_MISC_DETECT,SCM_DLOAD_MODE);
- if(ret) {
- dprintf(CRITICAL, "Failed to write to boot misc: %d\n", ret);
- }
- }
+ set_download_mode(NORMAL_DLOAD);
}