|
|
@ -40,6 +40,7 @@ |
|
|
|
#include "hexdump.c" |
|
|
|
#include "hexdump.c" |
|
|
|
#include "util.h" |
|
|
|
#include "util.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int opt_avalon_temp = AVALON_TEMP_TARGET; |
|
|
|
static int option_offset = -1; |
|
|
|
static int option_offset = -1; |
|
|
|
struct device_drv avalon_drv; |
|
|
|
struct device_drv avalon_drv; |
|
|
|
|
|
|
|
|
|
|
@ -986,15 +987,15 @@ static inline void record_temp_fan(struct avalon_info *info, struct avalon_resul |
|
|
|
|
|
|
|
|
|
|
|
static void temp_rise(struct avalon_info *info, int temp) |
|
|
|
static void temp_rise(struct avalon_info *info, int temp) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (temp >= AVALON_TEMP_TARGET + AVALON_TEMP_HYSTERESIS * 3) { |
|
|
|
if (temp >= opt_avalon_temp + AVALON_TEMP_HYSTERESIS * 3) { |
|
|
|
info->fan_pwm = AVALON_DEFAULT_FAN_MAX_PWM; |
|
|
|
info->fan_pwm = AVALON_DEFAULT_FAN_MAX_PWM; |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
if (temp >= AVALON_TEMP_TARGET + AVALON_TEMP_HYSTERESIS * 2) |
|
|
|
if (temp >= opt_avalon_temp + AVALON_TEMP_HYSTERESIS * 2) |
|
|
|
info->fan_pwm += 10; |
|
|
|
info->fan_pwm += 10; |
|
|
|
else if (temp > AVALON_TEMP_TARGET) |
|
|
|
else if (temp > opt_avalon_temp) |
|
|
|
info->fan_pwm += 5; |
|
|
|
info->fan_pwm += 5; |
|
|
|
else if (temp >= AVALON_TEMP_TARGET - AVALON_TEMP_HYSTERESIS) |
|
|
|
else if (temp >= opt_avalon_temp - AVALON_TEMP_HYSTERESIS) |
|
|
|
info->fan_pwm += 1; |
|
|
|
info->fan_pwm += 1; |
|
|
|
else |
|
|
|
else |
|
|
|
return; |
|
|
|
return; |
|
|
@ -1005,15 +1006,15 @@ static void temp_rise(struct avalon_info *info, int temp) |
|
|
|
|
|
|
|
|
|
|
|
static void temp_drop(struct avalon_info *info, int temp) |
|
|
|
static void temp_drop(struct avalon_info *info, int temp) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (temp <= AVALON_TEMP_TARGET - AVALON_TEMP_HYSTERESIS * 3) { |
|
|
|
if (temp <= opt_avalon_temp - AVALON_TEMP_HYSTERESIS * 3) { |
|
|
|
info->fan_pwm = AVALON_DEFAULT_FAN_MIN_PWM; |
|
|
|
info->fan_pwm = AVALON_DEFAULT_FAN_MIN_PWM; |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
if (temp <= AVALON_TEMP_TARGET - AVALON_TEMP_HYSTERESIS * 2) |
|
|
|
if (temp <= opt_avalon_temp - AVALON_TEMP_HYSTERESIS * 2) |
|
|
|
info->fan_pwm -= 10; |
|
|
|
info->fan_pwm -= 10; |
|
|
|
else if (temp <= AVALON_TEMP_TARGET - AVALON_TEMP_HYSTERESIS) |
|
|
|
else if (temp <= opt_avalon_temp - AVALON_TEMP_HYSTERESIS) |
|
|
|
info->fan_pwm -= 5; |
|
|
|
info->fan_pwm -= 5; |
|
|
|
else if (temp < AVALON_TEMP_TARGET) |
|
|
|
else if (temp < opt_avalon_temp) |
|
|
|
info->fan_pwm -= 1; |
|
|
|
info->fan_pwm -= 1; |
|
|
|
|
|
|
|
|
|
|
|
if (info->fan_pwm < AVALON_DEFAULT_FAN_MIN_PWM) |
|
|
|
if (info->fan_pwm < AVALON_DEFAULT_FAN_MIN_PWM) |
|
|
@ -1032,9 +1033,9 @@ static inline void adjust_fan(struct avalon_info *info) |
|
|
|
temp_drop(info, temp_new); |
|
|
|
temp_drop(info, temp_new); |
|
|
|
else { |
|
|
|
else { |
|
|
|
/* temp_new == info->temp_old */ |
|
|
|
/* temp_new == info->temp_old */ |
|
|
|
if (temp_new > AVALON_TEMP_TARGET) |
|
|
|
if (temp_new > opt_avalon_temp) |
|
|
|
temp_rise(info, temp_new); |
|
|
|
temp_rise(info, temp_new); |
|
|
|
else if (temp_new < AVALON_TEMP_TARGET - AVALON_TEMP_HYSTERESIS) |
|
|
|
else if (temp_new < opt_avalon_temp - AVALON_TEMP_HYSTERESIS) |
|
|
|
temp_drop(info, temp_new); |
|
|
|
temp_drop(info, temp_new); |
|
|
|
} |
|
|
|
} |
|
|
|
info->temp_old = temp_new; |
|
|
|
info->temp_old = temp_new; |
|
|
|