diff --git a/Hardware/LPC/Chip.cs b/Hardware/LPC/Chip.cs index b05f592..fbe6650 100644 --- a/Hardware/LPC/Chip.cs +++ b/Hardware/LPC/Chip.cs @@ -11,6 +11,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { IT8716F = 0x8716, IT8718F = 0x8718, IT8720F = 0x8720, + IT8721F = 0x8721, IT8726F = 0x8726, W83627DHG = 0xA020, W83627DHGP = 0xB070, @@ -43,6 +44,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case Chip.IT8712F: return "ITE IT8712F"; case Chip.IT8716F: return "ITE IT8716F"; case Chip.IT8718F: return "ITE IT8718F"; + case Chip.IT8721F: return "ITE IT8721F"; case Chip.IT8720F: return "ITE IT8720F"; case Chip.IT8726F: return "ITE IT8726F"; case Chip.W83627DHG: return "Winbond W83627DHG"; diff --git a/Hardware/LPC/IT87XX.cs b/Hardware/LPC/IT87XX.cs index a1b7416..e1b78ed 100644 --- a/Hardware/LPC/IT87XX.cs +++ b/Hardware/LPC/IT87XX.cs @@ -53,6 +53,8 @@ namespace OpenHardwareMonitor.Hardware.LPC { private float?[] voltages = new float?[0]; private float?[] temperatures = new float?[0]; private float?[] fans = new float?[0]; + + private readonly float voltageGain; // Consts private const byte ITE_VENDOR_ID = 0x90; @@ -102,6 +104,13 @@ namespace OpenHardwareMonitor.Hardware.LPC { voltages = new float?[9]; temperatures = new float?[3]; fans = new float?[5]; + + // The IT8721F uses a 12mV resultion ADC, all others 16mV + if (chip == Chip.IT8721F) { + voltageGain = 0.012f; + } else { + voltageGain = 0.016f; + } } public Chip Chip { get { return chip; } } @@ -156,8 +165,10 @@ namespace OpenHardwareMonitor.Hardware.LPC { for (int i = 0; i < voltages.Length; i++) { bool valid; - float value = 0.001f * ((int)ReadByte( - (byte)(VOLTAGE_BASE_REG + i), out valid) << 4); + + float value = + voltageGain * ReadByte((byte)(VOLTAGE_BASE_REG + i), out valid); + if (!valid) continue; if (value > 0) diff --git a/Hardware/LPC/LPCIO.cs b/Hardware/LPC/LPCIO.cs index ae8feee..26b087b 100644 --- a/Hardware/LPC/LPCIO.cs +++ b/Hardware/LPC/LPCIO.cs @@ -334,6 +334,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { case 0x8716: chip = Chip.IT8716F; break; case 0x8718: chip = Chip.IT8718F; break; case 0x8720: chip = Chip.IT8720F; break; + case 0x8721: chip = Chip.IT8721F; break; case 0x8726: chip = Chip.IT8726F; break; default: chip = Chip.Unknown; break; } diff --git a/Hardware/Mainboard/SuperIOHardware.cs b/Hardware/Mainboard/SuperIOHardware.cs index f9ae80a..9c205ce 100644 --- a/Hardware/Mainboard/SuperIOHardware.cs +++ b/Hardware/Mainboard/SuperIOHardware.cs @@ -65,7 +65,7 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { case Chip.IT8712F: case Chip.IT8716F: case Chip.IT8718F: - case Chip.IT8720F: + case Chip.IT8720F: case Chip.IT8726F: switch (manufacturer) { case Manufacturer.ASUS: @@ -319,6 +319,22 @@ namespace OpenHardwareMonitor.Hardware.Mainboard { break; } break; + + case Chip.IT8721F: + 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("Analog +3.3V", 3, 10, 10, 0, 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, 0)); + 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; case Chip.F71858: v.Add(new Voltage("VCC3V", 0, 150, 150, 0));