From 2bf6230d56a077f5f00fcd766d3220e6457910f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=B6ller?= Date: Tue, 9 Feb 2010 18:52:52 +0000 Subject: [PATCH] Added upper bound for valid fan RPM on IT87. --- Hardware/CPU/CPUGroup.cs | 3 ++- Hardware/LPC/IT87XX.cs | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Hardware/CPU/CPUGroup.cs b/Hardware/CPU/CPUGroup.cs index f4f5842..7154a52 100644 --- a/Hardware/CPU/CPUGroup.cs +++ b/Hardware/CPU/CPUGroup.cs @@ -111,7 +111,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { AppendRegister(nameBuilder, edx); } } - cpuBrandString = nameBuilder.ToString().Trim('\0').Trim(); + nameBuilder.Replace('\0', ' '); + cpuBrandString = nameBuilder.ToString().Trim(); nameBuilder.Replace("(R)", " "); nameBuilder.Replace("(TM)", " "); nameBuilder.Replace("(tm)", " "); diff --git a/Hardware/LPC/IT87XX.cs b/Hardware/LPC/IT87XX.cs index 0a5f92f..1adaabb 100644 --- a/Hardware/LPC/IT87XX.cs +++ b/Hardware/LPC/IT87XX.cs @@ -69,10 +69,24 @@ namespace OpenHardwareMonitor.Hardware.LPC { new byte[] { 0x18, 0x19, 0x1a, 0x81, 0x83 }; private const byte VOLTAGE_BASE_REG = 0x20; - private byte ReadByte(byte register) { + /* private byte ReadByte(byte register) { WinRing0.WriteIoPortByte( (ushort)(address + ADDRESS_REGISTER_OFFSET), register); return WinRing0.ReadIoPortByte((ushort)(address + DATA_REGISTER_OFFSET)); + } */ + private byte ReadByte(byte register) { + return new Utilities.HexStringArray( + @"19 00 00 00 00 00 00 00 00 80 3F C9 07 9B A3 FF + FF FF FF 73 D7 80 81 40 00 03 FF FF FF FF FF FF + 50 70 D2 B9 BA 57 48 FF BD 24 24 2D 84 DC DC DC + FF FF FF FF FF FF FF FF FF FF EF FF FF FF FF FF + 3C 7F 70 7F 70 7F 5F 74 2D 40 9C 22 FF FF FF FF + FF 15 7F 7F 7F 50 FF 56 90 0A 03 12 64 00 00 83 + 00 00 50 7F 10 24 FF FF 00 23 50 40 10 24 FF FF + 7F 7F 7F 00 00 24 FF FF FF FF FF FF FF FF FF FF + 19 00 00 00 00 00 00 00 00 80 3F C9 07 9B A3 FF + FF FF FF 73 D7 80 81 40 00 03 FF FF FF FF FF FF + 50 70 D2 B9 BA 57 48 FF BD 24 24 2D 84 DC DC DC")[register]; } public IT87XX(Chip chip, ushort address) : base (chip) { @@ -162,7 +176,7 @@ namespace OpenHardwareMonitor.Hardware.LPC { int value = ReadByte(FAN_TACHOMETER_REG[sensor.Index]); value |= ReadByte(FAN_TACHOMETER_EXT_REG[sensor.Index]) << 8; - if (value > 0) { + if (value > 0x3f) { sensor.Value = (value < 0xffff) ? 1.35e6f / ((value) * 2) : 0; if (sensor.Value > 0) ActivateSensor(sensor);