57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
#ifndef __LOONGSON_HWMON_H_
 | 
						|
#define __LOONGSON_HWMON_H_
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
#define MIN_TEMP	0
 | 
						|
#define MAX_TEMP	255
 | 
						|
#define NOT_VALID_TEMP	999
 | 
						|
 | 
						|
typedef int (*get_temp_fun)(int);
 | 
						|
extern int loongson3_cpu_temp(int);
 | 
						|
 | 
						|
/* 0:Max speed, 1:Manual, 2:Auto */
 | 
						|
enum fan_control_mode {
 | 
						|
	FAN_FULL_MODE = 0,
 | 
						|
	FAN_MANUAL_MODE = 1,
 | 
						|
	FAN_AUTO_MODE = 2,
 | 
						|
	FAN_MODE_END
 | 
						|
};
 | 
						|
 | 
						|
struct temp_range {
 | 
						|
	u8 low;
 | 
						|
	u8 high;
 | 
						|
	u8 level;
 | 
						|
};
 | 
						|
 | 
						|
#define CONSTANT_SPEED_POLICY	0  /* at constant speed */
 | 
						|
#define STEP_SPEED_POLICY	1  /* use up/down arrays to describe policy */
 | 
						|
#define KERNEL_HELPER_POLICY	2  /* kernel as a helper to fan control */
 | 
						|
 | 
						|
#define MAX_STEP_NUM	16
 | 
						|
#define MAX_FAN_LEVEL	255
 | 
						|
 | 
						|
/* loongson_fan_policy works when fan work at FAN_AUTO_MODE */
 | 
						|
struct loongson_fan_policy {
 | 
						|
	u8	type;
 | 
						|
 | 
						|
	/* percent only used when type is CONSTANT_SPEED_POLICY */
 | 
						|
	u8	percent;
 | 
						|
 | 
						|
	/* period between two check. (Unit: S) */
 | 
						|
	u8	adjust_period;
 | 
						|
 | 
						|
	/* fan adjust usually depend on a temprature input */
 | 
						|
	get_temp_fun	depend_temp;
 | 
						|
 | 
						|
	/* up_step/down_step used when type is STEP_SPEED_POLICY */
 | 
						|
	u8	up_step_num;
 | 
						|
	u8	down_step_num;
 | 
						|
	struct temp_range up_step[MAX_STEP_NUM];
 | 
						|
	struct temp_range down_step[MAX_STEP_NUM];
 | 
						|
	struct delayed_work work;
 | 
						|
};
 | 
						|
 | 
						|
#endif /* __LOONGSON_HWMON_H_*/
 |