# HG changeset patch
# User moel.mich
# Date 1277757589 0
# Node ID 673c2ad36db24a843b49fb0fb40e1660df742098
# Parent  44a688398012a2a2132cfbca9920945d8ee9916c
Added the ITE chip version to the report.

diff -r 44a688398012 -r 673c2ad36db2 Hardware/LPC/IT87XX.cs
--- a/Hardware/LPC/IT87XX.cs	Sun Jun 27 20:49:29 2010 +0000
+++ b/Hardware/LPC/IT87XX.cs	Mon Jun 28 20:39:49 2010 +0000
@@ -45,6 +45,7 @@
        
     private ushort address;
     private Chip chip;
+    private byte version;
 
     private readonly ushort addressReg;
     private readonly ushort dataReg;
@@ -78,10 +79,11 @@
       return value;
     } 
 
-    public IT87XX(Chip chip, ushort address) {
+    public IT87XX(Chip chip, ushort address, byte version) {
       
       this.address = address;
       this.chip = chip;
+      this.version = version;
       this.addressReg = (ushort)(address + ADDRESS_REGISTER_OFFSET);
       this.dataReg = (ushort)(address + DATA_REGISTER_OFFSET);
       
@@ -113,6 +115,7 @@
       r.AppendLine("LPC " + this.GetType().Name);
       r.AppendLine();
       r.Append("Chip ID: 0x"); r.AppendLine(chip.ToString("X"));
+      r.Append("Chip Version: 0x"); r.AppendLine(version.ToString("X"));
       r.Append("Base Address: 0x"); r.AppendLine(address.ToString("X4"));
       r.AppendLine();
       r.AppendLine("Environment Controller Registers");
diff -r 44a688398012 -r 673c2ad36db2 Hardware/LPC/LPCIO.cs
--- a/Hardware/LPC/LPCIO.cs	Sun Jun 27 20:49:29 2010 +0000
+++ b/Hardware/LPC/LPCIO.cs	Mon Jun 28 20:39:49 2010 +0000
@@ -78,7 +78,8 @@
     }
 
     // ITE
-    private const byte IT87_ENVIRONMENT_CONTROLLER_LDN = 0x04;    
+    private const byte IT87_ENVIRONMENT_CONTROLLER_LDN = 0x04;
+    private const byte IT87_CHIP_VERSION_REGISTER = 0x22;
 
     private void IT87Enter() {
       WinRing0.WriteIoPortByte(registerPort, 0x87);
@@ -332,12 +333,14 @@
             report.AppendLine(chipID.ToString("X"));
             report.AppendLine();
           }
-        } else {
+        } else {          
           Select(IT87_ENVIRONMENT_CONTROLLER_LDN);
           ushort address = ReadWord(BASE_ADDRESS_REGISTER);
           Thread.Sleep(1);
           ushort verify = ReadWord(BASE_ADDRESS_REGISTER);
 
+          byte version = (byte)(ReadByte(IT87_CHIP_VERSION_REGISTER) & 0x0F);
+
           IT87Exit();
 
           if (address != verify || address < 0x100 || (address & 0xF007) != 0) {
@@ -349,7 +352,7 @@
             return;
           }
 
-         superIOs.Add(new IT87XX(chip, address));
+         superIOs.Add(new IT87XX(chip, address, version));
 
           return;
         }