Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / gpu / drm / nouveau / include / nvkm / subdev / bios / therm.h
1 #ifndef __NVBIOS_THERM_H__
2 #define __NVBIOS_THERM_H__
3 struct nvbios_therm_threshold {
4         u8 temp;
5         u8 hysteresis;
6 };
7
8 struct nvbios_therm_sensor {
9         /* diode */
10         s16 slope_mult;
11         s16 slope_div;
12         s16 offset_num;
13         s16 offset_den;
14         s8 offset_constant;
15
16         /* thresholds */
17         struct nvbios_therm_threshold thrs_fan_boost;
18         struct nvbios_therm_threshold thrs_down_clock;
19         struct nvbios_therm_threshold thrs_critical;
20         struct nvbios_therm_threshold thrs_shutdown;
21 };
22
23 enum nvbios_therm_fan_type {
24         NVBIOS_THERM_FAN_UNK = 0,
25         NVBIOS_THERM_FAN_TOGGLE = 1,
26         NVBIOS_THERM_FAN_PWM = 2,
27 };
28
29 /* no vbios have more than 6 */
30 #define NVKM_TEMP_FAN_TRIP_MAX 10
31 struct nvbios_therm_trip_point {
32         int fan_duty;
33         int temp;
34         int hysteresis;
35 };
36
37 enum nvbios_therm_fan_mode {
38         NVBIOS_THERM_FAN_TRIP = 0,
39         NVBIOS_THERM_FAN_LINEAR = 1,
40         NVBIOS_THERM_FAN_OTHER = 2,
41 };
42
43 struct nvbios_therm_fan {
44         enum nvbios_therm_fan_type type;
45
46         u32 pwm_freq;
47
48         u8 min_duty;
49         u8 max_duty;
50
51         u16 bump_period;
52         u16 slow_down_period;
53
54         enum nvbios_therm_fan_mode fan_mode;
55         struct nvbios_therm_trip_point trip[NVKM_TEMP_FAN_TRIP_MAX];
56         u8 nr_fan_trip;
57         u8 linear_min_temp;
58         u8 linear_max_temp;
59 };
60
61 enum nvbios_therm_domain {
62         NVBIOS_THERM_DOMAIN_CORE,
63         NVBIOS_THERM_DOMAIN_AMBIENT,
64 };
65
66 int
67 nvbios_therm_sensor_parse(struct nvkm_bios *, enum nvbios_therm_domain,
68                           struct nvbios_therm_sensor *);
69
70 int
71 nvbios_therm_fan_parse(struct nvkm_bios *, struct nvbios_therm_fan *);
72 #endif