Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  therm.h   Sprache: C

 
/* SPDX-License-Identifier: MIT */
#ifndef __NVKM_THERM_H__
#define __NVKM_THERM_H__
#include <core/subdev.h>

#include <subdev/bios.h>
#include <subdev/bios/therm.h>
#include <subdev/timer.h>

enum nvkm_therm_thrs_direction {
 NVKM_THERM_THRS_FALLING = 0,
 NVKM_THERM_THRS_RISING = 1
};

enum nvkm_therm_thrs_state {
 NVKM_THERM_THRS_LOWER = 0,
 NVKM_THERM_THRS_HIGHER = 1
};

enum nvkm_therm_thrs {
 NVKM_THERM_THRS_FANBOOST = 0,
 NVKM_THERM_THRS_DOWNCLOCK = 1,
 NVKM_THERM_THRS_CRITICAL = 2,
 NVKM_THERM_THRS_SHUTDOWN = 3,
 NVKM_THERM_THRS_NR
};

enum nvkm_therm_fan_mode {
 NVKM_THERM_CTRL_NONE = 0,
 NVKM_THERM_CTRL_MANUAL = 1,
 NVKM_THERM_CTRL_AUTO = 2,
};

enum nvkm_therm_attr_type {
 NVKM_THERM_ATTR_FAN_MIN_DUTY = 0,
 NVKM_THERM_ATTR_FAN_MAX_DUTY = 1,
 NVKM_THERM_ATTR_FAN_MODE = 2,

 NVKM_THERM_ATTR_THRS_FAN_BOOST = 10,
 NVKM_THERM_ATTR_THRS_FAN_BOOST_HYST = 11,
 NVKM_THERM_ATTR_THRS_DOWN_CLK = 12,
 NVKM_THERM_ATTR_THRS_DOWN_CLK_HYST = 13,
 NVKM_THERM_ATTR_THRS_CRITICAL = 14,
 NVKM_THERM_ATTR_THRS_CRITICAL_HYST = 15,
 NVKM_THERM_ATTR_THRS_SHUTDOWN = 16,
 NVKM_THERM_ATTR_THRS_SHUTDOWN_HYST = 17,
};

struct nvkm_therm_clkgate_init {
 u32 addr;
 u8  count;
 u32 data;
};

struct nvkm_therm_clkgate_pack {
 const struct nvkm_therm_clkgate_init *init;
};

struct nvkm_therm {
 const struct nvkm_therm_func *func;
 struct nvkm_subdev subdev;

 /* automatic thermal management */
 struct nvkm_alarm alarm;
 spinlock_t lock;
 struct nvbios_therm_trip_point *last_trip;
 int mode;
 int cstate;
 int suspend;

 /* bios */
 struct nvbios_therm_sensor bios_sensor;

 /* fan priv */
 struct nvkm_fan *fan;

 /* alarms priv */
 struct {
  spinlock_t alarm_program_lock;
  struct nvkm_alarm therm_poll_alarm;
  enum nvkm_therm_thrs_state alarm_state[NVKM_THERM_THRS_NR];
 } sensor;

 /* what should be done if the card overheats */
 struct {
  void (*downclock)(struct nvkm_therm *, bool active);
  void (*pause)(struct nvkm_therm *, bool active);
 } emergency;

 /* ic */
 struct i2c_client *ic;

 int (*fan_get)(struct nvkm_therm *);
 int (*fan_set)(struct nvkm_therm *, int);

 int (*attr_get)(struct nvkm_therm *, enum nvkm_therm_attr_type);
 int (*attr_set)(struct nvkm_therm *, enum nvkm_therm_attr_type, int);

 bool clkgating_enabled;
};

int nvkm_therm_temp_get(struct nvkm_therm *);
int nvkm_therm_fan_sense(struct nvkm_therm *);
int nvkm_therm_cstate(struct nvkm_therm *, intint);
void nvkm_therm_clkgate_init(struct nvkm_therm *,
        const struct nvkm_therm_clkgate_pack *);
void nvkm_therm_clkgate_enable(struct nvkm_therm *);
void nvkm_therm_clkgate_fini(struct nvkm_therm *, bool);

int nv40_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int nv50_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int g84_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int gt215_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int gf119_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int gk104_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int gm107_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int gm200_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
int gp100_therm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_therm **);
#endif

Messung V0.5
C=96 H=91 G=93

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge