loongson_hwmon.h (1278B)
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 11typedef int (*get_temp_fun)(int); 12extern int loongson3_cpu_temp(int); 13 14/* 0:Max speed, 1:Manual, 2:Auto */ 15enum fan_control_mode { 16 FAN_FULL_MODE = 0, 17 FAN_MANUAL_MODE = 1, 18 FAN_AUTO_MODE = 2, 19 FAN_MODE_END 20}; 21 22struct 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 */ 36struct 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_*/