diff options
Diffstat (limited to 'arch/arm/plat-mxc/cpufreq.c')
-rwxr-xr-x | arch/arm/plat-mxc/cpufreq.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/plat-mxc/cpufreq.c b/arch/arm/plat-mxc/cpufreq.c index bf34bf79ceea..2d26971a01ed 100755 --- a/arch/arm/plat-mxc/cpufreq.c +++ b/arch/arm/plat-mxc/cpufreq.c @@ -47,7 +47,7 @@ static u32 pre_suspend_rate; int cpufreq_suspended; #endif static bool cpufreq_suspend; -static struct mutex set_cpufreq_lock; +struct mutex set_cpufreq_lock; extern struct regulator *cpu_regulator; extern struct regulator *soc_regulator; @@ -108,6 +108,13 @@ int set_cpu_freq(int freq) "COULD NOT SET PU VOLTAGE!!!!\n"); goto err2; } + /* + * Force sync setting PU since regulator mabye maintain + * the old volatage setting before disable PU, then will + * miss this time setting if the two setting is same. + * So do force sync again here. + */ + regulator_sync_voltage(pu_regulator); } ret = regulator_set_voltage(cpu_regulator, gp_volt, gp_volt); @@ -148,6 +155,13 @@ int set_cpu_freq(int freq) "COULD NOT SET PU VOLTAGE!!!!\n"); goto err7; } + /* + * Force sync setting PU since regulator mabye maintain + * the old volatage setting before disable PU, then will + * miss this time setting if the two setting is same. + * So do force sync again here. + */ + regulator_sync_voltage(pu_regulator); } /* Check if the bus freq can be decreased.*/ bus_freq_update(cpu_clk, false); |