diff options
Diffstat (limited to 'drivers/macintosh/windfarm_pm81.c')
| -rw-r--r-- | drivers/macintosh/windfarm_pm81.c | 36 | 
1 files changed, 19 insertions, 17 deletions
diff --git a/drivers/macintosh/windfarm_pm81.c b/drivers/macintosh/windfarm_pm81.c index 749d174b0dc..2a5e1b15b1d 100644 --- a/drivers/macintosh/windfarm_pm81.c +++ b/drivers/macintosh/windfarm_pm81.c @@ -107,7 +107,6 @@  #include <asm/prom.h>  #include <asm/machdep.h>  #include <asm/io.h> -#include <asm/system.h>  #include <asm/sections.h>  #include <asm/smu.h> @@ -150,6 +149,7 @@ static int wf_smu_all_controls_ok, wf_smu_all_sensors_ok, wf_smu_started;  static unsigned int wf_smu_failure_state;  static int wf_smu_readjust, wf_smu_skipping; +static bool wf_smu_overtemp;  /*   * ****** System Fans Control Loop ****** @@ -303,13 +303,13 @@ static void wf_smu_create_sys_fans(void)  	pid_param.interval = WF_SMU_SYS_FANS_INTERVAL;  	pid_param.history_len = WF_SMU_SYS_FANS_HISTORY_SIZE;  	pid_param.itarget = param->itarget; -	pid_param.min = fan_system->ops->get_min(fan_system); -	pid_param.max = fan_system->ops->get_max(fan_system); +	pid_param.min = wf_control_get_min(fan_system); +	pid_param.max = wf_control_get_max(fan_system);  	if (fan_hd) {  		pid_param.min = -			max(pid_param.min,fan_hd->ops->get_min(fan_hd)); +			max(pid_param.min, wf_control_get_min(fan_hd));  		pid_param.max = -			min(pid_param.max,fan_hd->ops->get_max(fan_hd)); +			min(pid_param.max, wf_control_get_max(fan_hd));  	}  	wf_pid_init(&wf_smu_sys_fans->pid, &pid_param); @@ -338,7 +338,7 @@ static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st)  	}  	st->ticks = WF_SMU_SYS_FANS_INTERVAL; -	rc = sensor_hd_temp->ops->get_value(sensor_hd_temp, &temp); +	rc = wf_sensor_get(sensor_hd_temp, &temp);  	if (rc) {  		printk(KERN_WARNING "windfarm: HD temp sensor error %d\n",  		       rc); @@ -374,7 +374,7 @@ static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st)  	st->hd_setpoint = new_setpoint;   readjust:  	if (fan_system && wf_smu_failure_state == 0) { -		rc = fan_system->ops->set_value(fan_system, st->sys_setpoint); +		rc = wf_control_set(fan_system, st->sys_setpoint);  		if (rc) {  			printk(KERN_WARNING "windfarm: Sys fan error %d\n",  			       rc); @@ -382,7 +382,7 @@ static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st)  		}  	}  	if (fan_hd && wf_smu_failure_state == 0) { -		rc = fan_hd->ops->set_value(fan_hd, st->hd_setpoint); +		rc = wf_control_set(fan_hd, st->hd_setpoint);  		if (rc) {  			printk(KERN_WARNING "windfarm: HD fan error %d\n",  			       rc); @@ -448,8 +448,8 @@ static void wf_smu_create_cpu_fans(void)  	pid_param.ttarget = tmax - tdelta;  	pid_param.pmaxadj = maxpow - powadj; -	pid_param.min = fan_cpu_main->ops->get_min(fan_cpu_main); -	pid_param.max = fan_cpu_main->ops->get_max(fan_cpu_main); +	pid_param.min = wf_control_get_min(fan_cpu_main); +	pid_param.max = wf_control_get_max(fan_cpu_main);  	wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); @@ -482,7 +482,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st)  	}  	st->ticks = WF_SMU_CPU_FANS_INTERVAL; -	rc = sensor_cpu_temp->ops->get_value(sensor_cpu_temp, &temp); +	rc = wf_sensor_get(sensor_cpu_temp, &temp);  	if (rc) {  		printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n",  		       rc); @@ -490,7 +490,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st)  		return;  	} -	rc = sensor_cpu_power->ops->get_value(sensor_cpu_power, &power); +	rc = wf_sensor_get(sensor_cpu_power, &power);  	if (rc) {  		printk(KERN_WARNING "windfarm: CPU power sensor error %d\n",  		       rc); @@ -526,8 +526,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st)  	st->cpu_setpoint = new_setpoint;   readjust:  	if (fan_cpu_main && wf_smu_failure_state == 0) { -		rc = fan_cpu_main->ops->set_value(fan_cpu_main, -						  st->cpu_setpoint); +		rc = wf_control_set(fan_cpu_main, st->cpu_setpoint);  		if (rc) {  			printk(KERN_WARNING "windfarm: CPU main fan"  			       " error %d\n", rc); @@ -595,6 +594,7 @@ static void wf_smu_tick(void)  	if (new_failure & FAILURE_OVERTEMP) {  		wf_set_overtemp();  		wf_smu_skipping = 2; +		wf_smu_overtemp = true;  	}  	/* We only clear the overtemp condition if overtemp is cleared @@ -603,8 +603,10 @@ static void wf_smu_tick(void)  	 * the control loop levels, but we don't want to keep it clear  	 * here in this case  	 */ -	if (new_failure == 0 && last_failure & FAILURE_OVERTEMP) +	if (!wf_smu_failure_state && wf_smu_overtemp) {  		wf_clear_overtemp(); +		wf_smu_overtemp = false; +	}  }  static void wf_smu_new_control(struct wf_control *ct) @@ -722,7 +724,7 @@ static int wf_smu_probe(struct platform_device *ddev)  	return 0;  } -static int __devexit wf_smu_remove(struct platform_device *ddev) +static int wf_smu_remove(struct platform_device *ddev)  {  	wf_unregister_client(&wf_smu_events); @@ -765,7 +767,7 @@ static int __devexit wf_smu_remove(struct platform_device *ddev)  static struct platform_driver wf_smu_driver = {          .probe = wf_smu_probe, -        .remove = __devexit_p(wf_smu_remove), +        .remove = wf_smu_remove,  	.driver = {  		.name = "windfarm",  		.owner	= THIS_MODULE,  | 
