linux/drivers/macintosh/windfarm_rm31.c
<<
>>
Prefs
   1/*
   2 * Windfarm PowerMac thermal control.
   3 * Control loops for RackMack3,1 (Xserve G5)
   4 *
   5 * Copyright (C) 2012 Benjamin Herrenschmidt, IBM Corp.
   6 *
   7 * Use and redistribute under the terms of the GNU GPL v2.
   8 */
   9#include <linux/types.h>
  10#include <linux/errno.h>
  11#include <linux/kernel.h>
  12#include <linux/device.h>
  13#include <linux/platform_device.h>
  14#include <linux/reboot.h>
  15#include <asm/prom.h>
  16#include <asm/smu.h>
  17
  18#include "windfarm.h"
  19#include "windfarm_pid.h"
  20#include "windfarm_mpu.h"
  21
  22#define VERSION "1.0"
  23
  24#undef DEBUG
  25#undef   25<>
  
  #undef DEBUG
 DB#undef  args/a>#undef  pf">tk/a>#undef tkcode(e" name="L22"> args/a>#undef DEBUG

 DB#undef  args/a>#undef DEBUG
DEBUG
DEBUG
  25#undef   25<>
  
   args/a>#undef  pf">tk/a>#undef tkcode(e" name="L22"> args/a>#undef DEBUG

 DB<_ode=/a>#undef  args/a>#undef DEBUG
DEBUG
  25<>
  
     disto5<>temp 22">ps for RackMack3,1 (Xserve G5)
   8 */
HACKED_O="+TEMP/a>#undef   25<>
  
  
   We cuCopytly only handle 2 chips   8 */
 NR_CHIP=/a>#undef  */
 NR_CPU_FAN=/a>#undef  NR_CHIP=/a>#undef  */
  17
/  3 */
 wf_sensor/a>#undef  sens_cpu_temp/a>#undef  NR_CHIP=/a>#undef windfarm_mpu.h"
 wf_sensor/a>#undef  sens_cpu_vo
    
     NR_CHIP=/a>#undef windfarm_mpu.h"
 wf_sensor/a>#undef  sens_cpu_amp   
     NR_CHIP=/a>#undef windfarm_mpu.h"
 wf_sensor/a>#undef  backside_temp/a>#undef windfarm_mpu.h"
 wf_sensor/a>#undef  slots_temp/a>#undef windfarm_mpu.h"
 wf_sensor/a>#undef  dimms_temp/a>#undef windfarm_mpu.h"
  17
 wf_> * Win/a>#undef  * Win=VERS*e" name="L22"> cpu_fan   
     NR_CHIP=/a>#undef windfarm_mpu.h"
 wf_> * Win/a>#undef  * Win=VERS*e" name="L22"> backside_fan/a>#undef windfarm_mpu.h"
 wf_> * Win/a>#undef  * Win=VERS*e" name="L22"> slots_fan/a>#undef windfarm_mpu.h"
 wf_> * Win/a>#undef  * Win=VERS*e" name="L22"> cpufreq_>#ump/a>#undef #ump=VER"fref">windfarm_mpu.h"
  17
   We keep a temperature " otoryass="ame=age calcula >
  of 180s   8 */
 CPU_TEMP_HIST_SIZE/a>#undef  */
  23
   PIDpan c m_rme   8 */
 *st refuct e" name="L22"> mpu_data/a>#undef  cpu_mpu_data/a>#undef  NR_CHIP=/a>#undef windfarm_mpu.h"
 wf_>pu_pid_m_rme/a>#undef pu_pid_m_rme=VERSI" name="L22"> cpu_pid/a>#undef  NR_CHIP=/a>#undef windfarm_mpu.h"
 u3sh/windfar  cpu_t" ot/a>#undef  CPU_TEMP_HIST_SIZE/a>#undef windfarm_mpu.h"
SI" name="L22"> cpu_t" ot_pt/a>#undef windfarm_mpu.h"
 s6tosh/windf  cpu_t" ot_totan/a>#undef windfarm_mpu.h"
 s3sh/windfar  cpu_all_tmax/a>#undef windfarm_mpu.h"
 wf_pid_m_rme/a>#undef  backside_pid/a>#undef windfarm_mpu.h"
SI" name="L22"> backside_tick/a>#undef windfarm_mpu.h"
 wf_pid_m_rme/a>#undef  slots_pid/a>#undef windfarm_mpu.h"
SI" name="L22"> slots_tick/a>#undef windfarm_mpu.h"
SI" name="L22"> slots_speed/a>#undef windfarm_mpu.h"
 wf_pid_m_rme/a>#undef  dimms_pid/a>#undef windfarm_mpu.h"
SI" name="L22"> dimms_output_>#ump/a>#undef #ump=VER"fref">windfarm_mpu.h"
  25<>
  
  windfarm_mpu.h"
 boin/a>#undef  hame_all_> * Wins/a>#undef  * Wins=VER"fref">windfarm_mpu.h"
 boin/a>#undef  hame_all_sensors/a>#undef windfarm_mpu.h"
 boin/a>#undef  m_rrted/a>#undef windfarm_mpu.h"
  23
SI" name="L22"> failure_m_rme/a>#undef windfarm_mpu.h"
 FAILURE_SENSOR/a>#undef windfarm_mpu.h"
 FAILURE_FA>#define =VERSSSSSSSS  SSS2pan class="comment"> */
 FAILURE_PERM#define  */
 FAILURE_LOW_O="+TEMP/a>#undef  */
 FAILURE_HIGH_O="+TEMP/a>#undef  */
  17
   O5<>temp ajax_s   8 */
 LOW_O="+_A="+AGE/a>#undef  */
 LOW_O="+_IMMEDIATE/a>#undef DEBUG
 LOW_O="+_CLEAR/a>#undef DEBUG
 HIGH_O="+_IMMEDIATE/a>#undef DEBUG
 HIGH_O="+_A="+AGE/a>#undef DEBUG
 HIGH_O="+_IMMEDIATE/a>#undef DEBUG
  25<>
  
  
