diff options
Diffstat (limited to 'drivers/cpufreq/tegra-cpufreq.c')
| -rw-r--r-- | drivers/cpufreq/tegra-cpufreq.c | 47 | 
1 files changed, 5 insertions, 42 deletions
diff --git a/drivers/cpufreq/tegra-cpufreq.c b/drivers/cpufreq/tegra-cpufreq.c index e652c1bd8d0f..63f00598a251 100644 --- a/drivers/cpufreq/tegra-cpufreq.c +++ b/drivers/cpufreq/tegra-cpufreq.c @@ -26,7 +26,6 @@  #include <linux/err.h>  #include <linux/clk.h>  #include <linux/io.h> -#include <linux/suspend.h>  static struct cpufreq_frequency_table freq_table[] = {  	{ .frequency = 216000 }, @@ -47,9 +46,6 @@ static struct clk *pll_x_clk;  static struct clk *pll_p_clk;  static struct clk *emc_clk; -static DEFINE_MUTEX(tegra_cpu_lock); -static bool is_suspended; -  static int tegra_cpu_clk_set_rate(unsigned long rate)  {  	int ret; @@ -112,42 +108,9 @@ static int tegra_update_cpu_speed(struct cpufreq_policy *policy,  static int tegra_target(struct cpufreq_policy *policy, unsigned int index)  { -	int ret = -EBUSY; - -	mutex_lock(&tegra_cpu_lock); - -	if (!is_suspended) -		ret = tegra_update_cpu_speed(policy, -				freq_table[index].frequency); - -	mutex_unlock(&tegra_cpu_lock); -	return ret; +	return tegra_update_cpu_speed(policy, freq_table[index].frequency);  } -static int tegra_pm_notify(struct notifier_block *nb, unsigned long event, -	void *dummy) -{ -	mutex_lock(&tegra_cpu_lock); -	if (event == PM_SUSPEND_PREPARE) { -		struct cpufreq_policy *policy = cpufreq_cpu_get(0); -		is_suspended = true; -		pr_info("Tegra cpufreq suspend: setting frequency to %d kHz\n", -			freq_table[0].frequency); -		if (clk_get_rate(cpu_clk) / 1000 != freq_table[0].frequency) -			tegra_update_cpu_speed(policy, freq_table[0].frequency); -		cpufreq_cpu_put(policy); -	} else if (event == PM_POST_SUSPEND) { -		is_suspended = false; -	} -	mutex_unlock(&tegra_cpu_lock); - -	return NOTIFY_OK; -} - -static struct notifier_block tegra_cpu_pm_notifier = { -	.notifier_call = tegra_pm_notify, -}; -  static int tegra_cpu_init(struct cpufreq_policy *policy)  {  	int ret; @@ -166,16 +129,13 @@ static int tegra_cpu_init(struct cpufreq_policy *policy)  		return ret;  	} -	if (policy->cpu == 0) -		register_pm_notifier(&tegra_cpu_pm_notifier); -  	policy->clk = cpu_clk; +	policy->suspend_freq = freq_table[0].frequency;  	return 0;  }  static int tegra_cpu_exit(struct cpufreq_policy *policy)  { -	cpufreq_frequency_table_put_attr(policy->cpu);  	clk_disable_unprepare(cpu_clk);  	clk_disable_unprepare(emc_clk);  	return 0; @@ -190,6 +150,9 @@ static struct cpufreq_driver tegra_cpufreq_driver = {  	.exit		= tegra_cpu_exit,  	.name		= "tegra",  	.attr		= cpufreq_generic_attr, +#ifdef CONFIG_PM +	.suspend	= cpufreq_generic_suspend, +#endif  };  static int __init tegra_cpufreq_init(void)  | 
