This patch adds a new function to the davinci_soc_info structure which controls voltage level (typically CVDD).
The new set_new_voltage call will be implemented by platform code supporting voltage change. Signed-off-by: Sekhar Nori <[email protected]> --- arch/arm/mach-davinci/cpufreq.c | 8 ++++++++ arch/arm/mach-davinci/include/mach/common.h | 1 + 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-davinci/cpufreq.c b/arch/arm/mach-davinci/cpufreq.c index af60d3d..8cb0c85 100644 --- a/arch/arm/mach-davinci/cpufreq.c +++ b/arch/arm/mach-davinci/cpufreq.c @@ -102,8 +102,16 @@ static int davinci_target(struct cpufreq_policy *policy, cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); + /* if moving to higher frequency, up the voltage beforehand */ + if (davinci_soc_info.set_new_voltage && freqs.new > freqs.old) + davinci_soc_info.set_new_voltage(idx); + ret = clk_set_rate(armclk, idx); + /* if moving to lower freq, lower the voltage after lowering freq */ + if (davinci_soc_info.set_new_voltage && freqs.new < freqs.old) + davinci_soc_info.set_new_voltage(idx); + cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); return ret; diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h index 1487a57..49d08aa 100644 --- a/arch/arm/mach-davinci/include/mach/common.h +++ b/arch/arm/mach-davinci/include/mach/common.h @@ -71,6 +71,7 @@ struct davinci_soc_info { dma_addr_t sram_dma; unsigned sram_len; void (*init_cpufreq_table) (struct cpufreq_frequency_table **); + int (*set_new_voltage) (unsigned int index); }; extern struct davinci_soc_info davinci_soc_info; -- 1.6.2.4 _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