DEBUG
 i  
    windfarm_mpu.h"
  23
   We max all CPU fan S/a case of apsensor error. We alsoado th>ps for RackMack3,1 (Xserve G5)
         * cpufreq >#umping now, even if it's supposedly d="f lrmer by th>ps for RackMack3,1 (Xserve G5)
         * ude/asm 22"> anyway, weado it earlier here toareact fasmerps for RackMack3,1 (Xserve G5)
         * 8 */
 cpufreq_>#ump/a>#undef #ump=VER)=DEBUG" class="sref">DEBUG
 wf_> * Win_set_max/a>#undef  * Win_set_max1" c(e" name="L22"> cpufreq_>#ump/a>#undef #ump=VER)ss="fref">linux/errno.h>
 i  
     i  
     nr_chips/a>#undef  i  
    DEBUG
 cpu_fan   
     i  
    DEBUG
 wf_> * Win_set_max/a>#undef  * Win_set_max1" c(e" name="L22"> cpu_fan   
     i  
    linux/errno.h>
 cpu_fan   
     i  
    DEBUG
 wf_> * Win_set_max/a>#undef  * Win_set_max1" c(e" name="L22"> cpu_fan   
     i  
    linux/errno.h>
 cpu_fan   
     i  
    DEBUG
 wf_> * Win_set_max/a>#undef  * Win_set_max1" c(e" name="L22"> cpu_fan   
     i  
    linux/errno.h>
linux/errno.h>
linux/errno.h>
  25<>
  
   temp  
    DEBUG
DEBUG
 new_m_rme/a>#undef DEBUG
 s3sh/windfar  t_avg  
     t_old/a>#undef windfarm_mpu.h"
 boin/a>#undef  firot/a>#undef  true/a>#undef windfarm_mpu.h"
  17

  v2.6.27>
  
16"1 id="126" clSSSSSSSSlass="line" name="L1">   Firot checkass="ie="dirme o5<>temps   8 */
 temp  
     cpu_all_tmax/a>#undef  LOW_O="+_IMMEDIATE/a>#undef DEBUG
 new_m_rme/a>#undef  FAILURE_LOW_O="+TEMP/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_LOW_O="+TEMP/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_ERR/a>#undef VERSION
temp due toaie="dirme CPU"1.0"
VERSIONlinux/errno.h>
linux/errno.h>
 temp  
     cpu_all_tmax/a>#undef  HIGH_O="+_IMMEDIATE/a>#undef DEBUG
 new_m_rme/a>#undef  FAILURE_HIGH_O="+TEMP/a>#undef linux/errno.h>
 failure_m_rme/a>#undef  FAILURE_HIGH_O="+TEMP/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_ERR/a>#undef VERSION
temp due to"1.0"
VERSIONlinux/errno.h>
linux/errno.h>
  25<>
  
           * The firot time around,S/aim3alize distarray with distfirot=Vass="string">"1.0"
         * temperature r  "1.0"
         * 8 */
 firot/a>#undef DEBUG
SI" name="L22"> i  
    windfarm_mpu.h"
  25<>
  
  DEBUG
 i  
     i  
     CPU_TEMP_HIST_SIZE/a>#undef  i  
    DEBUG
 cpu_t" ot/a>#undef  i  
     temp  
    linux/reboot.h>
 cpu_t" ot_totan/a>#undef  temp  
    linux/reboot.h>
linux/errno.h>
 firot/a>#undef  ethod/a>#undef linux/reboot.h>
linux/errno.h>
linux/errno.h>
  class="string">"1.0"
         * We calcula sta " otoryaof max temperaturesa>         *to5<>temp manage="L7ps for RackMack3,1 (Xserve G5)
         * 8 */
 t_old/a>#undef  cpu_t" ot/a>#undef  cpu_t" ot_pt/a>#undef windfarm_mpu.h"
 cpu_t" ot/a>#undef  cpu_t" ot_pt/a>#undef  temp  
    linux/reboot.h>
 cpu_t" ot_pt/a>#undef  cpu_t" ot_pt/a>#undef  CPU_TEMP_HIST_SIZE/a>#undef linux/reboot.h>
 cpu_t" ot_totan/a>#undef  t_old/a>#undef windfarm_mpu.h"
 cpu_t" ot_totan/a>#undef  temp  
    linux/reboot.h>
 t_avg  
     cpu_t" ot_totan/a>#undef  CPU_TEMP_HIST_SIZE/a>#undef linux/reboot.h>
  17
 DB<_ode=/a>#undef VERSION  17
 FIX32TOPRINT/a>#undef  t_avg  
     FIX32TOPRINT/a>#undef  t_old/a>#undef  FIX32TOPRINT/a>#undef  temp  
    linux/errno.h>
  25<>
  
   */
 t_avg  
     cpu_all_tmax/a>#undef  LOW_O="+_A="+AGE/a>#undef DEBUG
 new_m_rme/a>#undef  FAILURE_LOW_O="+TEMP/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_LOW_O="+TEMP/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_ERR/a>#undef VERSION
temp due toaame=age CPU"1.0"
VERSIONlinux/errno.h>
linux/errno.h>
 t_avg  
     cpu_all_tmax/a>#undef  HIGH_O="+_A="+AGE/a>#undef DEBUG
 new_m_rme/a>#undef  FAILURE_HIGH_O="+TEMP/a>#undef linux/errno.h>
 failure_m_rme/a>#undef  FAILURE_HIGH_O="+TEMP/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_ERR/a>#undef VERSION
