1
2 #ifndef __LOONGSON_HWMON_H_
3 #define __LOONGSON_HWMON_H_
4
5 #include <linux/types.h>
6
7 #define MIN_TEMP 0
8 #define MAX_TEMP 255
9 #define NOT_VALID_TEMP 999
10
11 typedef int (*get_temp_fun)(int);
12 extern int loongson3_cpu_temp(int);
13
14
15 enum fan_control_mode {
16 FAN_FULL_MODE = 0,
17 FAN_MANUAL_MODE = 1,
18 FAN_AUTO_MODE = 2,
19 FAN_MODE_END
20 };
21
22 struct temp_range {
23 u8 low;
24 u8 high;
25 u8 level;
26 };
27
28 #define CONSTANT_SPEED_POLICY 0
29 #define STEP_SPEED_POLICY 1
30 #define KERNEL_HELPER_POLICY 2
31
32 #define MAX_STEP_NUM 16
33 #define MAX_FAN_LEVEL 255
34
35
36 struct loongson_fan_policy {
37 u8 type;
38
39
40 u8 percent;
41
42
43 u8 adjust_period;
44
45
46 get_temp_fun depend_temp;
47
48
49 u8 up_step_num;
50 u8 down_step_num;
51 struct temp_range up_step[MAX_STEP_NUM];
52 struct temp_range down_step[MAX_STEP_NUM];
53 struct delayed_work work;
54 };
55
56 #endif