windfarm_pm81.c (57b8628bb0ac4e47c806e45c5bbd89282e93869b) | windfarm_pm81.c (33e6820b767a5bfa4a0d579da6ee4568a2b1e730) |
---|---|
1/* 2 * Windfarm PowerMac thermal control. iMac G5 3 * 4 * (c) Copyright 2005 Benjamin Herrenschmidt, IBM Corp. 5 * <benh@kernel.crashing.org> 6 * 7 * Released under the term of the GNU GPL v2. 8 * --- 288 unchanged lines hidden (view full) --- 297 298 /* Fill PID params */ 299 pid_param.gd = param->gd; 300 pid_param.gp = param->gp; 301 pid_param.gr = param->gr; 302 pid_param.interval = WF_SMU_SYS_FANS_INTERVAL; 303 pid_param.history_len = WF_SMU_SYS_FANS_HISTORY_SIZE; 304 pid_param.itarget = param->itarget; | 1/* 2 * Windfarm PowerMac thermal control. iMac G5 3 * 4 * (c) Copyright 2005 Benjamin Herrenschmidt, IBM Corp. 5 * <benh@kernel.crashing.org> 6 * 7 * Released under the term of the GNU GPL v2. 8 * --- 288 unchanged lines hidden (view full) --- 297 298 /* Fill PID params */ 299 pid_param.gd = param->gd; 300 pid_param.gp = param->gp; 301 pid_param.gr = param->gr; 302 pid_param.interval = WF_SMU_SYS_FANS_INTERVAL; 303 pid_param.history_len = WF_SMU_SYS_FANS_HISTORY_SIZE; 304 pid_param.itarget = param->itarget; |
305 pid_param.min = fan_system->ops->get_min(fan_system); 306 pid_param.max = fan_system->ops->get_max(fan_system); | 305 pid_param.min = wf_control_get_min(fan_system); 306 pid_param.max = wf_control_get_max(fan_system); |
307 if (fan_hd) { 308 pid_param.min = | 307 if (fan_hd) { 308 pid_param.min = |
309 max(pid_param.min,fan_hd->ops->get_min(fan_hd)); | 309 max(pid_param.min, wf_control_get_min(fan_hd)); |
310 pid_param.max = | 310 pid_param.max = |
311 min(pid_param.max,fan_hd->ops->get_max(fan_hd)); | 311 min(pid_param.max, wf_control_get_max(fan_hd)); |
312 } 313 wf_pid_init(&wf_smu_sys_fans->pid, &pid_param); 314 315 DBG("wf: System Fan control initialized.\n"); 316 DBG(" itarged=%d.%03d, min=%d RPM, max=%d RPM\n", 317 FIX32TOPRINT(pid_param.itarget), pid_param.min, pid_param.max); 318 return; 319 --- 12 unchanged lines hidden (view full) --- 332 333 if (--st->ticks != 0) { 334 if (wf_smu_readjust) 335 goto readjust; 336 return; 337 } 338 st->ticks = WF_SMU_SYS_FANS_INTERVAL; 339 | 312 } 313 wf_pid_init(&wf_smu_sys_fans->pid, &pid_param); 314 315 DBG("wf: System Fan control initialized.\n"); 316 DBG(" itarged=%d.%03d, min=%d RPM, max=%d RPM\n", 317 FIX32TOPRINT(pid_param.itarget), pid_param.min, pid_param.max); 318 return; 319 --- 12 unchanged lines hidden (view full) --- 332 333 if (--st->ticks != 0) { 334 if (wf_smu_readjust) 335 goto readjust; 336 return; 337 } 338 st->ticks = WF_SMU_SYS_FANS_INTERVAL; 339 |
340 rc = sensor_hd_temp->ops->get_value(sensor_hd_temp, &temp); | 340 rc = wf_sensor_get(sensor_hd_temp, &temp); |
341 if (rc) { 342 printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", 343 rc); 344 wf_smu_failure_state |= FAILURE_SENSOR; 345 return; 346 } 347 348 DBG("wf_smu: System Fans tick ! HD temp: %d.%03d\n", --- 19 unchanged lines hidden (view full) --- 368 DBG("wf_smu: adjusted setpoint: %d RPM\n", (int)scaled); 369 370 if (st->sys_setpoint == scaled && new_setpoint == st->hd_setpoint) 371 return; 372 st->sys_setpoint = scaled; 373 st->hd_setpoint = new_setpoint; 374 readjust: 375 if (fan_system && wf_smu_failure_state == 0) { | 341 if (rc) { 342 printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", 343 rc); 344 wf_smu_failure_state |= FAILURE_SENSOR; 345 return; 346 } 347 348 DBG("wf_smu: System Fans tick ! HD temp: %d.%03d\n", --- 19 unchanged lines hidden (view full) --- 368 DBG("wf_smu: adjusted setpoint: %d RPM\n", (int)scaled); 369 370 if (st->sys_setpoint == scaled && new_setpoint == st->hd_setpoint) 371 return; 372 st->sys_setpoint = scaled; 373 st->hd_setpoint = new_setpoint; 374 readjust: 375 if (fan_system && wf_smu_failure_state == 0) { |
376 rc = fan_system->ops->set_value(fan_system, st->sys_setpoint); | 376 rc = wf_control_set(fan_system, st->sys_setpoint); |
377 if (rc) { 378 printk(KERN_WARNING "windfarm: Sys fan error %d\n", 379 rc); 380 wf_smu_failure_state |= FAILURE_FAN; 381 } 382 } 383 if (fan_hd && wf_smu_failure_state == 0) { | 377 if (rc) { 378 printk(KERN_WARNING "windfarm: Sys fan error %d\n", 379 rc); 380 wf_smu_failure_state |= FAILURE_FAN; 381 } 382 } 383 if (fan_hd && wf_smu_failure_state == 0) { |
384 rc = fan_hd->ops->set_value(fan_hd, st->hd_setpoint); | 384 rc = wf_control_set(fan_hd, st->hd_setpoint); |
385 if (rc) { 386 printk(KERN_WARNING "windfarm: HD fan error %d\n", 387 rc); 388 wf_smu_failure_state |= FAILURE_FAN; 389 } 390 } 391} 392 --- 49 unchanged lines hidden (view full) --- 442 tdelta = ((s32)piddata->target_temp_delta) << 16; 443 maxpow = ((s32)piddata->max_power) << 16; 444 powadj = ((s32)piddata->power_adj) << 16; 445 446 pid_param.tmax = tmax; 447 pid_param.ttarget = tmax - tdelta; 448 pid_param.pmaxadj = maxpow - powadj; 449 | 385 if (rc) { 386 printk(KERN_WARNING "windfarm: HD fan error %d\n", 387 rc); 388 wf_smu_failure_state |= FAILURE_FAN; 389 } 390 } 391} 392 --- 49 unchanged lines hidden (view full) --- 442 tdelta = ((s32)piddata->target_temp_delta) << 16; 443 maxpow = ((s32)piddata->max_power) << 16; 444 powadj = ((s32)piddata->power_adj) << 16; 445 446 pid_param.tmax = tmax; 447 pid_param.ttarget = tmax - tdelta; 448 pid_param.pmaxadj = maxpow - powadj; 449 |
450 pid_param.min = fan_cpu_main->ops->get_min(fan_cpu_main); 451 pid_param.max = fan_cpu_main->ops->get_max(fan_cpu_main); | 450 pid_param.min = wf_control_get_min(fan_cpu_main); 451 pid_param.max = wf_control_get_max(fan_cpu_main); |
452 453 wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); 454 455 DBG("wf: CPU Fan control initialized.\n"); 456 DBG(" ttarged=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM\n", 457 FIX32TOPRINT(pid_param.ttarget), FIX32TOPRINT(pid_param.tmax), 458 pid_param.min, pid_param.max); 459 --- 16 unchanged lines hidden (view full) --- 476 477 if (--st->ticks != 0) { 478 if (wf_smu_readjust) 479 goto readjust; 480 return; 481 } 482 st->ticks = WF_SMU_CPU_FANS_INTERVAL; 483 | 452 453 wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); 454 455 DBG("wf: CPU Fan control initialized.\n"); 456 DBG(" ttarged=%d.%03d, tmax=%d.%03d, min=%d RPM, max=%d RPM\n", 457 FIX32TOPRINT(pid_param.ttarget), FIX32TOPRINT(pid_param.tmax), 458 pid_param.min, pid_param.max); 459 --- 16 unchanged lines hidden (view full) --- 476 477 if (--st->ticks != 0) { 478 if (wf_smu_readjust) 479 goto readjust; 480 return; 481 } 482 st->ticks = WF_SMU_CPU_FANS_INTERVAL; 483 |
484 rc = sensor_cpu_temp->ops->get_value(sensor_cpu_temp, &temp); | 484 rc = wf_sensor_get(sensor_cpu_temp, &temp); |
485 if (rc) { 486 printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", 487 rc); 488 wf_smu_failure_state |= FAILURE_SENSOR; 489 return; 490 } 491 | 485 if (rc) { 486 printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", 487 rc); 488 wf_smu_failure_state |= FAILURE_SENSOR; 489 return; 490 } 491 |
492 rc = sensor_cpu_power->ops->get_value(sensor_cpu_power, &power); | 492 rc = wf_sensor_get(sensor_cpu_power, &power); |
493 if (rc) { 494 printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", 495 rc); 496 wf_smu_failure_state |= FAILURE_SENSOR; 497 return; 498 } 499 500 DBG("wf_smu: CPU Fans tick ! CPU temp: %d.%03d, power: %d.%03d\n", --- 19 unchanged lines hidden (view full) --- 520 521 DBG("wf_smu: adjusted setpoint: %d RPM\n", (int)new_setpoint); 522 523 if (st->cpu_setpoint == new_setpoint) 524 return; 525 st->cpu_setpoint = new_setpoint; 526 readjust: 527 if (fan_cpu_main && wf_smu_failure_state == 0) { | 493 if (rc) { 494 printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", 495 rc); 496 wf_smu_failure_state |= FAILURE_SENSOR; 497 return; 498 } 499 500 DBG("wf_smu: CPU Fans tick ! CPU temp: %d.%03d, power: %d.%03d\n", --- 19 unchanged lines hidden (view full) --- 520 521 DBG("wf_smu: adjusted setpoint: %d RPM\n", (int)new_setpoint); 522 523 if (st->cpu_setpoint == new_setpoint) 524 return; 525 st->cpu_setpoint = new_setpoint; 526 readjust: 527 if (fan_cpu_main && wf_smu_failure_state == 0) { |
528 rc = fan_cpu_main->ops->set_value(fan_cpu_main, 529 st->cpu_setpoint); | 528 rc = wf_control_set(fan_cpu_main, st->cpu_setpoint); |
530 if (rc) { 531 printk(KERN_WARNING "windfarm: CPU main fan" 532 " error %d\n", rc); 533 wf_smu_failure_state |= FAILURE_FAN; 534 } 535 } 536} 537 --- 273 unchanged lines hidden --- | 529 if (rc) { 530 printk(KERN_WARNING "windfarm: CPU main fan" 531 " error %d\n", rc); 532 wf_smu_failure_state |= FAILURE_FAN; 533 } 534 } 535} 536 --- 273 unchanged lines hidden --- |