temp due to"1.0"
VERSIONlinux/errno.h>
linux/errno.h>
DEBUG
   Now handle o5<>temp 22ndi >
 s. We don't cuCopytly use die a>
"1.0"
laSSSSSSS*to5<>temp handling core as it's not fully suited toadie needsaof thos>ps for RackMack3,1 (Xserve G5)
         * new e Ghrm_. T" o will bstfixed lrmer.ps for RackMack3,1 (Xserve G5)
         * 8 */
 new_m_rme/a>#undef DEBUG
   Highto5<>temp -.h"  ie="dirme shutdown * 8 */
 new_m_rme/a>#undef  FAILURE_HIGH_O="+TEMP/a>#undef  */
 e Ghrm__/asm-_off/a>#undef linux/errno.h>
 failure_m_rme/a>#undef  new_m_rme/a>#undef  new_m_rme/a>#undef linux/errno.h>
 cpu_max_all_fan   
    linux/errno.h>
 failure_m_rme/a>#undef  new_m_rme/a>#undef linux/errno.h>
 failure_m_rme/a>#undef  FAILURE_LOW_O="+TEMP/a>#undef linux/errno.h>
 temp  
     cpu_all_tmax/a>#undef  LOW_O="+_CLEAR/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_ERR/a>#undef VERSION
temp 22ndi >
 claeared !\nlinux/errno.h>
 failure_m_rme/a>#undef  FAILURE_LOW_O="+TEMP/a>#undef windfarm_mpu.h"
linux/errno.h>
  25<>
  
   FAILURE_LOW_O="+TEMP/a>#undef  FAILURE_HIGH_O="+TEMP/a>#undef windfarm_mpu.h"
linux/errno.h>
DEBUG
SI" name="L22"> r  <_om__cpu_vans/a>#undef SI" name="L22"> cpu/a>#undef  s3sh/windfar  temp  
     s3sh/windfar  /asm-/a>#undef linux/errno.h>
DEBUG
 s3sh/windfar  dtemp/a>#undef  vo
    
     amp   
    windfarm_mpu.h"
SI" name="L22"> rc/a>#undef windfarm_mpu.h"
  17
   Get di2"> temperature * 8 */
 rc/a>#undef  wf_sensor_get/a>#undef  sens_cpu_temp/a>#undef  cpu/a>#undef  dtemp/a>#undef windfarm_mpu.h"
 rc/a>#undef DEBUG
 DB#undef VERSION cpu/a>#undef windfarm_mpu.h"
 EIO/a>#undef windfarm_mpu.h"
linux/errno.h>
 DB<_ode=/a>#undef VERSION cpu/a>#undef  FIX32TOPRINT/a>#undef  dtemp/a>#undef linux/errno.h>
 temp  
     dtemp/a>#undef linux/errno.h>
  25<>
  
   */
 rc/a>#undef  wf_sensor_get/a>#undef  sens_cpu_vo
    
     cpu/a>#undef  vo
    
    linux/errno.h>
 rc/a>#undef DEBUG
 DB#undef VERSION cpu/a>#undef windfarm_mpu.h"
 EIO/a>#undef windfarm_mpu.h"
linux/errno.h>
 DB<_ode=/a>#undef VERSION cpu/a>#undef  FIX32TOPRINT/a>#undef  vo
    
    linux/errno.h>
linux/errno.h>
   Get cuCopyt * 8 */

  v2.6.27>
  
16"2 id="226=VERSSSSSSSSI" name="L22"> rc/a>#undef  wf_sensor_get/a>#undef  sens_cpu_amp   
     cpu/a>#undef  amp   
    linux/errno.h>
 rc/a>#undef DEBUG
 DB#undef VERSION cpu/a>#undef windfarm_mpu.h"
 EIO/a>#undef windfarm_mpu.h"
linux/errno.h>
 DB<_ode=/a>#undef VERSION cpu/a>#undef  FIX32TOPRINT/a>#undef  amp   
    linux/errno.h>
DEBUG
   Calcula stpasm- * 8 */
linux/errno.h>
   Scale vo
 age > */
         * obta6.2dS/a Darn>
 > */
         * 8 */
 /asm-/a>#undef  u6tosh/windf  vo
    
     u6tosh/windf  amp   
    windfarm_mpu.h"
  25<>
  
  VERSION cpu/a>#undef  FIX32TOPRINT/a>#undef  /asm-/a>#undef linux/errno.h>
linux/errno.h>
DEBUG
  23
linux/errno.h>
  17
 cpu_fan _m31k/a>#undef DEBUG
DEBUG
SI" name="L22"> err/a>#undef  cpu/a>#undef  i  
    windfarm_mpu.h"
 s3sh/windfar  speed/a>#undef  temp  
     /asm-/a>#undef  t_max/a>#undef DEBUG
  17
 DB<_ode=/a>#undef VERSIONlinux/errno.h>
DEBUG
 cpu/a>#undef  cpu/a>#undef  nr_chips/a>#undef  cpu/a>#undef DEBUG
SI" name="L22"> wf_>pu_pid_m_rme/a>#undef pu_pid_m_rmecodeS*e" name="L22"> sp/a>#undef  >pu_pid/a>#undef  cpu/a>#undef linux/errno.h>
  17
   ReaspcuCopyt speed * 8 */
 wf_> * Win_get/a>#undef  * Win_getcode(e" name="L22"> cpu_fan   
     cpu/a>#undef  sp/a>#undef  target/a>#undef windfarm_mpu.h"
  25<>
  
   r  <_om__cpu_vans/a>#undef  cpu/a>#undef  temp  
     /asm-/a>#undef windfarm_mpu.h"
 err/a>#undef DEBUG
 failure_m_rme/a>#undef  FAILURE_SENSOR/a>#undef windfarm_mpu.h"
 cpu_max_all_fan   
    linux/errno.h>
