X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmacintosh%2Ftherm_pm72.c;h=32333f27d824d27f91144115268ef9e0a65cf9e7;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=fb2e0707bea33b3d5bcc91cb27dfb261fab8df5a;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/drivers/macintosh/therm_pm72.c b/drivers/macintosh/therm_pm72.c index fb2e0707b..32333f27d 100644 --- a/drivers/macintosh/therm_pm72.c +++ b/drivers/macintosh/therm_pm72.c @@ -317,6 +317,20 @@ static int fan_write_reg(int reg, const unsigned char *ptr, int nb) return nw; } +static int start_fcu(void) +{ + unsigned char buf = 0xff; + int rc; + + rc = fan_write_reg(0xe, &buf, 1); + if (rc < 0) + return -EIO; + rc = fan_write_reg(0x2e, &buf, 1); + if (rc < 0) + return -EIO; + return 0; +} + static int set_rpm_fan(int fan, int rpm) { unsigned char buf[2]; @@ -1011,6 +1025,12 @@ static int main_control_loop(void *x) down(&driver_lock); + if (start_fcu() < 0) { + printk(KERN_ERR "kfand: failed to start FCU\n"); + up(&driver_lock); + goto out; + } + /* Set the PCI fan once for now */ set_pwm_fan(SLOTS_FAN_PWM_ID, SLOTS_FAN_DEFAULT_PWM); @@ -1057,6 +1077,7 @@ static int main_control_loop(void *x) schedule_timeout(HZ - elapsed); } + out: DBG("main_control_loop ended\n"); ctrl_task = 0;