linux/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/therm.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   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 10
  32struct 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
  67int
  68nvbios_therm_sensor_parse(struct nvkm_bios *, enum nvbios_therm_domain,
  69                          struct nvbios_therm_sensor *);
  70
  71int
  72nvbios_therm_fan_parse(struct nvkm_bios *, struct nvbios_therm_fan *);
  73#endif
  74