linux/errno.h>
linux/errno.h>
  17
   Keep trackaof higheot temp * 8 */
 t_max/a>#undef  max/a>#undef  t_max/a>#undef  temp  
    linux/errno.h>
  25<>
  
   */
 cpu_check_o5<>temp  
    temp1" c(e" name="L22"> t_max/a>#undef DEBUG
linux/errno.h>
DEBUG
   Run PID   8 */
 wf_>pu_pid_run/a>#undef pu_pid_runcode(e" name="L22"> sp/a>#undef  /asm-/a>#undef  temp  
    linux/errno.h>
  17
 DB<_ode=/a>#undef VERSION cpu/a>#undef  sp/a>#undef  target/a>#undef windfarm_mpu.h"
  17
   Apply DIMMs"linmp * 8 */
 speed/a>#undef  max/a>#undef  sp/a>#undef  target/a>#undef  dimms_output_linmp/a>#undef windfarm_mpu.h"
  17
   Apply result toaall cpu fan  * 8 */
 i  
     i  
     i  
    DEBUG
 err/a>#undef  wf_> * Win_set/a>#undef  * Win_setcode(e" name="L22"> cpu_fan   
     cpu/a>#undef  i  
     speed/a>#undef windfarm_mpu.h"
 err/a>#undef DEBUG
 pr_warn">VEa>#undef Vcode(eON" class="sref">VERSION  17
 cpu_fan   
     cpu/a>#undef  i  
     31.c/a>#undef  err/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_FAN/a>#undef windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
linux/errno.h>
linux/errno.h>
DEBUG
   Imple="L7a >
 ... * 8 */
SI" name="L22"> cpu_setup_pid/a>#undef SI" name="L22"> cpu/a>#undef DEBUG
DEBUG
SI" name="L22"> wf_>pu_pid_param/a>#undef pu_pid_paramcodeSl" name="L22"> pid/a>#undef windfarm_mpu.h"
 *stSrefuc>SI" name="L22"> mpu_data/a>#undef  mpu/a>#undef  cpu_mpu_data/a>#undef  cpu/a>#undef linux/errno.h>
 s3sh/windfar  tmax/a>#undef  ttarget/a>#undef  ptarget/a>#undef linux/errno.h>
 fmin/a>#undef  fmax/a>#undef  hsize/a>#undef linux/errno.h>
  17
   Get PID params from distapproprirme MPU EEPROM * 8 */
 tmax/a>#undef  mpu/a>#undef  tmax/a>#undef windfarm_mpu.h"
 ttarget/a>#undef  mpu/a>#undef  ttarget/a>#undef windfarm_mpu.h"
 ptarget/a>#undef  s3sh/windfar  mpu/a>#undef  pmaxh/a>#undef  mpu/a>#undef  padjmax/a>#undef windfarm_mpu.h"
  17
 DB#undef VERSION  17
 cpu/a>#undef  FIX32TOPRINT/a>#undef  ttarget/a>#undef  FIX32TOPRINT/a>#undef  tmax/a>#undef linux/errno.h>
  25<>
  
   */
 tmax/a>#undef  cpu_all_tmax/a>#undef DEBUG
 cpu_all_tmax/a>#undef  tmax/a>#undef linux/errno.h>
DEBUG
   Set PID min/max by us/fo tistrear fan min/max * 8 */
 fmin/a>#undef  wf_> * Win_get_min/a>#undef  * Win_get_mincode(e" name="L22"> cpu_fan   
     cpu/a>#undef linux/errno.h>
 fmax/a>#undef  wf_> * Win_get_max/a>#undef  * Win_get_maxcode(e" name="L22"> cpu_fan   
     cpu/a>#undef linux/errno.h>
 DB#undef VERSION cpu/a>#undef  fmin/a>#undef  fmax/a>#undef linux/errno.h>
  17
   History size * 8 */
 hsize/a>#undef  min_t/a>#undef ,SI" name="L22"> mpu/a>#undef  tguardband/a>#undef  WF_PID_MAX_HISTORY/a>#undef linux/errno.h>
 DB#undef VERSION cpu/a>#undef  hsize/a>#undef linux/errno.h>
linux/errno.h>
   Initialize PID loop * 8 */
 pid/a>#undef  intervan/a>#undef    se22nds * 8 */
 pid/a>#undef  history_len/a>#undef  hsize/a>#undef linux/errno.h>
 pid/a>#undef  gd/a>#undef  mpu/a>#undef  pid_gd/a>#undef linux/errno.h>

  v2.6.27>
  
16"3 id="326=VERSSSSSSSSI" name="L22"> pid/a>#undef  gp/a>#undef  mpu/a>#undef  pid_gp/a>#undef linux/errno.h>
 pid/a>#undef  gr/a>#undef  mpu/a>#undef  pid_g-/a>#undef linux/errno.h>
 pid/a>#undef  tmax/a>#undef  tmax/a>#undef linux/errno.h>
 pid/a>#undef  ttarget/a>#undef  ttarget/a>#undef linux/errno.h>
 pid/a>#undef  pmaxadj/a>#undef  ptarget/a>#undef linux/errno.h>
 pid/a>#undef  min/a>#undef  fmin/a>#undef linux/errno.h>
 pid/a>#undef  max/a>#undef  fmax/a>#undef linux/errno.h>
  23
 wf_>pu_pid_init/a>#undef pu_pid_initcode(&ump"l" name="L22"> >pu_pid/a>#undef  cpu/a>#undef  /id/a>#undef linux/errno.h>
 >pu_pid/a>#undef  cpu/a>#undef  target/a>#undef DEBUG
DEBUG
DEBUG
linux/errno.h>
  25<>
  
   */
