summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/pm.c
diff options
context:
space:
mode:
authorWen Yi <wyi@nvidia.com>2012-01-23 22:54:21 -0800
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-01-31 04:22:28 -0800
commitdd45552b4f02badea998931881ee9671cba40e5e (patch)
tree17ab159037b7cd1e71654eb2b7aa1587a4364610 /arch/arm/mach-tegra/pm.c
parent4bea73c207fa4099df484b196508283a0c5b183c (diff)
arm: tegra3: change min_rate for sclk
Change the minimal rate of sclk to 12 MHz and set the lowest frequency of sbus to be 40 MHz when display is on. BUG 922351 Reviewed-on: http://git-master/r/76959 Change-Id: I6a2871d1cc02a19829cf397e9583122e02255f81 Signed-off-by: Wen Yi <wyi@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-on: http://git-master/r/78010 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/pm.c')
-rw-r--r--arch/arm/mach-tegra/pm.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/pm.c b/arch/arm/mach-tegra/pm.c
index 58aec4ff0f8d..803ce0762fcf 100644
--- a/arch/arm/mach-tegra/pm.c
+++ b/arch/arm/mach-tegra/pm.c
@@ -33,6 +33,7 @@
#include <linux/debugfs.h>
#include <linux/delay.h>
#include <linux/suspend.h>
+#include <linux/earlysuspend.h>
#include <linux/slab.h>
#include <linux/serial_reg.h>
#include <linux/seq_file.h>
@@ -1257,3 +1258,33 @@ static int tegra_debug_uart_syscore_init(void)
return 0;
}
arch_initcall(tegra_debug_uart_syscore_init);
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+static struct clk *clk_wake;
+
+static void pm_early_suspend(struct early_suspend *h)
+{
+ if (clk_wake)
+ clk_disable(clk_wake);
+}
+
+static void pm_late_resume(struct early_suspend *h)
+{
+ if (clk_wake)
+ clk_enable(clk_wake);
+}
+
+static struct early_suspend pm_early_suspender = {
+ .suspend = pm_early_suspend,
+ .resume = pm_late_resume,
+};
+
+static int pm_init_wake_behavior(void)
+{
+ clk_wake = tegra_get_clock_by_name("wake.sclk");
+ register_early_suspend(&pm_early_suspender);
+ return 0;
+}
+
+late_initcall(pm_init_wake_behavior);
+#endif