Added experimental support for the Nuvoton NCT6791D super I/O chip.

This commit is contained in:
Michael Möller
2013-07-21 14:17:11 +00:00
parent b24637c47e
commit f89eb0e578
7 changed files with 54 additions and 28 deletions

View File

@@ -39,6 +39,7 @@ namespace OpenHardwareMonitor.Hardware.LPC {
NCT6771F = 0xB470, NCT6771F = 0xB470,
NCT6776F = 0xC330, NCT6776F = 0xC330,
NCT6779D = 0xC560, NCT6779D = 0xC560,
NCT6791D = 0xC803,
W83627DHG = 0xA020, W83627DHG = 0xA020,
W83627DHGP = 0xB070, W83627DHGP = 0xB070,
@@ -82,6 +83,7 @@ namespace OpenHardwareMonitor.Hardware.LPC {
case Chip.NCT6771F: return "Nuvoton NCT6771F"; case Chip.NCT6771F: return "Nuvoton NCT6771F";
case Chip.NCT6776F: return "Nuvoton NCT6776F"; case Chip.NCT6776F: return "Nuvoton NCT6776F";
case Chip.NCT6779D: return "Nuvoton NCT6779D"; case Chip.NCT6779D: return "Nuvoton NCT6779D";
case Chip.NCT6791D: return "Nuvoton NCT6791D";
case Chip.W83627DHG: return "Winbond W83627DHG"; case Chip.W83627DHG: return "Winbond W83627DHG";
case Chip.W83627DHGP: return "Winbond W83627DHG-P"; case Chip.W83627DHGP: return "Winbond W83627DHG-P";

View File

@@ -69,6 +69,10 @@ namespace OpenHardwareMonitor.Hardware.LPC {
lmChips.Add(new LMChip(Chip.NCT6771F, path)); break; lmChips.Add(new LMChip(Chip.NCT6771F, path)); break;
case "nct6776": case "nct6776":
lmChips.Add(new LMChip(Chip.NCT6776F, path)); break; lmChips.Add(new LMChip(Chip.NCT6776F, path)); break;
case "nct6779":
lmChips.Add(new LMChip(Chip.NCT6779D, path)); break;
case "nct6791":
lmChips.Add(new LMChip(Chip.NCT6791D, path)); break;
case "w83627ehf": case "w83627ehf":
lmChips.Add(new LMChip(Chip.W83627EHF, path)); break; lmChips.Add(new LMChip(Chip.W83627EHF, path)); break;

View File

@@ -222,6 +222,13 @@ namespace OpenHardwareMonitor.Hardware.LPC {
logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN; logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
break; break;
} break; } break;
case 0xC8:
switch (revision) {
case 0x03:
chip = Chip.NCT6791D;
logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
break;
} break;
} }
if (chip == Chip.Unknown) { if (chip == Chip.Unknown) {
if (id != 0 && id != 0xff) { if (id != 0 && id != 0xff) {
@@ -283,6 +290,7 @@ namespace OpenHardwareMonitor.Hardware.LPC {
case Chip.NCT6771F: case Chip.NCT6771F:
case Chip.NCT6776F: case Chip.NCT6776F:
case Chip.NCT6779D: case Chip.NCT6779D:
case Chip.NCT6791D:
superIOs.Add(new NCT677X(chip, revision, address)); superIOs.Add(new NCT677X(chip, revision, address));
break; break;
case Chip.F71858: case Chip.F71858:

View File

@@ -4,7 +4,7 @@
License, v. 2.0. If a copy of the MPL was not distributed with this License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. file, You can obtain one at http://mozilla.org/MPL/2.0/.
Copyright (C) 2010-2012 Michael Möller <mmoeller@openhardwaremonitor.org> Copyright (C) 2010-2013 Michael Möller <mmoeller@openhardwaremonitor.org>
*/ */
@@ -56,11 +56,11 @@ namespace OpenHardwareMonitor.Hardware.LPC {
private const ushort VENDOR_ID_LOW_REGISTER = 0x004F; private const ushort VENDOR_ID_LOW_REGISTER = 0x004F;
private readonly ushort[] FAN_PWM_OUT_REG = private readonly ushort[] FAN_PWM_OUT_REG =
{ 0x001, 0x003, 0x011, 0x013, 0x015 }; { 0x001, 0x003, 0x011, 0x013, 0x015, 0x017 };
private readonly ushort[] FAN_PWM_COMMAND_REG = private readonly ushort[] FAN_PWM_COMMAND_REG =
{ 0x109, 0x209, 0x309, 0x809, 0x909 }; { 0x109, 0x209, 0x309, 0x809, 0x909, 0xA09 };
private readonly ushort[] FAN_CONTROL_MODE_REG = private readonly ushort[] FAN_CONTROL_MODE_REG =
{ 0x102, 0x202, 0x302, 0x802, 0x902 }; { 0x102, 0x202, 0x302, 0x802, 0x902, 0xA02 };
private readonly ushort fanRpmBaseRegister; private readonly ushort fanRpmBaseRegister;
private readonly int minFanRPM; private readonly int minFanRPM;
@@ -129,7 +129,7 @@ namespace OpenHardwareMonitor.Hardware.LPC {
BYTE_TEMP = 22 BYTE_TEMP = 22
} }
private enum SourceNCT6779D : byte { private enum SourceNCT67XXD : byte {
SYSTIN = 1, SYSTIN = 1,
CPUTIN = 2, CPUTIN = 2,
AUXTIN0 = 3, AUXTIN0 = 3,
@@ -217,14 +217,20 @@ namespace OpenHardwareMonitor.Hardware.LPC {
break; break;
case Chip.NCT6779D: case Chip.NCT6779D:
fans = new float?[5]; case Chip.NCT6791D:
if (chip == Chip.NCT6779D) {
fans = new float?[5];
controls = new float?[5];
} else {
fans = new float?[6];
controls = new float?[6];
}
fanRpmBaseRegister = 0x4C0; fanRpmBaseRegister = 0x4C0;
// min value RPM value with 13-bit fan counter // min value RPM value with 13-bit fan counter
minFanRPM = (int)(1.35e6 / 0x1FFF); minFanRPM = (int)(1.35e6 / 0x1FFF);
controls = new float?[5];
voltages = new float?[15]; voltages = new float?[15];
voltageRegisters = new ushort[] voltageRegisters = new ushort[]
{ 0x480, 0x481, 0x482, 0x483, 0x484, 0x485, 0x486, 0x487, 0x488, { 0x480, 0x481, 0x482, 0x483, 0x484, 0x485, 0x486, 0x487, 0x488,
@@ -233,13 +239,13 @@ namespace OpenHardwareMonitor.Hardware.LPC {
temperatures = new float?[7]; temperatures = new float?[7];
temperaturesSource = new byte[] { temperaturesSource = new byte[] {
(byte)SourceNCT6779D.PECI_0, (byte)SourceNCT67XXD.PECI_0,
(byte)SourceNCT6779D.CPUTIN, (byte)SourceNCT67XXD.CPUTIN,
(byte)SourceNCT6779D.SYSTIN, (byte)SourceNCT67XXD.SYSTIN,
(byte)SourceNCT6779D.AUXTIN0, (byte)SourceNCT67XXD.AUXTIN0,
(byte)SourceNCT6779D.AUXTIN1, (byte)SourceNCT67XXD.AUXTIN1,
(byte)SourceNCT6779D.AUXTIN2, (byte)SourceNCT67XXD.AUXTIN2,
(byte)SourceNCT6779D.AUXTIN3 (byte)SourceNCT67XXD.AUXTIN3
}; };
temperatureRegister = new ushort[] temperatureRegister = new ushort[]
@@ -254,7 +260,7 @@ namespace OpenHardwareMonitor.Hardware.LPC {
alternateTemperatureRegister = new ushort?[] alternateTemperatureRegister = new ushort?[]
{null, 0x491, 0x490, 0x492, 0x493, 0x494, 0x495 }; {null, 0x491, 0x490, 0x492, 0x493, 0x494, 0x495 };
break; break;
} }
} }
@@ -398,14 +404,16 @@ namespace OpenHardwareMonitor.Hardware.LPC {
ushort[] addresses = new ushort[] { ushort[] addresses = new ushort[] {
0x000, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070, 0x000, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070,
0x100, 0x110, 0x120, 0x130, 0x140, 0x150, 0x100, 0x110, 0x120, 0x130, 0x140, 0x150,
0x200, 0x220, 0x230, 0x240, 0x250, 0x200, 0x220, 0x230, 0x240, 0x250, 0x260,
0x300, 0x320, 0x330, 0x340, 0x300, 0x320, 0x330, 0x340, 0x360,
0x400, 0x410, 0x420, 0x440, 0x450, 0x460, 0x480, 0x490, 0x4C0, 0x400, 0x410, 0x420, 0x440, 0x450, 0x460, 0x480, 0x490, 0x4B0,
0x500, 0x550, 0x4C0, 0x4F0,
0x500, 0x550, 0x560,
0x600, 0x610 ,0x620, 0x630, 0x640, 0x650, 0x660, 0x670, 0x600, 0x610 ,0x620, 0x630, 0x640, 0x650, 0x660, 0x670,
0x800, 0x700, 0x710, 0x720, 0x730,
0x900, 0x800, 0x820, 0x830, 0x840,
0xA00, 0xA10, 0xA20, 0xA30, 0xA50, 0xA60, 0xA70, 0x900, 0x920, 0x930, 0x940, 0x960,
0xA00, 0xA10, 0xA20, 0xA30, 0xA40, 0xA50, 0xA60, 0xA70,
0xB00, 0xB10, 0xB20, 0xB30, 0xB50, 0xB60, 0xB70, 0xB00, 0xB10, 0xB20, 0xB30, 0xB50, 0xB60, 0xB70,
0xC00, 0xC10, 0xC20, 0xC30, 0xC50, 0xC60, 0xC70, 0xC00, 0xC10, 0xC20, 0xC30, 0xC50, 0xC60, 0xC70,
0xD00, 0xD10, 0xD20, 0xD30, 0xD50, 0xD60, 0xD00, 0xD10, 0xD20, 0xD30, 0xD50, 0xD60,

View File

@@ -1059,6 +1059,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard {
} }
break; break;
case Chip.NCT6779D: case Chip.NCT6779D:
case Chip.NCT6791D:
switch (manufacturer) { switch (manufacturer) {
case Manufacturer.ASUS: case Manufacturer.ASUS:
switch (model) { switch (model) {

View File

@@ -4,13 +4,12 @@
License, v. 2.0. If a copy of the MPL was not distributed with this License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/. file, You can obtain one at http://mozilla.org/MPL/2.0/.
Copyright (C) 2009-2010 Michael Möller <mmoeller@openhardwaremonitor.org> Copyright (C) 2009-2013 Michael Möller <mmoeller@openhardwaremonitor.org>
*/ */
using System; using System;
using System.IO; using System.IO;
using System.Text;
using System.Threading; using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
using OpenHardwareMonitor.GUI; using OpenHardwareMonitor.GUI;
@@ -61,7 +60,11 @@ namespace OpenHardwareMonitor {
return false; return false;
if (!IsFileAvailable("OpenHardwareMonitorLib.dll")) if (!IsFileAvailable("OpenHardwareMonitorLib.dll"))
return false; return false;
if (!IsFileAvailable("OxyPlot.dll"))
return false;
if (!IsFileAvailable("OxyPlot.WindowsForms.dll"))
return false;
return true; return true;
} }

View File

@@ -10,5 +10,5 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("0.6.0.0")] [assembly: AssemblyVersion("0.6.0.1")]
[assembly: AssemblyInformationalVersion("0.6.0 Beta")] [assembly: AssemblyInformationalVersion("0.6.0.1 Alpha")]