From d3b8625fd76fc839fc95e90b9117fafaf2d377bb Mon Sep 17 00:00:00 2001
From: Merlijn Wajer <merlijn@wizzup.org>
Date: Wed, 8 Dec 2021 15:28:59 +0100
Subject: [PATCH] Revert "ARM: omap3: enable off mode automatically"

This reverts commit fb2c599f056640d289b2147fbe6d9eaee689f1b2.

This commit surfaces problems on the Nokia N900 when the system is
actually in idle mode - causing oopses.
---
 arch/arm/mach-omap2/pm-debug.c |  2 ++
 arch/arm/mach-omap2/pm.c       |  2 --
 arch/arm/mach-omap2/pm.h       |  4 ++++
 arch/arm/mach-omap2/pm34xx.c   | 27 ++-------------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index b3110399a3fb..104634a9b5b3 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -34,6 +34,8 @@
 #include "prm2xxx_3xxx.h"
 #include "pm.h"
 
+u32 enable_off_mode;
+
 #ifdef CONFIG_DEBUG_FS
 #include <linux/debugfs.h>
 #include <linux/seq_file.h>
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
index da829a90fe8c..01ec1ba4878b 100644
--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -28,8 +28,6 @@
 #include "clockdomain.h"
 #include "pm.h"
 
-u32 enable_off_mode;
-
 #ifdef CONFIG_SUSPEND
 /*
  * omap_pm_suspend: points to a function that does the SoC-specific
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
index 80e84ae66aee..2a883a0c1fcd 100644
--- a/arch/arm/mach-omap2/pm.h
+++ b/arch/arm/mach-omap2/pm.h
@@ -49,7 +49,11 @@ static inline int omap4_opp_init(void)
 extern int omap3_pm_get_suspend_state(struct powerdomain *pwrdm);
 extern int omap3_pm_set_suspend_state(struct powerdomain *pwrdm, int state);
 
+#ifdef CONFIG_PM_DEBUG
 extern u32 enable_off_mode;
+#else
+#define enable_off_mode 0
+#endif
 
 #if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS)
 extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev);
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index d73c7b692116..d37fb3304a2e 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -25,7 +25,7 @@
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/of.h>
+#include <linux/omap-gpmc.h>
 
 #include <trace/events/power.h>
 
@@ -406,12 +406,7 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
 	if (!pwrst)
 		return -ENOMEM;
 	pwrst->pwrdm = pwrdm;
-
-	if (enable_off_mode)
-		pwrst->next_state = PWRDM_POWER_OFF;
-	else
-		pwrst->next_state = PWRDM_POWER_RET;
-
+	pwrst->next_state = PWRDM_POWER_RET;
 	list_add(&pwrst->node, &pwrst_list);
 
 	if (pwrdm_has_hdwr_sar(pwrdm))
@@ -445,22 +440,6 @@ static void __init pm_errata_configure(void)
 	}
 }
 
-static void __init omap3_pm_check_pmic(void)
-{
-	struct device_node *np;
-
-	np = of_find_compatible_node(NULL, NULL, "ti,twl4030-power-idle");
-	if (!np)
-		np = of_find_compatible_node(NULL, NULL, "ti,twl4030-power-idle-osc-off");
-
-	if (np) {
-		of_node_put(np);
-		enable_off_mode = 1;
-	} else {
-		enable_off_mode = 0;
-	}
-}
-
 int __init omap3_pm_init(void)
 {
 	struct power_state *pwrst, *tmp;
@@ -494,8 +473,6 @@ int __init omap3_pm_init(void)
 		goto err2;
 	}
 
-	omap3_pm_check_pmic();
-
 	ret = pwrdm_for_each(pwrdms_setup, NULL);
 	if (ret) {
 		pr_err("Failed to setup powerdomains\n");
