49 lines
2.1 KiB
C
49 lines
2.1 KiB
C
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
#include "gddr6.h"
|
|
|
|
static struct device_offset device_offset_info[] =
|
|
{
|
|
{.device_id = NVIDIA_RTX3090TI_DEV, .vram_offset = 0x0000E2A8, .hotspot_offset = 0x0002046c}, /* RTX 3090 Ti */
|
|
{.device_id = NVIDIA_RTX3090_DEV, .vram_offset = 0x0000E2A8, .hotspot_offset = 0x0002046c}, /* RTX 3090 */
|
|
{.device_id = NVIDIA_RTX3080TI_DEV, .vram_offset = 0x0000E2A8, .hotspot_offset = 0x0002046c}, /* RTX 3080 Ti */
|
|
{.device_id = NVIDIA_RTX3080_12G_LHR_DEV, .vram_offset = 0x0000E2A8, .hotspot_offset = 0x0002046c}, /* RTX 3080 12G LHR */
|
|
{.device_id = NVIDIA_RTX3080_LHR_DEV, .vram_offset = 0x0000E2A8, .hotspot_offset = 0x0002046c}, /* RTX 3080 LHR */
|
|
{.device_id = NVIDIA_RTX3080_DEV, .vram_offset = 0x0000E2A8, .hotspot_offset = 0x0002046c}, /* RTX 3080 */
|
|
{.device_id = NVIDIA_RTX3070TI_GA102_DEV, .vram_offset = 0x0000EE50, .hotspot_offset = 0x0002046c}, /* RTX 3070 Ti GA102 TODO:check */
|
|
{.device_id = NVIDIA_RTX3070TI_DEV, .vram_offset = 0x0000EE50, .hotspot_offset = 0x0002046c}, /* RTX 3070 Ti TODO:check */
|
|
{.device_id = NVIDIA_RTX3070_LHR_DEV, .vram_offset = 0x0000EE50, .hotspot_offset = 0x0002046c}, /* RTX 3070 LHR */
|
|
{.device_id = NVIDIA_RTX3070_DEV, .vram_offset = 0x0000EE50, .hotspot_offset = 0x0002046c}, /* RTX 3070 */
|
|
};
|
|
|
|
float get_vram_temp(struct card_info *card)
|
|
{
|
|
if (card->bar0_mmap == NULL)
|
|
return 0.0;
|
|
|
|
for (int i = 0; i < sizeof(device_offset_info) / sizeof(struct device_offset); i++) {
|
|
if (card->pci_device_id == device_offset_info[i].device_id) {
|
|
unsigned int read_result = *((unsigned int *)((char *)card->bar0_mmap + device_offset_info[i].vram_offset));
|
|
return (float)((read_result & 0x00000fff) / 0x20);
|
|
}
|
|
}
|
|
|
|
return 0.0;
|
|
}
|
|
|
|
float get_hotspot_temp(struct card_info *card)
|
|
{
|
|
if (card->bar0_mmap == NULL)
|
|
return 0.0;
|
|
|
|
for (int i = 0; i < sizeof(device_offset_info) / sizeof(struct device_offset); i++) {
|
|
if (card->pci_device_id == device_offset_info[i].device_id) {
|
|
unsigned int read_result = *((unsigned int *)((char *)card->bar0_mmap + device_offset_info[i].hotspot_offset));
|
|
return (float)((read_result >> 8) & 0xff);
|
|
}
|
|
}
|
|
|
|
return 0.0;
|
|
}
|