linux/drivers/macintosh/windfarm_pm121.c
<<
n va4.1/spa v 4.1/form v 4.1a n va4. href="../linux+v3.9.5/drivers/macintosh/windfarm_pm121.c">n va4.1img src="../.static/gfx/right.png" alt=">>">n 1/spa vn 1spa class="lxr_search">n va ="+search" method="post" onsubmit="return do_search(this);">n va4.1input typ hidden" nam navtarget" on> ">n va4.1input typ text" nam search" id search">n va4.1buttptityp submit">Searchn va4.Prefsv 4.1/a>n 1/spa vva4. .1/div vva4. .1form ac > ="ajax+*" method="post" onsubmit="return false;">n 1input typ hidden" nam ajax_lookup" id ajax_lookup" on> ">nva4. .1/form vnva4. .1div class="headingbottpm">
v 1div id file_contents"
. .11/a>1spa  class="comment">/*1/spa  v. .21/a>1spa  class="comment"> * Windfarm PowerMac thermal control. iMac G5 iSight1/spa  v. .31/a>1spa  class="comment"> *1/spa  v. .41/a>1spa  class="comment"> * (c) Copyright 2007 Étienne Bersac <bersace@gmail.com>1/spa  v. .51/a>1spa  class="comment"> *1/spa  v. .61/a>1spa  class="comment"> * Bits & pieces from windfarm_pm81.c by (c) Copyright 2005 Benjamin1/spa  v. .71/a>1spa  class="comment"> * Herrenschmidt, IBM Corp. <benh@kernel.crashing.org>1/spa  v. .81/a>1spa  class="comment"> *1/spa  v. .91/a>1spa  class="comment"> * Released under the term of the GNU GPL="2v1/spa  v. .10"a>1spa  class="comment"> *1/spa  v. 111/a>1spa  class="comment"> *1/spa  v. 121/a>1spa  class="comment"> *1/spa  v. 131/a>1spa  class="comment"> * PowerMac12,11/spa  v. 141/a>1spa  class="comment"> * ============1/spa  v. 151/a>1spa  class="comment"> *1/spa  v. 161/a>1spa  class="comment"> *1/spa  v. 171/a>1spa  class="comment"> * The algorithm used is the PID control algorithm, used the sam  way1/spa  v. 181/a>1spa  class="comment"> * the published Darwin code does, using the sam  on>
 s that are1/spa  v. 191/a>1spa  class="comment"> * present in the Darwin .8.1 snapshot property lists (note however1/spa  v. 210"a>1spa  class="comment"> * that none of the code has been re-used, it's a complete1/spa  v. 211/a>1spa  class="comment"> * re-implementa >
 1/spa  v. 221/a>1spa  class="comment"> *1/spa  v. 231/a>1spa  class="comment"> * There is two models using PowerMac12,1. Model 2 is iMac G5 iSight1/spa  v. 241/a>1spa  class="comment"> * 17" while Model 3 is iMac G5 20". They do have both the sam 1/spa  v. 251/a>1spa  class="comment"> * controls with a tiny difference. The control-ids of hard-drive-fa 1/spa  v. 261/a>1spa  class="comment"> * and cpu-fa  is swappedv1/spa  v. 271/a>1spa  class="comment"> *1/spa  v. 281/a>1spa  class="comment"> *1/spa  v. 291/a>1spa  class="comment"> * Target Correc >
  :1/spa  v. 310"a>1spa  class="comment"> *1/spa  v. 311/a>1spa  class="comment"> * controls have a target correc >
  calculated as :1/spa  v. 321/a>1spa  class="comment"> *1/spa  v. 331/a>1spa  class="comment"> * new_min = ((((average_power * slope) >> 16) + offset) >> 16) + min_on>
 1/spa  v. 341/a>1spa  class="comment"> * new_on>
  = max(new_on>
 , max(new_min, 0))1/spa  v. 351/a>1spa  class="comment"> *1/spa  v. 361/a>1spa  class="comment"> * OD Fa  control correc >
 v1/spa  v. 371/a>1spa  class="comment"> *1/spa  v. 381/a>1spa  class="comment"> * # model_id:.21/spa  v. 391/a>1spa  class="comment"> *   offset             : -195631521/spa  v. 410"a>1spa  class="comment"> *   slope              :  19563151/spa  v. 411/a>1spa  class="comment"> *1/spa  v. 421/a>1spa  class="comment"> * # model_id:.31/spa  v. 431/a>1spa  class="comment"> *   offset             : -156506521/spa  v. 441/a>1spa  class="comment"> *   slope              :  15650651/spa  v. 451/a>1spa  class="comment"> *1/spa  v. 461/a>1spa  class="comment"> * HD Fa  control correc >
 v1/spa  v. 471/a>1spa  class="comment"> *1/spa  v. 481/a>1spa  class="comment"> * # model_id:.21/spa  v. 491/a>1spa  class="comment"> *   offset             : -156506521/spa  v. 510"a>1spa  class="comment"> *   slope              :  15650651/spa  v. 511/a>1spa  class="comment"> *1/spa  v. 521/a>1spa  class="comment"> * # model_id:.31/spa  v. 531/a>1spa  class="comment"> *   offset             : -195631521/spa  v. 541/a>1spa  class="comment"> *   slope              :  19563151/spa  v. 551/a>1spa  class="comment"> *1/spa  v. 561/a>1spa  class="comment"> * CPU Fa  control correc >
 v1/spa  v. 571/a>1spa  class="comment"> *1/spa  v. 581/a>1spa  class="comment"> * # model_id:.21/spa  v. 591/a>1spa  class="comment"> *   offset             : -254319001/spa  v. 610"a>1spa  class="comment"> *   slope              :  25431901/spa  v. 611/a>1spa  class="comment"> *1/spa  v. 621/a>1spa  class="comment"> * # model_id:.31/spa  v. 631/a>1spa  class="comment"> *   offset             : -156506521/spa  v. 641/a>1spa  class="comment"> *   slope              :  15650651/spa  v. 651/a>1spa  class="comment"> *1/spa  v. 661/a>1spa  class="comment"> *1/spa  v. 671/a>1spa  class="comment"> * Target rubber-banding :1/spa  v. 681/a>1spa  class="comment"> *1/spa  v. 691/a>1spa  class="comment"> * Some controls have a target correc >
  which depends on another1/spa  v. 710"a>1spa  class="comment"> * control on>
 . The correc >
  is computed in the following way :1/spa  v. 711/a>1spa  class="comment"> *1/spa  v. 721/a>1spa  class="comment"> * new_min = ref_on>
  * slope + offset1/spa  v. 731/a>1spa  class="comment"> *1/spa  v. 741/a>1spa  class="comment"> * ref_on>
  is the on>
  of the reference control. If new_min is1/spa  v. 751/a>1spa  class="comment"> * greater tha  0, the  we correc  the target on>
  using :1/spa  v. 761/a>1spa  class="comment"> *1/spa  v. 771/a>1spa  class="comment"> * new_target = max (new_target, new_min >> 16)1/spa  v. 781/a>1spa  class="comment"> *1/spa  v. 791/a>1spa  class="comment"> *1/spa  v. 810"a>1spa  class="comment"> * # model_id :.21/spa  v. 811/a>1spa  class="comment"> *   control    : cpu-fa 1/spa  v. 821/a>1spa  class="comment"> *   ref        : 	  >cal-drive-fa 1/spa  v. 831/a>1spa  class="comment"> *   offset     : -156506521/spa  v. 841/a>1spa  class="comment"> *   slope      : 15650651/spa  v. 851/a>1spa  class="comment"> *1/spa  v. 861/a>1spa  class="comment"> * # model_id :.31/spa  v. 871/a>1spa  class="comment"> *   control    : 	  >cal-drive-fa 1/spa  v. 881/a>1spa  class="comment"> *   ref        : hard-drive-fa 1/spa  v. 891/a>1spa  class="comment"> *   offset     : -327680001/spa  v. 910"a>1spa  class="comment"> *   slope      : 655361/spa  v. 911/a>1spa  class="comment"> *1/spa  v. 921/a>1spa  class="comment"> *1/spa  v. 931/a>1spa  class="comment"> * In order to have the moste efficient correc >
  with thos 1/spa  v. 941/a>1spa  class="comment"> * dependencies, we mus  trigger HD loop before OD loop before CPU1/spa  v. 951/a>1spa  class="comment"> * loopv1/spa  v. 961/a>1spa  class="comment"> *1/spa  v. 971/a>1spa  class="comment"> *1/spa  v. 981/a>1spa  class="comment"> * The onrious control loops found in Darwin config file are:1/spa  v. 991/a>1spa  class="comment"> *1/spa  v.1010"a>1spa  class="comment"> * HD Fa  control loopv1/spa  v.1011/a>1spa  class="comment"> *1/spa  v.1021/a>1spa  class="comment"> * # model_id:.21/spa  v.1031/a>1spa  class="comment"> *   control        : hard-drive-fa 1/spa  v.1041/a>1spa  class="comment"> *   sensor         : hard-drive-temp1/spa  v.1051/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1061/a>1spa  class="comment"> *                    G_p = 0x002D70A31/spa  v.1071/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1081/a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1091/a>1spa  class="comment"> *                    Input target = 0x3700001/spa  v.1.10"a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1111/a>1spa  class="comment"> *1/spa  v.1121/a>1spa  class="comment"> * # model_id:.31/spa  v.1131/a>1spa  class="comment"> *   control        : hard-drive-fa 1/spa  v.1141/a>1spa  class="comment"> *   sensor         : hard-drive-temp1/spa  v.1151/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1161/a>1spa  class="comment"> *                    G_p = 0x002170A31/spa  v.1171/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1181/a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1191/a>1spa  class="comment"> *                    Input target = 0x3700001/spa  v.1210"a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1211/a>1spa  class="comment"> *1/spa  v.1221/a>1spa  class="comment"> * OD Fa  control loopv1/spa  v.1231/a>1spa  class="comment"> *1/spa  v.1241/a>1spa  class="comment"> * # model_id:.21/spa  v.1251/a>1spa  class="comment"> *   control        : 	  >cal-drive-fa 1/spa  v.1261/a>1spa  class="comment"> *   sensor         : 	  >cal-drive-temp1/spa  v.1271/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1281/a>1spa  class="comment"> *                    G_p = 0x001FAE141/spa  v.1291/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1310"a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1311/a>1spa  class="comment"> *                    Input target = 0x3200001/spa  v.1321/a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1331/a>1spa  class="comment"> *1/spa  v.1341/a>1spa  class="comment"> * # model_id:.31/spa  v.1351/a>1spa  class="comment"> *   control        : 	  >cal-drive-fa 1/spa  v.1361/a>1spa  class="comment"> *   sensor         : 	  >cal-drive-temp1/spa  v.1371/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1381/a>1spa  class="comment"> *                    G_p = 0x001FAE141/spa  v.1391/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1410"a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1411/a>1spa  class="comment"> *                    Input target = 0x3200001/spa  v.1421/a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1431/a>1spa  class="comment"> *1/spa  v.1441/a>1spa  class="comment"> * GPU Fa  control loopv1/spa  v.1451/a>1spa  class="comment"> *1/spa  v.1461/a>1spa  class="comment"> * # model_id:.21/spa  v.1471/a>1spa  class="comment"> *   control        : hard-drive-fa 1/spa  v.1481/a>1spa  class="comment"> *   sensor         : gpu-temp1/spa  v.1491/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1510"a>1spa  class="comment"> *                    G_p = 0x002A66661/spa  v.1511/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1521/a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1531/a>1spa  class="comment"> *                    Input target = 0x5A00001/spa  v.1541/a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1551/a>1spa  class="comment"> *1/spa  v.1561/a>1spa  class="comment"> * # model_id:.31/spa  v.1571/a>1spa  class="comment"> *   control        : cpu-fa 1/spa  v.1581/a>1spa  class="comment"> *   sensor         : gpu-temp1/spa  v.1591/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1610"a>1spa  class="comment"> *                    G_p = 0x0010CCCC1/spa  v.1611/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1621/a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1631/a>1spa  class="comment"> *                    Input target = 0x5000001/spa  v.1641/a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1651/a>1spa  class="comment"> *1/spa  v.1661/a>1spa  class="comment"> * KODIAK (aka northbridge) Fa  control loopv1/spa  v.1671/a>1spa  class="comment"> *1/spa  v.1681/a>1spa  class="comment"> * # model_id:.21/spa  v.1691/a>1spa  class="comment"> *   control        : 	  >cal-drive-fa 1/spa  v.1710"a>1spa  class="comment"> *   sensor         : north-bridge-temp1/spa  v.1711/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1721/a>1spa  class="comment"> *                    G_p = 0x003BD70A1/spa  v.1731/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1741/a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1751/a>1spa  class="comment"> *                    Input target = 0x5500001/spa  v.1761/a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1771/a>1spa  class="comment"> *1/spa  v.1781/a>1spa  class="comment"> * # model_id:.31/spa  v.1791/a>1spa  class="comment"> *   control        : hard-drive-fa 1/spa  v.1810"a>1spa  class="comment"> *   sensor         : north-bridge-temp1/spa  v.1811/a>1spa  class="comment"> *   PID params     : G_d = 0x000000001/spa  v.1821/a>1spa  class="comment"> *                    G_p = 0x0030F5C21/spa  v.1831/a>1spa  class="comment"> *                    G_r = 0x000199991/spa  v.1841/a>1spa  class="comment"> *                    History = 2 entries1/spa  v.1851/a>1spa  class="comment"> *                    Input target = 0x5500001/spa  v.1861/a>1spa  class="comment"> *                    Interval = 5s1/spa  v.1871/a>1spa  class="comment"> *1/spa  v.1881/a>1spa  class="comment"> * CPU Fa  control loopv1/spa  v.1891/a>1spa  class="comment"> *1/spa  v.1910"a>1spa  class="comment"> *   control        : cpu-fa 1/spa  v.1911/a>1spa  class="comment"> *   sensors        : cpu-temp, cpu-power1/spa  v.1921/a>1spa  class="comment"> *   PID params     : from SDB parti >
 1/spa  v.1931/a>1spa  class="comment"> *1/spa  v.1941/a>1spa  class="comment"> *1/spa  v.1951/a>1spa  class="comment"> * CPU Slew control loopv1/spa  v.1961/a>1spa  class="comment"> *1/spa  v.1971/a>1spa  class="comment"> *   control        : cpufreq-clamp1/spa  v.1981/a>1spa  class="comment"> *   sensor         : cpu-temp1/spa  v.1991/a>1spa  class="comment"> *1/spa  v.2010"a>1spa  class="comment"> */1/spa  v.2011/a>v.2021/a>#undef4.1a href="+code=DEBUG" class="sref">DEBUG1/a>v.2031/a>v.2041/a>#include <linux/typ s.h1/a>>v.2051/a>#include <linux/errno.h1/a>>v.2061/a>#include <linux/kernel.h1/a>>v.2071/a>#include <linux/delay.h1/a>>v.2081/a>#include <linux/slab.h1/a>>v.2091/a>#include <linux/init.h1/a>>v.2.10"a>#include <linux/spinlock.h1/a>>v.2111/a>#include <linux/wait.h1/a>>v.2121/a>#include <linux/kmod.h1/a>>v.2131/a>#include <linux/device.h1/a>>v.2141/a>#include <linux/platform_device.h1/a>>v.2151/a>#include <asm/prom.h1/a>>v.2161/a>#include <asm/machdep.h1/a>>v.2171/a>#include <asm/io.h1/a>>v.2181/a>#include <asm/sec >
 s.h1/a>>v.2191/a>#include <asm/smu.h1/a>>v.2210"a>v.2211/a>#include "windfarm.h1/a>"v.2221/a>#include "windfarm_pid.h1/a>"v.2231/a>v.2241/a>#define.1a href="+code=VERSION" class="sref">VERSION1/a> 1spa  class="string">"0.3".2251/a>v.2261/a>static int.1a href="+code=pm121_mach_model" class="sref">pm121_mach_model1/a>;    1spa  class="comment">/* machine.model id */1/spa  v.2271/a>v.2281/a>1spa  class="comment">/* Controls & sensors */1/spa  v.2291/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_cpu_power" class="sref">sensor_cpu_power1/a>;v.2310"a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_cpu_temp" class="sref">sensor_cpu_temp1/a>;v.2311/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_cpu_voltage" class="sref">sensor_cpu_voltage1/a>;v.2321/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_cpu_current" class="sref">sensor_cpu_current1/a>;v.2331/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_gpu_temp" class="sref">sensor_gpu_temp1/a>;v.2341/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_north_bridge_temp" class="sref">sensor_north_bridge_temp1/a>;v.2351/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_hard_drive_temp" class="sref">sensor_hard_drive_temp1/a>;v.2361/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_	  >cal_drive_temp" class="sref">sensor_	  >cal_drive_temp1/a>;v.2371/a>static struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a> *1a href="+code=sensor_incoming_air_temp" class="sref">sensor_incoming_air_temp1/a>; 1spa  class="comment">/* unused ! */1/spa  v.2381/a>v.2391/a>enum {v.2410"a>        1a href="+code=FAN_CPU" class="sref">FAN_CPU0"a>,v.2411/a>        1a href="+code=FAN_HD" class="sref">FAN_HD0"a>,v.2421/a>        1a href="+code=FAN_OD" class="sref">FAN_OD0"a>,v.2431/a>        1a href="+code=CPUFREQ" class="sref">CPUFREQ0"a>,v.2441/a>        1a href="+code=N_CONTROLS" class="sref">N_CONTROLS1/a>v.2451/a>};v.2461/a>static struct.1a href="+code=wf_control" class="sref">wf_control1/a> *1a href="+code=controls" class="sref">controls1/a>[1a href="+code=N_CONTROLS" class="sref">N_CONTROLS1/a>] = {};v.2471/a>v.2481/a>1spa  class="comment">/* Set to kick the control loop into life */1/spa  v.2491/a>static int.1a href="+code=pm121_all_controls_ok" class="sref">pm121_all_controls_ok0"a>,.1a href="+code=pm121_all_sensors_ok" class="sref">pm121_all_sensors_ok0"a>,.1a href="+code=pm121_started" class="sref">pm121_started1/a>;v.2510"a>v.2511/a>enum {v.2521/a>        1a href="+code=FAILURE_FAN" class="sref">FAILURE_FAN1/a>             = 1 << 0,v.2531/a>        1a href="+code=FAILURE_SENSOR" class="sref">FAILURE_SENSOR1/a>          = 1 << 1,v.2541/a>        1a href="+code=FAILURE_OVERTEMP" class="sref">FAILURE_OVERTEMP1/a>        = 1 << 2v.2551/a>};v.2561/a>v.2571/a>1spa  class="comment">/* All sys loops. Note the HD before the OD loop in order to have it1/spa  v.2581/a>1spa  class="comment">   run before. */1/spa  v.2591/a>enum {v.2610"a>        1a href="+code=LOOP_GPU" class="sref">LOOP_GPU0"a>,...............1spa  class="comment">/* control = hd or cpu, but luckily,1/spa  v.2611/a>1spa  class="comment">                                   it doesn't matter */1/spa  v.2621/a>        1a href="+code=LOOP_HD" class="sref">LOOP_HD0"a>,................1spa  class="comment">/* control = hd */1/spa  v.2631/a>        1a href="+code=LOOP_KODIAK" class="sref">LOOP_KODIAK0"a>,............1spa  class="comment">/* control = hd or od */1/spa  v.2641/a>        1a href="+code=LOOP_OD" class="sref">LOOP_OD0"a>,................1spa  class="comment">/* control = od */1/spa  v.2651/a>        1a href="+code=N_LOOPS" class="sref">N_LOOPS1/a>v.2661/a>};v.2671/a>v.2681/a>static const char *1a href="+code=loop_nam s" class="sref">loop_nam s1/a>[1a href="+code=N_LOOPS" class="sref">N_LOOPS1/a>] = {v.2691/a>........1spa  class="string">"GPU".2701/a>........1spa  class="string">"HD".2711/a>........1spa  class="string">"KODIAK".2721/a>........1spa  class="string">"OD".2731/a>};v.2741/a>v.2751/a>#define.1a href="+code=PM121_NUM_CONFIGS" class="sref">PM121_NUM_CONFIGS1/a>.......2v.2761/a>v.2771/a>static unsigned int.1a href="+code=pm121_failure_state" class="sref">pm121_failure_state1/a>;v.2781/a>static int.1a href="+code=pm121_readjust" class="sref">pm121_readjust0"a>,.1a href="+code=pm121_skipping" class="sref">pm121_skipping1/a>;v.2791/a>static 1a href="+code=s32" class="sref">s321/a> 1a href="+code=average_power" class="sref">average_power1/a>;v.2810"a>v.2811/a>struct.1a href="+code=pm121_correc >
 " class="sref">pm121_correc >
 1/a> {v.2821/a>........int.    1a href="+code=offset" class="sref">offset1/a>;v.2831/a>........int.    1a href="+code=slope" class="sref">slope1/a>;v.2841/a>};v.2851/a>v.2861/a>static struct.1a href="+code=pm121_correc >
 " class="sref">pm121_correc >
 1/a> 1a href="+code=correc >
 s" class="sref">correc >
 s1/a>[1a href="+code=N_CONTROLS" class="sref">N_CONTROLS1/a>][1a href="+code=PM121_NUM_CONFIGS" class="sref">PM121_NUM_CONFIGS1/a>] = {v.2871/a>........1spa  class="comment">/* FAN_OD */1/spa  v.2881/a>........{v.2891/a>................1spa  class="comment">/* MODEL 2 */1/spa  v.2901/a>................{ .1a href="+code=offset" class="sref">offset1/a>.......= -19563152,v.2911/a>................  .1a href="+code=slope" class="sref">slope1/a> .......=  1956315v.2921/a>................},v.2931/a>................1spa  class="comment">/* MODEL 3 */1/spa  v.2941/a>................{ .1a href="+code=offset" class="sref">offset1/a>.......= -15650652,v.2951/a>................  .1a href="+code=slope" class="sref">slope1/a> .......=  1565065v.2961/a>................},v.2971/a>........},v.2981/a>........1spa  class="comment">/* FAN_HD */1/spa  v.2991/a>........{v.3001/a>................1spa  class="comment">/* MODEL 2 */1/spa  v.3011/a>................{ .1a href="+code=offset" class="sref">offset1/a>.......= -15650652,v.3021/a>................  .1a href="+code=slope" class="sref">slope1/a> .......=  1565065v.3031/a>................},v.3041/a>................1spa  class="comment">/* MODEL 3 */1/spa  v.3051/a>................{ .1a href="+code=offset" class="sref">offset1/a>.......= -19563152,v.3061/a>................  .1a href="+code=slope" class="sref">slope1/a> .......=  1956315v.3071/a>................},v.3081/a>........},v.3091/a>........1spa  class="comment">/* FAN_CPU */1/spa  v.3101/a>........{v.3111/a>................1spa  class="comment">/* MODEL 2 */1/spa  v.3121/a>................{ .1a href="+code=offset" class="sref">offset1/a>.......= -25431900,v.3131/a>................  .1a href="+code=slope" class="sref">slope1/a> .......=  2543190v.3141/a>................},v.3151/a>................1spa  class="comment">/* MODEL 3 */1/spa  v.3161/a>................{ .1a href="+code=offset" class="sref">offset1/a>.......= -15650652,v.3171/a>................  .1a href="+code=slope" class="sref">slope1/a> .......=  1565065v.3181/a>................},v.3191/a>........},v.3201/a>........1spa  class="comment">/* CPUFREQ has no correc >
  (and is not implemented at all) */1/spa  v.3211/a>};v.3221/a>v.3231/a>struct.1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a> {v.3241/a>........unsigned int.   1a href="+code=control_id" class="sref">control_id1/a>;v.3251/a>........unsigned int.   1a href="+code=ref_id" class="sref">ref_id1/a>;v.3261/a>........struct.1a href="+code=pm121_correc >
 " class="sref">pm121_correc >
 1/a> 1a href="+code=correc >
 " class="sref">correc >
 1/a>;v.3271/a>};v.3281/a>v.3291/a>static struct.1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a> 1a href="+code=pm121_connec >
 s" class="sref">pm121_connec >
 s1/a>[] = {v.3301/a>........1spa  class="comment">/* MODEL 2 */1/spa  v.3311/a>........{ .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_CPU" class="sref">FAN_CPU0"a>,v.3321/a>...........1a href="+code=ref_id" class="sref">ref_id1/a>.......= 1a href="+code=FAN_OD" class="sref">FAN_OD0"a>,v.3331/a>..........{ .1a href="+code=offset" class="sref">offset1/a>.....= -32768000,v.3341/a>.............1a href="+code=slope" class="sref">slope1/a> .....=  65536v.3351/a>..........}v.3361/a>........},v.3371/a>........1spa  class="comment">/* MODEL 3 */1/spa  v.3381/a>........{ .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_OD" class="sref">FAN_OD0"a>,v.3391/a>...........1a href="+code=ref_id" class="sref">ref_id1/a>.......= 1a href="+code=FAN_HD" class="sref">FAN_HD0"a>,v.3401/a>..........{ .1a href="+code=offset" class="sref">offset1/a>.....= -32768000,v.3411/a>.............1a href="+code=slope" class="sref">slope1/a> .....=  65536v.3421/a>..........}v.3431/a>        },v.3441/a>};v.3451/a>v.3461/a>1spa  class="comment">/* pointer to the current.model connec >
  */1/spa  v.3471/a>static struct.1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a> *1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a>;v.3481/a>v.3491/a>1spa  class="comment">/*1/spa  v.3510"a>1spa  class="comment"> * ****** System Fa s Control Loop ******1/spa  v.3511/a>1spa  class="comment"> *1/spa  v.3521/a>1spa  class="comment"> */1/spa  v.3531/a>v.3541/a>1spa  class="comment">/* Since each loop handles only one control and we want to avoid1/spa  v.3551/a>1spa  class="comment"> * writing virtual control, we store the control correc >
  with the1/spa  v.3561/a>1spa  class="comment"> * loop params. Some data are not set, there are comm
  to all loop1/spa  v.3571/a>1spa  class="comment"> * and thus, hardcodedv1/spa  v.3581/a>1spa  class="comment"> */1/spa  v.3591/a>struct.1a href="+code=pm121_sys_param" class="sref">pm121_sys_param1/a> {v.3601/a>........1spa  class="comment">/* purely informative since we use mach_model-2 as index */1/spa  v.3611/a>........int.                    1a href="+code=model_id" class="sref">model_id1/a>;v.3621/a>        struct.1a href="+code=wf_sensor" class="sref">wf_sensor1/a>        **1a href="+code=sensor" class="sref">sensor1/a>; 1spa  class="comment">/* use sensor_id instead ? */1/spa  v.3631/a>        1a href="+code=s32" class="sref">s321/a>                     1a href="+code=gp" class="sref">gp1/a>,.1a href="+code=itarget" class="sref">itarget1/a>;v.3641/a>........unsigned int.           1a href="+code=control_id" class="sref">control_id1/a>;v.3651/a>};v.3661/a>v.3671/a>static struct.1a href="+code=pm121_sys_param" class="sref">pm121_sys_param1/a>v.3681/a>1a href="+code=pm121_sys_all_params" class="sref">pm121_sys_all_params1/a>[1a href="+code=N_LOOPS" class="sref">N_LOOPS1/a>][1a href="+code=PM121_NUM_CONFIGS" class="sref">PM121_NUM_CONFIGS1/a>] = {v.3691/a>........1spa  class="comment">/* GPU Fa  control loop */1/spa  v.3701/a>........{v.3711/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 2,v.3721/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_gpu_temp" class="sref">sensor_gpu_temp1/a>,v.3731/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x002A6666,v.3741/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x5A0000,v.3751/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_HD" class="sref">FAN_HD0"a>,v.3761/a>................},v.3771/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 3,v.3781/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_gpu_temp" class="sref">sensor_gpu_temp1/a>,v.3791/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x0010CCCC,v.3801/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x500000,v.3811/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_CPU" class="sref">FAN_CPU0"a>,v.3821/a>................},v.3831/a>        },v.3841/a>........1spa  class="comment">/* HD Fa  control loop */1/spa  v.3851/a>........{v.3861/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 2,v.3871/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_hard_drive_temp" class="sref">sensor_hard_drive_temp1/a>,v.3881/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x002D70A3,v.3891/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x370000,v.3901/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_HD" class="sref">FAN_HD0"a>,v.3911/a>................},v.3921/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 3,v.3931/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_hard_drive_temp" class="sref">sensor_hard_drive_temp1/a>,v.3941/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x002170A3,v.3951/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x370000,v.3961/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_HD" class="sref">FAN_HD0"a>,v.3971/a>................},v.3981/a>........},v.3991/a>........1spa  class="comment">/* KODIAK Fa  control loop */1/spa  v.4001/a>........{v.4011/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 2,v.4021/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_north_bridge_temp" class="sref">sensor_north_bridge_temp1/a>,v.4031/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x003BD70A,v.4041/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x550000,v.4051/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_OD" class="sref">FAN_OD0"a>,v.4061/a>................},v.4071/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 3,v.4081/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_north_bridge_temp" class="sref">sensor_north_bridge_temp1/a>,v.4091/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x0030F5C2,v.4101/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x550000,v.4111/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_HD" class="sref">FAN_HD0"a>,v.4121/a>................},v.4131/a>        },v.4141/a>........1spa  class="comment">/* OD Fa  control loop */1/spa  v.4151/a>........{v.4161/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 2,v.4171/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_	  >cal_drive_temp" class="sref">sensor_	  >cal_drive_temp1/a>,v.4181/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x001FAE14,v.4191/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x320000,v.4201/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_OD" class="sref">FAN_OD0"a>,v.4211/a>................},v.4221/a>................{ .1a href="+code=model_id" class="sref">model_id1/a>.....= 3,v.4231/a>................  .1a href="+code=sensor" class="sref">sensor1/a>.....  = &1a href="+code=sensor_	  >cal_drive_temp" class="sref">sensor_	  >cal_drive_temp1/a>,v.4241/a>................  .1a href="+code=gp" class="sref">gp1/a>.........  = 0x001FAE14,v.4251/a>................  .1a href="+code=itarget" class="sref">itarget1/a>....  = 0x320000,v.4261/a>................  .1a href="+code=control_id" class="sref">control_id1/a>...= 1a href="+code=FAN_OD" class="sref">FAN_OD0"a>,v.4271/a>................},v.4281/a>........},v.4291/a>};v.4310"a>v.4311/a>1spa  class="comment">/* the hardcoded values */1/spa  v.4321/a>#define.1a href="+code=PM121_SYS_GD" class="sref">PM121_SYS_GD1/a>............0x00000000v.4331/a>#define.1a href="+code=PM121_SYS_GR" class="sref">PM121_SYS_GR1/a>............0x00019999v.4341/a>#define.1a href="+code=PM121_SYS_HISTORY_SIZE" class="sref">PM121_SYS_HISTORY_SIZE1/a>..2v.4351/a>#define.1a href="+code=PM121_SYS_INTERVAL" class="sref">PM121_SYS_INTERVAL1/a>......5v.4361/a>v.4371/a>1spa  class="comment">/* State data used by the system fa s control loop1/spa  v.4381/a>1spa  class="comment"> */1/spa  v.4391/a>struct.1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>.{v.4401/a>........int.                    1a href="+code= >cks" class="sref"> >cks1/a>;v.4411/a>        1a href="+code=s32" class="sref">s321/a>                     1a href="+code=setpoint" class="sref">setpoint1/a>;v.4421/a>        struct.1a href="+code=wf_pid_state" class="sref">wf_pid_state1/a>     1a href="+code=pid" class="sref">pid1/a>;v.4431/a>};v.4441/a>v.4451/a>struct.1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>.*1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a href="+code=N_LOOPS" class="sref">N_LOOPS1/a>] = {};v.4461/a>v.4471/a>1spa  class="comment">/*1/spa  v.4481/a>1spa  class="comment"> * ****** CPU Fa s Control Loop ******1/spa  v.4491/a>1spa  class="comment"> *1/spa  v.4510"a>1spa  class="comment"> */1/spa  v.4511/a>v.4521/a>#define.1a href="+code=PM121_CPU_INTERVAL" class="sref">PM121_CPU_INTERVAL1/a>      1v.4531/a>v.4541/a>1spa  class="comment">/* State data used by the cpu fa s control loop1/spa  v.4551/a>1spa  class="comment"> */1/spa  v.4561/a>struct.1a href="+code=pm121_cpu_state" class="sref">pm121_cpu_state1/a>.{v.4571/a>........int.                    1a href="+code= >cks" class="sref"> >cks1/a>;v.4581/a>        1a href="+code=s32" class="sref">s321/a>                     1a href="+code=setpoint" class="sref">setpoint1/a>;v.4591/a>        struct.1a href="+code=wf_cpu_pid_state" class="sref">wf_cpu_pid_state1/a> 1a href="+code=pid" class="sref">pid1/a>;v.4601/a>};v.4611/a>v.4621/a>static struct.1a href="+code=pm121_cpu_state" class="sref">pm121_cpu_state1/a>.*1a href="+code=pm121_cpu_state" class="sref">pm121_cpu_state1/a>;v.4631/a>v.4641/a>v.4651/a>v.4661/a>1spa  class="comment">/*1/spa  v.4671/a>1spa  class="comment"> * ***** Implementa >
  *****1/spa  v.4681/a>1spa  class="comment"> *1/spa  v.4691/a>1spa  class="comment"> */1/spa  v.4710"a>v.4711/a>1spa  class="comment">/* correc >
  the value using the output-low-bound correc >
  algo */1/spa  v.4721/a>static 1a href="+code=s32" class="sref">s321/a> 1a href="+code=pm121_correc " class="sref">pm121_correc 1/a>(1a href="+code=s32" class="sref">s321/a> 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>,v.4731/a>................         unsigned int.1a href="+code=control_id" class="sref">control_id1/a>,v.4741/a>................         1a href="+code=s32" class="sref">s321/a> 1a href="+code=mi " class="sref">mi 1/a>)v.4751/a>{v.4761/a>........1a href="+code=s32" class="sref">s321/a> 1a href="+code=new_mi " class="sref">new_mi 1/a>;v.4771/a>........struct.1a href="+code=pm121_correc >
 " class="sref">pm121_correc >
 1/a> *1a href="+code=correc >
 " class="sref">correc >
 1/a>;v.4781/a>        1a href="+code=correc >
 " class="sref">correc >
 1/a> = &1a href="+code=correc >
 s" class="sref">correc >
 s1/a>[1a href="+code=control_id" class="sref">control_id1/a>][1a href="+code=pm121_mach_model" class="sref">pm121_mach_model1/a> - 2];v.4791/a>v.4801/a>........1a href="+code=new_mi " class="sref">new_mi 1/a> = (1a href="+code=average_power" class="sref">average_power1/a> * 1a href="+code=correc >
 " class="sref">correc >
 1/a>->1a href="+code=slope" class="sref">slope1/a>) >> 16;v.4811/a>        1a href="+code=new_mi " class="sref">new_mi 1/a> += 1a href="+code=correc >
 " class="sref">correc >
 1/a>->1a href="+code=offset" class="sref">offset1/a>;v.4821/a>........1a href="+code=new_mi " class="sref">new_mi 1/a> = (1a href="+code=new_mi " class="sref">new_mi 1/a> >> 16) + 1a href="+code=mi " class="sref">mi 1/a>;v.4831/a>v.4841/a>........return 1a href="+code=max3" class="sref">max31/a>(1a href="+code=new_setpoint" class="sref">new_setpoint0"a>,.1a href="+code=new_mi " class="sref">new_mi 1/a>, 0);v.4851/a>}v.4861/a>v.4871/a>static 1a href="+code=s32" class="sref">s321/a> 1a href="+code=pm121_connec " class="sref">pm121_connec 1/a>(unsigned int.1a href="+code=control_id" class="sref">control_id1/a>, 1a href="+code=s32" class="sref">s321/a> 1a href="+code=setpoint" class="sref">setpoint1/a>)v.4881/a>{v.4891/a>........1a href="+code=s32" class="sref">s321/a> 1a href="+code=new_mi " class="sref">new_mi 1/a>, 1a href="+code=value" class="sref">value0"a>,.1a href="+code=new_setpoint" class="sref">new_setpoint0"a>;v.4910"a>v.4911/a>........if (1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a>->1a href="+code=control_id" class="sref">control_id1/a>.== 1a href="+code=control_id" class="sref">control_id1/a>).{v.4921/a>................1a href="+code=controls" class="sref">controls1/a>[1a href="+code=control_id" class="sref">control_id1/a>]->1a href="+code=ops" class="sref">ops1/a>->1a href="+code=get_value" class="sref">get_value1/a>(1a href="+code=controls" class="sref">controls1/a>[1a href="+code=control_id" class="sref">control_id1/a>],v.4931/a>................                                     &1a href="+code=value" class="sref">value0"a>);v.4941/a>................1a href="+code=new_mi " class="sref">new_mi 1/a> = 1a href="+code=value" class="sref">value0"a> * 1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a>->1a href="+code=correc >
 " class="sref">correc >
 1/a>.1a href="+code=slope" class="sref">slope1/a>;v.4951/a>................1a href="+code=new_mi " class="sref">new_mi 1/a> += 1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a>->1a href="+code=correc >
 " class="sref">correc >
 1/a>.1a href="+code=offset" class="sref">offset1/a>;v.4961/a>................if (1a href="+code=new_mi " class="sref">new_mi 1/a> > 0).{v.4971/a>........................1a href="+code=new_setpoint" class="sref">new_setpoint0"a> = 1a href="+code=max" class="sref">max1/a>(1a href="+code=setpoint" class="sref">setpoint1/a>, (1a href="+code=new_mi " class="sref">new_mi 1/a> >> 16));v.4981/a>................  ......if (1a href="+code=new_setpoint" class="sref">new_setpoint0"a> != 1a href="+code=setpoint" class="sref">setpoint1/a>).{v.4991/a>................  ..............1a href="+code=pr_debug" class="sref">pr_debug1/a>(1spa  class="string">"pm121: %s depending on %s, "1/spa  v.5001/a>................  .......  ..............1spa  class="string">"correc ed from %d to %d RPM\n"1/spa  ,v.5011/a>.........................  ..............1a href="+code=controls" class="sref">controls1/a>[1a href="+code=control_id" class="sref">control_id1/a>]->1a href="+code=nam " class="sref">nam 1/a>,v.5021/a>................  .......  ..............1a href="+code=controls" class="sref">controls1/a>[1a href="+code=pm121_connec >
 " class="sref">pm121_connec >
 1/a>->1a href="+code=ref_id" class="sref">ref_id1/a>]->1a href="+code=nam " class="sref">nam 1/a>,v.5031/a>................                         (int) 1a href="+code=setpoint" class="sref">setpoint1/a>, (int) 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>);v.5041/a>................        }v.5051/a>................} elsev.5061/a>........................1a href="+code=new_setpoint" class="sref">new_setpoint0"a> = 1a href="+code=setpoint" class="sref">setpoint1/a>;v.5071/a>........}v.5081/a>........1spa  class="comment">/* no connec >
  */1/spa  v.5091/a>........elsev.5101/a>................1a href="+code=new_setpoint" class="sref">new_setpoint0"a> = 1a href="+code=setpoint" class="sref">setpoint1/a>;v.5111/a>v.5121/a>........return 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>;v.5131/a>}v.5141/a>v.5151/a>1spa  class="comment">/* FAN LOOPS */1/spa  v.5161/a>static void 1a href="+code=pm121_create_sys_fa s" class="sref">pm121_create_sys_fa s1/a>(int.1a href="+code=loop_id" class="sref">loop_id1/a>)v.5171/a>{v.5181/a>........struct.1a href="+code=pm121_sys_param" class="sref">pm121_sys_param1/a> *1a href="+code=param" class="sref">param1/a> = 1a href="+code=NULL" class="sref">NULL0"a>;v.5191/a>        struct.1a href="+code=wf_pid_param" class="sref">wf_pid_param1/a> 1a href="+code=pid_param" class="sref">pid_param1/a>;v.5201/a>........struct.1a href="+code=wf_control" class="sref">wf_control1/a> *1a href="+code=control" class="sref">control1/a> = 1a href="+code=NULL" class="sref">NULL0"a>;v.5211/a>........int.1a href="+code=i" class="sref">i0"a>;v.5221/a>v.5231/a>........1spa  class="comment">/* First, locate the params for this.model */1/spa  v.5241/a>........for (1a href="+code=i" class="sref">i0"a> = 0;.1a href="+code=i" class="sref">i0"a> <.1a href="+code=PM121_NUM_CONFIGS" class="sref">PM121_NUM_CONFIGS1/a>;.1a href="+code=i" class="sref">i0"a>++).{v.5251/a>................if (1a href="+code=pm121_sys_all_params" class="sref">pm121_sys_all_params1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>][1a href="+code=i" class="sref">i0"a>].1a href="+code=model_id" class="sref">model_id1/a>.== 1a href="+code=pm121_mach_model" class="sref">pm121_mach_model1/a>).{v.5261/a>................  ......1a href="+code=param" class="sref">param1/a> = &(1a href="+code=pm121_sys_all_params" class="sref">pm121_sys_all_params1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>][1a href="+code=i" class="sref">i0"a>]);v.5271/a>........................break;v.5281/a>................}v.5291/a>        }v.5310"a>v.5311/a>........1spa  class="comment">/* No params found, put fa s to max */1/spa  v.5321/a>        if (1a href="+code=param" class="sref">param1/a> == 1a href="+code=NULL" class="sref">NULL0"a>).{v.5331/a>................1a href="+code=printk" class="sref">printk1/a>(1a href="+code=KERN_WARNING" class="sref">KERN_WARNING1/a> 1spa  class="string">"pm121: %s fa  config not found "1/spa  v.5341/a>................       1spa  class="string">" for this.machine.model\n"1/spa  ,v.5351/a>................  .....1a href="+code=loop_nam s" class="sref">loop_nam s1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>]);v.5361/a>................goto 1a href="+code=fail" class="sref">fail0"a>;v.5371/a>........}v.5381/a>v.5391/a>........1a href="+code=control" class="sref">control1/a> = 1a href="+code=controls" class="sref">controls1/a>[1a href="+code=param" class="sref">param1/a>->1a href="+code=control_id" class="sref">control_id1/a>];v.5410"a>v.5411/a>........1spa  class="comment">/* Alloc &.initialize state */1/spa  v.5421/a>........1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>] = 1a href="+code=kmalloc" class="sref">kmalloc1/a>(sizeof(struct.1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>),v.5431/a>................                           1a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL0"a>);v.5441/a>        if (1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>] == 1a href="+code=NULL" class="sref">NULL0"a>).{v.5451/a>................1a href="+code=printk" class="sref">printk1/a>(1a href="+code=KERN_WARNING" class="sref">KERN_WARNING1/a> 1spa  class="string">"pm121: Memory alloca >
  error\n"1/spa  );v.5461/a>................goto 1a href="+code=fail" class="sref">fail0"a>;v.5471/a>........}v.5481/a>        1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>]->1a href="+code= >cks" class="sref"> >cks1/a> = 1;v.5491/a>v.5501/a>........1spa  class="comment">/* Fill PID params */1/spa  v.5511/a>        1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=gd" class="sref">gd1/a>............= 1a href="+code=PM121_SYS_GD" class="sref">PM121_SYS_GD1/a>;v.5521/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=gp" class="sref">gp1/a>.........  .= 1a href="+code=param" class="sref">param1/a>->1a href="+code=gp" class="sref">gp1/a>;v.5531/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=gr" class="sref">gr1/a>............= 1a href="+code=PM121_SYS_GR" class="sref">PM121_SYS_GR1/a>;v.5541/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=interval" class="sref">interval1/a>......= 1a href="+code=PM121_SYS_INTERVAL" class="sref">PM121_SYS_INTERVAL1/a>;v.5551/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=history_le " class="sref">history_le 1/a>...= 1a href="+code=PM121_SYS_HISTORY_SIZE" class="sref">PM121_SYS_HISTORY_SIZE1/a>;v.5561/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=itarget" class="sref">itarget1/a>....  .= 1a href="+code=param" class="sref">param1/a>->1a href="+code=itarget" class="sref">itarget1/a>;v.5571/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=mi " class="sref">mi 1/a>...........= 1a href="+code=control" class="sref">control1/a>->1a href="+code=ops" class="sref">ops1/a>->1a href="+code=get_mi " class="sref">get_mi 1/a>(1a href="+code=control" class="sref">control1/a>);v.5581/a>        1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=max" class="sref">max1/a>...........= 1a href="+code=control" class="sref">control1/a>->1a href="+code=ops" class="sref">ops1/a>->1a href="+code=get_max" class="sref">get_max1/a>(1a href="+code=control" class="sref">control1/a>);v.5591/a>v.5601/a>........1a href="+code=wf_pid_init" class="sref">wf_pid_init1/a>(&1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>]->1a href="+code=pid" class="sref">pid1/a>, &1a href="+code=pid_param" class="sref">pid_param1/a>);v.5611/a>v.5621/a>........1a href="+code=pr_debug" class="sref">pr_debug1/a>(1spa  class="string">"pm121: %s Fa  control loop initialized.\n"1/spa  v.5631/a>................ 1spa  class="string">"       itarged=%d.%03d, mi =%d RPM, max=%d RPM\n"1/spa  ,v.5641/a>................ 1a href="+code=loop_nam s" class="sref">loop_nam s1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>],.1a href="+code=FIX32TOPRINT" class="sref">FIX32TOPRINT1/a>(1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=itarget" class="sref">itarget1/a>),v.5651/a>................ 1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=mi " class="sref">mi 1/a>,.1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=max" class="sref">max1/a>);v.5661/a>........return;v.5671/a>v.5681/a> 1a href="+code=fail" class="sref">fail0"a>:v.5691/a>........1spa  class="comment">/* note that this.is.not 	  >mal since another loop may still1/spa  v.5710"a>1spa  class="comment">           control the sam  control */1/spa  v.5711/a>        1a href="+code=printk" class="sref">printk1/a>(1a href="+code=KERN_WARNING" class="sref">KERN_WARNING1/a> 1spa  class="string">"pm121: failed to set up %s loop "1/spa  v.5721/a>...............1spa  class="string">"setting \"%s\" to max speed.\n"1/spa  ,v.5731/a>...............1a href="+code=loop_nam s" class="sref">loop_nam s1/a>[1a href="+code=loop_id" class="sref">loop_id1/a>],.1a href="+code=control" class="sref">control1/a>->1a href="+code=nam " class="sref">nam 1/a>);v.5741/a>v.5751/a>........if (1a href="+code=control" class="sref">control1/a>)v.5761/a>................1a href="+code=wf_control_set_max" class="sref">wf_control_set_max1/a>(1a href="+code=control" class="sref">control1/a>);v.5771/a>}v.5781/a>v.5791/a>static void 1a href="+code=pm121_sys_fa s_ >ck" class="sref">pm121_sys_fa s_ >ck1/a>(int.1a href="+code=loop_id" class="sref">loop_id1/a>)v.5801/a>{v.5811/a>        struct.1a href="+code=pm121_sys_param" class="sref">pm121_sys_param1/a> *1a href="+code=param" class="sref">param1/a>138 class="sref">KERN_WARNING1/a> 1spa  class="string">"pm121: fass="sref">namivers/macintosh/windfari1tosh/windfarm_ass="121_sys_state" class="sref">pm121snt0"a> = 1a href=de=itarget" class="sref">itarget1/a>;vnamivers/macin_co.............  .1a hr_co......e" class="sref">pm121s............  .1a href="+code=arget" class="sref">itarget1/a>;v.5201/a>........struct.1a href="+code=wf_control" class="sref">wf_control1/a> *1a href="+code=coarget" class="sref">itarget1/a>;v.4891/a>........1a href="+code=s32" classef="+code=sensor_	 ss="sref"  
L512">.5121/a>........return 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>;vpm121_sys_farid1/a>] = 1a hrercoint" class="sref">new_setpoint0"a>;v.5671/a>v........  ......1a href="+code=param" class="sref">param1/a> = &(1a href="+code=pm121_sys_all_params" class="sref">pm121_sys_all_params1/a>[1a href="+code=loop_id" class="sremodel_id1/a>.== 1a href="+code=pm121_mach_model" cl-2op_id" class="sref">loop_id1/a>]);v.nt0"a> = 1a href=de=it class="sref">itarg_init1/a>(&1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a href="+code=loo_id" class="sref">loop_id1/a>]);v.............  .1a href="+code=s= *nam  
L532">.5321/a>        if (1a href="+cod
 " class="sref">corr............  .1a href="+code=p_id" class="sref">loop_id1/a>]);v.5391/a>........1a href="+code=control" class="sref">control1/a> = 1a href="+code=controls" class="sref">controls1/a>[1a href="+code=param" class="sref">param1/a>->1a href="+code=control_id" class="sref">control_id1/a>];v.5221/a>v.nt0"a> = 1a href=de=itp_id" class="sref">loop_id1/a>]->1a href="+code!=" class="sref">new_mi 1/a> > 0).{v.5441/a>  readju.nt0"a> = 1a href1/a>  readju.ne=loop_id" class="sref">loop_id1/a>)v.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lod" class="sref">control_id1/a>];v.5661/a>........return;v.5471/a>........}v.nt0"a> = 1a href=de=itp_id" class="sref">loop_id1/a>]->1a href="+codeclass="sref">interval1/a>......= 1a href="+code=PM121_SYS_INTERVAL" class="sref">PM121_SYS_INTERVAL1/a>;v.5591/a>vrid1/a>] = 1a hrercoint" class="sref">new_s...........  .1a href="+code=d" class="sref">control_id1/a>]->1a href="+code=ops" class="sref">ops1/a>->1a href="+code=get_value" class="sref_s...........  .1a href="+code=+code=pid" class="srefef="+code=sensor_	 ss="srefp_id" class="sref">loop_id1/a>]);v.491rid1/a>] = 1a hrercointclass="sref">new_mi 1/a> > 0).{v.5711/a>        1a href="+code=printk" class="sref">printk1/a>(1a href="+code=KERN_WARNING" class="sref">KERN_WARNING1).{vlass="sref">new_s...........  .1a href="+code=d" class="sref">contref_id1/a>]->1a href="+cone" nam  
