FIX missing T_SENSOR of X870e Taichi (#2003)

* FIX missing T sensor 3 of X870e Taichi

* FIX Adjust X870E taichi votages readings

* FIX Conditionally add missing register to NCT6799D

* Update Nct677X.cs

* Update LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
This commit is contained in:
Betalos (Oussama Thoura)
2025-11-04 12:46:09 +01:00
committed by GitHub
co-authored by PhyxionNL
parent 0d3b16c704
commit 7aff2a8a77
2 changed files with 49 additions and 19 deletions
@@ -196,11 +196,13 @@ internal class Nct677X : ISuperIO
switch (chip)
{
case Chip.NCT6791D:
case Chip.NCT6792D:
case Chip.NCT6793D:
case Chip.NCT6795D:
case Chip.NCT6796D:
case Chip.NCT6796DR:
case Chip.NCT6797D:
case Chip.NCT6798D:
case Chip.NCT6799D:
case Chip.NCT6701D:
temperaturesSources.AddRange(new TemperatureSourceData[]
{
@@ -212,7 +214,40 @@ internal class Nct677X : ISuperIO
new(SourceNct67Xxd.AUXTIN2, 0x07D, 0x07E, 7, 0xA00, 0x494),
new(SourceNct67Xxd.AUXTIN3, 0x4A0, 0x49E, 6, 0xB00, 0x495),
new(SourceNct67Xxd.AUXTIN4, 0x027, 0, -1, 0x621),
//new(SourceNct67Xxd.TSENSOR, 0x4A2, 0x4A1, 7, 0xC00, 0x496), // Disabled because these registers are wrong and can cause wrong measurement
new(SourceNct67Xxd.PCH_CHIP_CPU_MAX_TEMP, 0x674, 0, -1, 0xC28, 0x400),
new(SourceNct67Xxd.PCH_CHIP_TEMP, 0x676, 0, -1, 0xC29, 0x401),
new(SourceNct67Xxd.PCH_CPU_TEMP, 0x678, 0, -1, 0xC2A, 0x402),
new(SourceNct67Xxd.PCH_MCH_TEMP, 0x67A, 0, -1, 0xC2B, 0x404),
new(SourceNct67Xxd.AGENT0_DIMM0, 0x405, 0, -1),
new(SourceNct67Xxd.AGENT0_DIMM1,0x406, 0, -1),
new(SourceNct67Xxd.AGENT1_DIMM0, 0x407, 0, -1),
new(SourceNct67Xxd.AGENT1_DIMM1, 0x408, 0, -1),
new(SourceNct67Xxd.SMBUSMASTER0, 0x150, 0x151, 7, 0x622),
new(SourceNct67Xxd.SMBUSMASTER1, 0x670, 0, -1, 0xC26),
new(SourceNct67Xxd.PECI_1, 0x672, 0, -1, 0xC27),
new(SourceNct67Xxd.BYTE_TEMP0, 0x419, 0, -1),
new(SourceNct67Xxd.BYTE_TEMP1, 0x41A, 0, -1),
new(SourceNct67Xxd.PECI_0_CAL, 0x4F4, 0, -1),
new(SourceNct67Xxd.PECI_1_CAL, 0x4F5, 0, -1),
new(SourceNct67Xxd.VIRTUAL_TEMP, 0),
new(SourceNct67Xxd.SPARE_TEMP, 0),
new(SourceNct67Xxd.SPARE_TEMP2, 0)
});
break;
case Chip.NCT6798D:
case Chip.NCT6799D:
temperaturesSources.AddRange(new TemperatureSourceData[]
{
new(SourceNct67Xxd.PECI_0, 0x073, 0x074, 7, 0x100),
new(SourceNct67Xxd.CPUTIN, 0x075, 0x076, 7, 0x200, 0x491),
new(SourceNct67Xxd.SYSTIN, 0x077, 0x078, 7, 0x300, 0x490),
new(SourceNct67Xxd.AUXTIN0, 0x079, 0x07A, 7, 0x800, 0x492),
new(SourceNct67Xxd.AUXTIN1, 0x07B, 0x07C, 7, 0x900, 0x493),
new(SourceNct67Xxd.AUXTIN2, 0x07D, 0x07E, 7, 0xA00, 0x494),
new(SourceNct67Xxd.AUXTIN3, 0x4A0, 0x49E, 6, 0xB00, 0x495),
new(SourceNct67Xxd.AUXTIN4, 0x027, 0, -1, 0x621),
new(SourceNct67Xxd.TSENSOR, 0x4A2, 0x4A1, 7, 0xC00, 0x496),
new(SourceNct67Xxd.SMBUSMASTER0, 0x150, 0x151, 7, 0x622),
new(SourceNct67Xxd.SMBUSMASTER1, 0x670, 0, -1, 0xC26),
new(SourceNct67Xxd.PECI_1, 0x672, 0, -1, 0xC27),
@@ -229,8 +264,8 @@ internal class Nct677X : ISuperIO
new(SourceNct67Xxd.PECI_0_CAL, 0x4F4, 0, -1),
new(SourceNct67Xxd.PECI_1_CAL, 0x4F5, 0, -1),
new(SourceNct67Xxd.VIRTUAL_TEMP, 0),
new(SourceNct67Xxd.SPARE_TEMP, 0), // Used for voltage temp sensor
new(SourceNct67Xxd.SPARE_TEMP2, 0) // Used for voltage temp sensor
new(SourceNct67Xxd.SPARE_TEMP, 0),
new(SourceNct67Xxd.SPARE_TEMP2, 0)
});
break;
@@ -1141,6 +1176,7 @@ internal class Nct677X : ISuperIO
AUXTIN2 = 5,
AUXTIN3 = 6,
AUXTIN4 = 7,
TSENSOR = 10,
SMBUSMASTER0 = 8,
SMBUSMASTER1 = 9,
RESERVED_1 = 10,
@@ -412,12 +412,7 @@ internal sealed class SuperIOHardware : Hardware
break;
case Manufacturer.ASRock when model == Model.X870E_TAICHI:
t.Add(new Temperature("CPU", 0));
t.Add(new Temperature("System", 1));
t.Add(new Temperature("VRM MOS", 2));
t.Add(new Temperature("PCH", 3));
t.Add(new Temperature("CPU Socket", 4));
t.Add(new Temperature("PCIe x1", 5));
t.Add(new Temperature("M2_1", 6));
f.Add(new Fan("Water Pump", 0)); // W_PUMP
f.Add(new Fan("Chassis Fan #3", 1)); // CHA_FAN3
@@ -3826,19 +3821,18 @@ internal sealed class SuperIOHardware : Hardware
break;
case Model.X870E_TAICHI: // NCT6799D
v.Add(new Voltage("Vcore", 0, 10, 10));
v.Add(new Voltage("AVCC", 2, 34, 34));
v.Add(new Voltage("Vcore", 0));
v.Add(new Voltage("+12V", 1, 56, 10));
v.Add(new Voltage("+3.3V", 3, 34, 34));
v.Add(new Voltage("+3V Standby", 7, 34, 34));
v.Add(new Voltage("+5V", 4, 20, 10));
v.Add(new Voltage("+1.05V Always-on", 5));
v.Add(new Voltage("+3.3V Standby", 7, 34, 34));
v.Add(new Voltage("CMOS Battery", 8, 34, 34));
v.Add(new Voltage("CPU Termination", 9));
v.Add(new Voltage("Vcore SoC", 10, 1, 1));
v.Add(new Voltage("Vcore Misc", 11, 1, 1));
v.Add(new Voltage("+1.8V", 13, 1, 1));
t.Add(new Temperature("CPU", 1));
t.Add(new Temperature("Motherboard", 2));
t.Add(new Temperature("PCH TS10", 9));
t.Add(new Temperature("Auxiliary", 3));
t.Add(new Temperature("Auxiliary Index #1", 4));
t.Add(new Temperature("Thermistor Sensor #1", 5)); // T_SENSOR 1
t.Add(new Temperature("Thermistor Sensor #2", 6)); // T_SENSOR 2