aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorSekhar Nori <nsekhar@ti.com>2010-07-20 07:16:51 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2010-09-24 10:40:25 -0400
commitb987c4b2c9c9db2393f4c089e63d1734301214e5 (patch)
tree446b9ae602d8669e9e03107b976c9a88040b84ca /arch/arm
parent30a2c5d2f0134df6175af26ce554aacaee304280 (diff)
davinci: am18x/da850/omap-l138: keep async clock constant with cpufreq
Keep PLL0 SYSCLK3 at a constant rate of 100MHz. This enables the AEMIF timing to remain valid even as the PLL0 output is changed by cpufreq driver to save power. Signed-off-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c2
-rw-r--r--arch/arm/mach-davinci/da850.c10
-rw-r--r--arch/arm/mach-davinci/include/mach/da8xx.h2
3 files changed, 11 insertions, 3 deletions
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index f5f947257011..c2800a98c49d 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -787,7 +787,7 @@ static __init void da850_evm_init(void)
787 if (ret) 787 if (ret)
788 pr_warning("da850_evm_init: rtc setup failed: %d\n", ret); 788 pr_warning("da850_evm_init: rtc setup failed: %d\n", ret);
789 789
790 ret = da850_register_cpufreq(); 790 ret = da850_register_cpufreq("pll0_sysclk3");
791 if (ret) 791 if (ret)
792 pr_warning("da850_evm_init: cpufreq registration failed: %d\n", 792 pr_warning("da850_evm_init: cpufreq registration failed: %d\n",
793 ret); 793 ret);
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 6932d804556b..5af7cfb1447e 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -86,6 +86,8 @@ static struct clk pll0_sysclk3 = {
86 .parent = &pll0_clk, 86 .parent = &pll0_clk,
87 .flags = CLK_PLL, 87 .flags = CLK_PLL,
88 .div_reg = PLLDIV3, 88 .div_reg = PLLDIV3,
89 .set_rate = davinci_set_sysclk_rate,
90 .maxrate = 100000000,
89}; 91};
90 92
91static struct clk pll0_sysclk4 = { 93static struct clk pll0_sysclk4 = {
@@ -929,10 +931,16 @@ static struct platform_device da850_cpufreq_device = {
929 .dev = { 931 .dev = {
930 .platform_data = &cpufreq_info, 932 .platform_data = &cpufreq_info,
931 }, 933 },
934 .id = -1,
932}; 935};
933 936
934int __init da850_register_cpufreq(void) 937int __init da850_register_cpufreq(char *async_clk)
935{ 938{
939 /* cpufreq driver can help keep an "async" clock constant */
940 if (async_clk)
941 clk_add_alias("async", da850_cpufreq_device.name,
942 async_clk, NULL);
943
936 return platform_device_register(&da850_cpufreq_device); 944 return platform_device_register(&da850_cpufreq_device);
937} 945}
938 946
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index 3c07059f526e..2c3f41897c17 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -78,7 +78,7 @@ int da8xx_register_lcdc(struct da8xx_lcdc_platform_data *pdata);
78int da8xx_register_mmcsd0(struct davinci_mmc_config *config); 78int da8xx_register_mmcsd0(struct davinci_mmc_config *config);
79void __init da8xx_register_mcasp(int id, struct snd_platform_data *pdata); 79void __init da8xx_register_mcasp(int id, struct snd_platform_data *pdata);
80int da8xx_register_rtc(void); 80int da8xx_register_rtc(void);
81int da850_register_cpufreq(void); 81int da850_register_cpufreq(char *async_clk);
82int da8xx_register_cpuidle(void); 82int da8xx_register_cpuidle(void);
83void __iomem * __init da8xx_get_mem_ctlr(void); 83void __iomem * __init da8xx_get_mem_ctlr(void);
84int da850_register_pm(struct platform_device *pdev); 84int da850_register_pm(struct platform_device *pdev);