Lines Matching refs:fp

93 static void set_fan_speeds(struct bbc_fan_control *fp)
98 if (fp->cpu_fan_speed < FAN_SPEED_MIN)
99 fp->cpu_fan_speed = FAN_SPEED_MIN;
100 if (fp->cpu_fan_speed > FAN_SPEED_MAX)
101 fp->cpu_fan_speed = FAN_SPEED_MAX;
102 if (fp->system_fan_speed < FAN_SPEED_MIN)
103 fp->system_fan_speed = FAN_SPEED_MIN;
104 if (fp->system_fan_speed > FAN_SPEED_MAX)
105 fp->system_fan_speed = FAN_SPEED_MAX;
108 fp->index,
109 fp->cpu_fan_speed, fp->system_fan_speed);
112 bbc_i2c_writeb(fp->client, fp->cpu_fan_speed, CPU_FAN_REG);
113 bbc_i2c_writeb(fp->client, fp->system_fan_speed, SYS_FAN_REG);
114 bbc_i2c_writeb(fp->client,
115 (fp->psupply_fan_on ?
320 static int maybe_new_ambient_fan_speed(struct bbc_fan_control *fp)
330 if (fp->system_fan_speed >= FAN_SPEED_MAX)
333 fp->system_fan_speed = FAN_SPEED_MAX;
336 if (fp->system_fan_speed >= FAN_SPEED_MAX)
339 fp->system_fan_speed += 2;
341 int orig_speed = fp->system_fan_speed;
344 orig_speed <= (fp->cpu_fan_speed - 3))
347 fp->system_fan_speed -= 1;
354 static int maybe_new_cpu_fan_speed(struct bbc_fan_control *fp)
364 if (fp->cpu_fan_speed >= FAN_SPEED_MAX)
367 fp->cpu_fan_speed = FAN_SPEED_MAX;
370 if (fp->cpu_fan_speed >= FAN_SPEED_MAX)
373 fp->cpu_fan_speed += 2;
374 if (fp->system_fan_speed <
375 (fp->cpu_fan_speed - 3))
376 fp->system_fan_speed =
377 fp->cpu_fan_speed - 3;
380 if (fp->cpu_fan_speed <= FAN_SPEED_MIN)
383 fp->cpu_fan_speed -= 1;
390 static void maybe_new_fan_speeds(struct bbc_fan_control *fp)
394 new = maybe_new_ambient_fan_speed(fp);
395 new |= maybe_new_cpu_fan_speed(fp);
398 set_fan_speeds(fp);
403 struct bbc_fan_control *fp;
408 list_for_each_entry(fp, &all_fans, glob_list) {
409 fp->cpu_fan_speed = FAN_SPEED_MAX;
410 fp->system_fan_speed = FAN_SPEED_MAX;
411 fp->psupply_fan_on = 1;
412 set_fan_speeds(fp);
426 struct bbc_fan_control *fp;
436 list_for_each_entry(fp, &all_fans, glob_list)
437 maybe_new_fan_speeds(fp);
497 struct bbc_fan_control *fp;
499 fp = kzalloc(sizeof(*fp), GFP_KERNEL);
500 if (!fp)
503 INIT_LIST_HEAD(&fp->bp_list);
504 INIT_LIST_HEAD(&fp->glob_list);
506 fp->client = bbc_i2c_attach(bp, op);
507 if (!fp->client) {
508 kfree(fp);
512 fp->index = fan_idx;
514 list_add(&fp->glob_list, &all_fans);
515 list_add(&fp->bp_list, &bp->fans);
523 fp->psupply_fan_on = 1;
524 fp->cpu_fan_speed = (FAN_SPEED_MAX - FAN_SPEED_MIN) / 2;
525 fp->cpu_fan_speed += FAN_SPEED_MIN;
526 fp->system_fan_speed = (FAN_SPEED_MAX - FAN_SPEED_MIN) / 2;
527 fp->system_fan_speed += FAN_SPEED_MIN;
529 set_fan_speeds(fp);
549 static void destroy_one_fan(struct bbc_fan_control *fp)
551 bbc_i2c_detach(fp->client);
552 kfree(fp);
557 struct bbc_fan_control *fp, *fpos;
559 list_for_each_entry_safe(fp, fpos, &bp->fans, bp_list) {
560 list_del(&fp->bp_list);
561 list_del(&fp->glob_list);
562 destroy_one_fan(fp);