brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · 0fb8a34 Raw
74 lines · c
1/* SPDX-License-Identifier: MIT */2#ifndef __NVBIOS_THERM_H__3#define __NVBIOS_THERM_H__4struct nvbios_therm_threshold {5	u8 temp;6	u8 hysteresis;7};8 9struct nvbios_therm_sensor {10	/* diode */11	s16 slope_mult;12	s16 slope_div;13	s16 offset_num;14	s16 offset_den;15	s8 offset_constant;16 17	/* thresholds */18	struct nvbios_therm_threshold thrs_fan_boost;19	struct nvbios_therm_threshold thrs_down_clock;20	struct nvbios_therm_threshold thrs_critical;21	struct nvbios_therm_threshold thrs_shutdown;22};23 24enum nvbios_therm_fan_type {25	NVBIOS_THERM_FAN_UNK = 0,26	NVBIOS_THERM_FAN_TOGGLE = 1,27	NVBIOS_THERM_FAN_PWM = 2,28};29 30/* no vbios have more than 6 */31#define NVKM_TEMP_FAN_TRIP_MAX 1032struct nvbios_therm_trip_point {33	int fan_duty;34	int temp;35	int hysteresis;36};37 38enum nvbios_therm_fan_mode {39	NVBIOS_THERM_FAN_TRIP = 0,40	NVBIOS_THERM_FAN_LINEAR = 1,41	NVBIOS_THERM_FAN_OTHER = 2,42};43 44struct nvbios_therm_fan {45	enum nvbios_therm_fan_type type;46 47	u32 pwm_freq;48 49	u8 min_duty;50	u8 max_duty;51 52	u16 bump_period;53	u16 slow_down_period;54 55	enum nvbios_therm_fan_mode fan_mode;56	struct nvbios_therm_trip_point trip[NVKM_TEMP_FAN_TRIP_MAX];57	u8 nr_fan_trip;58	u8 linear_min_temp;59	u8 linear_max_temp;60};61 62enum nvbios_therm_domain {63	NVBIOS_THERM_DOMAIN_CORE,64	NVBIOS_THERM_DOMAIN_AMBIENT,65};66 67int68nvbios_therm_sensor_parse(struct nvkm_bios *, enum nvbios_therm_domain,69			  struct nvbios_therm_sensor *);70 71int72nvbios_therm_fan_parse(struct nvkm_bios *, struct nvbios_therm_fan *);73#endif74