summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
authorAmit Kamath <akamath@nvidia.com>2012-04-02 17:22:57 +0530
committerSimone Willett <swillett@nvidia.com>2012-04-03 17:56:22 -0700
commit3b693812e9c606561b92d665d2eb676616e27ac4 (patch)
treeec335468249e867d26e2a67bee34800d92fc02d2 /arch/arm/mach-tegra
parentb867f4986fd0952a6614e098ccfefcbf3aef5b2a (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 939415 Original change http://git-master/r/#change,76959 Change-Id: I81cda6a95494764721c1be5b4001c476f3aed6ab Signed-off-by: Amit Kamath <akamath@nvidia.com> Reviewed-on: http://git-master/r/93850 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r--arch/arm/mach-tegra/common.c1
-rw-r--r--arch/arm/mach-tegra/pm.c6
-rw-r--r--arch/arm/mach-tegra/tegra3_clocks.c3
3 files changed, 9 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c
index 46ddf91bef1a..4786aced9c57 100644
--- a/arch/arm/mach-tegra/common.c
+++ b/arch/arm/mach-tegra/common.c
@@ -181,6 +181,7 @@ static __initdata struct tegra_clk_init_table common_clk_init_table[] = {
{ "sclk", "pll_p_out4", 102000000, true },
{ "hclk", "sclk", 102000000, true },
{ "pclk", "hclk", 51000000, true },
+ { "wake.sclk", NULL, 40000000, true },
{ "sbc5.sclk", NULL, 40000000, false},
{ "sbc6.sclk", NULL, 40000000, false},
#endif
diff --git a/arch/arm/mach-tegra/pm.c b/arch/arm/mach-tegra/pm.c
index 859694cd1601..40bd28aea0ad 100644
--- a/arch/arm/mach-tegra/pm.c
+++ b/arch/arm/mach-tegra/pm.c
@@ -1293,13 +1293,18 @@ static int tegra_debug_uart_syscore_init(void)
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);
pm_qos_update_request(&awake_cpu_freq_req, PM_QOS_DEFAULT_VALUE);
}
static void pm_late_resume(struct early_suspend *h)
{
+ if (clk_wake)
+ clk_enable(clk_wake);
pm_qos_update_request(&awake_cpu_freq_req, (s32)AWAKE_CPU_FREQ_MIN);
}
@@ -1310,6 +1315,7 @@ static struct early_suspend pm_early_suspender = {
static int pm_init_wake_behavior(void)
{
+ clk_wake = tegra_get_clock_by_name("wake.sclk");
register_early_suspend(&pm_early_suspender);
return 0;
}
diff --git a/arch/arm/mach-tegra/tegra3_clocks.c b/arch/arm/mach-tegra/tegra3_clocks.c
index 0b2d4f4fc6d6..0bceeeb9469f 100644
--- a/arch/arm/mach-tegra/tegra3_clocks.c
+++ b/arch/arm/mach-tegra/tegra3_clocks.c
@@ -3958,7 +3958,7 @@ static struct clk tegra_clk_pclk = {
.reg_shift = 0,
.ops = &tegra_bus_ops,
.max_rate = 167000000,
- .min_rate = 40000000,
+ .min_rate = 12000000,
};
static struct raw_notifier_head sbus_rate_change_nh;
@@ -4301,6 +4301,7 @@ struct clk tegra_list_clks[] = {
SHARED_CLK("usb1.sclk", "tegra-ehci.0", "sclk", &tegra_clk_sbus_cmplx, NULL, 0, 0),
SHARED_CLK("usb2.sclk", "tegra-ehci.1", "sclk", &tegra_clk_sbus_cmplx, NULL, 0, 0),
SHARED_CLK("usb3.sclk", "tegra-ehci.2", "sclk", &tegra_clk_sbus_cmplx, NULL, 0, 0),
+ SHARED_CLK("wake.sclk", "wake_sclk", "sclk", &tegra_clk_sbus_cmplx, NULL, 0, 0),
SHARED_CLK("mon.avp", "tegra_actmon", "avp", &tegra_clk_sbus_cmplx, NULL, 0, 0),
SHARED_CLK("cap.sclk", "cap_sclk", NULL, &tegra_clk_sbus_cmplx, NULL, 0, SHARED_CEILING),
SHARED_CLK("floor.sclk", "floor_sclk", NULL, &tegra_clk_sbus_cmplx, NULL, 0, 0),