# HG changeset patch # User moel.mich # Date 1282081442 0 # Node ID 31858ba46e9c3cf0573db9eeca11594e3b12c4d8 # Parent 3b2bcba8c02d3f4e0189b7df5657de60e94df19f Fixed Issue 97. diff -r 3b2bcba8c02d -r 31858ba46e9c Hardware/LPC/Chip.cs --- a/Hardware/LPC/Chip.cs Tue Aug 17 20:25:27 2010 +0000 +++ b/Hardware/LPC/Chip.cs Tue Aug 17 21:44:02 2010 +0000 @@ -11,6 +11,7 @@ IT8716F = 0x8716, IT8718F = 0x8718, IT8720F = 0x8720, + IT8721F = 0x8721, IT8726F = 0x8726, W83627DHG = 0xA020, W83627DHGP = 0xB070, @@ -43,6 +44,7 @@ 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 -r 3b2bcba8c02d -r 31858ba46e9c Hardware/LPC/IT87XX.cs --- a/Hardware/LPC/IT87XX.cs Tue Aug 17 20:25:27 2010 +0000 +++ b/Hardware/LPC/IT87XX.cs Tue Aug 17 21:44:02 2010 +0000 @@ -53,6 +53,8 @@ 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 @@ 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 @@ 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 -r 3b2bcba8c02d -r 31858ba46e9c Hardware/LPC/LPCIO.cs --- a/Hardware/LPC/LPCIO.cs Tue Aug 17 20:25:27 2010 +0000 +++ b/Hardware/LPC/LPCIO.cs Tue Aug 17 21:44:02 2010 +0000 @@ -334,6 +334,7 @@ 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 -r 3b2bcba8c02d -r 31858ba46e9c Hardware/Mainboard/SuperIOHardware.cs --- a/Hardware/Mainboard/SuperIOHardware.cs Tue Aug 17 20:25:27 2010 +0000 +++ b/Hardware/Mainboard/SuperIOHardware.cs Tue Aug 17 21:44:02 2010 +0000 @@ -65,7 +65,7 @@ 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 @@ 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));