SI" name="L22"> wf_pid_param/a>#undef  backside_param/a>#undef DEBUG
 intervan/a>#undef   17
 history_len/a>#undef   17
 gd/a>#undef   17
 gp/a>#undef   17
 gr/a>#undef   17
 itarget/a>#undef   17
 addi >ve/a>#undef ve" clSSSSS  = 0,ass="line" name="L17">  17
 min/a>#undef   17
 max/a>#undef   17
DEBUG
DEBUG
   DIMMs"temperature (cinmp tistbackside fan) * 8 */
SI" name="L22"> wf_pid_param/a>#undef  dimms_param/a>#undef DEBUG
 intervan/a>#undef   17
 history_len/a>#undef   17
 gd/a>#undef   17
 gp/a>#undef   17
 gr/a>#undef   17
 itarget/a>#undef   17
 addi >ve/a>#undef ve" clSSSSS  = 0,ass="line" name="L17">  17
 min/a>#undef   17
 max/a>#undef   17
DEBUG
  17
 backside_fan_m31k/a>#undef DEBUG
DEBUG
 s3sh/windfar  temp  
     dtemp/a>#undef linux/errno.h>
 speed/a>#undef  dspeed/a>#undef  fan_min/a>#undef linux/errno.h>
 err/a>#undef linux/errno.h>
linux/errno.h>
 backside_fan/a>#undef  backside_temp/a>#undef  dimms_temp/a>#undef  backside_t31k/a>#undef DEBUG
linux/errno.h>
 backside_t31k/a>#undef DEBUG
linux/errno.h>
 backside_t31k/a>#undef  backside_pid/a>#undef  param/a>#undef  intervan/a>#undef linux/errno.h>
  17
 DB<_ode=/a>#undef VERSIONlinux/errno.h>
  25<>
  
   */
 err/a>#undef  wf_> * Win_get/a>#undef  * Win_getcode(e" name="L22"> backside_fan/a>#undef  speed/a>#undef windfarm_mpu.h"
 err/a>#undef windfarm_mpu.h"
 backside_pid/a>#undef  target/a>#undef  speed/a>#undef windfarm_mpu.h"
linux/errno.h>
 err/a>#undef  wf_sensor_get/a>#undef  backside_temp/a>#undef  temp  
    windfarm_mpu.h"
 err/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_WARNIN#undef VERSION
  17
 err/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_SENSOR/a>#undef windfarm_mpu.h"
 wf_> * Win_set_max/a>#undef  * Win_set_maxcode(e" name="L22"> backside_fan/a>#undef windfarm_mpu.h"
windfarm_mpu.h"
linux/errno.h>
 speed/a>#undef  wf_pid_run/a>#undef  backside_pid/a>#undef  temp  
    linux/errno.h>
linux/errno.h>
 DB<_ode=/a>#undef VERSION  17
 FIX32TOPRINT/a>#undef  temp  
     speed/a>#undef windfarm_mpu.h"
  17
 err/a>#undef  wf_sensor_get/a>#undef  dimms_temp/a>#undef  dtemp/a>#undef windfarm_mpu.h"
 err/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_WARNIN#undef VERSION
  17
 err/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_SENSOR/a>#undef windfarm_mpu.h"
 wf_> * Win_set_max/a>#undef  * Win_set_maxcode(e" name="L22"> backside_fan/a>#undef windfarm_mpu.h"
windfarm_mpu.h"
linux/errno.h>
 dspeed/a>#undef  wf_pid_run/a>#undef  dimms_pid/a>#undef  dtemp/a>#undef windfarm_mpu.h"
 dimms_output_linmp/a>#undef  dspeed/a>#undef windfarm_mpu.h"
  25<>
  
   dspeed/a>#undef windfarm_mpu.h"
 fan_min/a>#undef  max/a>#undef  fan_min/a>#undef  backside_param/a>#undef  min/a>#undef windfarm_mpu.h"
 speed/a>#undef  max/a>#undef  speed/a>#undef  fan_min/a>#undef windfarm_mpu.h"
DEBUG
 err/a>#undef  wf_> * Win_set/a>#undef  * Win_setcode(e" name="L22"> backside_fan/a>#undef  speed/a>#undef windfarm_mpu.h"
 err/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_WARNIN#undef VERSION
 err/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_FAN/a>#undef windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
  25<>
  
  DEBUG
DEBUG
   firot time initialize th">V  * 8 */
 s3sh/windfar  fmin/a>#undef  wf_> * Win_get_min/a>#undef  * Win_get_mincode(e" name="L22"> backside_fan/a>#undef windfarm_mpu.h"
 s3sh/windfar  fmax/a>#undef  wf_> * Win_get_max/a>#undef  * Win_get_maxcode(e" name="L22"> backside_fan/a>#undef windfarm_mpu.h"
SI" name="L22"> wf_pid_param/a>#undef  param/a>#undef windfarm_mpu.h"

  v2.6.27>
  
16"4 id="426=VERfref">windfarm_mpu.h"
 param/a>#undef  backside_param/a>#undef windfarm_mpu.h"
 param/a>#undef  min/a>#undef  max/a>#undef  param/a>#undef  min/a>#undef  fmin/a>#undef windfarm_mpu.h"
 param/a>#undef  max/a>#undef  min/a>#undef  param/a>#undef  max/a>#undef  fmax/a>#undef linux/errno.h>
 wf_pid_init/a>#undef  backside_pid/a>#undef  /aram/a>#undef linux/errno.h>
linux/errno.h>
 param/a>#undef  dimms_param/a>#undef linux/errno.h>
 wf_pid_init/a>#undef  dimms_pid/a>#undef  /aram/a>#undef linux/errno.h>
linux/errno.h>
 backside_t31k/a>#undef linux/errno.h>
