aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/power/reset/Kconfig9
-rw-r--r--drivers/power/reset/msm-poweroff.c4
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index db933765d38d..7008160eb079 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -94,6 +94,15 @@ config MSM_DLOAD_MODE
make the kernel reboot on a kernel panic - that must be
enabled via another mechanism.
+config MSM_PRESERVE_MEM
+ bool "Always preserve memory on restart"
+ depends on POWER_RESET_MSM
+ help
+ If crash to download mode is disabled and restart reason is null
+ the system will always perform a hard reset, which wipes out
+ persistent memory contents. Select this option to always perform
+ a soft reset that preserves memory contents.
+
config POWER_RESET_QNAP
bool "QNAP power-off driver"
depends on OF_GPIO && PLAT_ORION
diff --git a/drivers/power/reset/msm-poweroff.c b/drivers/power/reset/msm-poweroff.c
index b10dc24730ac..7e04e78a35f5 100644
--- a/drivers/power/reset/msm-poweroff.c
+++ b/drivers/power/reset/msm-poweroff.c
@@ -291,6 +291,10 @@ static void msm_restart_prepare(const char *cmd)
strcmp(cmd, "userrequested")));
}
+#ifdef CONFIG_MSM_PRESERVE_MEM
+ need_warm_reset = true;
+#endif
+
/* Hard reset the PMIC unless memory contents must be maintained. */
if (need_warm_reset) {
qpnp_pon_system_pwr_off(PON_POWER_OFF_WARM_RESET);