Linux Audio

Check our new training course

Embedded Linux training

Mar 31-Apr 8, 2025
Register
Loading...
Note: File does not exist in v3.1.
 1#ifndef __LOONGSON_HWMON_H_
 2#define __LOONGSON_HWMON_H_
 3
 4#include <linux/types.h>
 5
 6#define MIN_TEMP	0
 7#define MAX_TEMP	255
 8#define NOT_VALID_TEMP	999
 9
10typedef int (*get_temp_fun)(int);
11extern int loongson3_cpu_temp(int);
12
13/* 0:Max speed, 1:Manual, 2:Auto */
14enum fan_control_mode {
15	FAN_FULL_MODE = 0,
16	FAN_MANUAL_MODE = 1,
17	FAN_AUTO_MODE = 2,
18	FAN_MODE_END
19};
20
21struct temp_range {
22	u8 low;
23	u8 high;
24	u8 level;
25};
26
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 */
30
31#define MAX_STEP_NUM	16
32#define MAX_FAN_LEVEL	255
33
34/* loongson_fan_policy works when fan work at FAN_AUTO_MODE */
35struct loongson_fan_policy {
36	u8	type;
37
38	/* percent only used when type is CONSTANT_SPEED_POLICY */
39	u8	percent;
40
41	/* period between two check. (Unit: S) */
42	u8	adjust_period;
43
44	/* fan adjust usually depend on a temprature input */
45	get_temp_fun	depend_temp;
46
47	/* up_step/down_step used when type is STEP_SPEED_POLICY */
48	u8	up_step_num;
49	u8	down_step_num;
50	struct temp_range up_step[MAX_STEP_NUM];
51	struct temp_range down_step[MAX_STEP_NUM];
52	struct delayed_work work;
53};
54
55#endif /* __LOONGSON_HWMON_H_*/