diff options
Diffstat (limited to 'arch/arm/mach-tegra/cpu-tegra.c')
| -rw-r--r-- | arch/arm/mach-tegra/cpu-tegra.c | 40 | 
1 files changed, 20 insertions, 20 deletions
diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c index a36a03d3c9a..ece29ab15b5 100644 --- a/arch/arm/mach-tegra/cpu-tegra.c +++ b/arch/arm/mach-tegra/cpu-tegra.c @@ -214,24 +214,6 @@ static int tegra_cpu_init(struct cpufreq_policy *policy)  	if (policy->cpu >= NUM_CPUS)  		return -EINVAL; -	cpu_clk = clk_get_sys(NULL, "cpu"); -	if (IS_ERR(cpu_clk)) -		return PTR_ERR(cpu_clk); - -	pll_x_clk = clk_get_sys(NULL, "pll_x"); -	if (IS_ERR(pll_x_clk)) -		return PTR_ERR(pll_x_clk); - -	pll_p_clk = clk_get_sys(NULL, "pll_p"); -	if (IS_ERR(pll_p_clk)) -		return PTR_ERR(pll_p_clk); - -	emc_clk = clk_get_sys("cpu", "emc"); -	if (IS_ERR(emc_clk)) { -		clk_put(cpu_clk); -		return PTR_ERR(emc_clk); -	} -  	clk_prepare_enable(emc_clk);  	clk_prepare_enable(cpu_clk); @@ -255,8 +237,6 @@ static int tegra_cpu_exit(struct cpufreq_policy *policy)  {  	cpufreq_frequency_table_cpuinfo(policy, freq_table);  	clk_disable_unprepare(emc_clk); -	clk_put(emc_clk); -	clk_put(cpu_clk);  	return 0;  } @@ -277,12 +257,32 @@ static struct cpufreq_driver tegra_cpufreq_driver = {  static int __init tegra_cpufreq_init(void)  { +	cpu_clk = clk_get_sys(NULL, "cpu"); +	if (IS_ERR(cpu_clk)) +		return PTR_ERR(cpu_clk); + +	pll_x_clk = clk_get_sys(NULL, "pll_x"); +	if (IS_ERR(pll_x_clk)) +		return PTR_ERR(pll_x_clk); + +	pll_p_clk = clk_get_sys(NULL, "pll_p"); +	if (IS_ERR(pll_p_clk)) +		return PTR_ERR(pll_p_clk); + +	emc_clk = clk_get_sys("cpu", "emc"); +	if (IS_ERR(emc_clk)) { +		clk_put(cpu_clk); +		return PTR_ERR(emc_clk); +	} +  	return cpufreq_register_driver(&tegra_cpufreq_driver);  }  static void __exit tegra_cpufreq_exit(void)  {          cpufreq_unregister_driver(&tegra_cpufreq_driver); +	clk_put(emc_clk); +	clk_put(cpu_clk);  }  |