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

Reply via email to