ARM: tegra: power: Clean up cluster control definitions
Scott Williams [Thu, 21 Jul 2011 22:46:01 +0000 (15:46 -0700)]
Reduce the complexity of the cluster control compile-time conditionals.
Also disable DEBUG_CLUSTER_SWITCH because it invokes clock code that
takes a mutex when taking of a mutex is disallowed.

Change-Id: I9b614d4b0189fbb01d0b7f8af7053c7586d9515b
Signed-off-by: Scott Williams <scwilliams@nvidia.com>
Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com>

Rebase-Id: R412820dc2fd9f0c9cc7b1e3ad7ead7e2e68a0ff3

arch/arm/mach-tegra/pm.h

index 561660b..bf24d93 100644 (file)
@@ -91,30 +91,10 @@ extern void (*tegra_deep_sleep)(int);
 
 unsigned int tegra_idle_lp2_last(unsigned int us, unsigned int flags);
 
-#ifdef CONFIG_ARCH_TEGRA_2x_SOC
-
-#define INSTRUMENT_CLUSTER_SWITCH 0    /* Must be zero for ARCH_TEGRA_2x_SOC */
-#define DEBUG_CLUSTER_SWITCH 0         /* Must be zero for ARCH_TEGRA_2x_SOC */
-#define PARAMETERIZE_CLUSTER_SWITCH 0  /* Must be zero for ARCH_TEGRA_2x_SOC */
-static inline int tegra_cluster_control(unsigned int us, unsigned int flags)
-{ return -EPERM; }
-#define tegra_cluster_switch_prolog(flags) do {} while(0)
-#define tegra_cluster_switch_epilog(flags) do {} while(0)
-static inline bool is_g_cluster_present(void)
-{ return true; }
-static inline unsigned int is_lp_cluster(void)
-{ return 0; }
-#define tegra_lp0_suspend_mc() do {} while(0)
-#define tegra_lp0_resume_mc() do {} while(0)
-void tegra2_lp0_suspend_init(void);
-
-#else
-
+#if defined(CONFIG_PM_SLEEP) && !defined(CONFIG_ARCH_TEGRA_2x_SOC)
 #define INSTRUMENT_CLUSTER_SWITCH 1    /* Should be zero for shipping code */
-#define DEBUG_CLUSTER_SWITCH 1         /* Should be zero for shipping code */
+#define DEBUG_CLUSTER_SWITCH 0         /* Should be zero for shipping code */
 #define PARAMETERIZE_CLUSTER_SWITCH 1  /* Should be zero for shipping code */
-
-#ifdef CONFIG_PM_SLEEP
 int tegra_cluster_control(unsigned int us, unsigned int flags);
 void tegra_cluster_switch_prolog(unsigned int flags);
 void tegra_cluster_switch_epilog(unsigned int flags);
@@ -122,6 +102,9 @@ void tegra_lp0_suspend_mc(void);
 void tegra_lp0_resume_mc(void);
 #else
 static inline int tegra_cluster_control(unsigned int us, unsigned int flags)
+#define INSTRUMENT_CLUSTER_SWITCH 0    /* Must be zero for ARCH_TEGRA_2x_SOC */
+#define DEBUG_CLUSTER_SWITCH 0         /* Must be zero for ARCH_TEGRA_2x_SOC */
+#define PARAMETERIZE_CLUSTER_SWITCH 0  /* Must be zero for ARCH_TEGRA_2x_SOC */
 {
        return -EPERM;
 }
@@ -131,6 +114,11 @@ static inline void tegra_lp0_suspend_mc(void) {}
 static inline void tegra_lp0_resume_mc(void) {}
 #endif
 
+#ifdef CONFIG_ARCH_TEGRA_2x_SOC
+static inline bool is_g_cluster_present(void)   { return true; }
+static inline unsigned int is_lp_cluster(void)  { return 0; }
+void tegra2_lp0_suspend_init(void);
+#else
 static inline bool is_g_cluster_present(void)
 {
        u32 fuse_sku = readl(FUSE_SKU_DIRECT_CONFIG);
@@ -182,7 +170,7 @@ static inline unsigned long tegra_lp2_timer_remain(void)
 #endif
 }
 
-#if DEBUG_CLUSTER_SWITCH
+#if DEBUG_CLUSTER_SWITCH && 0 /* !!!FIXME!!! THIS IS BROKEN */
 extern unsigned int tegra_cluster_debug;
 #define DEBUG_CLUSTER(x) do { if (tegra_cluster_debug) printk x; } while (0)
 #else