[linux-pm] Powerop-cpufreq.patch

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

 



This patch unifies the cpufreq power management into the PowerOp 
operating point
concept.   The same CPU frequencies can be set by either interface.  
The PowerOp
interface can transition to the new frequency by writing the name of 
the operating
point into the /sys/power/state file.


David

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

  drivers/cpufreq/cpufreq.c |   34 ++++++++++++++++++++++++++++++++++
  include/linux/cpufreq.h   |    2 ++
  2 files changed, 36 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,33 @@ 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 power_op *cur, struct power_op 
*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;
+}
+
+int cpufreq_finish_transition(struct power_op *cur, struct power_op 
*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;
+}

  /**
   * cpufreq_notify_transition - call notifier chain and adjust_jiffies
@@ -884,6 +911,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 +938,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 power_op *cur, struct power_op 
*new);
+int cpufreq_finish_transition(struct power_op *cur, struct power_op 
*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