Lines Matching refs:fp

92 static void set_fan_speeds(struct bbc_fan_control *fp)
97 if (fp->cpu_fan_speed < FAN_SPEED_MIN)
98 fp->cpu_fan_speed = FAN_SPEED_MIN;
99 if (fp->cpu_fan_speed > FAN_SPEED_MAX)
100 fp->cpu_fan_speed = FAN_SPEED_MAX;
101 if (fp->system_fan_speed < FAN_SPEED_MIN)
102 fp->system_fan_speed = FAN_SPEED_MIN;
103 if (fp->system_fan_speed > FAN_SPEED_MAX)
104 fp->system_fan_speed = FAN_SPEED_MAX;
107 fp->index,
108 fp->cpu_fan_speed, fp->system_fan_speed);
111 bbc_i2c_writeb(fp->client, fp->cpu_fan_speed, CPU_FAN_REG);
112 bbc_i2c_writeb(fp->client, fp->system_fan_speed, SYS_FAN_REG);
113 bbc_i2c_writeb(fp->client,
114 (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);
494 struct bbc_fan_control *fp;
496 fp = kzalloc(sizeof(*fp), GFP_KERNEL);
497 if (!fp)
500 fp->client = bbc_i2c_attach(bp, op);
501 if (!fp->client) {
502 kfree(fp);
506 fp->index = fan_idx;
508 list_add(&fp->glob_list, &all_fans);
509 list_add(&fp->bp_list, &bp->fans);
517 fp->psupply_fan_on = 1;
518 fp->cpu_fan_speed = (FAN_SPEED_MAX - FAN_SPEED_MIN) / 2;
519 fp->cpu_fan_speed += FAN_SPEED_MIN;
520 fp->system_fan_speed = (FAN_SPEED_MAX - FAN_SPEED_MIN) / 2;
521 fp->system_fan_speed += FAN_SPEED_MIN;
523 set_fan_speeds(fp);
543 static void destroy_one_fan(struct bbc_fan_control *fp)
545 bbc_i2c_detach(fp->client);
546 kfree(fp);
551 struct bbc_fan_control *fp, *fpos;
553 list_for_each_entry_safe(fp, fpos, &bp->fans, bp_list) {
554 list_del(&fp->bp_list);
555 list_del(&fp->glob_list);
556 destroy_one_fan(fp);