Lines Matching refs:fan
3 * Windfarm PowerMac thermal control. FCU fan control
80 struct wf_fcu_fan *fan = ct->priv;
82 kref_put(&fan->fcu_priv->ref, wf_fcu_release);
83 kfree(fan);
146 struct wf_fcu_fan *fan = ct->priv;
147 struct wf_fcu_priv *pv = fan->fcu_priv;
151 if (value < fan->min)
152 value = fan->min;
153 if (value > fan->max)
154 value = fan->max;
156 fan->target = value;
160 rc = wf_fcu_write_reg(pv, 0x10 + (fan->id * 2), buf, 2);
168 struct wf_fcu_fan *fan = ct->priv;
169 struct wf_fcu_priv *pv = fan->fcu_priv;
178 if ((failure & (1 << fan->id)) != 0)
183 if ((active & (1 << fan->id)) == 0)
192 rc = wf_fcu_read_reg(pv, reg_base + (fan->id * 2), buf, 2);
203 struct wf_fcu_fan *fan = ct->priv;
204 struct wf_fcu_priv *pv = fan->fcu_priv;
208 if (value < fan->min)
209 value = fan->min;
210 if (value > fan->max)
211 value = fan->max;
213 fan->target = value;
217 rc = wf_fcu_write_reg(pv, 0x30 + (fan->id * 2), buf, 1);
225 struct wf_fcu_fan *fan = ct->priv;
226 struct wf_fcu_priv *pv = fan->fcu_priv;
235 if ((failure & (1 << fan->id)) != 0)
240 if ((active & (1 << fan->id)) == 0)
243 rc = wf_fcu_read_reg(pv, 0x30 + (fan->id * 2), buf, 1);
254 struct wf_fcu_fan *fan = ct->priv;
256 return fan->min;
261 struct wf_fcu_fan *fan = ct->priv;
263 return fan->max;
284 static void wf_fcu_get_pump_minmax(struct wf_fcu_fan *fan)
312 fan->min = pump_min;
313 fan->max = pump_max;
316 fan->ctrl.name, pump_min, pump_max);
319 static void wf_fcu_get_rpmfan_minmax(struct wf_fcu_fan *fan)
321 struct wf_fcu_priv *pv = fan->fcu_priv;
326 fan->min = 2400 >> pv->rpm_shift;
327 fan->max = 56000 >> pv->rpm_shift;
330 if (mpu0 && !strcmp(fan->ctrl.name, "cpu-front-fan-0")) {
331 fan->min = max(fan->min, (s32)mpu0->rminn_intake_fan);
332 fan->max = min(fan->max, (s32)mpu0->rmaxn_intake_fan);
335 if (mpu1 && !strcmp(fan->ctrl.name, "cpu-front-fan-1")) {
336 fan->min = max(fan->min, (s32)mpu1->rminn_intake_fan);
337 fan->max = min(fan->max, (s32)mpu1->rmaxn_intake_fan);
340 if (mpu0 && !strcmp(fan->ctrl.name, "cpu-rear-fan-0")) {
341 fan->min = max(fan->min, (s32)mpu0->rminn_exhaust_fan);
342 fan->max = min(fan->max, (s32)mpu0->rmaxn_exhaust_fan);
345 if (mpu1 && !strcmp(fan->ctrl.name, "cpu-rear-fan-1")) {
346 fan->min = max(fan->min, (s32)mpu1->rminn_exhaust_fan);
347 fan->max = min(fan->max, (s32)mpu1->rmaxn_exhaust_fan);
351 if (!strncmp(fan->ctrl.name, "cpu-fan", 7)) {
352 fan->min = max(fan->min, (s32)mpu0->rminn_intake_fan);
353 fan->max = min(fan->max, (s32)mpu0->rmaxn_intake_fan);
357 DBG("wf_fcu: fan min/max for %s set to: [%d..%d] RPM\n",
358 fan->ctrl.name, fan->min, fan->max);
364 struct wf_fcu_fan *fan;
366 fan = kzalloc(sizeof(*fan), GFP_KERNEL);
367 if (!fan)
369 fan->fcu_priv = pv;
370 fan->id = id;
371 fan->ctrl.name = name;
372 fan->ctrl.priv = fan;
379 wf_fcu_get_pump_minmax(fan);
381 wf_fcu_get_rpmfan_minmax(fan);
382 fan->ctrl.type = WF_CONTROL_RPM_FAN;
383 fan->ctrl.ops = &wf_fcu_fan_rpm_ops;
385 fan->min = 10;
386 fan->max = 100;
387 fan->ctrl.type = WF_CONTROL_PWM_FAN;
388 fan->ctrl.ops = &wf_fcu_fan_pwm_ops;
391 if (wf_register_control(&fan->ctrl)) {
392 pr_err("wf_fcu: Failed to register fan %s\n", name);
393 kfree(fan);
396 list_add(&fan->link, &pv->fan_list);
403 * windfarm fan names
409 { "BACKSIDE", "backside-fan", },
410 { "SYS CTRLR FAN", "backside-fan", },
411 { "DRIVE BAY", "drive-bay-fan", },
412 { "SLOT", "slots-fan", },
413 { "PCI FAN", "slots-fan", },
414 { "CPU A INTAKE", "cpu-front-fan-0", },
415 { "CPU A EXHAUST", "cpu-rear-fan-0", },
416 { "CPU B INTAKE", "cpu-front-fan-1", },
417 { "CPU B EXHAUST", "cpu-rear-fan-1", },
420 { "CPU A 1", "cpu-fan-a-0", },
421 { "CPU A 2", "cpu-fan-b-0", },
422 { "CPU A 3", "cpu-fan-c-0", },
423 { "CPU B 1", "cpu-fan-a-1", },
424 { "CPU B 2", "cpu-fan-b-1", },
425 { "CPU B 3", "cpu-fan-c-1", },
441 if (of_node_is_type(np, "fan-rpm-control") ||
442 of_node_is_type(np, "fan-rpm"))
444 if (of_node_is_type(np, "fan-pwm-control") ||
445 of_node_is_type(np, "fan-pwm"))
471 pr_warn("wf_fcu: Can't parse fan ID in device-tree for %pOF\n", np);
486 wf_fcu_add_fan(pv, "backside-fan", FCU_FAN_PWM, 1);
487 wf_fcu_add_fan(pv, "drive-bay-fan", FCU_FAN_RPM, 2);
488 wf_fcu_add_fan(pv, "slots-fan", FCU_FAN_PWM, 2);
489 wf_fcu_add_fan(pv, "cpu-front-fan-0", FCU_FAN_RPM, 3);
490 wf_fcu_add_fan(pv, "cpu-rear-fan-0", FCU_FAN_RPM, 4);
491 wf_fcu_add_fan(pv, "cpu-front-fan-1", FCU_FAN_RPM, 5);
492 wf_fcu_add_fan(pv, "cpu-rear-fan-1", FCU_FAN_RPM, 6);
511 pr_debug("wf_fcu: FCU Initialized, RPM fan shift is %d\n",
566 struct wf_fcu_fan *fan;
569 fan = list_first_entry(&pv->fan_list, struct wf_fcu_fan, link);
570 list_del(&fan->link);
571 wf_unregister_control(&fan->ctrl);