diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-18 18:16:51 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-30 01:37:20 -0400 |
commit | 33e6820b767a5bfa4a0d579da6ee4568a2b1e730 (patch) | |
tree | 341a29222e9fb18fe4ce6f9c9346bbc4190584e3 /drivers/macintosh | |
parent | ea5c64b06743b505e0eb4e6caa1810fe685c9559 (diff) |
powerpc/windfarm: Add useful accessors
Makes the code more readable
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'drivers/macintosh')
-rw-r--r-- | drivers/macintosh/windfarm.h | 25 | ||||
-rw-r--r-- | drivers/macintosh/windfarm_pm81.c | 25 | ||||
-rw-r--r-- | drivers/macintosh/windfarm_pm91.c | 33 |
3 files changed, 52 insertions, 31 deletions
diff --git a/drivers/macintosh/windfarm.h b/drivers/macintosh/windfarm.h index 3ef192a1fca..a9e385ee359 100644 --- a/drivers/macintosh/windfarm.h +++ b/drivers/macintosh/windfarm.h | |||
@@ -72,6 +72,26 @@ static inline int wf_control_set_min(struct wf_control *ct) | |||
72 | return ct->ops->set_value(ct, vmin); | 72 | return ct->ops->set_value(ct, vmin); |
73 | } | 73 | } |
74 | 74 | ||
75 | static inline int wf_control_set(struct wf_control *ct, s32 val) | ||
76 | { | ||
77 | return ct->ops->set_value(ct, val); | ||
78 | } | ||
79 | |||
80 | static inline int wf_control_get(struct wf_control *ct, s32 *val) | ||
81 | { | ||
82 | return ct->ops->get_value(ct, val); | ||
83 | } | ||
84 | |||
85 | static inline s32 wf_control_get_min(struct wf_control *ct) | ||
86 | { | ||
87 | return ct->ops->get_min(ct); | ||
88 | } | ||
89 | |||
90 | static inline s32 wf_control_get_max(struct wf_control *ct) | ||
91 | { | ||
92 | return ct->ops->get_max(ct); | ||
93 | } | ||
94 | |||
75 | /* | 95 | /* |
76 | * Sensor objects | 96 | * Sensor objects |
77 | */ | 97 | */ |
@@ -100,6 +120,11 @@ extern struct wf_sensor * wf_find_sensor(const char *name); | |||
100 | extern int wf_get_sensor(struct wf_sensor *sr); | 120 | extern int wf_get_sensor(struct wf_sensor *sr); |
101 | extern void wf_put_sensor(struct wf_sensor *sr); | 121 | extern void wf_put_sensor(struct wf_sensor *sr); |
102 | 122 | ||
123 | static inline int wf_sensor_get(struct wf_sensor *sr, s32 *val) | ||
124 | { | ||
125 | return sr->ops->get_value(sr, val); | ||
126 | } | ||
127 | |||
103 | /* For use by clients. Note that we are a bit racy here since | 128 | /* For use by clients. Note that we are a bit racy here since |
104 | * notifier_block doesn't have a module owner field. I may fix | 129 | * notifier_block doesn't have a module owner field. I may fix |
105 | * it one day ... | 130 | * it one day ... |
diff --git a/drivers/macintosh/windfarm_pm81.c b/drivers/macintosh/windfarm_pm81.c index fc13d0f2663..990c87606be 100644 --- a/drivers/macintosh/windfarm_pm81.c +++ b/drivers/macintosh/windfarm_pm81.c | |||
@@ -302,13 +302,13 @@ static void wf_smu_create_sys_fans(void) | |||
302 | pid_param.interval = WF_SMU_SYS_FANS_INTERVAL; | 302 | pid_param.interval = WF_SMU_SYS_FANS_INTERVAL; |
303 | pid_param.history_len = WF_SMU_SYS_FANS_HISTORY_SIZE; | 303 | pid_param.history_len = WF_SMU_SYS_FANS_HISTORY_SIZE; |
304 | pid_param.itarget = param->itarget; | 304 | pid_param.itarget = param->itarget; |
305 | pid_param.min = fan_system->ops->get_min(fan_system); | 305 | pid_param.min = wf_control_get_min(fan_system); |
306 | pid_param.max = fan_system->ops->get_max(fan_system); | 306 | pid_param.max = wf_control_get_max(fan_system); |
307 | if (fan_hd) { | 307 | if (fan_hd) { |
308 | pid_param.min = | 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 | } | 312 | } |
313 | wf_pid_init(&wf_smu_sys_fans->pid, &pid_param); | 313 | wf_pid_init(&wf_smu_sys_fans->pid, &pid_param); |
314 | 314 | ||
@@ -337,7 +337,7 @@ static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st) | |||
337 | } | 337 | } |
338 | st->ticks = WF_SMU_SYS_FANS_INTERVAL; | 338 | st->ticks = WF_SMU_SYS_FANS_INTERVAL; |
339 | 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) { | 341 | if (rc) { |
342 | printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", | 342 | printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", |
343 | rc); | 343 | rc); |
@@ -373,7 +373,7 @@ static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st) | |||
373 | st->hd_setpoint = new_setpoint; | 373 | st->hd_setpoint = new_setpoint; |
374 | readjust: | 374 | readjust: |
375 | if (fan_system && wf_smu_failure_state == 0) { | 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) { | 377 | if (rc) { |
378 | printk(KERN_WARNING "windfarm: Sys fan error %d\n", | 378 | printk(KERN_WARNING "windfarm: Sys fan error %d\n", |
379 | rc); | 379 | rc); |
@@ -381,7 +381,7 @@ static void wf_smu_sys_fans_tick(struct wf_smu_sys_fans_state *st) | |||
381 | } | 381 | } |
382 | } | 382 | } |
383 | if (fan_hd && wf_smu_failure_state == 0) { | 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) { | 385 | if (rc) { |
386 | printk(KERN_WARNING "windfarm: HD fan error %d\n", | 386 | printk(KERN_WARNING "windfarm: HD fan error %d\n", |
387 | rc); | 387 | rc); |
@@ -447,8 +447,8 @@ static void wf_smu_create_cpu_fans(void) | |||
447 | pid_param.ttarget = tmax - tdelta; | 447 | pid_param.ttarget = tmax - tdelta; |
448 | pid_param.pmaxadj = maxpow - powadj; | 448 | pid_param.pmaxadj = maxpow - powadj; |
449 | 449 | ||
450 | pid_param.min = fan_cpu_main->ops->get_min(fan_cpu_main); | 450 | pid_param.min = wf_control_get_min(fan_cpu_main); |
451 | pid_param.max = fan_cpu_main->ops->get_max(fan_cpu_main); | 451 | pid_param.max = wf_control_get_max(fan_cpu_main); |
452 | 452 | ||
453 | wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); | 453 | wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); |
454 | 454 | ||
@@ -481,7 +481,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
481 | } | 481 | } |
482 | st->ticks = WF_SMU_CPU_FANS_INTERVAL; | 482 | st->ticks = WF_SMU_CPU_FANS_INTERVAL; |
483 | 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) { | 485 | if (rc) { |
486 | printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", | 486 | printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", |
487 | rc); | 487 | rc); |
@@ -489,7 +489,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
489 | return; | 489 | return; |
490 | } | 490 | } |
491 | 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) { | 493 | if (rc) { |
494 | printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", | 494 | printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", |
495 | rc); | 495 | rc); |
@@ -525,8 +525,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
525 | st->cpu_setpoint = new_setpoint; | 525 | st->cpu_setpoint = new_setpoint; |
526 | readjust: | 526 | readjust: |
527 | if (fan_cpu_main && wf_smu_failure_state == 0) { | 527 | if (fan_cpu_main && wf_smu_failure_state == 0) { |
528 | rc = fan_cpu_main->ops->set_value(fan_cpu_main, | 528 | rc = wf_control_set(fan_cpu_main, st->cpu_setpoint); |
529 | st->cpu_setpoint); | ||
530 | if (rc) { | 529 | if (rc) { |
531 | printk(KERN_WARNING "windfarm: CPU main fan" | 530 | printk(KERN_WARNING "windfarm: CPU main fan" |
532 | " error %d\n", rc); | 531 | " error %d\n", rc); |
diff --git a/drivers/macintosh/windfarm_pm91.c b/drivers/macintosh/windfarm_pm91.c index a9430ed4f36..e18002bcc1c 100644 --- a/drivers/macintosh/windfarm_pm91.c +++ b/drivers/macintosh/windfarm_pm91.c | |||
@@ -192,8 +192,8 @@ static void wf_smu_create_cpu_fans(void) | |||
192 | pid_param.ttarget = tmax - tdelta; | 192 | pid_param.ttarget = tmax - tdelta; |
193 | pid_param.pmaxadj = maxpow - powadj; | 193 | pid_param.pmaxadj = maxpow - powadj; |
194 | 194 | ||
195 | pid_param.min = fan_cpu_main->ops->get_min(fan_cpu_main); | 195 | pid_param.min = wf_control_get_min(fan_cpu_main); |
196 | pid_param.max = fan_cpu_main->ops->get_max(fan_cpu_main); | 196 | pid_param.max = wf_control_get_max(fan_cpu_main); |
197 | 197 | ||
198 | wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); | 198 | wf_cpu_pid_init(&wf_smu_cpu_fans->pid, &pid_param); |
199 | 199 | ||
@@ -226,7 +226,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
226 | } | 226 | } |
227 | st->ticks = WF_SMU_CPU_FANS_INTERVAL; | 227 | st->ticks = WF_SMU_CPU_FANS_INTERVAL; |
228 | 228 | ||
229 | rc = sensor_cpu_temp->ops->get_value(sensor_cpu_temp, &temp); | 229 | rc = wf_sensor_get(sensor_cpu_temp, &temp); |
230 | if (rc) { | 230 | if (rc) { |
231 | printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", | 231 | printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", |
232 | rc); | 232 | rc); |
@@ -234,7 +234,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
234 | return; | 234 | return; |
235 | } | 235 | } |
236 | 236 | ||
237 | rc = sensor_cpu_power->ops->get_value(sensor_cpu_power, &power); | 237 | rc = wf_sensor_get(&sensor_cpu_power, &power); |
238 | if (rc) { | 238 | if (rc) { |
239 | printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", | 239 | printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", |
240 | rc); | 240 | rc); |
@@ -261,8 +261,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
261 | st->cpu_setpoint = new_setpoint; | 261 | st->cpu_setpoint = new_setpoint; |
262 | readjust: | 262 | readjust: |
263 | if (fan_cpu_main && wf_smu_failure_state == 0) { | 263 | if (fan_cpu_main && wf_smu_failure_state == 0) { |
264 | rc = fan_cpu_main->ops->set_value(fan_cpu_main, | 264 | rc = wf_control_set(fan_cpu_main, st->cpu_setpoint); |
265 | st->cpu_setpoint); | ||
266 | if (rc) { | 265 | if (rc) { |
267 | printk(KERN_WARNING "windfarm: CPU main fan" | 266 | printk(KERN_WARNING "windfarm: CPU main fan" |
268 | " error %d\n", rc); | 267 | " error %d\n", rc); |
@@ -270,8 +269,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
270 | } | 269 | } |
271 | } | 270 | } |
272 | if (fan_cpu_second && wf_smu_failure_state == 0) { | 271 | if (fan_cpu_second && wf_smu_failure_state == 0) { |
273 | rc = fan_cpu_second->ops->set_value(fan_cpu_second, | 272 | rc = wf_control_set(fan_cpu_second, st->cpu_setpoint); |
274 | st->cpu_setpoint); | ||
275 | if (rc) { | 273 | if (rc) { |
276 | printk(KERN_WARNING "windfarm: CPU second fan" | 274 | printk(KERN_WARNING "windfarm: CPU second fan" |
277 | " error %d\n", rc); | 275 | " error %d\n", rc); |
@@ -279,8 +277,7 @@ static void wf_smu_cpu_fans_tick(struct wf_smu_cpu_fans_state *st) | |||
279 | } | 277 | } |
280 | } | 278 | } |
281 | if (fan_cpu_third && wf_smu_failure_state == 0) { | 279 | if (fan_cpu_third && wf_smu_failure_state == 0) { |
282 | rc = fan_cpu_main->ops->set_value(fan_cpu_third, | 280 | rc = wf_control_set(fan_cpu_third, st->cpu_setpoint); |
283 | st->cpu_setpoint); | ||
284 | if (rc) { | 281 | if (rc) { |
285 | printk(KERN_WARNING "windfarm: CPU third fan" | 282 | printk(KERN_WARNING "windfarm: CPU third fan" |
286 | " error %d\n", rc); | 283 | " error %d\n", rc); |
@@ -312,8 +309,8 @@ static void wf_smu_create_drive_fans(void) | |||
312 | 309 | ||
313 | /* Fill PID params */ | 310 | /* Fill PID params */ |
314 | param.additive = (fan_hd->type == WF_CONTROL_RPM_FAN); | 311 | param.additive = (fan_hd->type == WF_CONTROL_RPM_FAN); |
315 | param.min = fan_hd->ops->get_min(fan_hd); | 312 | param.min = wf_control_get_min(fan_hd); |
316 | param.max = fan_hd->ops->get_max(fan_hd); | 313 | param.max = wf_control_get_max(fan_hd); |
317 | wf_pid_init(&wf_smu_drive_fans->pid, ¶m); | 314 | wf_pid_init(&wf_smu_drive_fans->pid, ¶m); |
318 | 315 | ||
319 | DBG("wf: Drive Fan control initialized.\n"); | 316 | DBG("wf: Drive Fan control initialized.\n"); |
@@ -338,7 +335,7 @@ static void wf_smu_drive_fans_tick(struct wf_smu_drive_fans_state *st) | |||
338 | } | 335 | } |
339 | st->ticks = st->pid.param.interval; | 336 | st->ticks = st->pid.param.interval; |
340 | 337 | ||
341 | rc = sensor_hd_temp->ops->get_value(sensor_hd_temp, &temp); | 338 | rc = wf_sensor_get(sensor_hd_temp, &temp); |
342 | if (rc) { | 339 | if (rc) { |
343 | printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", | 340 | printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", |
344 | rc); | 341 | rc); |
@@ -361,7 +358,7 @@ static void wf_smu_drive_fans_tick(struct wf_smu_drive_fans_state *st) | |||
361 | st->setpoint = new_setpoint; | 358 | st->setpoint = new_setpoint; |
362 | readjust: | 359 | readjust: |
363 | if (fan_hd && wf_smu_failure_state == 0) { | 360 | if (fan_hd && wf_smu_failure_state == 0) { |
364 | rc = fan_hd->ops->set_value(fan_hd, st->setpoint); | 361 | rc = wf_control_set(fan_hd, st->setpoint); |
365 | if (rc) { | 362 | if (rc) { |
366 | printk(KERN_WARNING "windfarm: HD fan error %d\n", | 363 | printk(KERN_WARNING "windfarm: HD fan error %d\n", |
367 | rc); | 364 | rc); |
@@ -393,8 +390,8 @@ static void wf_smu_create_slots_fans(void) | |||
393 | 390 | ||
394 | /* Fill PID params */ | 391 | /* Fill PID params */ |
395 | param.additive = (fan_slots->type == WF_CONTROL_RPM_FAN); | 392 | param.additive = (fan_slots->type == WF_CONTROL_RPM_FAN); |
396 | param.min = fan_slots->ops->get_min(fan_slots); | 393 | param.min = wf_control_get_min(fan_slots); |
397 | param.max = fan_slots->ops->get_max(fan_slots); | 394 | param.max = wf_control_get_max(fan_slots); |
398 | wf_pid_init(&wf_smu_slots_fans->pid, ¶m); | 395 | wf_pid_init(&wf_smu_slots_fans->pid, ¶m); |
399 | 396 | ||
400 | DBG("wf: Slots Fan control initialized.\n"); | 397 | DBG("wf: Slots Fan control initialized.\n"); |
@@ -419,7 +416,7 @@ static void wf_smu_slots_fans_tick(struct wf_smu_slots_fans_state *st) | |||
419 | } | 416 | } |
420 | st->ticks = st->pid.param.interval; | 417 | st->ticks = st->pid.param.interval; |
421 | 418 | ||
422 | rc = sensor_slots_power->ops->get_value(sensor_slots_power, &power); | 419 | rc = wf_sensor_get(sensor_slots_power, &power); |
423 | if (rc) { | 420 | if (rc) { |
424 | printk(KERN_WARNING "windfarm: Slots power sensor error %d\n", | 421 | printk(KERN_WARNING "windfarm: Slots power sensor error %d\n", |
425 | rc); | 422 | rc); |
@@ -444,7 +441,7 @@ static void wf_smu_slots_fans_tick(struct wf_smu_slots_fans_state *st) | |||
444 | st->setpoint = new_setpoint; | 441 | st->setpoint = new_setpoint; |
445 | readjust: | 442 | readjust: |
446 | if (fan_slots && wf_smu_failure_state == 0) { | 443 | if (fan_slots && wf_smu_failure_state == 0) { |
447 | rc = fan_slots->ops->set_value(fan_slots, st->setpoint); | 444 | rc = wf_control_set(fan_slots, st->setpoint); |
448 | if (rc) { | 445 | if (rc) { |
449 | printk(KERN_WARNING "windfarm: Slots fan error %d\n", | 446 | printk(KERN_WARNING "windfarm: Slots fan error %d\n", |
450 | rc); | 447 | rc); |