windfarm_mpu.h"
 pr_info/a>#undef VERSION * Win loop m_rrted.\nlinux/errno.h>
linux/errno.h>
  25<>
  
   */
 *stSrefuc>SI" name="L22"> wf_pid_param/a>#undef  slots_param/a>#undef DEBUG
 intervan/a>#undef   17
 history_len/a>#undef   17
 gd/a>#undef   17
 gp/a>#undef   17
 gr/a>#undef   17
 itarget/a>#undef   17
 addi >ve/a>#undef ve" clSSSSS  = 1,ass="line" name="L17">  17
 min/a>#undef   17
 max/a>#undef   17
DEBUG
DEBUG
 slots_fan_m31k/a>#undef DEBUG
DEBUG
 s3sh/windfar  temp  
    DEBUG
 speed/a>#undef DEBUG
 err/a>#undef linux/errno.h>
  25<>
  
   slots_temp  
     slots_t31k/a>#undef DEBUG
windfarm_mpu.h"
 slots_t31k/a>#undef DEBUG
windfarm_mpu.h"
 slots_t31k/a>#undef  slots_pid/a>#undef  param/a>#undef  intervan/a>#undef linux/errno.h>
linux/errno.h>
 DB<_ode=/a>#undef VERSIONlinux/errno.h>
windfarm_mpu.h"
 err/a>#undef  wf_sensor_get/a>#undef  slots_temp  
     temp  
    windfarm_mpu.h"
 err/a>#undef DEBUG
 pr_warn">VEa>#undef Vcode(eON" class="sref">VERSION err/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_SENSOR/a>#undef windfarm_mpu.h"
 wf_> * Win_set_max/a>#undef  * Win_set_maxcode(e" name="L22"> slots_fan/a>#undef windfarm_mpu.h"
windfarm_mpu.h"
linux/errno.h>
 speed/a>#undef  wf_pid_run/a>#undef  slots_pid/a>#undef  temp  
    linux/errno.h>
  17
 DB<_ode=/a>#undef VERSION  17
 FIX32TOPRINT/a>#undef  temp  
     speed/a>#undef windfarm_mpu.h"
  25<>
  
   speed/a>#undef DEBUG
 err/a>#undef  wf_> * Win_set/a>#undef  * Win_setcode(e" name="L22"> slots_fan/a>#undef  speed/a>#undef windfarm_mpu.h"
 err/a>#undef DEBUG
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_WARNIN#undef VERSION
 err/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_FAN/a>#undef windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
windfarm_mpu.h"
 slots_setup_pid/a>#undef DEBUG
DEBUG
   firot time initialize th">V  * 8 */
 s3sh/windfar  fmin/a>#undef  wf_> * Win_get_min/a>#undef  * Win_get_mincode(e" name="L22"> slots_fan/a>#undef windfarm_mpu.h"
 s3sh/windfar  fmax/a>#undef  wf_> * Win_get_max/a>#undef  * Win_get_maxcode(e" name="L22"> slots_fan/a>#undef windfarm_mpu.h"
 wf_pid_param/a>#undef  param/a>#undef  slots_param/a>#undef windfarm_mpu.h"
  23
 param/a>#undef  min/a>#undef  max/a>#undef  param/a>#undef  min/a>#undef  fmin/a>#undef windfarme="L23">  23
 param/a>#undef  max/a>#undef  min/a>#undef  param/a>#undef  max/a>#undef  fmax/a>#undef linume="L23">  23
 wf_pid_init/a>#undef  slots_pid/a>#undef  /aram/a>#undef linux/errno.h>
 slots_t31k/a>#undef linux/errno.h>
  25<>
  
  VERSION * Win loop m_rrted.\nlinux/errno.h>
linux/errno.h>
linux/errno.h>
 set_fail_m_rme/a>#undef DEBUG
DEBUG
 cpu_max_all_fans/a>#undef linux/errno.h>
  17
 backside_fan/a>#undef   17
 wf_> * Win_set_max/a>#undef  * Win_set_maxcode(e" name="L22"> backside_fan/a>#undef windfarm_mpu.h"
 slots_fan/a>#undef windfarm_mpu.h"
 wf_> * Win_set_max/a>#undef  * Win_set_maxcode(e" name="L22"> slots_fan/a>#undef windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
 f="d_t31k/a>#undef DEBUG
DEBUG
SI" name="L22"> i/a>#undef  #unt_failure/a>#undef windfarm_mpu.h"
  17
 s_rrted/a>#undef DEBUG
 s_rrted/a>#undef linux/errno.h>
 pf">tk/a>#undef tkcode(e" name="L22"> KERN_INFO/a>#undef VERSION
 * Win loops m_rrted.\nlinux/errno.h>
 i/a>#undef  i/a>#undef  nr_chips/a>#undef  i/a>#undef DEBUG
 cpu_setup_pid/a>#undef  i/a>#undef DEBUG
 failure_m_rme/a>#undef  FAILURE_PERM/a>#undef windfarm_mpu.h"
 set_fail_m_rme/a>#undef linux/errno.h>
linux/errno.h>
linux/errno.h>
linux/errno.h>

  v2.6.27>
  
16"5 id="526" clSSSSSSSS  SSS lae" name="L22"> DB<_ode=/a>#undef VERSION FIX32TOPRINT/a>#undef  cpu_all_tmax/a>#undef linux/errno.h>
  17
 backside_setup_pid/a>#undef linux/errno.h>
 slots_setup_pid/a>#undef linux/errno.h>
linux/errno.h>
 HACKED_OVERTEMP/a>#undef linux/errno.h>
 cpu_all_tmax/a>#undef linux/errno.h>
linux/errno.h>
linux/errno.h>
  17
   Perman"L3 failure, bail out * 8 */
 failure_m_rme/a>#undef  FAILURE_PERM/a>#undef DEBUG
