[linux-pm] Powerop-cpufreq.patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch adds support to be able to use the cpufreq 
'prepare-to-transition'
and 'finish-transition' nofifier lists for PowerOp transitions.


Signed-Off-by: David Singleton <dsingleton at mvista.com>

  drivers/cpufreq/cpufreq.c |   36 ++++++++++++++++++++++++++++++++++++
  include/linux/cpufreq.h   |    2 ++
  2 files changed, 38 insertions(+)

Index: linux-2.6.17/drivers/cpufreq/cpufreq.c
===================================================================
--- linux-2.6.17.orig/drivers/cpufreq/cpufreq.c
+++ linux-2.6.17/drivers/cpufreq/cpufreq.c
@@ -226,6 +226,35 @@ static void adjust_jiffies(unsigned long
  static inline void adjust_jiffies(unsigned long val, struct 
cpufreq_freqs *ci) { return; }
  #endif

+int cpufreq_prepare_transition(struct powerop *cur, struct powerop 
*new)
+{
+       struct cpufreq_freqs freqs;
+
+       freqs.old = cur->frequency;
+       freqs.new = new->frequency;
+       freqs.cpu = 0;
+       freqs.flags = cpufreq_driver->flags;
+       blocking_notifier_call_chain(&cpufreq_transition_notifier_list,
+                       CPUFREQ_PRECHANGE, &freqs);
+       adjust_jiffies(CPUFREQ_PRECHANGE, &freqs);
+       return 0;
+}
+EXPORT_SYMBOL(cpufreq_prepare_transition);
+
+int cpufreq_finish_transition(struct powerop *cur, struct powerop *new)
+{
+       struct cpufreq_freqs freqs;
+
+       freqs.old = cur->frequency;
+       freqs.new = new->frequency;
+       freqs.cpu = 0;
+       freqs.flags = cpufreq_driver->flags;
+       adjust_jiffies(CPUFREQ_POSTCHANGE, &freqs);
+       blocking_notifier_call_chain(&cpufreq_transition_notifier_list,
+                       CPUFREQ_POSTCHANGE, &freqs);
+       return 0;
+}
+EXPORT_SYMBOL(cpufreq_finish_transition);

  /**
   * cpufreq_notify_transition - call notifier chain and adjust_jiffies
@@ -884,6 +913,12 @@ static void cpufreq_out_of_sync(unsigned
  }


+#ifdef CONFIG_PM
+unsigned int cpufreq_quick_get(unsigned int cpu)
+{
+       return (current_state->frequency * 1000);
+}
+#else
  /**
   * cpufreq_quick_get - get the CPU frequency (in kHz) frpm policy->cur
   * @cpu: CPU number
@@ -905,6 +940,7 @@ unsigned int cpufreq_quick_get(unsigned

         return (ret);
  }
+#endif
  EXPORT_SYMBOL(cpufreq_quick_get);


Index: linux-2.6.17/include/linux/cpufreq.h
===================================================================
--- linux-2.6.17.orig/include/linux/cpufreq.h
+++ linux-2.6.17/include/linux/cpufreq.h
@@ -271,6 +271,8 @@ static inline unsigned int cpufreq_quick
         return 0;
  }
  #endif
+int cpufreq_prepare_transition(struct powerop *cur, struct powerop 
*new);
+int cpufreq_finish_transition(struct powerop *cur, struct powerop 
*new);


  /*********************************************************************



[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux