]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - arch/mips/include/asm/mach-loongson64/loongson_hwmon.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[mirror_ubuntu-bionic-kernel.git] / arch / mips / include / asm / mach-loongson64 / loongson_hwmon.h
1 /* SPDX-License-Identifier: GPL-2.0 */
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 /* 0:Max speed, 1:Manual, 2:Auto */
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 /* at constant speed */
29 #define STEP_SPEED_POLICY 1 /* use up/down arrays to describe policy */
30 #define KERNEL_HELPER_POLICY 2 /* kernel as a helper to fan control */
31
32 #define MAX_STEP_NUM 16
33 #define MAX_FAN_LEVEL 255
34
35 /* loongson_fan_policy works when fan work at FAN_AUTO_MODE */
36 struct loongson_fan_policy {
37 u8 type;
38
39 /* percent only used when type is CONSTANT_SPEED_POLICY */
40 u8 percent;
41
42 /* period between two check. (Unit: S) */
43 u8 adjust_period;
44
45 /* fan adjust usually depend on a temprature input */
46 get_temp_fun depend_temp;
47
48 /* up_step/down_step used when type is STEP_SPEED_POLICY */
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 /* __LOONGSON_HWMON_H_*/