From 79daf9e1a977947fa1c0721876ba7a93d221097d Mon Sep 17 00:00:00 2001 From: Jinyoung Park Date: Fri, 2 Mar 2012 14:17:09 +0900 Subject: ARM: tegra: clock: Add tegra_cpu_user_cap_set function To set cpu_user_cap in tegra drivers, added tegra_cpu_user_cap_set function. Bug 945552 Signed-off-by: Jinyoung Park Reviewed-on: http://git-master/r/87109 (cherry picked from commit db954aafdfdbe1fa122466b8e8ec4ea4273efb90) Change-Id: I765c44de4ed4ae908ef56914db53533605bd6d88 Reviewed-on: http://git-master/r/89740 Reviewed-by: Rohan Somvanshi Tested-by: Rohan Somvanshi --- arch/arm/mach-tegra/cpu-tegra.c | 43 +++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 15 deletions(-) (limited to 'arch/arm/mach-tegra/cpu-tegra.c') diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c index 4d9758670b60..b4ba093952c7 100644 --- a/arch/arm/mach-tegra/cpu-tegra.c +++ b/arch/arm/mach-tegra/cpu-tegra.c @@ -87,6 +87,32 @@ module_param_cb(force_policy_max, &policy_ops, &force_policy_max, 0644); static unsigned int cpu_user_cap; +static inline void _cpu_user_cap_set_locked(void) +{ +#ifndef CONFIG_TEGRA_CPU_CAP_EXACT_FREQ + if (cpu_user_cap != 0) { + int i; + for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { + if (freq_table[i].frequency > cpu_user_cap) + break; + } + i = (i == 0) ? 0 : i - 1; + cpu_user_cap = freq_table[i].frequency; + } +#endif + tegra_cpu_set_speed_cap(NULL); +} + +void tegra_cpu_user_cap_set(unsigned int speed_khz) +{ + mutex_lock(&tegra_cpu_lock); + + cpu_user_cap = speed_khz; + _cpu_user_cap_set_locked(); + + mutex_unlock(&tegra_cpu_lock); +} + static int cpu_user_cap_set(const char *arg, const struct kernel_param *kp) { int ret; @@ -94,21 +120,8 @@ static int cpu_user_cap_set(const char *arg, const struct kernel_param *kp) mutex_lock(&tegra_cpu_lock); ret = param_set_uint(arg, kp); - if (ret == 0) { -#ifndef CONFIG_TEGRA_CPU_CAP_EXACT_FREQ - if (cpu_user_cap != 0) { - int i; - for (i = 0; freq_table[i].frequency != - CPUFREQ_TABLE_END; i++) { - if (freq_table[i].frequency > cpu_user_cap) - break; - } - i = (i == 0) ? 0 : i - 1; - cpu_user_cap = freq_table[i].frequency; - } -#endif - tegra_cpu_set_speed_cap(NULL); - } + if (ret == 0) + _cpu_user_cap_set_locked(); mutex_unlock(&tegra_cpu_lock); return ret; -- cgit v1.2.3