windfarm_mpu.h"
  25<>
  
   */
S  SSS la* Clear all failure bits except low ommetemp which will be ev"L3ually8 */
S  SSS la* cleared by the > * Win loop itself8 */
S  SSS la* 8 */
 #unt_failure/a>#undef  failure_m_rme/a>#undef windfarm_mpu.h"
 failure_m_rme/a>#undef  FAILURE_LOW_OVERTEMP/a>#undef windfarm_mpu.h"
 backside_fan_m31k/a>#undef linux/errno.h>
 slots_fan_m31k/a>#undef linux/errno.h>
  25<>
  
   */
S  SSS la* DIMM temperatureco/a> */
S  SSS la* 8 */
 cpu_fans_m31k/a>#undef linux/errno.h>
  23
 DB<_ode=/a>#undef VERSION  17
 #unt_failure/a>#undef  failure_m_rme/a>#undef linux/errno.h>
windfarm_mpu.h"
   Checkafor failures. Any failure causes cpufreq cinmp">Va* 8 */
 failure_m_rme/a>#undef  #unt_failure/a>#undef  cpufreq_linmp/a>#undef DEBUG
 wf_> * Win_set_max/a>#undef  * Win_set_maxcode(e" name="L22"> cpufreq_linmp/a>#undef linux/errno.h>
 failure_m_rme/a>#undef  #unt_failure/a>#undef  cpufreq_linmp/a>#undef DEBUG
 wf_> * Win_set_min/a>#undef  * Win_set_mincode(e" name="L22"> cpufreq_linmp/a>#undef linux/errno.h>
DEBUG
   That's itafor now, we might want to deal with other failures8 */
S  SSS la* differ"L3ly in the future though8 */
S  SSS la* 8 */
linux/errno.h>
  17
 f="d_new_> * Win/a>#undef  wf_> * Win/a>#undef  * Win" clS*e" name="L22"> ct/a>#undef DEBUG
DEBUG
 boin/a>#undef  all_> * Wins/a>#undef  * Wins=VER"fref">windfarm_mpu.h"
linux/errno.h>
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpu_fans/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpu_fans/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpu_fans/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpu_fans/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpu_fans/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpu_fans/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 backside_fan/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 slots_fan/a>#undef  ct/a>#undef windfarm_mpu.h"
 s_rcmp  
     ct/a>#undef  nc#L/a>#undef VERSIONDEBUG
 cpufreq_linmp/a>#undef  ct/a>#undef windfarm_mpu.h"
linux/errno.h>
 all_> * Wins/a>#undef  * Wins=VER =s="fref">linux/errno.h>
 cpu_fans/a>#undef linux/errno.h>
 cpu_fans/a>#undef linux/errno.h>
 cpu_fans/a>#undef linux/errno.h>
 backside_fan/a>#undef linux/errno.h>
 slots_fan/a>#undef linux/errno.h>
 nr_chips/a>#undef DEBUG
 all_> * Wins/a>#undef  * Wins=VER &ump"==DEBUG" class="sref">DEBUG
 cpu_fans/a>#undef linux/errno.h>
 cpu_fans/a>#undef linux/errno.h>
 cpu_fans/a>#undef linux/errno.h>
 have_all_> * Wins/a>#undef  * Winscode = I" name="L22"> all_> * Wins/a>#undef  * Wins=VER"fref">windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
  17
 f="d_new_sensor/a>#undef  wf_sensor/a>#undef  sr/a>#undef DEBUG
DEBUG
 boin/a>#undef  all_sensors/a>#undef windfarm_mpu.h"
  25<>
  
   nc#L/a>#undef VERSION-temp-0DEBUG
 sens_cpu_temp  
     sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSION-temp-1DEBUG
 sens_cpu_temp  
     sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 sens_cpu_volts/a>#undef  sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 sens_cpu_volts/a>#undef  sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 sens_cpu_umps/a>#undef  sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 sens_cpu_umps/a>#undef  sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 backside_temp  
     sr/a>#undef windfarm_mpu.h"
 s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 slots_temp  
     sr/a>#undef windfarm_mpu.h"

  v2.6.27>
  
