1 #ifndef __LOONGSON_HWMON_H_
2 #define __LOONGSON_HWMON_H_
4 #include <linux/types.h>
8 #define NOT_VALID_TEMP 999
10 typedef int (*get_temp_fun
)(int);
11 extern int loongson3_cpu_temp(int);
13 /* 0:Max speed, 1:Manual, 2:Auto */
14 enum fan_control_mode
{
27 #define CONSTANT_SPEED_POLICY 0 /* at constent speed */
28 #define STEP_SPEED_POLICY 1 /* use up/down arrays to describe policy */
29 #define KERNEL_HELPER_POLICY 2 /* kernel as a helper to fan control */
31 #define MAX_STEP_NUM 16
32 #define MAX_FAN_LEVEL 255
34 /* loongson_fan_policy works when fan work at FAN_AUTO_MODE */
35 struct loongson_fan_policy
{
38 /* percent only used when type is CONSTANT_SPEED_POLICY */
41 /* period between two check. (Unit: S) */
44 /* fan adjust usually depend on a temprature input */
45 get_temp_fun depend_temp
;
47 /* up_step/down_step used when type is STEP_SPEED_POLICY */
50 struct temp_range up_step
[MAX_STEP_NUM
];
51 struct temp_range down_step
[MAX_STEP_NUM
];
52 struct delayed_work work
;
55 #endif /* __LOONGSON_HWMON_H_*/