Lines Matching defs:fan

75 	struct pmac_fan fan;
88 /* We can read the PWM and the RPM from a PWM controlled fan.
654 * Sensor and fan management
658 smu_fan_check_old_style(struct smu_fan *fan)
660 device_t smu = fan->dev;
669 * Apple has two fan control mechanisms. We can't distinguish
677 cmd.data[1] = fan->reg;
689 smu_fan_set_rpm(struct smu_fan *fan, int rpm)
691 device_t smu = fan->dev;
699 rpm = max(fan->fan.min_rpm, rpm);
700 rpm = min(fan->fan.max_rpm, rpm);
702 smu_fan_check_old_style(fan);
704 if (!fan->old_style) {
707 cmd.data[1] = fan->reg;
713 fan->old_style = 1;
716 cmd.data[0] = 0x00; /* RPM fan. */
717 cmd.data[1] = 1 << fan->reg;
718 cmd.data[2 + 2*fan->reg] = (rpm >> 8) & 0xff;
719 cmd.data[3 + 2*fan->reg] = rpm & 0xff;
724 fan->setpoint = rpm;
730 smu_fan_read_rpm(struct smu_fan *fan)
732 device_t smu = fan->dev;
736 smu_fan_check_old_style(fan);
738 if (!fan->old_style) {
742 cmd.data[1] = fan->reg;
746 fan->old_style = 1;
751 if (fan->old_style) {
760 rpm = (cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2];
766 smu_fan_set_pwm(struct smu_fan *fan, int pwm)
768 device_t smu = fan->dev;
776 pwm = max(fan->fan.min_rpm, pwm);
777 pwm = min(fan->fan.max_rpm, pwm);
780 * Apple has two fan control mechanisms. We can't distinguish
785 if (!fan->old_style) {
788 cmd.data[1] = fan->reg;
794 fan->old_style = 1;
797 if (fan->old_style) {
799 cmd.data[0] = 0x10; /* PWM fan. */
800 cmd.data[1] = 1 << fan->reg;
801 cmd.data[2 + 2*fan->reg] = (pwm >> 8) & 0xff;
802 cmd.data[3 + 2*fan->reg] = pwm & 0xff;
807 fan->setpoint = pwm;
813 smu_fan_read_pwm(struct smu_fan *fan, int *pwm, int *rpm)
815 device_t smu = fan->dev;
819 if (!fan->old_style) {
823 cmd.data[1] = fan->reg;
827 fan->old_style = 1;
832 if (fan->old_style) {
841 *rpm = (cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2];
843 if (fan->old_style) {
847 cmd.data[1] = 1 << fan->reg;
853 *pwm = cmd.data[fan->reg*2+2];
863 struct smu_fan *fan;
868 fan = &sc->sc_fans[arg2 & 0xff];
870 if (fan->type == SMU_FAN_RPM) {
871 rpm = smu_fan_read_rpm(fan);
877 error = smu_fan_read_pwm(fan, &pwm, &rpm);
893 /* We can only read the RPM from a PWM controlled fan, so return. */
902 if (fan->type == SMU_FAN_RPM)
903 return (smu_fan_set_rpm(fan, rpm));
905 return (smu_fan_set_pwm(fan, pwm));
911 struct smu_fan *fan;
916 fan = &sc->sc_fans[id];
920 if (strcmp(type, "fan-rpm-control") == 0)
921 fan->type = SMU_FAN_RPM;
923 fan->type = SMU_FAN_PWM;
925 fan->dev = dev;
926 fan->old_style = 0;
927 OF_getprop(child, "reg", &fan->reg,
929 OF_getprop(child, "min-value", &fan->fan.min_rpm,
931 OF_getprop(child, "max-value", &fan->fan.max_rpm,
933 OF_getprop(child, "zone", &fan->fan.zone,
937 &fan->fan.default_rpm,
939 fan->fan.default_rpm = fan->fan.max_rpm;
941 OF_getprop(child, "location", fan->fan.name,
942 sizeof(fan->fan.name));
944 if (fan->type == SMU_FAN_RPM)
945 fan->setpoint = smu_fan_read_rpm(fan);
947 smu_fan_read_pwm(fan, &fan->setpoint, &fan->rpm);
951 * after allocating the fan struct, fill the properties of the fans.
974 /* When allocated, fill the fan properties. */
991 struct smu_fan *fan;
1014 pmac_thermal_fan_register(&sc->sc_fans[i].fan);
1023 fan = &sc->sc_fans[i];
1024 for (j = 0; j < strlen(fan->fan.name); j++) {
1025 sysctl_name[j] = tolower(fan->fan.name[j]);
1030 if (fan->type == SMU_FAN_RPM) {
1037 &fan->fan.min_rpm, 0,
1041 &fan->fan.max_rpm, 0,
1048 fan->fan.read = (int (*)(struct pmac_fan *))smu_fan_read_rpm;
1049 fan->fan.set = (int (*)(struct pmac_fan *, int))smu_fan_set_rpm;
1058 &fan->fan.min_rpm, 0,
1062 &fan->fan.max_rpm, 0,
1074 fan->fan.read = NULL;
1075 fan->fan.set = (int (*)(struct pmac_fan *, int))smu_fan_set_pwm;
1079 fan->fan.name, fan->type);