Merge "platform/target: msm8994: Add support for dload mode"
diff --git a/platform/msm8994/include/platform/iomap.h b/platform/msm8994/include/platform/iomap.h
index 383d231..998246f 100644
--- a/platform/msm8994/include/platform/iomap.h
+++ b/platform/msm8994/include/platform/iomap.h
@@ -40,6 +40,12 @@
#define RESTART_REASON_ADDR (MSM_SHARED_IMEM_BASE + 0x65C)
#define RESTART_REASON_ADDR2 (MSM_SHARED_IMEM_BASE2 + 0x65C)
+#define DLOAD_MODE_ADDR (MSM_SHARED_IMEM_BASE + 0x0)
+#define EMERGENCY_DLOAD_MODE_ADDR (MSM_SHARED_IMEM_BASE + 0xFE0)
+#define DLOAD_MODE_ADDR_V2 (MSM_SHARED_IMEM_BASE2 + 0x0)
+#define EMERGENCY_DLOAD_MODE_ADDR_V2 (MSM_SHARED_IMEM_BASE2 + 0xFE0)
+
+
#define BS_INFO_OFFSET (0x6B0)
#define BS_INFO_ADDR (MSM_SHARED_IMEM_BASE + BS_INFO_OFFSET)
#define BS_INFO_ADDR2 (MSM_SHARED_IMEM_BASE2 + BS_INFO_OFFSET)
diff --git a/platform/msm_shared/rules.mk b/platform/msm_shared/rules.mk
index 59c0125..baa1b37 100644
--- a/platform/msm_shared/rules.mk
+++ b/platform/msm_shared/rules.mk
@@ -484,7 +484,8 @@
$(LOCAL_DIR)/mipi_dsi_autopll.o \
$(LOCAL_DIR)/mipi_dsi_autopll_20nm.o \
$(LOCAL_DIR)/mdss_hdmi.o \
- $(LOCAL_DIR)/hdmi_pll_20nm.o
+ $(LOCAL_DIR)/hdmi_pll_20nm.o \
+ $(LOCAL_DIR)/dload_util.o
endif
ifeq ($(PLATFORM),msm8909)
diff --git a/target/msm8994/init.c b/target/msm8994/init.c
index f2d0feb..e3b513f 100644
--- a/target/msm8994/init.c
+++ b/target/msm8994/init.c
@@ -513,7 +513,7 @@
/* Write the reboot reason */
writel(reboot_reason, restart_reason_addr);
- if(reboot_reason == FASTBOOT_MODE)
+ if(reboot_reason == FASTBOOT_MODE || reboot_reason == DLOAD)
reset_type = PON_PSHOLD_WARM_RESET;
else
reset_type = PON_PSHOLD_HARD_RESET;
@@ -635,3 +635,15 @@
{
return DDR_CFG_DLY_VAL;
}
+
+int set_download_mode(enum dload_mode mode)
+{
+ if (platform_is_msm8994())
+ dload_util_write_cookie(mode == NORMAL_DLOAD ?
+ DLOAD_MODE_ADDR : EMERGENCY_DLOAD_MODE_ADDR, mode);
+ else
+ dload_util_write_cookie(mode == NORMAL_DLOAD ?
+ DLOAD_MODE_ADDR_V2 : EMERGENCY_DLOAD_MODE_ADDR_V2, mode);
+
+ return 0;
+}