L560">rid1/a>] = 1a hrercointp_id" class="sref">loop_id1/a>]);v.5441/a>  a  cure>(&1a href="+code=pm121a  cure>(&" cla| class="sref">newFAILURE_SENSO...= 1a href="+cFAILURE_SENSO.class="sref">PM121_SYS_INTERVAL1/a>;v.5661/a>........return;v.5471/a>........}v.5671/a>v.5621/a>........1a href="+code=pr_debug" class="sref">pr_debug1/a>(1spa  class="sref= !pa  claspa  cling">"uot;%s\" to max speed.\n"1/spa  ,v.5731/a>...............1a href="+code=loop_nam s" class="sref">loop_nam s1/a>[1a href="+code=loop_id" class="sref_s...........  .1a href="+code=d" class="sref">contref_id1/a>]->1a href="+co; to max speed.\n"1/spa  ,vloop_id1/a>],.1a href="+code=FIX32TOPRINT" class="sref">Fef="+code=sensor_	 ss="srefpp_id" class="sref">loop_id1/a>]);v.5111/a>v.482............1a href="+code=new_setpoint" class="sref">newcode=wfrupid_param1/a>.1acode=wfrupRINT"ode=pid" class="sref.nt0"a> = 1a href=de=itp_id" class="sref">loop_id1/a>]->1a href="+cid" class="srefef="+code=sensor_	 ss="srefp_id" class="sref">loop_id1/a>]);v.4831/a>v.4711/a>1spa       control the sam  control */1/spa  v.482............1a href="+code=new_setpoint" class="sref">new=pm121">s321/a> 1a href="+code=pm121_correc " class="sref">pm="sref">s321/a> 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>,v.="line" nam  am  
L544">.5441">controls1/a>[1a href="+code=param" class="sref">param1/a>->1a href="+code=control_" class="sref">new_setpoint0"a>,v.="line" nam  am  
L544">.544.nt0"a> = 1a href=de=itp_id" class="sref">loop_id1/a>]->1a href="ram" class="sref1">controls1/a>[1a href="+codram" class="sref">pid_param1/a>.1a href="p_id" class="sref">loop_id1/a>]);v.5081/a>..pm1kevalue u1spa       control the sam  control */1/spa  v.482............1a href="+code=new_setpoint" class="sref">new=pm121">s321/a> 1a href="+code=pm121_connec " am  
L544">.5441">controls1/a>[1a href="+code=param" class="sref">param1/a>->1a href="+code=control_"lass="sref">setpoint1/a>, (int) 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>);v.5410"a>v.491.482............1a href="+code=new_setpoint"  class="sref">new_nt0"a> = 1a href=de=itp_id" class="sref">l="sref">s321/a> 1a href="+code=setpoint" class="sref">setpoint1/a>)v.5661/a>........return;v_nt0"a> = 1a href=de=itp_id" class="sref">l="sref">s321/a> 1a href="+code=setp" class="sref">new>........return 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>;v.5621/a>........1a href="+code=pr_debug" class="sref">pr_debug1/a>(1spa  clas....1spa  new_setp:>"correc ed from %d to %d RPM\n"1/spa  ,vloop_id1/a>],.1a href="+code=control" class="sref">control1/a>->1a href="+coint" cass="sref">setpoint1/a>, (int) 1a href="+code=new_setpoint" class="sref">new_setpoint0"a>);v.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=loode=fail" class="sref">fail0"a>:v.5751/a>........if (1a href="+code=cocode=p1spa  am  
L544">.5441/a>  a  cure>(&1a href="+code=pm121a  cure>(&" cla==" class="sref">new_mi 1/a> > 0).{vrid1/a>] = 1a hrercoint" class="sref">new/a>...........= 1a href="+code=control" class="sref">control1/a>->1a href="+code=ops" class="srsf">ops1/a>->1a href=s+code=get_value" class="sref">get_v.......= 1a href="+code=cop_id" class="sref_nt0"a> = 1a href=de=itp_id" class="sref">l="sref">s321/a> 1a href="+code=setpo class="sref">new_setpoint0"a>);v.491rid1/a>] = 1a hrercointclass="sref">new_mi 1/a> > 0).{v.e" nam  
L571">.5711/a>        1a href="+code=printk" class="sref">printk1/a>(1a href="+code=KERN_WARNING" class="sref">KERN_WARNING1).{v.5011/a>id" class="sref">loop_id1/a>],.1a href="+code=control" class="sref">control1/a>->1a href="+coie" nam  
L560">rid1/a>] = 1a hrercointp_id" class="sref">loop_id1/a>]);v.am  
L544">.5441/a>  a  cure>(&1a href="+code=pm121a  cure>(&" cla| class="sref">newFAILURE_FAN..= 1a href="+cFAILURE_FANoint" class="sref">new_setpoint0"a>;v.5471/a>........}v.5471/a>........}v.4851/a>}v.4861/a>v.5671/a>v.5081/a>..CPU/a>1s       control the sam  control */1/spa  v.5791/a>stc_sys_fcpu1a href="+code=pm121_create_sys_fcpu1a hrode=pne" oint" class="sref">setpoint1/a>)v.5801/a>{v.5811/a+codpu1"sref">mi 1/a>,.1a href=+codpu1"sref">mi" cla">.5461/a>....."sref">mi 1/a>,.1a href="+code=pid_pa" class="sref">new_setpoint0"a>;v.5811/asmu_sdbp_heade........  .1a hremu_sdbp_heade." clal" class="sref">hd........  .1a hrhd.d_pa" class="sref">new_setpoint0"a>;vnamivers/macinemu_sdbp_dpu"+cdata.......  .1a hremu_sdbp_dpu"+cdata" clal" class="sref">"+cdata.......  .1a hr"+cdata" cl" class="sref">new_setpoint0"a>;vnamivers/macinemu_sdbp_fv>s321/a> 1a href=mu_sdbp_fv>" clal" class="sref">fv>s321/a> 1a hreffv>" cl" class="sref">new_setpoint0"a>;v.5201/a>........struct.1a href="+code=wf_control" class="sref">a h_dpus321/a> 1a hreff h_dpu" cl" class="sref">new_setpoint0"a>;v.4891/a>........1a href="+code=s32" classe.1a href="+code=wftx" clas+cid" class="srefedelta.......  .1a hredeltaclas+cid" class="srefx" powid_param1/a>.1a " powclas+cid" class="srefpowadj.......  .1a hr"owadj" cl" class="sref">new_setpoint0"a>;v.5671/a>va h_dpus321/a> 1a hreff h_dpu" clntrol" class="sref">control1/a> = 1a href="+code=controls" class="sreFAN_CPU..= 1a href="+cFAN_CPUe=loo" class="sref">new_setpoint0"a>;v.5491/a>v.5501/a>........1spa  class=.1spa  clasin SMU SBD       control the sam  control */1/spa  vhd........  .1a hrhd.d_pa" class="sref">new_mu_"+cosdbode=ti/a>[1a href="+code=_mu_"+cosdbode=ti/a>[ode=printk" class="sSMU_SDB_CPU.1sDATA_I...= 1a href="+cSMU_SDB_CPU.1sDATA_I.clas+cid" class="srefloop_id1/a>] == 1a href="+co" class="sref">new_setpoint0"a>;v.532hd........  .1a hrhd.d_pa" =" class="sref">new_mi 1/a> > 0).{v.5711/a>        1a href="+code=printk" class="sref">printk1/a>(1a href="+code=KERN_WARNING" class="sref">KERN_WARNING1/a>(1spCPU/.1sps="string">"pm1quot;%s\&quoo" class="sref">new_setpoint0"a>;v.5461/a>................goto 1a href="+code=fail" class="sref">fail0"a>;v.4851/a>}v.55data.......  .1a hr"+cdata" cl" cclass="sref">kmalloc1/aemu_sdbp_dpu"+cdata.......  .1a hremu_sdbp_dpu"+cdata" clal)ode=pid" class="srefhd........  .1a hrhd.d_pa[1o" class="sref">new_setpoint0"a>;v.5671/a>v.5081/a>..Getlass=FVT="comment">/opera.1spacode= 0 (ass=only supporpa  one    control the sam  control */1/spa  v.5710"a>*nt">/now)sin orde.ot;sgetlax" cl  control the sam  control */1/spa  v.5710"a>      control the sam  control */1/spa  vhd........  .1a hrhd.d_pa" class="sref">new_mu_"+cosdbode=ti/a>[1a href="+code=_mu_"+cosdbode=ti/a>[ode=printk" class="sSMU_SDB_FVT_I...= 1a href="+cSMU_SDB_FVT_I.clas+cid" class="srefloop_id1/a>] == 1a href="+co" class="sref">new_setpoint0"a>;v.532hd........  .1a hrhd.d_paclass="sref">new_mi 1/a> > 0).{vfv>s321/a> 1a hreffv>" cl" cclass="sref">kmalloc1/aemu_sdbp_fv>s321/a> 1a href=mu_sdbp_fv>" clal)ode=pid" class="srefhd........  .1a hrhd.d_pa[1o" class="sref">new_setpoint0"a>;vsetpfv>s321/a> 1a hreffv>" clntrol" class="sref">x" ef="+code=sensor_	 x" ef="d_paclf="+f="+c16" class="sref">new_setpoint0"a>;v.5051/a>................} elsev.5761/a>e.1a href="+code=wftx" clas" c0x5e0000;ne" nam  
L508">.5081/a>..94 degree default>      control the sam  control */1/spa  v.5671/a>v.5081/a>........1spa  class="comment">/* Alloc &.initialize state */1/spa  v_createpu>(&1a href="+code=pm121epu>(&d_pa" class="sref">new>loop_id1/a>] = 1a href="+code=kmalloc" class="sref">kmalloc1/a>(sizeepu>(&1a href="+code=pm121epu>(&d_paarget" class="sref">itarget1/a>),v.ine" nam  
L576">.5761/a>                1a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL0"a>);v.491_createpu>(&1a href="+code=pm121epu>(&d_pa" id" class="sref">loop_id1/a>] == 1a href="+co" class="sref">GFP_KERNEL0"a>);v.5461/a>................goto 1a href="+code=fail" class="sref">fail0"a>;v_createpu>(&1a href="+code=pm121epu>(&d_pap_id" class="sref">loop_id1/a>]->1a href="+code= >cks" class="sref"> >cks1/a> = 1;v.5741/a>v.5501/a>........1spa  class="comment">/* Fill PID params */1/spa  v.5561/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=interclass="sref">interval1/CPU.....= 1a href="+code=PM121_1/CPU.....= i aram" class="sre5s/macinto5h/wmacinto6h/windfarmill1/
L674" class="98"5id 
L:=mi " class="sref">mi 1/a>id 
L:=mi "6/windfarm_pm121.c#L565">pia>................1a href="+code=wf_control_set_max" class="sref">wf_control_set_max1/a>(1a href="+code=control"" class="sref">farget1.c#L565">pia>...............3>pid_param1/a>.1a href="+codex00">.5801/a>{v.555 href="drive6s/WF="lindfa_MAX55">.5551/a>] == 1a href="+co" class="sref">new_setpoint0"a>;v1.c#L577"6id 
L577" class="line" n6m  
L67a> = 1a href=de=itp_iine" nam  
L532">.532hd........  .1a hrhd.d_pa" =" class="sref">new_mi 1/a> > 0).{v.5711/a>        1a href="+code=printk" class="sre6">.5791/a6static void 1a href="+co6e=pm168 class="sref">kmalloc1/a>(siinto6h/windfarm_pm121.c#L55L653 href="driver(0">.e") nam  
L571">.57L674" class="98"5id 
L:=mi " class="sref">mi 1/a>id 
L:=mi "6/windfarm_pm121.c#L565">pia>................1a hritarget1/a>),vKERN_WAR">interval1/CPU.....= 1a href="+code=PM121_1/CPU.....= i aram" class="sre5s/macinto5h/wmacinto6h/windfarmill1/
L674" class="98"WF="lindfa_MAX55">.555 href="drive6s/WF="lindfa_MAX55">.5551/a>target1/a>),v.5811/a>        stru6t.1a 6ref="+code=pm1s="linnnnnnnnn
L546">.5461/a>................got fass="sr6f">namivers/macintosh/wi6dfari68d 
L672" class="line" nam n
Lam  
L550">.5501/a>........1spa  class="comment">/* Fill PID params */1/spa 
L674" class="98"5id 
L:=mi " class="sref">mi 1/a>id 
L:=mi "6/windfarFill PID params */1/spatarget1/a>),vnamivers/macin_co6.....68f="+code=setp" class="sref">n1/a>............= 1a href="+code=PM121_SYS_GD" class="sref">PM121_SYS_GD1/a>
L674" class="98"5id 
L:=mi " class="sref">mi 1/a>id 
L:=mi "6/windfarF  
L552">.5521/a>........1a href="+code=pid_param" class="sref">pid_p6="line" n6m  
L520">.5201/a>......6.stru6t.1a href="+code=wf_control" n1/a>............= 1a href="+code=PM121_SYS_GD" class=gp" class="sref">gp1/a>
L674" class="98"5id 
L:=mi " class="sref">mi 1/a>id 
L:=mi "6/windfarFgp" class="sref">gp1/a>/R">interval1/CPU.....= 1a href="+code=PM121_1/CPU.....= i aram" class="sre5s/macinto5h/wmacinto6h/windfarmill1...1a href="+code=pid_param" class="sref">pid_p6=ref="drivf="+code=s32" classef="+6ode=s68a>........}vinterval1/CPUf="drive6s/macinto6h/windfarm_prhd.d_pa[1o" class="sref">new_setpoint0"a>;vmi 1/a>id 
L:=mi "6/windfarf="+co_ cla_="drive6s/macinto6h/w="+co_ cla_="drisse.1a href="+code=wftx" clas" cclue" class="sref_4891/a>........id1/a>] =61a hrercoint" class="sre6">new6setpoint0"a>;vrhd.d_pa[1o" class="sref">new_setpoint0"a>;vmi 1/a>id 
L:=mi "6/windfarm  _
L5a href="+code=pidm  _
L5a sse.1a href="+code=wftx" clas" cclue" class="sref_4891/a>........i.c#L577"6s_all_params1/a>[1a href6"+cod6=loop_id" class="sremodel_id1a href="+code=s32" classe.1a hrrhd.d_pa[1o" class="sref">new_setpoint0"a>;vmi 1/a>id 
L:=mi "6/windfar
L5a _ref="+code=s32" classa _refsse.1a href="+code=wftx" clas" cclue" class="sref_4891/a>........class="sr6f">itarg_init1/a>(&16 href69code=control_"lass="sref">setpoint1/a>, (int) 1a hre1a href="6code=s= *nam  
L532">.5361/a> 6      if (1a href="+cod
 " cl.....= 1a href="+code=PM121_1/CPU.....= i aram" classm121.c#L565"6id 
L665" class="= i aram" classm121.c#L565"6id 
L665" clase=wftx" clas" cclue" class="sref_4891/a>........cne" nam  trols" class="sref">cont6ols1/69ef="+code=gd" class="sref">gd1/a>............= 1a href="+code=PM121_SYS_GD" classt>loop_nam s1/a>[1a hrt>;vinterval1/CPUf="drive6s/macinto6h/windfarm_pe=wftx" clas" cclue" class="sref_4891/a>........cfass="sr6de=control_id" class="sr6f">co69d 
L672" class="line" nam n
Lam  
L550">.5501/a>........1spa  class="comment">/* p5" ref="+code=s32" cla5" refhref=="= i aram" classL646" class="line" nam  
L556">r-f">interval1/CPUa href="+code=s32" classe.1a href="+code=wftx" clas+cid" class="srefedelta.....L593" cla6s="line" n--e" nam  
L486">.nt69de=pm121epu>(&d_pap_id" class="sref">loop_id1/a>]indfarm_p6121.c#L494"5id 
L594" cl6ss="l69.1a href="+code=wf_control" n1/a>............= 1a href="+code=PM121_SYS_GD" classclass="sref">itarget1/a>;v="= i aram" classs/macinto6h/windfarm_pm121.c#L547class="line" nam  
L557">.5571/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=mi " s/macinto6h/windfarm_pm121.c#L547itarget1/a>),v.5501/a>........1spa  class="comment">/* lass="sref">control1/a>);v="= i aram" classs/macinto6h/windfarm_pm121.c#L547class="line" nam  
L557">.5571/a>........1a href="+code=pid_param" class="sref">pid_param1/a>.1a href="+code=max" s/macinto6h/windfarm_pm121.c#L547itarget1/a>),vcontrol_id1/a>];v.5081/a>..94 d" nam  e"6nam  
L566">.5661/a>....6...re6urn;v................goto 1a href="+code=fail" class="sref">p href="+code=wf_pid_init" class="sref">wf_pid_init1/a>(&1a href="+code=pm121_sys_state" class="sref">pm121_sys_state1/a>[1a hre6class="sr6f">loop_id1/a>]->1a h6ef="+6odeclass="sref">interval1/a>......= 1a href="+code=P7121_SYS_I7TERVAL" class="sref">PM171_SYS7INTERVAL1/a>;vnew_setpoL653>vpm121_sys_state1/a>[1a hre7 href="+c7de=get_value" class="sre7_s...70L570" class="line" nam  
L570"w>........return 1a href="+code=new_setpoint" class="sref">neclass="t37;s Fa  control loop intt;1/spa  vrol loop initialized.\n"1/spa  v.5711/a>        1a href="+code=printk" class="sre7;vcontref_id1/a>]->1a href="+co; to max speed.\n&quod1/a>............= 1a href="+code=PM121_SYS_GD" classt>loop_nam s1/a>[1a hrt>;v.5641/a>................ 1a href="+code=loop_nam s" class="srefm121.c#L565"6id 
L665" clas;1a href="+code=pm121epu>(&d_pa" class="sref"7rintk1/a>71a href="+code=KERN_WARN7NG" c7ass="sref">KERN_WARNINGde=wf_control" n1/a>............= 1a href="+code=PM121_SYS_GD" classclass="sref">itarget1/a>;"drivers/macintosh/windfarm_pm121.c#L565" id 
L565" class="line" nam  
L565">.5651/a>................ 1a href="+code=pid_param" class="sref">pi7.........7  .1a href="+code=d" cla7s="sr70de=pm121epu>(&d_pap_id" class="sref">loop_id1/a>7  cure>(&7mp;1a href="+code=pm121a7 cure7(&" cla| clid" class="sref">l="sref">s321/a> 1a href="+code=setp7="sref">P7121_SYS_INTERVAL1/a>;v........}v.5661/a>....7...re7urn;v<_pa" id" class="sref">loop_id1/a>] == 1a hrcode=new_setpoint" class="sref">new_setpoint0"a7"6id 
L607" class="line" nam  
L547">.5471/a>........}vnew_mi 1/a> > 0).{vpm121_sys_state1/a>[1a hre7 9id 
L607"">loop_id1/a>]->1a h7s="sr70declass="sref">interval1/a>......= 1a href="+code=P7a>[1a hre7="+code=loop_id" class="7ref_s7..........  .1 
L626" cla">.5461/a>.....nam  
L567">.5671/a>v.567L65FREQhref]into6h/windfarm_pm121.c#L571"6id 
L671" class="7"line" na7  _id" class="sref">loop7id1/a71class="sref">KERN_WAR">interval1/CPU>.5751/a>........if (1a href="+code=control" class="sref">control1/a>)v.5671/a>v.567L65FREQhref]i_state" class="sref">pm121_sys_state1/a>[1a hre7de=sensor7	 ss="srefpp_id" class="7ref">711a href="+cSMU_SDB_FVT_I.clas+cis/macinto6h/windfarm_pm121.c#L547istate" class="sref">pm121_sys_state1/a>[1a hre7dintk1/a>7 = 1a href=de=itp_id" cl7ss="s71c#L562"6id 
L662" class="line" nam  >.5751/a>........if (1a href="+code=control" class="sref">control1/a>)vs/macinto6h/windfarm_pm121.c#L547itarget1/a>),v7oop_ids="linnnnnnnnn
L546">.5461/a>................go7>v.5461/a>................go7>"sref">P7ew=pm121">s321/a> 1a hre7="+co71a>........}v.5441">con7rols17a>[1a _pm121.c#L538"6id 
L638" cle" nam e sam  rm_pm121.c#L578" id 
L578" e sam  rm_pm"srefndfarm_pm121.c#L569"6id 
L669" class="line" nam  
L489">_createpu>(&lass="sref">param1/a>138 class="sref">KEistate" class="sref">pm121_sys_state1/a>[1a hre7d6id 
L6071/a>]->1a href="ram" 7lass=7sref1"== 1a href="+co" class="sref">new_setpoint0"a>;7ref="driv76s/macinto6h/windfarm_pm721.c#7518"6id 
L618" class="line" nclass="sref">a h_dpus321/a> 1a hreff h_dp#L515"6id 
L615" class="line" nam  
L555">.4code=new_setpoint" class="sref">newcode=wfr.4891/a>........1a ha href="+code=pid
L5a sse.target1/a>),vparam1/a>->1a7href=72.........  .1ref=mu_sdbp_fv>" clal" class="sref">fv>s321/a> 1a hreffv>" cl" class="sref">new_setpoint0"a>;v);v);v<"  
L512">.5121/a>........return 1a href="+code=new_setpoint" class="sref">new_setpoint07"+code=ne7_setpoint"  class="sref"7new_n72[1a href="+code=param" class="sref">param1/a>->17int" clas7="sref">setpoint1/a>)v.5221/a>vl="sref">s321/a7 1a h721a href=mu_sdbp_fv>" d" class="sref">loop_id1/a>]->1a href="+code!=" class="sref">new_mi 1/a> > 0).{vpr_debug1/a>(1sppppppppa>  readju.nt0"a> = 1a href1/a>  readju.ne=loop_id" class="sref">loop_id1/a>)vcontrol1/a>7>172line" nam          
L546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo7);v.5471/a>........}v.5561/a>........1a href="+code=pid_param" cl7.= 1a hre7="+code=cop_id" class="s7ef_nt72declass="sref">interval1/a>......= 1a href="+code=P7f="drive679macinto6h/windfarm_pm127.c#L573NTERVAL1/a>;v.5671/a>va h_dpus321/a> 1a h7">printk17a>(1a href="+code=KERN_W7RNING73,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c7p_id1/a>]7.1a href="+code=control"7class73ef="+code=gd" class="sref">gs/macinto5h/windfarm_pm121.c#L499"5id 
L599" clcreatt" class="sref">new99" clcreatt" cL547class="line" nam  
L557">.5571/a>........1a href="+code=pid_param" class="line" nam  
L560">rid1/a>] = 1a hrercoint" class="creatt" class="sref">new99" clcreatt" cL5471a href="+code=d" class="sref">control_id1/a>]->1a href="+code=ops" class="sref">ops1/a>->17/a>  a  c7re>(&1a href="+code=7m121a73rive6s/macintgs/macinto5h/windfarm_pmref="drivers/macinto5h/windfarm_pm121.c#L493"5id 7Noint" cl7ss="sref">new_setpoint0"7>;v" clal)ode=pid" cs/.532hd........  .1a hrhd.d_pa" =" class="sref">new_mi 1/a> > 0).{vss="line" nam  e" nam  
L571">.5711/a>        1a href="+code=printk" class="sref">7="line" n7m  e" nam  
L547">.5471/7>....73sref">pr_debug1/a>(1sppppppp class="sref">gs/macinto5h/windfarm_pmr;1a href="+code=ops" class="sref">ops1/a>->17/control"7 class="line" nam  
L5477>.54773a href="drive6s/macinto6h/windfarm_p class="sref">loop_1a href="+code!=" clad" class="sref">loop_id1/a>]);v.5441/a>  71.c#L535"7id 
L635" class="line" n7m  
L73>[1a href="+code=para546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo721.c#L53676id 
L636" class="line" 7am  
738ivers/macinto5h/windfarm_pm121.c#L496"5id 
L596" class="lin77">.5671/7>vinterval1/a>......= 1a href="+code=P721.c#L53976id 
L639" class="line" 7am  
74NTERVAL1/a>;v.5571/a>........1a href="+code=pid_param" class="line" nam  
L560">rid1/a>] = 1a hrercoint" class="creatl ha href="+code=pid99" cl#0" cl ha L547" class="sref">wf_pid_i ha href="+code=pid
L5a sse.r;1a href="+code=ops" class="sref">ops1/a>->17ys_fcpu1a7hrode=pne" oint" class="7ref">74......  .1a href="+code=+code=pid" class="srefef="+code=sensor_	 ss="srefp_id" class="sref">loop_id1/a>]7581">.5817/a+codpu1"sref">mi 1/a>,71a hr741.c#L501"6id 
L601" cclal)ode=pid" cs/.532hd........  .1a hrhd.d_pa" =" class="sref">new_mi 1/a> > 0).{v.5711/a>        1a href="+code=printk" class="sref">7stne" nam7 
L581">.5811/asmu_sdbp_7eade.74ss="sref">KERN_WARNINGpppppp class="sref">gs/macinto5h/windfarm_pmr;1a href="+code=ops" class="sref">ops1/a>->17ers/macin7mu_sdbp_dpu"+cdata......7  .1a741a href=mu_sdbp_fv>" clal)ode=pid" csclass="sref">loop_1a href="+code!=" clad" class="sref">loop_id1/a>]);v.5441/a>  7lass="lin7"sref">namivers/macinemu7sdbp_74sref">pr_debug1/a>(1s546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo7="line" n7m  
L520">.5201/a>......7.stru74rive6s/macinto6h/windfarm_pm121.c#L505"6id 
L605" class="lin7..  .1a h7edeltaclas+cid" class="s7efx" 7owid_param1/a>.1a " powclas+cid" class="srefpowadj..7....  .1a7hr"owadj" cl" class="sre7">new7setpoint0"a>;vnew_setpoL653>v.5621/a>.7eff h_dpu7 clntrol" class="sref">c7ntrol74">pr_debug1/a>(1spa  class="sref= !pasref">contref_id1/a>]->1a href="+co; to max speed.\n"1/spa  ,v.5641/a>... ha href="+code=pid
L5a sse.rr;1a href="+code=ops" class="sref">ops1/a>->17a href="+7FAN_CPUe=loo" class="sre7">new75code=control_"lass="sref">setpoint1/a>, (int) 1a hr7windfarm_7m121.c#L550"6id 
L650" c7ass="75......  .1a href="+code=+code=pit;1/spa  ,vnew_setpoint0"a>,vsetpoint1/a>, (int) 1a hr7w81">.5817SMU_SDB_CPU.1sDATA_I...=71a hr751.c#L501"6id 
L601" cclal)ode=pid" csclass="sref">loop_1a href="+code!=" clad" class="sref">loop_id1/a>]);v.5441/a>  7ef="drive7s/macinto6h/windfarm_pm171.c#L75f">loop_id1/a>]->1a href="+cid" class="srefef="+7intk1/a>(7a href="+code=KERN_WARNI7G" cl75f="+code=setp" class="sref">s/macinto6h/windfarm_pm121.c#L511"6id 
L611" class="line" nam  
0" class">.5111/a>v.m  
Lto6h/windfarm_pm121.c#L512"6id 
L612" class="line" nam  
L482">.482............1a href="+code=new_setpoin. ha href="+code=pid
L5a sse.+code=new_setpoint" class="sref">newcode=wfrupid_param1/a>.1acode=wfrupRINT"ode=pid" class="7drive6s/m7cinto6h/windfarm_pm121.c7L554"751.c#L="linnnnnnnnn
L546">.5461/a>................go7o 1a href7"+code=fail" class="sref7>fail7"a>;v.4831/7alloc1/ae7u_sdbp_dpu"+cdata.......7 .1a 75erclass="sref">interval1/CPUiness="line" nam  
L471">.4711/a>1spa       control the sam  control */1/spa  v.482............1a href="+code=new_setpoint" cla7....  .1a7hrhd.d_pa[1o" class="sre7">new75L544">.5441/a>  a  cuf">KERN_WARNINGpppppp class="sref">go6h/windfarm_pm121.c#L548"6id 
L6482............1a href="+code=new_setpoint" cla7.ff h_dpu7 class="line" nam  
L5087>.50875">pr_debug1/a>(1spa  c">KERN_WARNINGpppppp class="sref">gf="+code=control_" class="sref">new_setpoint0"a>,v.="line" nam  am  
L544">.544.nt0"a> = 1a href=de=itp_id" class="sr76s/macint76h/windfarm_pm121.c#L55976id 
76code=control_"lass="sref">setpoint1/a>, (int) 1a hr7trol */1/7pa  vdfarm_pm121.c#L513"6id 
L613" class="line" nam  
L483">.4831/7/a>[ode=p7intk" class="sSMU_SDB_FV7_I...76ef="+code=gd" class="sref">gam  
L508">.5081/a>..pm1kevalue u1spa       control the sam  control */1/spa  vgam  
L508">.5081/a>..pm1kevalue u1spa      L544">.544.nt0"a> = 1a href=de=itp_id" class="sr76f="drive7rive6s/macinto6h/windfar7_pm1276f">loop_id1/a>]->1a href="+cid" class="srefef="+7lass="sre7">kmalloc1/aemu_sdbp_fv>7321/a7 1a href=mu_sdref="+code=+code=pi121.c#L522"6id 
L622" class="line" nam  e" nam  
L566">.5661/a>........return;v<setpoint1/a>, (int) 1a hr71a href="7ass="sref">setpfv>s321/a7 1a h76sref">pr_debug1/a>(1s546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo7+f="+c16"7class="sref">new_setpoin70"a>;76.1a href="+code=wf_control" c21.c#L522"6id 
L622" class="line" nam  e" nam  
L566">.5661/a>........return;v_nt0"a> = 1a href=de=i7ine" nam 7
L576">.5761/a>e.1a href7"+cod76erclass="sref">interval1/CPU.ew>........return 1a href="+code=new_setpoint" class="sref">new_setpoL653;vloop_id1/a>],.1a href="+cod7egree def7ult>      control the sa7  con7rol */ _id" class="sref">loop_id1/a>],.1a href="+cod7eff h_dpu7/windfarm_pm121.c#L568"67d 
L678" claseadju.nt0"a> = 1a href1/a>  readju.ne=loop_id" clacode=new_setpoint" class="sref">new_setpoint0"a7new>loop_7d1/a>] = 1a href="+code=7mallo77.........  .1 
L626" cla">.5461/s/macinto6h/windfarm_pm121.c#L547"ju.ne=loode=fail" class="sref">fail0"a>:v.5751/a>...7_pm121.c#7570"6id 
L670" class="li7e" na77class="sref">KERN_WAR">interval1/CPUs/macinto5h/windfarm_pm121.c#L499"5id 
L5s/macinto6h/windfarm_pm121.c#L547class="line" nam  
L557">.5571/a>........1a href="+code=pid_paramine" nam  e" nam  
L560">rid1/a>] = 1a hrercoint" clas/macinto6h/windfarm_pm121.c#L547ref="+code=control" class="sref">control1/a>->1a href="+code=ops" class="srsf">ops1/a>->1a href=s+code=get_value" class="sref">get_v.....7ine" nam 7
L491">.491_createpu>(&a7p;1a 7ref="+code=pm121epu>(&ref="+code=+code=pid" class="srefef="+code=sensor_	 ss="srefp_id" class="sref">loop_id1/a>]7drive6s/m7cinto6h/windfarm_pm121.c7L572"77ss="sref">KERN_WARNINGppppppcclal)ode=pid" cs/.532hd........  .1a hrhd.d_pa" =" class="sref">new_mi 1/a> > 0).{v.e" nam  
L571">.5711/a>        1a href="+code=printk" class="sre7" nam  
L753">_createpu>(&1a h7ef="+771a href=mu_sdbp_fv>" _WARNINGppppppcclal)ode=pid" cs/macinto6h/windfarm_pm121.c#L547class="line" nam  
Lmp;1L525"6id 
L625" aacinto6h/windfarm_pm121.c#L531"6id 
L631" class="line" nam  
L501">.5011/a>id" class="sref">lo7->1a h7ef="+code= >cks" class="7ref">77sref">pr_debug1/a>(1sppppppppclal)ode=pid" csclass="sref">loop_1a href="+code!=" clad" class="sref">loop_id1/a>]);v.am  
L544">.5447href="dri7e6s/macinto6h/windfarm_p7121.c77a href="drive6s/macino6h/windfarm_pm121.c#L505"6id 
L605" class="lin7ss="sref"7pid_param1/a>.1a href="+7ode=i77rivers/macinto5h/windfarm_pm121.c#L496"5id 
L596" class="lin7ntrol_set7max1/a>(1a href="+code=c7ntrol7" claso5h/windfarm_pm121.c#L496"5id 
L596" class="lin7nff h_dpu7id 
L577" class="line" n7m  
L77declass="sref">interval1/a>......= 1a href="+code=P7">.5791/a7static void 1a href="+co7e=pm17859" class="line" nam  
L570/*121.c#L513"6id 
L613" class="line" nam  
L483">.4831/7int.1a hr7f="+code=loop_id" class=7sref"78classlass="line" nam  
L570"* ****** Cm  rm_pppppp121.c#L513"6id 
L613" class="line" nam  
L483">.4831/7ine" nam 781">.5811/a>        stru7t.1a 7ref="+lass="line" nam  
L570"*121.c#L513"6id 
L613" class="line" nam  
L483">.4831/7irive6s/m7f">namivers/macintosh/wi7dfari78d 
L6lass="line" nam  
L570"*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/7i nam  
L7"sref">namivers/macin_co7.....78de=pm121epu>(&d_pap_id" class="sref">loop_id1/a>7="line" n7m  
L520">.5201/a>......7.stru7t.1a h_pm121.c#L538"6id 
L638" cle" namm_pm121.c#L578" id 
L578"m_pm"srefol */1/spa  vloop_id1/a>]7a>;v.5121/a>ivetad" clas121.c#L578" id ivetad" clas     control the sam  contro="sref">loop_1a href="+code!=" clad" class="sref">lL632" class="line" nam  
L502">.am  
L544">.5447id1/a>] =71a hrercoint" class="sre7">new7setpoint0"a>;vunsignef=<"  
L512">.5121/a> clad" clas121.c#L578" id  clad" clasf">lL632" class="line" nam  
L502">.am  
L544">.5447iff h_dpu7s_all_params1/a>[1a href7"+cod7=loop_id" class="sremodel_id1class="sref">a h_dpus321/a> 1a hreff h_dpuotaltl ha href="+code=piduotaltl ha f">lL632" class="line" nam  
L502">.am  
L544">.5447class="sr7f">itarg_init1/a>(&17 href79.........  .1 "  
L512">.5121/a>ihref="+code=pidif">lL632" class="line" nam  
L502">.am  
L544">.5447cnt.1a hr7code=s= *nam  
L532">.5371/a> 79,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c7cne" nam 7trols" class="sref">cont7ols1/791a href="+cSMU_SD!ntrol the sam  contro="s67">1a href="+code!=" cla="s67">code=sensor_	 ss="srefp_id" class="sref">loop_id1/a>]7cfass="sr7de=control_id" class="sr7f">co79c#L562"6id 
L662" class="line" nam  .ew>........return 1a href="+code=new_setpoint" class="sref">new_setpoctrolL657 href="drives !windfarm_pm121.s_state" class="sref">pm121_sys_state1/a>[1a hre7L593" cla7s="line" n--e" nam  
L487">.nt791a href=mu_sdbp_fv>" ode=" =" class="srefihref="+code=pidif">ls="lde=fail" class="sihref="+code=pidif">lsf="+c=fail" class="sN_nto6Shref="+code=pidN_nto6Sf">lLe=fail" class="sihref="+code=pidif">l++/1/spa  vpr_debug1/a>(1sppppppppclal)ode=pid" csclassctrol tsys5081/a>..CPU/a>1s       control tsys5081/d_pa" =" class="srefihref="+code=pidif">ls_state" class="sref">pm121_sys_state1/a>[1a hre7Lref="dri7_pm121.c#L495"5id 
L595"7class79a>........}vcontrol_id1/a>];v[1a href="+code=paraclal)ode=pid" csclassctrol t">.5081/a>..CPU/a>1s       control the sam  contrs_state" class="sref">pm121_sys_state1/a>[1a hre7Ld1/a>] =7nam  
L566">.5661/a>....7...re79L544">.5441/a>  a  cuntrol the sam  contro="s67">1a href="+code!=" cla="s67">codecinto6h/windfarm_pm121.c#L573"6id 
L673" class="lin7class="sr7f">loop_id1/a>]->1a h7ef="+79loop_id" claso5h/windfarm_pm121.c#L496"5id 
L596" class="lin8121_SYS_I8TERVAL" class="sref">PM181_SYS80code=control_"lass="sref">setpoint1/a>, (int) 1a hr8 href="+c8de=get_value" class="sre8_s...80windfarm_pm121a href="drive6s/macinto6skippL657471/a"*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8;vKERN_WARNIN546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo8.........8  .1a href="+code=d" cla8s="sr80de=pm121epu>(&d_pap_id" class="sref">loop_id1/a>8  cure>(&8mp;1a href="+code=pm121a8 cure8(&" cla| cl1a href="drive6s/macinto6h/mpute a_paage3
L5a s*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8;6cure>(&8mpm121.c#L495"5id 
L595"8href=80.1a href="+code=wf_control" uotaltl ha href="+code=piduotaltl ha f">ls="ld513"6id 
L613" class="line" nam  
L483">.4831/8;7cure>(&8mef">control_id1/a>];v[1a href="+code=" =" class="srefihref="+code=pidif">ls="lde=fail" class="sihref="+code=pidif">lsf="+c=fail" class="s    con5461/a>................goto 1a href="+code=fail" class="sref">p href="+code=wf_pid_initacinto6h/windfarm_pm121.c#L517"6id 
L617" class="line" nam  
="sre5s/macinto5h/wmacinto6h/windfarmill1.e=fail" class="sihref="+code=pidif">l++/1/spa  v.5480L544">.5441/a>  a  cuntrol the sam  uotaltl ha href="+code=piduotaltl ha f">ls+control the sam  control5461/a>................goto 1a href="+code=fail" class="sref">p href="+code=wf_pid_initacinto6h/windfarm ha /a>..CPU/a>1s     ha /init="drive6s/macintihref="+code=pidif">l48" class="line" nam  
L548">a h_dpus321/a> 1a h8 9id 
L608"">loop_id1/a>]->1a h8s="sr80declass="sref">interval1/a>......= 1a href="+code=P8a>[1a hre8="+code=loop_id" class="8ref_s81NTERVAL1/a>;vls/R">interval1/CPU.   con5461/a>................goto 1a href="+code=fail" class="sref">p href="+code=wf_pid_initacinto6h/windfarm_pm121.c#L517"6id 
L617" class="line" nam  
="sre5s/macinto5h/wmacinto6h/windfarmill1.ss="sref">interval1/a>......= 1a href="+code=P8ahref="+c8  _id" class="sref">loop8id1/a81,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c8de=sensor8	 ss="srefpp_id" class="8ref">81[1a href="+code=param" class="sref">param1/a>->18dintk1/a>8 = 1a href=de=itp_id" cl8ss="s81c#L562"6id 
L=fail" class="sref">fail0"a>:v.4831/8ode=senso8_	 ss="srefp_id" class="8ref">814[1a href="+code=" =" class="srefihref="+code=pidif">ls="l de=fail" class="sihref="+code=pidif">lsf="+c=fail" class="sN_nto6Shref="+code=pidN_nto6Sf">lLe=fail" class="sihref="+code=pidif">l++/sensor_	 ss="srefp_id" class="sref">loop_id1/a>]8>vpr_debug1/a>(1sU_SDB_FVT_I.clas+ci=" cla=ys5vl4/1/spa  vP8ew=pm121">s321/a> 1a hre8="+co81a href="drive6s/macin>  a  cuntrol the sam  contro=ys5081/mm_pm121.c#L578" id 
L578"=ys5081/mm_pmd_pa" =" class="srefihref="+code=pidif">ls_state" class="sref">pm121_sys_state1/a>[1a hre8="line" n8m  am  
L544">.5441">con8rols181rivers/macinto5h/windfarm_pm121.c#L496"5id 
L596" class="lin8d6id 
L6081/a>]->1a href="ram" 8lass=81ol */ _id" class="sref">loop_id1/a>],.1a href="+cod8ref="driv86s/macinto6h/windfarm_pm821.c#8518"6id 
L618" nam  
L576">.5761/a>                1a href="+code=GFP_KERNEL" clas/1/spa  vparam1/a>->1a8href=82 class="sref">kmalloc  
L576">.5761/a>        am  rm_pm121.c#L578" id 
L578" e sam  rm_pm"sref  
L576">.5761/a>                1a href="+code=GFP_KERNEL" clas/_state" class="sref">pm121_sys_state1/a>[1a hre8rline" na8ew_setpoint" class="sref8>new_82,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c8"+code=ne8_setpoint"  class="sref"8new_n82ef="+code=gd" class="sref">gde=GFPa>]->1a href="+code!=" class="sref">nec#"ld513"6id 
L613" class="line" nam  
L483">.4831/8int" clas8="sref">setpoint1/a>)vl control the sam  contro="sref">loop_1a href="+code!=" clad" class="sref">ldfarm_p~
L512">.5121/a>ivetad" clas121.c#L578" id ivetad" clas    d513"6id 
L613" class="line" nam  
L483">.4831/8ide=senso8s="sref">l="sref">s321/a8 1a h82de=pm121epu>(&d_pap_id" class="sref">loop_id1/a>8a>.......81a href="+code=pr_debug"8class82&" cla| cl1a href="drive6s/macinto6If e v.4831/8=control"8class="sref">control1/a>8>182line"lass="line" nam  
L570"""""""""*" nas to full=37;s .121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8="line" n8="drive6s/macinto6h/wind8arm_p82riverlass="line" nam  
L570"""""""""*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8....if (18 href="+code=cocode=p1sp8  am 82 class="sref">farget1.c#L565">piaontro="sref">loop_1a href="+code!=" clad" class="sref">ldfarm_farm_p!ntrol the sam  ivetad" clas121.c#L578" id ivetad" clas    /sensor_	 ss="srefp_id" class="sref">loop_id1/a>]8.= 1a hre8="+code=cop_id" class="s8ef_nt82">pr_debug1/a>(1spa  ode=" =" class="srefihref="+code=pidif">ls="lde=fail" class="sihref="+code=pidif">lsf="+c=fail" class="sN_CONTROLShref="+code=pidN_CONTROLSf">lLe=fail" class="sihref="+code=pidif">l++/sensor_	 ss="srefp_id" class="sref">loop_id1/a>]8f="drive689macinto6h/windfarm_pm128.c#L583 class="sref">kmalloc1/a>(siz 
L626" cla">.5461/a>.....nam  
L567">.5671/a>vl4/1/spa  vprintk18a>(1a href="+code=KERN_W8RNING83class="sref">KERN_WARs="sref">kmalloc  
L576">.5761/>.5751/a>........if (1a href="+code=control" class="sref">control1/a>)v.5671/a>vl4/d513"6id 
L613" class="line" nam  
L483">.4831/8p_id1/a>]8.1a href="+code=control"8class83ef="+code=pm121epu>(&o5h/windfarm_pm121.c#L496"5id 
L596" class="lin8/a>  a  c8re>(&1a href="+code=8m121a83rive6s/macinto5h/windfarm_pm121.c#L496"5id 
L596" class="lin8/de=senso8ss="sref">new_setpoint0"8>;v(&d_pap_id" class="sref">loop_id1/a>8="line" n8m  e" nam  
L547">.5471/8>....83&" cla| cl1a href="drive6s/macinto6If leavL657d" clas m1/a,eunf="mp _KEfreq and rs="sref">1.c#L513"6id 
L613" class="line" nam  
L483">.4831/8/control"8 class="line" nam  
L5478>.54783line"lass="line" nam  
L570"""""""""*"all" nas on next iv1.c#L513"6id 
L613" class="line" nam  
L483">.4831/8/"line" n8id 
L635" class="line" n8m  
L83riverlass="line" nam  
L570"""""""""*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/821.c#L53686id 
L636" class="line" 8am  
83 class="sref">far!ntrol the sam  contro="sref">loop_1a href="+code!=" clad" class="sref">ldfarm_farm_pntrol the sam  ivetad" clas121.c#L578" id ivetad" clas    /sensor_	 ss="srefp_id" class="sref">loop_id1/a>]87">.5671/8>vpr_debug1/a>(1spa   
L626" cla">.5461/a>.....nam  
L567">.5671/a>v.567L65FREQhref]into6h/windfarm_pm121.c#L571"6id 
L671" class="821.c#L53986id 
L639" class="line" 8am  
84 class="sref">kmalloc1/a>(siz  
L576">.5761/>.5751/a>.......527">.="line" nam>.5751/a>.......52"sref">control1/a>)v.5671/a>v.567L65FREQhref]i_state" class="sref">pm121_sys_state1/a>[1a hre8ys_fcpu1a8hrode=pne" oint" class="8ref">84class="sref">KERN_WAR">interval1/CPU.e=GFPa>]->1a href="+code!=" class="sref">nec#"to6h/windfarm_pm121.c#L573"6id 
L673" class="lin8581">.5818/a+codpu1"sref">mi 1/a>,81a hr841.c#L501"6id o5h/windfarm_pm121.c#L496"5id 
L596" class="lin8stne" nam8 
L581">.5811/asmu_sdbp_8eade.84f">loop_id1/a>]->1a href="+cid" class="srefef="+8ers/macin8mu_sdbp_dpu"+cdata......8  .1a841a href=mu_sd1a href="drive6s/macinto6Ot;11/a>s1/adifarm_det href, namify and ="s676skippL657as1/uple121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8lass="lin8"sref">namivers/macinemu8sdbp_84sref"lass="line" nam  
L570"""""""""*"471/a"to let the31/a>1.c#L513"6id 
L613" class="line" nam  
L483">.4831/8="line" n8m  
L520">.5201/a>......8.stru84line"lass="line" nam  
L570"""""""""*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8..  .1a h8edeltaclas+cid" class="s8efx" 847class="sref">far=fail" class="s clad" clas121.c#L578" id  clad" clasf">l farm_pntrol the sam  ef="drivOVERTEMPcinto6h/windfarm_pm121.OVERTEMP"6id/sensor_	 ss="srefp_id" class="sref">loop_id1/a>]8....  .1a8hr"owadj" cl" class="sre8">new84L544">.5441/a>  a  cuntrol the sam  >.5....ot;11/a>7">.="line" nam>.5....ot;11/a>contrs_state" class="sref">pm121_sys_state1/a>[1a hre8eff h_dpu8 clntrol" class="sref">c8ntrol84">pr_debug1/a>(1spa  B_FVT_I.clas+ci=" cla=kippL651a href="+code!=" cla=kippL65L547"= 2_state" class="sref">pm121_sys_state1/a>[1a hre8a href="+8FAN_CPUe=loo" class="sre8">new850.c#L501"6id o5h/windfarm_pm121.c#L496"5id 
L596" class="lin8windfarm_8m121.c#L550"6id 
L650" c8ass="85,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c8w81">.5818SMU_SDB_CPU.1sDATA_I...=81a hr851.c#L501"6id 1a href="drive6s/macinto6We onlyef=ear the3ot;11/a>s1/adifarm_>faot;11/a>sisef=ear">co1.c#L513"6id 
L613" class="line" nam  
L483">.4831/8ef="drive8s/macinto6h/windfarm_pm181.c#L85d 
L6lass="line" nam  
L570"""""""""*"_and_ na other7d" clas isepres
L5. Since7ass="line" nam will121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8intk1/a>(8a href="+code=KERN_WARNI8G" cl85f="+class="line" nam  
L570"""""""""*"f=ear the3ot;11/a>s1/adifarm_(can't measlas 1/a>1.c#L513"6id 
L613" class="line" nam  
L483">.4831/8drive6s/m8cinto6h/windfarm_pm121.c8L554"85sref"lass="line" nam  
L570"""""""""*"4he3 href="drive levels, but we don't want"to kee>sit"f=ear">1.c#L513"6id 
L613" class="line" nam  
L483">.4831/8d"line" n8"+code=fail" class="sref8>fail85line"lass="line" nam  
L570"""""""""*"hers in"4hisefase121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8alloc1/ae8u_sdbp_dpu"+cdata.......8 .1a 85riverlass="line" nam  
L570"""""""""*m121.c#L513"6id 
L613" class="line" nam  
L483">.4831/8....  .1a8hrhd.d_pa[1o" class="sre8">new85 class="sref">farget1.c#L565">pi clad" clas121.c#L578" id  clad" clasf">l c="l farm_farm_pntrol the sam  ivetad" clas121.c#L578" id ivetad" clas     farm_pntrol the sam  ef="drivOVERTEMPcinto6h/windfarm_pm121.OVERTEMP"6id/513"6id 
L613" class="line" nam  
L483">.4831/8.ff h_dpu8 class="line" nam  
L5088>.50885">pr_debug1/a>(1spa    
L576">.5761/>.57=ear.ot;11/a>7">.="line" nam>.57=ear.ot;11/a>contrs_state" class="sref">pm121_sys_state1/a>[1a hre86s/macint86h/windfarm_pm121.c#L55986id 
86code=o5h/windfarm_pm121.c#L496"5id 
L596" class="lin8trol */1/8pa  vFef="+c8/a>[ode=p8intk" class="sSMU_SDB_FV8_I...86[1a href="+code=param" class="sref">param1/a>->186f="drive8rive6s/macinto6h/windfar8_pm1286f">lo_pm121.ref=mu_sdbp_fv>" clal" class="sref">fv>s321/a> 1a hreffv>" cl*R">interval1/CPU.e=GFPa>gisterlass="sref">fv>s321/a> .e=GFPa>gisterlass="srcontrref=mu_sdbp_fv>" clal" class="sref">fv>s321/a> 1a hreffv>" cl" class="sref">ne/spa  v.482............1a href="+code=new_setpoint" cla8lass="sre8">kmalloc1/aemu_sdbp_fv>8321/a861a href=mu_sdbp_fv>" _WARNINGppppppccccccccccccccccccchrest"fhar  class="sref">nematchpa  v.482............1a href="+code=new_setpoint" cla8lrive6s/m8ass="sref">setpfv>s321/a8 1a h86sref">pr_debug1/a>(1ssssssssssssssssssssssssssssssssssunsignef=<"  
L512">.5121/a> href="+code=wf_pd_init/513"6id 
L613" class="line" nam  
L483">.4831/8+f="+c16"8class="sref">new_setpoin80"a>;86a>...ensor_	 ss="srefp_id" class="sref">loop_id1/a>]8ine" nam 8
L576">.5761/a>e.1a href8"+cod867class="sref">far=fail" class="s.5671/a>v);vnew9efc c"sref">control1/a>)v.class="line" nam  
Lmp;1L525"6id 
L625" aacinto6h/windfarm_pm121matchpa  v.)/sensor_	 ss="srefp_id" class="sref">loop_id1/a>]8egree def8ult>      control the sa8  con86L544">.5441/a>  a  cu>far=fail" class="s1a 0">rass="sref">fv>s321/a> 1a 0">rass="sr"sref">control1/a>)v.)c#L527nsor_	 ss="srefp_id" class="sref">loop_id1/a>]8eff h_dpu8/windfarm_pm121.c#L568"68d 
L686">pr_debug1/a>(1spa  c">KERN_=fail" class="s.5671/a>v._state" class="sref">pm121_sys_state1/a>[1a hre8new>loop_8d1/a>] = 1a href="+code=8mallo870.c#L501"6id o5h/windfarm_pm121.c#L496"5id 
L596" class="lin8_pm121.c#8570"6id 
L670" class="li8e" na87class="sref">546">._=fail" class="s.5671/a>vpm121_sys_state1/a>[1a hre8na>[ode=p8
L491">.491_createpu>(&a8p;1a 8ref="+o5h/windfarm_pm121.c#L496"5id 
L596" class="lin8_f="drive8cinto6h/windfarm_pm121.c8L572"87f">loop_id1/a>]->1a href="+cid" class="srefef="+8" nam  
L853">_createpu>(&1a h8ef="+871a hr_pm121.c#L538"6id 
L638" cle" nam claass="sref">fv>s321/a> .e=GFP claass="srcontrref=mu_sdbp_fv>" clal" class="sref">fv>s321/a> 1a hreffv>" cl" class="sref">ne/spa  v.7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]8->1a h8ef="+code= >cks" class="8ref">87sref"ensor_	 ss="srefp_id" class="sref">loop_id1/a>]8href="dri8e6s/macinto6h/windfarm_p8121.c87a href="drive<"  
L512">.5121/a>alref">fv>s321/a> all12nec#"to6h/windfarm_pm121.c#L573"6id 
L673" class="lin8ss="sref"8pid_param1/a>.1a href="+8ode=i87wid_param1/a>.1a " powclas+cid" class="srefpowadj..8ntrol_set8max1/a>(1a href="+code=c8ntrol87 class="sref">farget1.c#L565">piaontroall hreffv>s_om121.c#L578" id 
L578"all hreffv>s_om5">.7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]8-ff h_dpu8id 
L577" class="line" n8m  
L87">pr_debug1/a>(1spa  546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo8">.5791/a8static void 1a href="+co8e=pm188code=control_"lass="sref">setpoint1/a>, (int) 1a hr8int.1a hr8f="+code=loop_id" class=8sref"88windfarm_pm121L512">.5121/a>alref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterlass="sref">fv>s321/a> .e=GFPa>gisterlass="srcontrclass="sref">ne/spa  v.4cinto6h/windfarm_pm121.c#L55op121al-ass="-fandfarm_pm121.c#introl the sam  efN_ODcinto6h/windfarm_N_OD5">.)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo8"a>[ode=p881">.5811/a>        stru8t.1a 88ef="+code=gd" class="sref">galref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterlass="sref">fv>s321/a> .e=GFPa>gisterlass="srcontrclass="sref">ne/spa  v.4cinto6h/windfarm_pm121.c#L55hard-ass="-fandfarm_pm121.c#introl the sam  efN_HDcinto6h/windfarm_N_HD5">.)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo8"f="drive8f">namivers/macintosh/wi8dfari88c#L562"6id 
L=fail" class="salref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterlass="sref">fv>s321/a> .e=GFPa>gisterlass="srcontrclass="sref">ne/spa  v.4cinto6h/windfarm_pm121.c#L55cpu-fandfarm_pm121.c#introl the sam  efN_windfarm_pm121.c#L548"6id 
L6)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo8" nam  
L8"sref">namivers/macin_co8.....88f="+code=setp" class="sref">alref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterlass="sref">fv>s321/a> .e=GFPa>gisterlass="srcontrclass="sref">ne/spa  v.4cinto6h/windfarm_pm121.c#L55cpufreq-f="mpdfarm_pm121.c#introl the sam  L65FREQam  
L567">.567L65FREQhref)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo8">1a h8m  
L520">.5201/a>......8.stru881.c#L="linnnnnnnnn
L546">.5461/a>................go8=ref="dri8f="+code=s32" classef="+8ode=s886class="sref">farget1.c#L565">pialref">fv>s321/a> all12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]8a>;vs_om121.c#L578" id 
L578"all hreffv>s_om5">.c#"to6h/windfarm_pm121.c#L573"6id 
L673" class="lin8id1/a>] =81a hrercoint" class="sre8">new88 claso5h/windfarm_pm121.c#L496"5id 
L596" class="lin8iff h_dpu8s_all_params1/a>[1a href8"+cod88declass="sref">interval1/a>......= 1a href="+code=P8class="sr8f">itarg_init1/a>(&18 href89code=control_"lass="sref">setpoint1/a>, (int) 1a hr8cnt.1a hr8code=s= *nam  
L532">.5381/a> 89,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c8cne" nam 8trols" class="sref">cont8ols1/89[1a href="+code=param" class="sref">param1/a>->18cfass="sr8de=control_id" class="sr8f">co89f">lo_pm121.ref=mu_sdbp_fv>" clal" cls="lin7">.="line" nam>.5.."lin" cl*R">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrref=mu_sdbp_fv>" clal" cls="lin7">.="line" nam>.5.."lin" cl" class="sref">nes="lin7">.="line" nam.."lin" cl482............1a href="+code=new_setpoint" cla8L593" cla8s="line" n--e" nam  
L488">.nt891a href=mu_sdbp_fv>"                                hrest"fhar  class="sref">nematchpa  v.482............1a href="+code=new_setpoint" cla8indfarm_p8121.c#L494"5id 
L594" cl8ss="l89sref">pr_debug1/a>(1spppppppppppppppppppppppppppppppref=mu_sdbp_fv>" clal" cls="lin7">.="line" nam>.5.."lin" cl"  class="sref">nevan7">.="line" namvar12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]8Lref="dri8_pm121.c#L495"5id 
L595"8class89a>...ensor_	 ss="srefp_id" class="sref">loop_id1/a>]8h>;vcontrol_id1/a>];vfar class="sref">nevan7">.="line" namvar12nev<);vnew9efc c"sref">control1/a>)vs="lin7">.="line" nam.."lin" clclass="line" nam  
Lmp;1L525"6id 
L625" aacinto6h/windfarm_pm121matchpa  v.)/sensor_	 ss="srefp_id" class="sref">loop_id1/a>]8Ld1/a>] =8nam  
L566">.5661/a>....8...re89L544">.5441/a>  a  cu>far=fail" class="s1a 0">rs="lin7">.="line" nam>.50">rs="lin"sref">control1/a>)vs="lin7">.="line" nam.."lin" cl)c#L527nsor_	 ss="srefp_id" class="sref">loop_id1/a>]8class="sr8f">loop_id1/a>]->1a h8ef="+89">pr_debug1/a>(1spa  c">KERN_ class="sref">nevan7">.="line" namvar12nev<1.c#L499"5id 
L599" cl7">.="line" nam.."lin" clo6h/windfarm_pm121.c#L573"6id 
L673" class="lin9121_SYS_I9TERVAL" class="sref">PM191_SYS900.c#L501"6id o5h/windfarm_pm121.c#L496"5id 
L596" class="lin9 href="+c9de=get_value" class="sre9_s...90class="sref">546">._ class="sref">nevan7">.="line" namvar12neo6h/windfarm_pm121.c#L573"6id 
L673" class="lin912ref="+c9drols" class="sref">cont9rm_pm90ef="+o5h/windfarm_pm121.c#L496"5id 
L596" class="lin9rintk1/a>91a href="+code=KERN_WARN9NG" c90f">loop_id1/a>]->1a href="+cid" class="srefef="+9.........9  .1a href="+code=d" cla9s="sr901a hr_pm121.c#L538"6id 
L638" cle" nam clas="lin7">.="line" nam.e=GFP clas="lincontrref=mu_sdbp_fv>" clal" cls="lin7">.="line" nam>.5.."lin" cl" class="sref">nesl7">.="line" nam.r12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9  cure>(&9mp;1a href="+code=pm121a9 cure90sref"ensor_	 ss="srefp_id" class="sref">loop_id1/a>]9;6cure>(&9mpm121.c#L495"5id 
L595"9href=90a href="drive<"  
L512">.5121/a>alref">fv>s321/a> all12nec#"to6h/windfarm_pm121.c#L573"6id 
L673" class="lin9;7cure>(&9mef">control_id1/a>];v.1a " powclas+cid" class="srefpowadj..9"6id 
L609" class="line" nam  
L549">.5490 class="sref">farget1.c#L565">piaontroall .."lins_om121.c#L578" id 
L578"all .."lins_om12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9 9id 
L609"">loop_id1/a>]->1a h9s="sr90">pr_debug1/a>(1spa  546">.5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9a>[1a hre9="+code=loop_id" class="9ref_s91code=control_"lass="sref">setpoint1/a>, (int) 1a hr9ahref="+c9  _id" class="sref">loop9id1/a91windfarm_pm121L512">.5121/a>alref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55cpu-1/a>am  
L571">.5711/a>        1a href="+code=printk" class="sre9de=sensor9	 ss="srefpp_id" class="9ref">91ef="+code=pm121epu>(&&&&&&&&&&&&&&&&&&&&&to6h/windfarm_pm121.c9" cl#0" c1/a>7">.="line" namc9" cl#0" c1/a>href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9dintk1/a>9 = 1a href=de=itp_id" cl9ss="s91c#L562"6id 
L=fail" class="salref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55cpu-currentam  
L571">.5711/a>        1a href="+code=printk" class="sre9d........9_	 ss="srefp_id" class="9ref">911a href=mu_sdbp_fv>"                     to6h/windfarm_pm121.c9" cl#0" ccurrent7">.="line" namc9" cl#0" ccurrenthref)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9d cure>(&9"drive6s/macinto6h/windf9rm_pm91sref">pr_debu=fail" class="salref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55cpu-voltageam  
L571">.5711/a>        1a href="+code=printk" class="sre9d6cure>(&9ew=pm121">s321/a> 1a hre9="+co91a href="drive6s/macin>  a  cu            to6h/windfarm_pm121.c9" cl#0" cvoltage7">.="line" namc9" cl#0" cvoltagehref)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9d7cure>(&9m  am  
L544">.5441">con9rols191erclass="sref">interval1/CPUalref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55cpu-l ha am  
L571">.5711/a>        1a href="+code=printk" class="sre9d6id 
L6091/a>]->1a href="ram" 9lass=91L544">.5441/a>  a  cuf">KERN_WARNINGpppppto6h/windfarm_pm121.c9" cl#0" cl ha href="+code=pidc9" cl#0" cl ha href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9d9id 
L6096s/macinto6h/windfarm_pm921.c#91loop_id" class="sremodel_id1alref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55hard-ass="-1/a>am  
L571">.5711/a>        1a href="+code=printk" class="sre9ram" clas9="sref">param1/a>->1a9href=92 class="sref">kmallocf">KERN_WARNINGpppppto6h/windfarm_pm121.c9" cl#hard_   1ac1/a>7">.="line" namc9" cl#hard_   1ac1/a>href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9rline" na9ew_setpoint" class="sref9>new_92windfarm_pm121L512">.5121/a>alref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55op121al-ass="-1/a>am  
L571">.5711/a>        1a href="+code=printk" class="sre9re=sensor9_setpoint"  class="sref"9new_n92ef="+code=pm121epu>(&&&&&&&&&&&&&&&&&&&&&to6h/windfarm_pm121.c9" cl#op121al_   1ac1/a>7">.="line" namc9" cl#op121al_   1ac1/a>href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9rintk1/a>9="sref">setpoint1/a>)vfv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55incompm1-air-1/a>am  
L571">.5711/a>        1a href="+code=printk" class="sre9r........9s="sref">l="sref">s321/a9 1a h921a href=mu_sdbp_fv>"                     to6h/windfarm_pm121.c9" cl#incompm1_airc1/a>7">.="line" namc9" cl#incompm1_airc1/a>href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9r cure>(&91a href="+code=pr_debug"9class92sref">pr_debu=fail" class="salref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55north-bridg"-1/a>am  
L571">.5711/a>        1a href="+code=printk" class="sre9r6cure>(&9class="sref">control1/a>9>192a href="drive6s/macin>  a  cu            to6h/windfarm_pm121.c9" cl#north_bridg"c1/a>7">.="line" namc9" cl#north_bridg"c1/a>href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9r7cure>(&9="drive6s/macinto6h/wind9arm_p92erclass="sref">interval1/CPUalref">fv>s321/a> all12nec#"">interval1/CPU.e=GFPa>gisterls="lin7">.="line" nam.e=GFPa>gisterls="lincontrclass="sref">nesl7">.="line" nam.r12ne4cinto6h/windfarm_pm121.c#L55gpu-1/a>am  
L571">.5711/a>        1a href="+code=printk" class="sre9....if (19 href="+code=cocode=p1sp9  am 92L544">.5441/a>  a  cuf">KERN_WARNINGpppppto6h/windfarm_pm121.c9" cl#g" c1/a>7">.="line" namc9" cl#g" c1/a>href)cfarm_farm_pntrol the sam  alref">fv>s321/a> all12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9.= 1a hre9="+code=cop_id" class="s9ef_nt92declass="sref">interval1/a>......= 1a href="+code=P9f="drive699macinto6h/windfarm_pm129.c#L593.........  .1 
L626" cla">.5461/alref">fv>s321/a> all12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9">printk19a>(1a href="+code=KERN_W9RNING93class="sref">KERN_WARget1.c#L565">piaontroall .."lins_om121.c#L578" id 
L578"all .."lins_om12nec#"to6h/windfarm_pm121.c#L573"6id 
L673" class="lin9p_id1/a>]9.1a href="+code=control"9class93ef="+o5h/windfarm_pm121.c#L496"5id 
L596" class="lin9/a>  a  c9re>(&1a href="+code=9m121a93f">loop_id1/a>]->1a href="+cid" class="srefef="+9/de=senso9ss="sref">new_setpoint0"9>;v(&d_pap_id" class="sref">loop_id1/a>9="line" n9m  e" nam  
L547">.5471/9>....931.c#L="linnnnnnnnn
L546">.5461/a>................go9/control"9 class="line" nam  
L5479>.54793line"_pm121.<"  
L512">.5121/a>.e=GFP amify7">.="line" nam.e=GFP amifycontrref=mu_sdbp_fv>" clal" amifierlblopm121.c#L578" id  amifierlblopm" cl" class="sref">nes=lf7">.="line" namc9lf5">.482............1a href="+code=new_setpoint" cla9/"line" n9id 
L635" class="line" n9m  
L93>[1a href="+code=paraaaaaaaaaunsignef=long_sdbp_fv>" clal"event7">.="line" namevent12ne4cc#L53 class="sref">nedata7">.="line" namdata12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9"...if (196id 
L636" class="line" 9am  
93 clasensor_	 ss="srefp_id" class="sref">loop_id1/a>]97">.5671/9>vpr_debug1/aswitchL626" cla">.5461/event7">.="line" namevent12ne/sensor_	 ss="srefp_id" class="sref">loop_id1/a>]921.c#L53996id 
L639" class="line" 9am  
94 class="sref"fase_sdbp_fv>" clal"WF_EVENT_NEW_CONTROL7">.="line" namWF_EVENT_NEW_CONTROLclas:nsor_	 ss="srefp_id" class="sref">loop_id1/a>]92>printk19hrode=pne" oint" class="9ref">94class="sref">KERN_WAR">interval1/CPU.ew>........return 1a href="+code=new_setpoint" class="sref">new_setponew3 href="d="line"det href nam  
L571">.5711/a>        1a href="+code=printk" class="sre9581">.5819/a+codpu1"sref">mi 1/a>,91a hr94ef="+code=pm121epu>(&&&&&&&&&&(rref=mu_sdbp_fv>" clal" class="sref">fv>s321/a> 1a hreffv>" cl" )class="sref">nedata7">.="line" namdata12ne7class="line" nam  
Lmp;1L525"6id 
L625" aacintos_state" class="sref">pm121_sys_state1/a>[1a hre9stne" nam9 
L581">.5811/asmu_sdbp_9eade.94c#L562"6id 
L662" class="line" nam  ." nam claass="sref">fv>s321/a> .e=GFP claass="srcontrclass="sref">nedata7">.="line" namdata12ne7_state" class="sref">pm121_sys_state1/a>[1a hre9sde=senso9mu_sdbp_dpu"+cdata......9  .1a941a href=mu_sdbp_fv>" break_state" class="sref">pm121_sys_state1/a>[1a hre9s"line" n9"sref">namivers/macinemu9sdbp_945class="sref"fase_sdbp_fv>" clal"WF_EVENT_NEW_SENSOR7">.="line" namWF_EVENT_NEW_SENSORclas:nsor_	 ss="srefp_id" class="sref">loop_id1/a>]92control"9m  
L520">.5201/a>......9.stru94a href="drive6s/macin">interval1/CPU.ew>........return 1a href="+code=new_setpoint" class="sref">new_setponew3s="line="line"det href nam  
L571">.5711/a>        1a href="+code=printk" class="sre95"line" n9edeltaclas+cid" class="s9efx" 94>[1a href="+code=paraaaaaaaaa&(rref=mu_sdbp_fv>" clal" cls="lin7">.="line" nam>.5.."lin" cl" )class="sref">nedata7">.="line" namdata12ne7class="line" nam  
Lmp;1L525"6id 
L625" aacintos_state" class="sref">pm121_sys_state1/a>[1a hre9s...if (19hr"owadj" cl" class="sre9">new94L544">.5441/a>  a  cuntrol the sam  e" nam clas="lin7">.="line" nam.e=GFP clas="lincontrclass="sref">nedata7">.="line" namdata12ne7_state" class="sref">pm121_sys_state1/a>[1a hre9s">.5671/9 clntrol" class="sref">c9ntrol94">pr_debug1/a>(1spa  break_state" class="sref">pm121_sys_state1/a>[1a hre9a href="+9FAN_CPUe=loo" class="sre9">new95 class="sref"fase_sdbp_fv>" clal"WF_EVENT_TICK7">.="line" namWF_EVENT_TICKclas:nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9windfarm_9m121.c#L550"6id 
L650" c9ass="95class="sref">KERN_WAR>farget1.c#L565">piaontroall hreffv>s_om121.c#L578" id 
L578"all hreffv>s_om5">.cfarm_farm_pntrol the sam  aontroall .."lins_om121.c#L578" id 
L578"all .."lins_om12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9w81">.5819SMU_SDB_CPU.1sDATA_I...=91a hr95ef="+code=pm121epu>(&&&&&&&&&ntrol the sam  aontrom_pm121.c#L578" id 
L578"m_pm"sref7_state" class="sref">pm121_sys_state1/a>[1a hre9ef="drive9s/macinto6h/windfarm_pm191.c#L95c#L562"6id 
L662" clabreak_state" class="sref">pm121_sys_state1/a>[1a hre9ade=senso9a href="+code=KERN_WARNI9G" cl951a href=mu_sdo5h/windfarm_pm121.c#L496"5id 
L596" class="lin9drive6s/m9cinto6h/windfarm_pm121.c9L554"951.c#L="linnnnnnnnn
L546">.5461/a>................go9d"line" n9"+code=fail" class="sref9>fail95a href="drive546">._ld513"6id 
L613" class="line" nam  
L483">.4831/9alloc1/ae9u_sdbp_dpu"+cdata.......9 .1a 95rivero5h/windfarm_pm121.c#L496"5id 
L596" class="lin9d...if (19hrhd.d_pa[1o" class="sre9">new95ol */ _id" class="sref">loop_id1/a>],.1a href="+cod9.ff h_dpu9 class="line" nam  
L5089>.50895">pr__pm121.ref=mu_sdbp_fv>" clal" amifierlblopm121.c#L578" id  amifierlblopm" cl"ntrol the sam  aontroevent/a>..CPU/a>1s       coevent/12nec#"ensor_	 ss="srefp_id" class="sref">loop_id1/a>]96s/macint96h/windfarm_pm121.c#L55996id 
96 class="sref"ss="line" nam  
 amifierlcalref">fv>s321/a>  amifierlcalrclass=#"">interval1/CPU.e=GFP amify7">.="line" nam.e=GFP amifycont711/a>        1a href="+code=printk" class="sre9trol */1/9pa  v.4831/9/a>[ode=p9intk" class="sSMU_SDB_FV9_I...96[1a href="+code=param" class="sref">param1/a>->196f="drive9rive6s/macinto6h/windfar9_pm1296f">lo_pm121.<"  
L512">.5121/a>.e=GFPinit1/a7">.="line" nam.e=GFPinit1/a"srefc#L57nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9lass="sre9">kmalloc1/aemu_sdbp_fv>9321/a961a hrensor_	 ss="srefp_id" class="sref">loop_id1/a>]96rive6s/m9ass="sref">setpfv>s321/a9 1a h96sref">pr_debuhrest"ref=mu_sdbp_fv>" clal"smu_sdbp_heada href="+code=pidcmu_sdbp_heada " cl" class="sref">nehd href="+code=pidhd 12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9+f="+c16"9class="sref">new_setpoin90"a>;96a>........}v.5761/a>e.1a href9"+cod96erclass="sref">interval1/CPUhd href="+code=pidhd 12nev<1.c#L499"5id 
L59mu_0">rsdb_partifarmhref="+code=pidcmu_0">rsdb_partifarmcontrclass="sref">neSMU_SDB_SENSORTREE_IDcinto6h/windfarSMU_SDB_SENSORTREE_ID12ne4cilass="sref">ne0"a>);vpm121_sys_state1/a>[1a hre9egree def9ult>      control the sa9  con96 class="sref">farget1.c#L565">pihd href="+code=pidhd 12nev!L527"ensor_	 ss="srefp_id" class="sref">loop_id1/a>]96ff h_dpu9/windfarm_pm121.c#L568"69d 
L696">pr_debug1/a>(1spa  ref=mu_sdbp_fv>" clal"smu_sdbp_.."lintree7">.="line" namcmu_sdbp_.."lintree" cl" class="sref">nest7">.="line" namcf">nec#nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9new>loop_9d1/a>] = 1a href="+code=9mallo97 class="sref">kmallocf">KERN_rref=mu_sdbp_fv>" clal"smu_sdbp_.."lintree7">.="line" namcmu_sdbp_.."lintree" cl" )to6h/windfarm_pm121.hd href="+code=pidhd 12ne[1]_state" class="sref">pm121_sys_state1/a>[1a hre9_pm121.c#9570"6id 
L670" class="li9e" na97class="sref">KERN_WARget1.c#L565">piaontro">ph_m1/aref">fv>s321/a> .e=GFP">ph_m1/ar12nev<1.c#L499"5id 
L59t7">.="line" namcf">neclass="line" nam  
Lm1/ar_ihref="+code=wf_pm1/ar_ih12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo9na>[ode=p9
L491">.491_createpu>(&a9p;1a 971.c#L501"6id o5h/windfarm_pm121.c#L496"5id 
L596" class="lin9_f="drive9cinto6h/windfarm_pm121.c9L572"97f">loop_id1/a>]->1a href="+cid" class="srefef="+9" nam  
L953">_createpu>(&1a h9ef="+97f="+code=setp" class="sref">.e=GFPhrenecfarmhref="+code=pid.e=GFPhrenecfarm12nev<1to6h/windfarm_pm121..e=GFPhrenecfarm/a>..CPU/a>1s       cohrenecfarm/12ne[get1.c#L565">piaontro">ph_m1/aref">fv>s321/a> .e=GFP">ph_m1/ar12nev- 2]_state" class="sref">pm121_sys_state1/a>[1a hre9_rive6s/m9ef="+code= >cks" class="9ref">971.c#L="linnnnnnnnn
L546">.5461/a>................go9href="dri9e6s/macinto6h/windfarm_p9121.c97a href="drive">interval1/CPU.e546m121.c#L578" id 
e546mcontrclass="sref">neKERN_INFO121.c#L578" id KERN_INFO" cl"n_setpoint" class="sref">new_setpoInitializL657dor iMac G5 iSight m1/al IDe="linf nam  
L571">.5711/a>        1a href="+code=printk" class="sre9ss="sref"9pid_param1/a>.1a href="+9ode=i97>[1a href="+code=parget1.c#L565">piaontro">ph_m1/aref">fv>s321/a> .e=GFP">ph_m1/ar12ne7_state" class="sref">pm121_sys_state1/a>[1a hre9ntrol_set9max1/a>(1a href="+code=c9ntrol97ol */ _id" class="sref">loop_id1/a>],.1a href="+cod9-ff h_dpu9id 
L577" class="line" n9m  
L97">pr_debug1/a546">._ld513"6id 
L613" class="line" nam  
L483">.4831/9">.5791/a9static void 1a href="+co9e=pm198code=o5h/windfarm_pm121.c#L496"5id 
L596" class="lin9int.1a hr9f="+code=loop_id" class=9sref"98,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c9"a>[ode=p981">.5811/a>        stru9t.1a 98[1a href="+code=param" class="sref">param1/a>->19"f="drive9f">namivers/macintosh/wi9dfari98f">lo_pm121.<"  
L512">.5121/a>.e=GFPprobe7">.="line" nam.e=GFPprobecontrref=mu_sdbp_fv>" clal"platdorm_device7">.="line" nam.latdorm_device" cl" class="sref">neddev7">.="line" namddev12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9" nam  
L9"sref">namivers/macin_co9.....981a hrensor_	 ss="srefp_id" class="sref">loop_id1/a>]9">1a h9m  
L520">.5201/a>......9.stru98sref">pr_debu=fail" class="swfPa>gisterlalient7">.="line" namwfPa>gisterlalientcontrto6h/windfarm_pm121..e=GFPevent/a>..CPU/a>1s       coevent/12ne7_state" class="sref">pm121_sys_state1/a>[1a hre9=ref="dri9f="+code=s32" classef="+9ode=s98a>........}v[1a href="+c546">._ld513"6id 
L613" class="line" nam  
L483">.4831/9"trol_set91a hrercoint" class="sre9">new98 claso5h/windfarm_pm121.c#L496"5id 
L596" class="lin9iff h_dpu9s_all_params1/a>[1a href9"+cod98declass="sref">interval1/a>......= 1a href="+code=P9class="sr9f">itarg_init1/a>(&19 href99code=_pm121.<"  
L512">.5121/a>.e=GFPremove7">.="line" nam.e=GFPremovecontrref=mu_sdbp_fv>" clal"platdorm_device7">.="line" nam.latdorm_device" cl" class="sref">neddev7">.="line" namddev12ne7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]9cnt.1a hr9code=s= *nam  
L532">.5391/a> 99,.1a ensor_	 ss="srefp_id" class="sref">loop_id1/a>]9cne" nam 9trols" class="sref">cont9ols1/99ef="+code=gd" class="sref">gwfPuna>gisterlalient7">.="line" namwfPuna>gisterlalientcontrto6h/windfarm_pm121..e=GFPevent/a>..CPU/a>1s       coevent/12ne7_state" class="sref">pm121_sys_state1/a>[1a hre9cfass="sr9de=control_id" class="sr9f">co993[1a href="+c546">._ld513"6id 
L613" class="line" nam  
L483">.4831/9L593" cla9s="line" n--e" nam  
L489">.nt991a hro5h/windfarm_pm121.c#L496"5id 
L596" class="lin9indfarm_p9121.c#L494"5id 
L594" cl9ss="l991.c#L="linnnnnnnnn
L546">.5461/a>................go9Lref="dri9_pm121.c#L495"5id 
L595"9class99line"_pm121.ref=mu_sdbp_fv>" clal"platdorm_dnn
L57">.="line" nam.latdorm_dnn
L5" cl"ntrol the sam  aontrodnn
L57">.="line" nam.ontrodnn
L512nec#"ensor_	 ss="srefp_id" class="sref">loop_id1/a>]9h>;vcontrol_id1/a>];v.="line" nam.robecont=#"">interval1/CPU.e=GFPprobe7">.="line" nam.e=GFPprobecont711/a>        1a href="+code=printk" class="sre9Ld1/a>] =9nam  
L566">.5661/a>....9...re99L544">.5441/ass="line" nam  
remove7">.="line" namremovecontc#"">interval1/CPU.e=GFPa>move7">.="line" nam.e=GFPremovecont711/a>        1a href="+code=printk" class="sre9Lff h_dpu9f">loop_id1/a>]->1a h9ef="+99">pr_debug1/ass="line" nam  
dnn
L57">.="line" namdnn
L512nec#"ensor_	 ss="srefp_id" class="sref">loop_id1/a>]10121_SYS_I10121_oop_id1/a>]->1a h10121>1012lass="sref">KERN_WARss="line" nam  
 p;1L525"6id 
L625" aacintoc#""_setpoint" class="sref">nesref">loam  
L571">.5711/pre>]-&SYS_3b/0a/04a63b1012050396b26c2c6df5ef700b7af2_3/10121>sor_	 ss="srefp_id" class="sref">loop_id1/a>]10111_SYS_I101ode=s= *nam  
L532">.53101od>101class="sref">KERN_WARss="line" nam  
bu/a>..CPU/a>1s   bu/12nev<1to6h/windfarm_pm121..latdorm_bu/_type7">.="line" nam.latdorm_bu/_typecont711/a>        1a href="+code=printk" class="sre10121_SYS_I101rols" class="sref">cont101ro>1011.c#L501"6id o711/a>        1a href="+code=printk" class="sre10131_SYS_I101e=control_id" class="sr101e=>1013.1a }d513"6id 
L613" class="line" nam  
L483">.4831/10141_SYS_I101="line" n--e" nam  
L48101=">101de=pm121epu>(&d_pap_id" class="sref">loop_id1/a>10151_SYS_I10121.c#L494"5id 
L594" cl10121>1011.c#L="linnnnnnnnn
L546">.5461/a>................go10161_SYS_I101pm121.c#L495"5id 
L595"101pm>101line"_pm121.<"  
L512">.5121/a>_Pinit7">.="line" nam_Pinit" cl"ntrol the sam  aontroinit7">.="line" namaontroinit"srefc#L57nsor_	 ss="srefp_id" class="sref">loop_id1/a>]10171_SYS_I101ef">control_id1/a>];v1017.1a ensor_	 ss="srefp_id" class="sref">loop_id1/a>]10181_SYS_I101am  
L566">.5661/a>....101am>101 class="sref">"  
L512">.5121/a>rc7">.="line" namrc12nev<1-
L512">.5121/a>ENODEV7">.="line" namENODEV12ne5461/a>.....readju.nt0"a> = 1a hrefreadju.ne=lo10191_SYS_I101">loop_id1/a>]->1a h101">>101declass="sref">interval1/a>......= 1a href="+code=P10121_SYS_I10="+code=loop_id" class="10="+>10="class="sref">farget1.c#L565">piofP">ph_id_is_compm12ble7">.="line" namofP">ph_id_is_compm12blede=new_setpoint" class="sref">neP ha Mac12,1am  
L571">.5)7nsor_	 ss="srefp_id" class="sref">loop_id1/a>]10111_SYS_I10  _id" class="sref">loop10  _>10=class="sref">KERN_WARget1.c#L565">pirc7">.="line" namrc12nev<1
L512">.5121/a>.e=GFPinit1/a7">.="line" nam.e=GFPinit1/a"sref7_state" class="sref">pm121_sys_state1/a>[1a hre10=21_SYS_I10	 ss="srefpp_id" class="10	 s>10=[1a href="+code=param" class="sref">param1/a>->110=31_SYS_I10 = 1a href=de=itp_id" cl10 = >10=3class="sref">farget1.c#L565">pirc7">.="line" namrc12nevloop_id1/a>]10=41_SYS_I10_	 ss="srefp_id" class="10_	 >10=1a href=mu_sdbp_fv>" s="line" nam  
request_m1/ule7">.="line" namrequest_m1/ulede=new_setpoint" class="sref">nesref">loocmu_hreffv>sam  
L571">.5)_state" class="sref">pm121_sys_state1/a>[1a hre10=51_SYS_I10"drive6s/macinto6h/windf10"dr>10=sref">pr_debug1/a>(1ss="line" nam  
request_m1/ule7">.="line" namrequest_m1/ulede=new_setpoint" class="sref">nesref">loocmu_.."linsam  
L571">.5)_state" class="sref">pm121_sys_state1/a>[1a hre10=61_SYS_I10ew=pm121">s321/a> 1a hre10ew=>10=a href="drive6s/macin">interval1/CPUrequest_m1/ule7">.="line" namrequest_m1/ulede=new_setpoint" class="sref">nesref">loocmu_.atam  
L571">.5)_state" class="sref">pm121_sys_state1/a>[1a hre10=71_SYS_I10m  am  
L544">.5441">con10m  >10=>[1a href="+code=paraclal)ode=pid" crequest_m1/ule7">.="line" namrequest_m1/ulede=new_setpoint" class="sref">nesref">loolm75_.."linam  
L571">.5)_state" class="sref">pm121_sys_state1/a>[1a hre10=81_SYS_I101/a>]->1a href="ram" 101/a>10=L544">.5441/a>  a  cuntrol the sam  request_m1/ule7">.="line" namrequest_m1/ulede=new_setpoint" class="sref">nesref">loomax6690_.."linam  
L571">.5)_state" class="sref">pm121_sys_state1/a>[1a hre10=91_SYS_I106s/macinto6h/windfarm_pm106s/>10=">pr_debug1/a>(1spa    
L576">.5761/request_m1/ule7">.="line" namrequest_m1/ulede=new_setpoint" class="sref">nesref">loocpufreq_c="mpdfarm_pm121.c)_state" class="sref">pm121_sys_state1/a>[1a hre10221_SYS_I10="sref">param1/a>->1a10="s>10="lass="sref">KERN_WARget1.c#L565">pialatdorm_dnn
L5Pa>gister7">.="line" nam.latdorm_dnn
L5Pa>gistercontrto6h/windfarm_pm121..e=GFPdnn
L57">.="line" nam.ontrodnn
L512ne)_state" class="sref">pm121_sys_state1/a>[1a hre10211_SYS_I10ew_setpoint" class="sref10ew_>10=class="sref">o5h/windfarm_pm121.c#L496"5id 
L596" class="lin10=21_SYS_I10_setpoint"  class="sref"10_se>10=[1a href="+code=param" class="sref">param1/a>->110231_SYS_I10="sref">setpoint1/a>)v10=3[1a href="+c546">._get1.c#L565">pirc7">.="line" namrc12ne_state" class="sref">pm121_sys_state1/a>[1a hre10241_SYS_I10s="sref">l="sref">s321/a10s=">10=1a hro5h/windfarm_pm121.c#L496"5id 
L596" class="lin10=51_SYS_I101a href="+code=pr_debug"101a >10=1.c#L="linnnnnnnnn
L546">.5461/a>................go10261_SYS_I10class="sref">control1/a>10cla>10=line"_pm121.c#L538"6id 
L638" cl__exit7">.="line" nam_Pexit" cl"ntrol the sam  aontroexit7">.="line" namaontroexit"srefc#L57nsor_	 ss="srefp_id" class="sref">loop_id1/a>]10271_SYS_I10="drive6s/macinto6h/wind10="d>10=7.1a ensor_	 ss="srefp_id" class="sref">loop_id1/a>]10281_SYS_I10 href="+code=cocode=p1sp10 hr>10=ol */ _id" class="sref">loop_id1/a>],.1a href="+cod10=91_SYS_I10="+code=cop_id" class="s10="+>10=loop_id" class="sremodel_id1.latdorm_dnn
L5Puna>gister7">.="line" nam.latdorm_dnn
L5Puna>gistercontrto6h/windfarm_pm121..e=GFPdnn
L57">.="line" nam.ontrodnn
L512ne)_state" class="sref">pm121_sys_state1/a>[1a hre10321_SYS_I109macinto6h/windfarm_pm12109ma>109ma hro5h/windfarm_pm121.c#L496"5id 
L596" class="lin10311_SYS_I10a>(1a href="+code=KERN_W10a>(>109,.1a href="+code=FIX32TOPRINT" class="sref">Fef="+c10921_SYS_I10.1a href="+code=control"10.1a>109[1a href="+code=param" class="sref">param1/a>->110331_SYS_I10re>(&1a href="+code=10re>>1093[1a ="line" nam  
Lm1/uleoinit7">.="line" namm1/uleoinitcontrclass="sref">neaontroinit7">.="line" namaontroinit"sre)_state" class="sref">pm121_sys_state1/a>[1a hre10341_SYS_I10ss="sref">new_setpoint0"10ss=>1094[1a ="line" nam  
Lm1/uleoexit7">.="line" namm1/uleoexitcontrclass="sref">neaontroexit7">.="line" namaontroexit"sre)_state" class="sref">pm121_sys_state1/a>[1a hre10351_SYS_I10m  e" nam  
L547">.5471/10m  >1091.c#L="linnnnnnnnn
L546">.5461/a>................go10361_SYS_I10 class="line" nam  
L54710 cl>1096[1a ="line" nam  
LMODULE_AUTHOR7">.="line" namMODULE_AUTHORde=new_setpoint" class="sref">netienne BL54ac <bL54ace@gmail.comlassdfarm_pm121.c)_state" class="sref">pm121_sys_state1/a>[1a hre10371_SYS_I10id 
L635" class="line" n10id >1097[1a ="line" nam  
LMODULE_DESCRIPTION7">.="line" namMODULE_DESCRIPTIONde=new_setpoint" class="sref">neThermal3 href="dlog21.dor iMac G5 (iSight)dfarm_pm121.c)_state" class="sref">pm121_sys_state1/a>[1a hre10381_SYS_I106id 
L636" class="line" 106id>1098[1a ="line" nam  
LMODULE_LICENSE7">.="line" namMODULE_LICENSEde=new_setpoint" class="sref">neGPLdfarm_pm121.c)_state" class="sref">pm121_sys_state1/a>[1a hre10391_SYS_I10>vinterval1/a>......= 1a href="+code=P10421_SYS_I106id 
L639" class="line" 106id>106i[1a =/pre>
The original3LXR software by the_sdbp_fv>"http://sourcedorge.net/projects/lxr7>LXR communitycont7 this experimental3ervaion by sdbp_fv>"mailto:lxr@claux.no">lxr@claux.nocont.
lxr.claux.no k 1aly hosted by sdbp_fv>"http://www.redpill-clapro.no">Redpill Llapro AScont7 provider of LlauxuhresultL657and operafarm/ service/ since 1995.