1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __LOONGSON_HWMON_H_
3 #define __LOONGSON_HWMON_H_
5 #include <linux/types.h>
9 #define NOT_VALID_TEMP 999
11 typedef int (*get_temp_fun
)(int);
12 extern int loongson3_cpu_temp(int);
14 /* 0:Max speed, 1:Manual, 2:Auto */
15 enum fan_control_mode
{
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 */
32 #define MAX_STEP_NUM 16
33 #define MAX_FAN_LEVEL 255
35 /* loongson_fan_policy works when fan work at FAN_AUTO_MODE */
36 struct loongson_fan_policy
{
39 /* percent only used when type is CONSTANT_SPEED_POLICY */
42 /* period between two check. (Unit: S) */
45 /* fan adjust usually depend on a temperature input */
46 get_temp_fun depend_temp
;
48 /* up_step/down_step used when type is STEP_SPEED_POLICY */
51 struct temp_range up_step
[MAX_STEP_NUM
];
52 struct temp_range down_step
[MAX_STEP_NUM
];
53 struct delayed_work work
;
56 #endif /* __LOONGSON_HWMON_H_*/