X570_MS7C35 added 2 temperatures from NTCs connected to voltage channels. Fixed Nct67x registers. (#1975)

* X570_MS7C35 added 2 temperature form NTCs connected to voltage channels.
Fix Nct677X registers.

* Update LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>

* Update LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>

---------

Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
This commit is contained in:
salvathor79
2025-10-31 10:38:03 +01:00
committed by GitHub
co-authored by PhyxionNL
parent cbd3f4b1d2
commit 2a886a938d
2 changed files with 53 additions and 13 deletions
@@ -212,7 +212,7 @@ 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),
//new(SourceNct67Xxd.TSENSOR, 0x4A2, 0x4A1, 7, 0xC00, 0x496), // Disabled because these registers are wrong and can cause wrong measurement
new(SourceNct67Xxd.SMBUSMASTER0, 0x150, 0x151, 7, 0x622),
new(SourceNct67Xxd.SMBUSMASTER1, 0x670, 0, -1, 0xC26),
new(SourceNct67Xxd.PECI_1, 0x672, 0, -1, 0xC27),
@@ -220,15 +220,17 @@ internal class Nct677X : ISuperIO
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, 0),
new(SourceNct67Xxd.AGENT0_DIMM1, 0),
new(SourceNct67Xxd.AGENT1_DIMM0, 0),
new(SourceNct67Xxd.AGENT1_DIMM1, 0),
new(SourceNct67Xxd.BYTE_TEMP0, 0),
new(SourceNct67Xxd.BYTE_TEMP1, 0),
new(SourceNct67Xxd.PECI_0_CAL, 0),
new(SourceNct67Xxd.PECI_1_CAL, 0),
new(SourceNct67Xxd.VIRTUAL_TEMP, 0)
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.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), // Used for voltage temp sensor
new(SourceNct67Xxd.SPARE_TEMP2, 0) // Used for voltage temp sensor
});
break;
@@ -1141,7 +1143,12 @@ internal class Nct677X : ISuperIO
AUXTIN4 = 7,
SMBUSMASTER0 = 8,
SMBUSMASTER1 = 9,
TSENSOR = 10,
RESERVED_1 = 10,
RESERVED_2 = 11,
RESERVED_3 = 12,
RESERVED_4 = 13,
RESERVED_5 = 14,
RESERVED_6 = 15,
PECI_0 = 16,
PECI_1 = 17,
PCH_CHIP_CPU_MAX_TEMP = 18,
@@ -1156,7 +1163,10 @@ internal class Nct677X : ISuperIO
BYTE_TEMP1 = 27,
PECI_0_CAL = 28,
PECI_1_CAL = 29,
VIRTUAL_TEMP = 31
RESERVED_7 = 30,
VIRTUAL_TEMP = 31,
SPARE_TEMP = 32,
SPARE_TEMP2 = 33
}
[SuppressMessage("ReSharper", "InconsistentNaming")]
@@ -5333,7 +5333,10 @@ internal sealed class SuperIOHardware : Hardware
t.Add(new Temperature("System", 2)); // SYSTIN, P-3906
t.Add(new Temperature("VRM MOS", 3)); // AUXTIN0, CPUMOSTIN, 10k at left side of cpu vrm
t.Add(new Temperature("Chipset", 5)); // AUXTIN2, 10k at back side of the chipset
t.Add(new Temperature("CPU", 24));
t.Add(new Temperature("CPU", 23));
// Add temperature sensors for voltage inputs that are marked ad
t.Add(new Temperature("MOS CPU", 24)); // (VIN 4 Voltage) NTC Near MOSFET CPU VRM
t.Add(new Temperature("PCH", 25)); // (Voltage #6) X570 Platform Control HUB TEMP (NTC On Bottom of PCB)
f.Add(new Fan("Pump Fan", 0));
f.Add(new Fan("CPU Fan", 1));
@@ -5680,6 +5683,33 @@ internal sealed class SuperIOHardware : Hardware
sensor.Value = value + sensor.Parameters[0].Value;
ActivateSensor(sensor);
}
else
{
if (_motherboard.Model == Model.X570_MS7C35) // Add Temp Value for CPU MOS TEMPERATURE & PCH TEMPERATURE
{
float voltage;
if (sensor.Index == 24)
{
voltage = (float)_readVoltage(6);
}
else if (sensor.Index == 25)
{
voltage = (float)_readVoltage(11);
}
else
{
voltage = 0;
}
double R = (10000.0 * voltage / (2.048 - 1.0)); //Convert voltage measured to resistance value
double T = ((298.15 * 3435.0) / ((298.15 * Math.Log(R / 10000.0)) + 3435.0)); // Use R value in steinhart and hart equation, calculate temperature value in kelvin
float Tc = (float)(T - 273.15); // Converting kelvin to celsius
sensor.Value = Tc + sensor.Parameters[0].Value;
ActivateSensor(sensor);
}
}
}
foreach (Sensor sensor in _fans)