16"6 id="626=VERSSSSSSSSelseS/f (!I" name="L22"> s_rcmp  
     sr/a>#undef  nc#L/a>#undef VERSIONDEBUG
 dimms_temp  
     sr/a>#undef windfarm_mpu.h"
  25<>
  
  linux/errno.h>
 sens_cpu_temp  
    linux/errno.h>
 sens_cpu_volts/a>#undef linux/errno.h>
 sens_cpu_umps/a>#undef linux/errno.h>
 backside_temp  
    linux/errno.h>
 slots_temp  
    linux/errno.h>
 dimms_temp  
    linux/errno.h>
 nr_chips/a>#undef DEBUG
 all_sensors/a>#undef DEBUG
 sens_cpu_temp  
    linux/errno.h>
 sens_cpu_volts/a>#undef linux/errno.h>
 sens_cpu_umps/a>#undef linux/errno.h>
linux/errno.h>
 have_all_sensors/a>#undef  all_sensors/a>#undef windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
SI" name="L22"> f="d_wf_notify/a>#undef  notifier_blo1k/a>#undef  self/a>#undef   17
 ev"L3/a>#undef  data  
    DEBUG
DEBUG
 ev"L3/a>#undef DEBUG
 WF_EVENT_NEW_SENSOR/a>#undef DEBUG
 f="d_new_sensor/a>#undef  data  
    windfarm_mpu.h"
linux/errno.h>
 WF_EVENT_NEW_CONTROL/a>#undef DEBUG
 f="d_new_> * Win/a>#undef  data  
    windfarm_mpu.h"
linux/errno.h>
 WF_EVENT_TICK/a>#undef DEBUG
 have_all_> * Wins/a>#undef  * Winscode &ump"&ump" I" name="L22"> have_all_sensors/a>#undef DEBUG
 f="d_t31k/a>#undef windfarm_mpu.h"
linux/errno.h>
windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
SI" name="L22"> notifier_blo1k/a>#undef  f="d_ev"L3s/a>#undef DEBUG
 notifier_call/a>#undef  f="d_wf_notify/a>#undef   17
windfarm_mpu.h"
  17
SI" name="L22"> wf_f="d_probL/a>#undef  platfohredevicL/a>#undef  dev  
    DEBUG
DEBUG
 wf_fegister_cli"L3/a>#undef  f="d_ev"L3s/a>#undef windfarm_mpu.h"
windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
SI" name="L22"> _edevexit/a>#undef  wf_f="d_removL/a>#undef  platfohredevicL/a>#undef  dev  
    DEBUG
DEBUG
 wf_unfegister_cli"L3/a>#undef  f="d_ev"L3s/a>#undef windfarm_mpu.h"
  17
   shouldSreleaseSall sensors and > * Winsa* 8 */
windfarm_mpu.h"
linux/errno.h>
  25<>
  
  " clSI" name="L22"> wf_f="d_d 25<>/a>#undef DEBUG
 probL/a>#undef  wf_f="d_probL/a>#undef   17
 removL/a>#undef  wf_f="d_removL/a>#undef   17
 d 25<>/a>#undef code = {=DEBUG" class="sref">DEBUG
 nc#L/a>#undef VERSION
  17
 own<>/a>#undef code  = I" name="L22"> THIS_MODULE/a>#undef   17
  17
windfarm_mpu.h"
  25<>
  
   wf_f="d_init/a>#undef DEBUG
DEBUG
 devicL_n2">  
    " clS*e" name="L22"> cpu  
    windfarm_mpu.h"
SI" name="L22"> i/a>#undef windfarm_mpu.h"
  23
 of_23"hrm__is_ameprm3bl>  
    code(eON" class="sref">VERSIONDEBUG
 ENODEV  
    windfarm_mpu.h"
windfarm_mpu.h"
   Count the number of CPU > resa* 8 */
 nr_chips/a>#undef windfarm_mpu.h"
 cpu  
     NULL/a>#undef  cpu  
     of_f;
<_n2">_by_typ>  
    _by_typ>code(e" name="L22"> cpu  
    VERSION NULL/a>#undef DEBUG
 nr_chips/a>#undef windfarm_mpu.h"
 nr_chips/a>#undef  NR_CHIP=/a>#undef DEBUG
 nr_chips/a>#undef  NR_CHIP=/a>#undef windfarm_mpu.h"
  23
 pr_info/a>#undef VERSION
Vafor desktop G5 with %ad chips\n  17
 nr_chips/a>#undef windfarm_mpu.h"
windfarm_mpu.h"
   Get MPU dataafor e3"h CPU * 8 */
 i/a>#undef  i/a>#undef  nr_chips/a>#undef  i/a>#undef DEBUG
 cpu_mpu_data  
     i/a>#undef  wf_get_mpu  
     i/a>#undef windfarm_mpu.h"
 cpu_mpu_data  
     i/a>#undef DEBUG
 pr_er>/a>#undef code(eON" class="sref">VERSION i/a>#undef windfarm_mpu.h"
 ENXIO  
    windfarm_mpu.h"
linux/errno.h>
linux/errno.h>
  17
 MODULE/a>#undef   17
 request_modul>  
    code(eON" class="sref">VERSION
 * Winswindfarm_mpu.h"
 request_modul>  
    code(eON" class="sref">VERSION
windfarm_mpu.h"
 request_modul>  
    code(eON" class="sref">VERSION
windfarm_mpu.h"
 request_modul>  
    code(eON" class="sref">VERSION
windfarm_mpu.h"
 request_modul>  
    code(eON" class="sref">VERSION
windfarm_mpu.h"
 request_modul>  
    code(eON" class="sref">VERSION
windfarm_mpu.h"
   MODULE * 8 */
linux/errno.h>
 platfohred 25<>_fegister/a>#undef _fegistercode(&ump"l" name="L22"> wf_f="d_d 25<>/a>#undef windfarm_mpu.h"

  v2.6.27>
  
16"7 id="726=VERSSSSSSSSreturn 0"fref">windfarm_mpu.h"
linux/errno.h>
  25<>
  
   wf_f="d_exit/a>#undef DEBUG
DEBUG
 platfohred 25<>_unfegister/a>#undef _unfegistercode(&ump"l" name="L22"> wf_f="d_d 25<>/a>#undef windfarm_mpu.h"
linux/errno.h>
  23
 modul>_init/a>#undef _initcode(e" name="L22"> wf_f="d_init/a>#undef windfarm_mpu.h"
 modul>_exit/a>#undef _exitcode(e" name="L22"> wf_f="d_exit/a>#undef windfarm_mpu.h"
windfarm_mpu.h"
 MODULE_AUTHOR/a>#undef VERSIONV.org.h" windfarm_mpu.h"
 MODULE_DESCRIPTION/a>#undef VERSION * Winafor Xserve G5windfarm_mpu.h"
 MODULE_LICENSE/a>#undef VERSIONwindfarm_mpu.h"
 MODULE_ALIA=/a>#undef VERSION
windfarm_mpu.h"



The original LXR software by the ref">windhttp://sourcefohge.net/projects/lxr/>LXR ame=unitycode, this experi="L3al m_mpion by ref">windmailto:lxr@m_rux.no">lxr@m_rux.nocode.
lxr.m_rux.no k; windhttp://www.redpill-m_rpro.no">Redpill L_rpro A=code, provider of L_rux > *sult">Vaand operrm3 *s services since 1995.