From 793888263494bb77be64aacff2250ed19dd0d545 Mon Sep 17 00:00:00 2001 From: dernerv Date: Tue, 6 Dec 2016 20:43:02 +0100 Subject: [PATCH 01/13] Added support for Nuvoton NCT6793D chip. Tested on Asus ASUS Z170 Pro Gaming. --- Hardware/LPC/Chip.cs | 2 ++ Hardware/LPC/LMSensors.cs | 2 ++ Hardware/LPC/LPCIO.cs | 12 ++++++++++-- Hardware/LPC/NCT677X.cs | 3 ++- Hardware/Mainboard/SuperIOHardware.cs | 1 + 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Hardware/LPC/Chip.cs b/Hardware/LPC/Chip.cs index 94e75f6..461ae28 100644 --- a/Hardware/LPC/Chip.cs +++ b/Hardware/LPC/Chip.cs @@ -43,6 +43,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { NCT610X = 0xC452, NCT6779D = 0xC560, NCT6791D = 0xC803, + NCT6793D = 0xD121, W83627DHG = 0xA020, W83627DHGP = 0xB070, @@ -91,6 +92,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6776F: return "Nuvoton NCT6776F"; case Chip.NCT6779D: return "Nuvoton NCT6779D"; case Chip.NCT6791D: return "Nuvoton NCT6791D"; + case Chip.NCT6793D: return "Nuvoton NCT6793D"; case Chip.W83627DHG: return "Winbond W83627DHG"; case Chip.W83627DHGP: return "Winbond W83627DHG-P"; diff --git a/Hardware/LPC/LMSensors.cs b/Hardware/LPC/LMSensors.cs index 414fffa..483db5b 100755 --- a/Hardware/LPC/LMSensors.cs +++ b/Hardware/LPC/LMSensors.cs @@ -73,6 +73,8 @@ namespace OpenHardwareMonitor.Hardware.LPC { lmChips.Add(new LMChip(Chip.NCT6779D, path)); break; case "nct6791": lmChips.Add(new LMChip(Chip.NCT6791D, path)); break; + case "nct6793": + lmChips.Add(new LMChip(Chip.NCT6793D, path)); break; case "w83627ehf": lmChips.Add(new LMChip(Chip.W83627EHF, path)); break; diff --git a/Hardware/LPC/LPCIO.cs b/Hardware/LPC/LPCIO.cs index 8fda66a..a3d06d6 100644 --- a/Hardware/LPC/LPCIO.cs +++ b/Hardware/LPC/LPCIO.cs @@ -209,6 +209,13 @@ namespace OpenHardwareMonitor.Hardware.LPC { logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; break; } break; + case 0xD1: + switch (revision) { + case 0x21: + chip = Chip.NCT6793D; + logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; + break; + } break; } if (chip == Chip.Unknown) { if (id != 0 && id != 0xff) { @@ -226,8 +233,8 @@ namespace OpenHardwareMonitor.Hardware.LPC { ushort vendorID = port.ReadWord(FINTEK_VENDOR_ID_REGISTER); - // disable the hardware monitor i/o space lock on NCT6791D chips - if (address == verify && chip == Chip.NCT6791D) { + // disable the hardware monitor i/o space lock on NCT6791D or NCT6793D chips + if (address == verify && (chip == Chip.NCT6791D || chip == Chip.NCT6793D)) { port.NuvotonDisableIOSpaceLock(); } @@ -277,6 +284,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6776F: case Chip.NCT6779D: case Chip.NCT6791D: + case Chip.NCT6793D: superIOs.Add(new NCT677X(chip, revision, address, port)); break; case Chip.F71858: diff --git a/Hardware/LPC/NCT677X.cs b/Hardware/LPC/NCT677X.cs index 48d8d0e..71d29e0 100644 --- a/Hardware/LPC/NCT677X.cs +++ b/Hardware/LPC/NCT677X.cs @@ -271,6 +271,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { break; case Chip.NCT6779D: + case Chip.NCT6793D: case Chip.NCT6791D: if (chip == Chip.NCT6779D) { fans = new float?[5]; @@ -414,7 +415,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { public float?[] Controls { get { return controls; } } private void DisableIOSpaceLock() { - if (chip != Chip.NCT6791D) + if (chip != Chip.NCT6791D || chip != Chip.NCT6793D) return; // the lock is disabled already if the vendor ID can be read diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index 8d10b28..18578ee 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -266,6 +266,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { break; case Chip.NCT6779D: case Chip.NCT6791D: + case Chip.NCT6793D: GetNuvotonConfigurationD(superIO, manufacturer, model, v, t, f, c); break; default: From ba57a730d306dd993c88d2e15834e6d9c15f2943 Mon Sep 17 00:00:00 2001 From: Artem Date: Fri, 27 Jan 2017 17:24:25 +0200 Subject: [PATCH 02/13] Added support for Apollo Lake Intel processors family --- Hardware/CPU/IntelCPU.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index cddafc4..c0e2add 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -28,7 +28,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { Silvermont, Skylake, Airmont, - KabyLake + KabyLake, + ApolloLake } private readonly Sensor[] coreTemperatures; @@ -182,6 +183,10 @@ namespace OpenHardwareMonitor.Hardware.CPU { microarchitecture = Microarchitecture.KabyLake; tjMax = GetTjMaxFromMSR(); break; + case 0x5C: // Intel ApolloLake + microarchitecture = Microarchitecture.ApolloLake; + tjMax = GetTjMaxFromMSR(); + break; default: microarchitecture = Microarchitecture.Unknown; tjMax = Floats(100); @@ -230,6 +235,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { case Microarchitecture.Silvermont: case Microarchitecture.Skylake: case Microarchitecture.Airmont: + case Microarchitecture.ApolloLake: case Microarchitecture.KabyLake: { uint eax, edx; if (Ring0.Rdmsr(MSR_PLATFORM_INFO, out eax, out edx)) { @@ -294,7 +300,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { microarchitecture == Microarchitecture.Skylake || microarchitecture == Microarchitecture.Silvermont || microarchitecture == Microarchitecture.Airmont || - microarchitecture == Microarchitecture.KabyLake) + microarchitecture == Microarchitecture.KabyLake || + microarchitecture == Microarchitecture.ApolloLake) { powerSensors = new Sensor[energyStatusMSRs.Length]; lastEnergyTime = new DateTime[energyStatusMSRs.Length]; @@ -412,6 +419,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { case Microarchitecture.Broadwell: case Microarchitecture.Silvermont: case Microarchitecture.Skylake: + case Microarchitecture.ApolloLake: case Microarchitecture.KabyLake: { uint multiplier = (eax >> 8) & 0xff; coreClocks[i].Value = (float)(multiplier * newBusClock); From b158aba97f404bb418ec2fc82aa697135e74bfd1 Mon Sep 17 00:00:00 2001 From: rmattuschka Date: Mon, 6 Mar 2017 12:12:09 +0100 Subject: [PATCH 03/13] add temp support for the AMD Athlon X4 845 --- Hardware/CPU/AMD10CPU.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Hardware/CPU/AMD10CPU.cs b/Hardware/CPU/AMD10CPU.cs index fb0378a..cacbb4b 100644 --- a/Hardware/CPU/AMD10CPU.cs +++ b/Hardware/CPU/AMD10CPU.cs @@ -38,11 +38,13 @@ namespace OpenHardwareMonitor.Hardware.CPU { private const ushort FAMILY_15H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1603; private const ushort FAMILY_15H_MODEL_10_MISC_CONTROL_DEVICE_ID = 0x1403; private const ushort FAMILY_15H_MODEL_30_MISC_CONTROL_DEVICE_ID = 0x141D; + private const ushort FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID = 0x1573; private const ushort FAMILY_16H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1533; private const ushort FAMILY_16H_MODEL_30_MISC_CONTROL_DEVICE_ID = 0x1583; private const uint REPORTED_TEMPERATURE_CONTROL_REGISTER = 0xA4; private const uint CLOCK_POWER_TIMING_CONTROL_0_REGISTER = 0xD4; + private const uint F15H_M60H_REPORTED_TEMP_CTRL_OFFSET = 0xD8200CA4; private readonly uint miscellaneousControlAddress; private readonly ushort miscellaneousControlDeviceId; @@ -79,6 +81,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { FAMILY_15H_MODEL_10_MISC_CONTROL_DEVICE_ID; break; case 0x30: miscellaneousControlDeviceId = FAMILY_15H_MODEL_30_MISC_CONTROL_DEVICE_ID; break; + case 0x60: miscellaneousControlDeviceId = + FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID; break; default: miscellaneousControlDeviceId = 0; break; } break; case 0x16: @@ -304,6 +308,15 @@ namespace OpenHardwareMonitor.Hardware.CPU { if (temperatureStream == null) { if (miscellaneousControlAddress != Ring0.InvalidPciAddress) { uint value; + if (miscellaneousControlAddress == FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID) { + value = F15H_M60H_REPORTED_TEMP_CTRL_OFFSET; + Ring0.WritePciConfig(Ring0.GetPciAddress(0, 0, 0), 0xB8, value); + Ring0.ReadPciConfig(Ring0.GetPciAddress(0, 0, 0), 0xBC, out value); + coreTemperature.Value = ((value >> 21) & 0x7FF) * 0.125f + + coreTemperature.Parameters[0].Value; + ActivateSensor(coreTemperature); + return; + } if (Ring0.ReadPciConfig(miscellaneousControlAddress, REPORTED_TEMPERATURE_CONTROL_REGISTER, out value)) { if (family == 0x15 && (value & 0x30000) == 0x30000) { From 2406fb0b6e05ce7193d877200198b5459b869368 Mon Sep 17 00:00:00 2001 From: MinerCrafter Date: Thu, 13 Jul 2017 02:56:42 +0200 Subject: [PATCH 04/13] Add Gigabyte X79-UD3 rev 1.0 support X79, IT8728F, socket 2011 --- Hardware/Mainboard/Identification.cs | 2 ++ Hardware/Mainboard/Model.cs | 1 + Hardware/Mainboard/SuperIOHardware.cs | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/Hardware/Mainboard/Identification.cs b/Hardware/Mainboard/Identification.cs index 6ed16c5..0d41a84 100644 --- a/Hardware/Mainboard/Identification.cs +++ b/Hardware/Mainboard/Identification.cs @@ -180,6 +180,8 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { return Model.X38_DS5; case "X58A-UD3R": return Model.X58A_UD3R; + case "X79-UD3": + return Model.X79_UD3; case "Z68A-D3H-B3": return Model.Z68A_D3H_B3; case "Z68AP-D3": diff --git a/Hardware/Mainboard/Model.cs b/Hardware/Mainboard/Model.cs index 4db709f..ee817fd 100644 --- a/Hardware/Mainboard/Model.cs +++ b/Hardware/Mainboard/Model.cs @@ -75,6 +75,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { P8Z68_V_PRO, X38_DS5, X58A_UD3R, + X79_UD3, Z68A_D3H_B3, Z68AP_D3, Z68X_UD3H_B3, diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index 8d10b28..f6895fc 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -831,6 +831,24 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { f.Add(new Fan("System Fan #2", 3)); f.Add(new Fan("System Fan #3", 4)); break; + case Model.X79_UD3: // IT8728F + v.Add(new Voltage("VTT", 0)); + v.Add(new Voltage("DIMM CH A/B", 1)); + v.Add(new Voltage("+12V", 2, 10, 2)); + v.Add(new Voltage("+5V", 3, 15, 10)); + v.Add(new Voltage("VIN4", 4)); + v.Add(new Voltage("VCore", 5)); + v.Add(new Voltage("DIMM CH C/D", 6)); + v.Add(new Voltage("+3V Standby", 7)); + v.Add(new Voltage("VBat", 8, 1, 1)); + t.Add(new Temperature("System", 0)); + t.Add(new Temperature("CPU", 1)); + t.Add(new Temperature("Northbridge", 2)); + f.Add(new Fan("CPU Fan", 0)); + f.Add(new Fan("System Fan #1", 1)); + f.Add(new Fan("System Fan #2", 2)); + f.Add(new Fan("System Fan #3", 3)); + break; default: v.Add(new Voltage("Voltage #1", 0, true)); v.Add(new Voltage("Voltage #2", 1, true)); From 6c0e00b8322d785eef65daaecb3dd0be5d60c328 Mon Sep 17 00:00:00 2001 From: Greg V Date: Sun, 16 Jul 2017 19:32:26 +0300 Subject: [PATCH 05/13] Add support for Nuvoton NCT6795D --- Hardware/LPC/Chip.cs | 2 ++ Hardware/LPC/LMSensors.cs | 2 ++ Hardware/LPC/LPCIO.cs | 12 ++++++++++-- Hardware/LPC/NCT677X.cs | 3 ++- Hardware/Mainboard/SuperIOHardware.cs | 1 + 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Hardware/LPC/Chip.cs b/Hardware/LPC/Chip.cs index 461ae28..8ce1428 100644 --- a/Hardware/LPC/Chip.cs +++ b/Hardware/LPC/Chip.cs @@ -44,6 +44,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { NCT6779D = 0xC560, NCT6791D = 0xC803, NCT6793D = 0xD121, + NCT6795D = 0xD352, W83627DHG = 0xA020, W83627DHGP = 0xB070, @@ -93,6 +94,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6779D: return "Nuvoton NCT6779D"; case Chip.NCT6791D: return "Nuvoton NCT6791D"; case Chip.NCT6793D: return "Nuvoton NCT6793D"; + case Chip.NCT6795D: return "Nuvoton NCT6795D"; case Chip.W83627DHG: return "Winbond W83627DHG"; case Chip.W83627DHGP: return "Winbond W83627DHG-P"; diff --git a/Hardware/LPC/LMSensors.cs b/Hardware/LPC/LMSensors.cs index 483db5b..7c89b6c 100755 --- a/Hardware/LPC/LMSensors.cs +++ b/Hardware/LPC/LMSensors.cs @@ -75,6 +75,8 @@ namespace OpenHardwareMonitor.Hardware.LPC { lmChips.Add(new LMChip(Chip.NCT6791D, path)); break; case "nct6793": lmChips.Add(new LMChip(Chip.NCT6793D, path)); break; + case "nct6795": + lmChips.Add(new LMChip(Chip.NCT6795D, path)); break; case "w83627ehf": lmChips.Add(new LMChip(Chip.W83627EHF, path)); break; diff --git a/Hardware/LPC/LPCIO.cs b/Hardware/LPC/LPCIO.cs index a3d06d6..0aa901a 100644 --- a/Hardware/LPC/LPCIO.cs +++ b/Hardware/LPC/LPCIO.cs @@ -216,6 +216,13 @@ namespace OpenHardwareMonitor.Hardware.LPC { logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; break; } break; + case 0xD3: + switch (revision) { + case 0x52: + chip = Chip.NCT6795D; + logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; + break; + } break; } if (chip == Chip.Unknown) { if (id != 0 && id != 0xff) { @@ -233,8 +240,8 @@ namespace OpenHardwareMonitor.Hardware.LPC { ushort vendorID = port.ReadWord(FINTEK_VENDOR_ID_REGISTER); - // disable the hardware monitor i/o space lock on NCT6791D or NCT6793D chips - if (address == verify && (chip == Chip.NCT6791D || chip == Chip.NCT6793D)) { + // disable the hardware monitor i/o space lock on NCT679*D chips + if (address == verify && (chip == Chip.NCT6791D || chip == Chip.NCT6793D || chip == Chip.NCT6795D)) { port.NuvotonDisableIOSpaceLock(); } @@ -285,6 +292,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6779D: case Chip.NCT6791D: case Chip.NCT6793D: + case Chip.NCT6795D: superIOs.Add(new NCT677X(chip, revision, address, port)); break; case Chip.F71858: diff --git a/Hardware/LPC/NCT677X.cs b/Hardware/LPC/NCT677X.cs index 71d29e0..20001f3 100644 --- a/Hardware/LPC/NCT677X.cs +++ b/Hardware/LPC/NCT677X.cs @@ -271,6 +271,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { break; case Chip.NCT6779D: + case Chip.NCT6795D: case Chip.NCT6793D: case Chip.NCT6791D: if (chip == Chip.NCT6779D) { @@ -415,7 +416,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { public float?[] Controls { get { return controls; } } private void DisableIOSpaceLock() { - if (chip != Chip.NCT6791D || chip != Chip.NCT6793D) + if (chip != Chip.NCT6791D && chip != Chip.NCT6793D && chip != Chip.NCT6795D) return; // the lock is disabled already if the vendor ID can be read diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index 18578ee..91fd84b 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -267,6 +267,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { case Chip.NCT6779D: case Chip.NCT6791D: case Chip.NCT6793D: + case Chip.NCT6795D: GetNuvotonConfigurationD(superIO, manufacturer, model, v, t, f, c); break; default: From 687745dd3e552b83b2e114fbe915b2eca36ed82f Mon Sep 17 00:00:00 2001 From: MinerCrafter Date: Mon, 17 Jul 2017 02:19:47 +0200 Subject: [PATCH 06/13] Adjust +3v SB for X79-UD3 --- Hardware/Mainboard/SuperIOHardware.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index f6895fc..9046f23 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -839,7 +839,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { v.Add(new Voltage("VIN4", 4)); v.Add(new Voltage("VCore", 5)); v.Add(new Voltage("DIMM CH C/D", 6)); - v.Add(new Voltage("+3V Standby", 7)); + v.Add(new Voltage("+3V Standby", 1, 1, 7)); v.Add(new Voltage("VBat", 8, 1, 1)); t.Add(new Temperature("System", 0)); t.Add(new Temperature("CPU", 1)); From 29b5aa8085dadd2a7963fb53d8c3daa34dbc4e77 Mon Sep 17 00:00:00 2001 From: MinerCrafter Date: Mon, 17 Jul 2017 02:37:57 +0200 Subject: [PATCH 07/13] Update SuperIOHardware.cs --- Hardware/Mainboard/SuperIOHardware.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index 9046f23..3579f94 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -839,7 +839,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { v.Add(new Voltage("VIN4", 4)); v.Add(new Voltage("VCore", 5)); v.Add(new Voltage("DIMM CH C/D", 6)); - v.Add(new Voltage("+3V Standby", 1, 1, 7)); + v.Add(new Voltage("+3V Standby", 7, 1, 1)); v.Add(new Voltage("VBat", 8, 1, 1)); t.Add(new Temperature("System", 0)); t.Add(new Temperature("CPU", 1)); From 3dd1b47843f8104505a8453d88d7c6abf6c40af7 Mon Sep 17 00:00:00 2001 From: Cobra_Fast Date: Mon, 24 Jul 2017 20:08:16 +0200 Subject: [PATCH 08/13] Add support for Intel Core X (Skylake-X only) CPUs. --- Hardware/CPU/IntelCPU.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index cddafc4..60ae587 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -170,6 +170,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { break; case 0x4E: case 0x5E: // Intel Core i5, i7 6xxxx LGA1151 (14nm) + case 0x55: // Intel Core X i7, i9 7xxx LGA2066 (14nm) microarchitecture = Microarchitecture.Skylake; tjMax = GetTjMaxFromMSR(); break; From 3ef6fc04a19b77a55d039a97274461072b1faf8c Mon Sep 17 00:00:00 2001 From: Cobra_Fast Date: Mon, 24 Jul 2017 23:39:46 +0200 Subject: [PATCH 09/13] Added support for Nuvoton NCT6796D. --- Hardware/LPC/Chip.cs | 2 ++ Hardware/LPC/LMSensors.cs | 2 ++ Hardware/LPC/LPCIO.cs | 10 +++++++++- Hardware/LPC/NCT677X.cs | 3 ++- Hardware/Mainboard/SuperIOHardware.cs | 1 + 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Hardware/LPC/Chip.cs b/Hardware/LPC/Chip.cs index 94e75f6..a184c90 100644 --- a/Hardware/LPC/Chip.cs +++ b/Hardware/LPC/Chip.cs @@ -43,6 +43,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { NCT610X = 0xC452, NCT6779D = 0xC560, NCT6791D = 0xC803, + NCT6796D = 0xD423, W83627DHG = 0xA020, W83627DHGP = 0xB070, @@ -91,6 +92,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6776F: return "Nuvoton NCT6776F"; case Chip.NCT6779D: return "Nuvoton NCT6779D"; case Chip.NCT6791D: return "Nuvoton NCT6791D"; + case Chip.NCT6796D: return "Nuvoton NCT6796D"; case Chip.W83627DHG: return "Winbond W83627DHG"; case Chip.W83627DHGP: return "Winbond W83627DHG-P"; diff --git a/Hardware/LPC/LMSensors.cs b/Hardware/LPC/LMSensors.cs index 414fffa..c101bed 100755 --- a/Hardware/LPC/LMSensors.cs +++ b/Hardware/LPC/LMSensors.cs @@ -73,6 +73,8 @@ namespace OpenHardwareMonitor.Hardware.LPC { lmChips.Add(new LMChip(Chip.NCT6779D, path)); break; case "nct6791": lmChips.Add(new LMChip(Chip.NCT6791D, path)); break; + case "nct6796": + lmChips.Add(new LMChip(Chip.NCT6796D, path)); break; case "w83627ehf": lmChips.Add(new LMChip(Chip.W83627EHF, path)); break; diff --git a/Hardware/LPC/LPCIO.cs b/Hardware/LPC/LPCIO.cs index 8fda66a..e029614 100644 --- a/Hardware/LPC/LPCIO.cs +++ b/Hardware/LPC/LPCIO.cs @@ -209,6 +209,13 @@ namespace OpenHardwareMonitor.Hardware.LPC { logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; break; } break; + case 0xD4: + switch (revision) { + case 0x23: + chip = Chip.NCT6796D; + logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; + break; + } break; } if (chip == Chip.Unknown) { if (id != 0 && id != 0xff) { @@ -227,7 +234,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { ushort vendorID = port.ReadWord(FINTEK_VENDOR_ID_REGISTER); // disable the hardware monitor i/o space lock on NCT6791D chips - if (address == verify && chip == Chip.NCT6791D) { + if (address == verify && (chip == Chip.NCT6791D || chip == Chip.NCT6796D)) { port.NuvotonDisableIOSpaceLock(); } @@ -277,6 +284,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6776F: case Chip.NCT6779D: case Chip.NCT6791D: + case Chip.NCT6796D: superIOs.Add(new NCT677X(chip, revision, address, port)); break; case Chip.F71858: diff --git a/Hardware/LPC/NCT677X.cs b/Hardware/LPC/NCT677X.cs index 48d8d0e..ae90b58 100644 --- a/Hardware/LPC/NCT677X.cs +++ b/Hardware/LPC/NCT677X.cs @@ -272,6 +272,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.NCT6779D: case Chip.NCT6791D: + case Chip.NCT6796D: if (chip == Chip.NCT6779D) { fans = new float?[5]; controls = new float?[5]; @@ -414,7 +415,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { public float?[] Controls { get { return controls; } } private void DisableIOSpaceLock() { - if (chip != Chip.NCT6791D) + if (chip != Chip.NCT6791D && chip != Chip.NCT6796D) return; // the lock is disabled already if the vendor ID can be read diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index 8d10b28..39afeac 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -266,6 +266,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { break; case Chip.NCT6779D: case Chip.NCT6791D: + case Chip.NCT6796D: GetNuvotonConfigurationD(superIO, manufacturer, model, v, t, f, c); break; default: From 94d306fbe0141cab43e2867b70252e1c74be1dae Mon Sep 17 00:00:00 2001 From: Phyxion Date: Mon, 7 Aug 2017 10:05:31 +0200 Subject: [PATCH 10/13] Merge branch 'pr/6' --- Hardware/CPU/AMD10CPU.cs | 5 ++++- Hardware/CPU/CPUGroup.cs | 1 + Hardware/LPC/Chip.cs | 2 ++ Hardware/LPC/IT87XX.cs | 23 +++++++++++++++++------ Hardware/LPC/LPCIO.cs | 1 + Hardware/Mainboard/Identification.cs | 2 ++ Hardware/Mainboard/Model.cs | 1 + Hardware/Mainboard/SuperIOHardware.cs | 21 +++++++++++++++++++++ 8 files changed, 49 insertions(+), 7 deletions(-) diff --git a/Hardware/CPU/AMD10CPU.cs b/Hardware/CPU/AMD10CPU.cs index cacbb4b..1d0c885 100644 --- a/Hardware/CPU/AMD10CPU.cs +++ b/Hardware/CPU/AMD10CPU.cs @@ -41,11 +41,12 @@ namespace OpenHardwareMonitor.Hardware.CPU { private const ushort FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID = 0x1573; private const ushort FAMILY_16H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1533; private const ushort FAMILY_16H_MODEL_30_MISC_CONTROL_DEVICE_ID = 0x1583; + private const ushort FAMILY_17H_MISC_CONTROL_DEVICE_ID = 0x1577; private const uint REPORTED_TEMPERATURE_CONTROL_REGISTER = 0xA4; private const uint CLOCK_POWER_TIMING_CONTROL_0_REGISTER = 0xD4; - private const uint F15H_M60H_REPORTED_TEMP_CTRL_OFFSET = 0xD8200CA4; + private const uint F15H_M60H_REPORTED_TEMP_CTRL_OFFSET = 0xD8200CA4; private readonly uint miscellaneousControlAddress; private readonly ushort miscellaneousControlDeviceId; @@ -93,6 +94,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { FAMILY_16H_MODEL_30_MISC_CONTROL_DEVICE_ID; break; default: miscellaneousControlDeviceId = 0; break; } break; + case 0x17: miscellaneousControlDeviceId = + FAMILY_17H_MISC_CONTROL_DEVICE_ID; break; default: miscellaneousControlDeviceId = 0; break; } diff --git a/Hardware/CPU/CPUGroup.cs b/Hardware/CPU/CPUGroup.cs index 7429550..98829d2 100644 --- a/Hardware/CPU/CPUGroup.cs +++ b/Hardware/CPU/CPUGroup.cs @@ -102,6 +102,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { case 0x14: case 0x15: case 0x16: + case 0x17: hardware.Add(new AMD10CPU(index, coreThreads, settings)); break; default: diff --git a/Hardware/LPC/Chip.cs b/Hardware/LPC/Chip.cs index f2a8e27..4fe8cfe 100644 --- a/Hardware/LPC/Chip.cs +++ b/Hardware/LPC/Chip.cs @@ -27,6 +27,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { IT8620E = 0x8620, IT8628E = 0x8628, + IT8686E = 0x8686, IT8705F = 0x8705, IT8712F = 0x8712, IT8716F = 0x8716, @@ -77,6 +78,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.IT8620E: return "ITE IT8620E"; case Chip.IT8628E: return "ITE IT8628E"; + case Chip.IT8686E: return "ITE IT8686E"; case Chip.IT8705F: return "ITE IT8705F"; case Chip.IT8712F: return "ITE IT8712F"; case Chip.IT8716F: return "ITE IT8716F"; diff --git a/Hardware/LPC/IT87XX.cs b/Hardware/LPC/IT87XX.cs index 1ff5808..d7ccffc 100644 --- a/Hardware/LPC/IT87XX.cs +++ b/Hardware/LPC/IT87XX.cs @@ -138,15 +138,26 @@ namespace OpenHardwareMonitor.Hardware.LPC { if (!valid) return; - voltages = new float?[9]; - temperatures = new float?[3]; - fans = new float?[chip == Chip.IT8705F ? 3 : 5]; - controls = new float?[3]; + // IT8686E has more sensors + if(chip == Chip.IT8686E) + { + voltages = new float?[10]; + temperatures = new float?[5]; + fans = new float?[5]; + controls = new float?[3]; + } + else + { + voltages = new float?[9]; + temperatures = new float?[3]; + fans = new float?[chip == Chip.IT8705F ? 3 : 5]; + controls = new float?[3]; + } - // IT8620E, IT8628E, IT8721F, IT8728F and IT8772E use a 12mV resultion + // IT8620E, IT8628E, IT8721F, IT8728F, IT8772E and IT8686E use a 12mV resultion // ADC, all others 16mV if (chip == Chip.IT8620E || chip == Chip.IT8628E || chip == Chip.IT8721F - || chip == Chip.IT8728F || chip == Chip.IT8771E || chip == Chip.IT8772E) + || chip == Chip.IT8728F || chip == Chip.IT8771E || chip == Chip.IT8772E || chip == Chip.IT8686E) { voltageGain = 0.012f; } else { diff --git a/Hardware/LPC/LPCIO.cs b/Hardware/LPC/LPCIO.cs index 6c1056f..65b71b6 100644 --- a/Hardware/LPC/LPCIO.cs +++ b/Hardware/LPC/LPCIO.cs @@ -357,6 +357,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { switch (chipID) { case 0x8620: chip = Chip.IT8620E; break; case 0x8628: chip = Chip.IT8628E; break; + case 0x8686: chip = Chip.IT8686E; break; case 0x8705: chip = Chip.IT8705F; break; case 0x8712: chip = Chip.IT8712F; break; case 0x8716: chip = Chip.IT8716F; break; diff --git a/Hardware/Mainboard/Identification.cs b/Hardware/Mainboard/Identification.cs index 0d41a84..7edb7e5 100644 --- a/Hardware/Mainboard/Identification.cs +++ b/Hardware/Mainboard/Identification.cs @@ -192,6 +192,8 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { return Model.Z68X_UD7_B3; case "FH67": return Model.FH67; + case "AX370-Gaming K7": + return Model.AX370_K7; case "Base Board Product Name": case "To be filled by O.E.M.": return Model.Unknown; diff --git a/Hardware/Mainboard/Model.cs b/Hardware/Mainboard/Model.cs index ee817fd..109efa0 100644 --- a/Hardware/Mainboard/Model.cs +++ b/Hardware/Mainboard/Model.cs @@ -80,6 +80,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { Z68AP_D3, Z68X_UD3H_B3, Z68X_UD7_B3, + AX370_K7, // Shuttle FH67, diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index 5a37613..dc1736a 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -182,6 +182,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { case Chip.IT8718F: case Chip.IT8720F: case Chip.IT8726F: + case Chip.IT8686E: GetITEConfigurationsA(superIO, manufacturer, model, v, t, f, c, ref readFan, ref postUpdate, ref mutex); break; @@ -605,6 +606,26 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { f.Add(new Fan("Power Fan", 2)); f.Add(new Fan("System Fan #1", 3)); break; + case Model.AX370_K7: // IT8686E + // Note: v3.3, v12, v5, and AVCC3 might be slightly off. + v.Add(new Voltage("CPU VCore", 0)); + v.Add(new Voltage("+3.3V", 1, 0.65f, 1)); + v.Add(new Voltage("+12V", 2, 5, 1)); + v.Add(new Voltage("+5V", 3, 1.5f, 1)); + v.Add(new Voltage("VSOC", 4)); + v.Add(new Voltage("VDDP", 5)); + v.Add(new Voltage("VDRAM", 6)); + v.Add(new Voltage("3VSB", 7, 10, 10)); + v.Add(new Voltage("VBAT", 8, 10, 10)); + v.Add(new Voltage("AVCC3", 9, 7.53f, 1)); + t.Add(new Temperature("System", 0)); + t.Add(new Temperature("Chipset", 1)); + t.Add(new Temperature("CPU", 2)); + t.Add(new Temperature("PCIEX16", 3)); + t.Add(new Temperature("VRM MOS", 4)); + for (int i = 0; i < superIO.Fans.Length; i++) + f.Add(new Fan("Fan #" + (i + 1), i)); + break; default: v.Add(new Voltage("CPU VCore", 0)); v.Add(new Voltage("DRAM", 1, true)); From 9c5d1ed4c3fc0e69c285cc4cb2c52b5f99cbd234 Mon Sep 17 00:00:00 2001 From: Phyxion Date: Mon, 7 Aug 2017 16:17:59 +0200 Subject: [PATCH 11/13] P8P67 REV 3.1 support --- .gitignore | 3 ++- Hardware/Mainboard/Identification.cs | 1 + Properties/AssemblyLibInfo.cs | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 680f7ae..d9b53fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.user *.suo /Bin -/Obj \ No newline at end of file +/Obj +.vs/OpenHardwareMonitor/v15/TabsStudio.marker.tss diff --git a/Hardware/Mainboard/Identification.cs b/Hardware/Mainboard/Identification.cs index 7edb7e5..99177d2 100644 --- a/Hardware/Mainboard/Identification.cs +++ b/Hardware/Mainboard/Identification.cs @@ -93,6 +93,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { case "P6X58D-E": return Model.P6X58D_E; case "P8P67": + case "P8P67 REV 3.1": return Model.P8P67; case "P8P67 EVO": return Model.P8P67_EVO; diff --git a/Properties/AssemblyLibInfo.cs b/Properties/AssemblyLibInfo.cs index 376e4cf..aaec715 100644 --- a/Properties/AssemblyLibInfo.cs +++ b/Properties/AssemblyLibInfo.cs @@ -10,6 +10,7 @@ using System; using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("Open Hardware Monitor Library")] @@ -24,3 +25,4 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] + From dd653c675e496109171e4547133240ec03144ff2 Mon Sep 17 00:00:00 2001 From: Phyxion Date: Tue, 8 Aug 2017 14:28:08 +0200 Subject: [PATCH 12/13] Updated .gitignore. Updated .gitignore. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d9b53fc..57d5214 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ *.suo /Bin /Obj -.vs/OpenHardwareMonitor/v15/TabsStudio.marker.tss +.vs/ From 027f355b75f6022423525d760ebbf12057e682f6 Mon Sep 17 00:00:00 2001 From: Phyxion Date: Tue, 8 Aug 2017 14:32:13 +0200 Subject: [PATCH 13/13] Merge branch 'pr/7' --- Hardware/CPU/AMD10CPU.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Hardware/CPU/AMD10CPU.cs b/Hardware/CPU/AMD10CPU.cs index 1d0c885..7d919db 100644 --- a/Hardware/CPU/AMD10CPU.cs +++ b/Hardware/CPU/AMD10CPU.cs @@ -41,12 +41,13 @@ namespace OpenHardwareMonitor.Hardware.CPU { private const ushort FAMILY_15H_MODEL_60_MISC_CONTROL_DEVICE_ID = 0x1573; private const ushort FAMILY_16H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1533; private const ushort FAMILY_16H_MODEL_30_MISC_CONTROL_DEVICE_ID = 0x1583; - private const ushort FAMILY_17H_MISC_CONTROL_DEVICE_ID = 0x1577; + private const ushort FAMILY_17H_MODEL_00_MISC_CONTROL_DEVICE_ID = 0x1577; private const uint REPORTED_TEMPERATURE_CONTROL_REGISTER = 0xA4; private const uint CLOCK_POWER_TIMING_CONTROL_0_REGISTER = 0xD4; private const uint F15H_M60H_REPORTED_TEMP_CTRL_OFFSET = 0xD8200CA4; + private readonly uint miscellaneousControlAddress; private readonly ushort miscellaneousControlDeviceId; @@ -95,7 +96,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { default: miscellaneousControlDeviceId = 0; break; } break; case 0x17: miscellaneousControlDeviceId = - FAMILY_17H_MISC_CONTROL_DEVICE_ID; break; + FAMILY_17H_MODEL_00_MISC_CONTROL_DEVICE_ID; break; default: miscellaneousControlDeviceId = 0; break; }