diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index add74bf..92c3d3d 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -69,6 +69,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { private const uint MSR_RAPL_POWER_UNIT = 0x606; private const uint MSR_PKG_ENERY_STATUS = 0x611; private const uint MSR_PP0_ENERY_STATUS = 0x639; + private const uint MSR_PP1_ENERY_STATUS = 0x641; private float energyUnitMultiplier = 0; private DateTime lastPackageTime; @@ -294,7 +295,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { IA32_PACKAGE_THERM_STATUS, MSR_RAPL_POWER_UNIT, MSR_PKG_ENERY_STATUS, - MSR_PP0_ENERY_STATUS + MSR_PP0_ENERY_STATUS, + MSR_PP1_ENERY_STATUS }; } diff --git a/Hardware/LPC/IT87XX.cs b/Hardware/LPC/IT87XX.cs index 94c2a40..fd81bf9 100644 --- a/Hardware/LPC/IT87XX.cs +++ b/Hardware/LPC/IT87XX.cs @@ -87,7 +87,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { Ring0.WriteIoPort(addressReg, register); Ring0.WriteIoPort(dataReg, value); return register == Ring0.ReadIoPort(addressReg); - } + } public byte? ReadGPIO(int index) { if (index >= gpioCount) @@ -128,7 +128,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { temperatures = new float?[3]; fans = new float?[5]; - // IT8721F, IT8728F and IT8772E uses a 12mV resultion ADC, all others 16mV + // IT8721F, IT8728F and IT8772E use a 12mV resultion ADC, all others 16mV if (chip == Chip.IT8721F || chip == Chip.IT8728F || chip == Chip.IT8772E) { voltageGain = 0.012f; diff --git a/Hardware/Mainboard/Mainboard.cs b/Hardware/Mainboard/Mainboard.cs index 808c217..6267ec7 100644 --- a/Hardware/Mainboard/Mainboard.cs +++ b/Hardware/Mainboard/Mainboard.cs @@ -85,7 +85,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { superIOHardware[i] = new SuperIOHardware(this, superIO[i], smbios.Board != null ? smbios.Board.Manufacturer : Manufacturer.Unknown, smbios.Board != null ? smbios.Board.Model : - Model.Unknown, settings); + Model.Unknown, settings); } public string Name { diff --git a/Hardware/Mainboard/Model.cs b/Hardware/Mainboard/Model.cs index c827952..e95f26d 100644 --- a/Hardware/Mainboard/Model.cs +++ b/Hardware/Mainboard/Model.cs @@ -83,6 +83,9 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { X58A_UD3R, Z68X_UD7_B3, + // Shuttle + FH67, + // Unknown Unknown } diff --git a/Hardware/Mainboard/SMBIOS.cs b/Hardware/Mainboard/SMBIOS.cs index 49f1498..75ff917 100644 --- a/Hardware/Mainboard/SMBIOS.cs +++ b/Hardware/Mainboard/SMBIOS.cs @@ -50,6 +50,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { private readonly Version version; private readonly BIOSInformation biosInformation; + private readonly SystemInformation systemInformation; private readonly BaseBoardInformation baseBoardInformation; private static string ReadSysFS(string path) { @@ -76,7 +77,13 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { string boardVersion = ReadSysFS("/sys/class/dmi/id/board_version"); this.baseBoardInformation = new BaseBoardInformation( boardVendor, boardName, boardVersion, null); - + + string systemVendor = ReadSysFS("/sys/class/dmi/id/sys_vendor"); + string productName = ReadSysFS("/sys/class/dmi/id/product_name"); + string productVersion = ReadSysFS("/sys/class/dmi/id/product_version"); + this.systemInformation = new SystemInformation(systemVendor, + productName, productVersion, null, null); + string biosVendor = ReadSysFS("/sys/class/dmi/id/bios_vendor"); string biosVersion = ReadSysFS("/sys/class/dmi/id/bios_version"); this.biosInformation = new BIOSInformation(biosVendor, biosVersion); @@ -139,6 +146,10 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { this.biosInformation = new BIOSInformation( type, handle, data, stringsList.ToArray()); structureList.Add(this.biosInformation); break; + case 0x01: + this.systemInformation = new SystemInformation( + type, handle, data, stringsList.ToArray()); + structureList.Add(this.systemInformation); break; case 0x02: this.baseBoardInformation = new BaseBoardInformation( type, handle, data, stringsList.ToArray()); structureList.Add(this.baseBoardInformation); break; @@ -166,6 +177,16 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { r.AppendLine(); } + if (System != null) { + r.Append("System Manufacturer: "); + r.AppendLine(System.ManufacturerName); + r.Append("System Name: "); + r.AppendLine(System.ProductName); + r.Append("System Version: "); + r.AppendLine(System.Version); + r.AppendLine(); + } + if (Board != null) { r.Append("Mainboard Manufacturer: "); r.AppendLine(Board.ManufacturerName); @@ -201,6 +222,10 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { get { return biosInformation; } } + public SystemInformation System { + get { return systemInformation; } + } + public BaseBoardInformation Board { get { return baseBoardInformation; } } @@ -258,6 +283,48 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { public string Version { get { return version; } } } + public class SystemInformation : Structure { + + private readonly string manufacturerName; + private readonly string productName; + private readonly string version; + private readonly string serialNumber; + private readonly string family; + + public SystemInformation(string manufacturerName, string productName, + string version, string serialNumber, string family) + : base (0x01, 0, null, null) + { + this.manufacturerName = manufacturerName; + this.productName = productName; + this.version = version; + this.serialNumber = serialNumber; + this.family = family; + } + + public SystemInformation(byte type, ushort handle, byte[] data, + string[] strings) + : base(type, handle, data, strings) + { + this.manufacturerName = GetString(0x04); + this.productName = GetString(0x05); + this.version = GetString(0x06); + this.serialNumber = GetString(0x07); + this.family = GetString(0x1A); + } + + public string ManufacturerName { get { return manufacturerName; } } + + public string ProductName { get { return productName; } } + + public string Version { get { return version; } } + + public string SerialNumber { get { return serialNumber; } } + + public string Family { get { return family; } } + + } + public class BaseBoardInformation : Structure { private readonly string manufacturerName; @@ -395,6 +462,8 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { return Model.X58A_UD3R; case "Z68X-UD7-B3": return Model.Z68X_UD7_B3; + case "FH67": + return Model.FH67; case "Base Board Product Name": case "To be filled by O.E.M.": return Model.Unknown; diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index e4fdce9..be84267 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -533,6 +533,38 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { break; } break; + case Manufacturer.Shuttle: + switch (model) { + case Model.FH67: // IT8772E + v.Add(new Voltage("CPU VCore", 0)); + v.Add(new Voltage("DRAM", 1)); + v.Add(new Voltage("PCH VCCIO", 2)); + v.Add(new Voltage("CPU VCCIO", 3)); + v.Add(new Voltage("Graphic Voltage", 4)); + v.Add(new Voltage("Standby +3.3V", 7, 10, 10)); + v.Add(new Voltage("VBat", 8, 10, 10)); + t.Add(new Temperature("System", 0)); + t.Add(new Temperature("CPU", 1)); + f.Add(new Fan("Fan #1", 0)); + f.Add(new Fan("CPU Fan", 1)); + break; + default: + v.Add(new Voltage("Voltage #1", 0, true)); + v.Add(new Voltage("Voltage #2", 1, true)); + v.Add(new Voltage("Voltage #3", 2, true)); + v.Add(new Voltage("Voltage #4", 3, true)); + v.Add(new Voltage("Voltage #5", 4, true)); + v.Add(new Voltage("Voltage #6", 5, true)); + v.Add(new Voltage("Voltage #7", 6, true)); + v.Add(new Voltage("Standby +3.3V", 7, 10, 10, 0, true)); + v.Add(new Voltage("VBat", 8, 10, 10)); + for (int i = 0; i < superIO.Temperatures.Length; i++) + t.Add(new Temperature("Temperature #" + (i + 1), i)); + for (int i = 0; i < superIO.Fans.Length; i++) + f.Add(new Fan("Fan #" + (i + 1), i)); + break; + } + break; default: v.Add(new Voltage("Voltage #1", 0, true)); v.Add(new Voltage("Voltage #2", 1, true));