Hardware/LPC/LPCIO.cs
changeset 245 f8e72b2efcc0
parent 236 763675f19ff4
child 265 961c07a3bd78
     1.1 --- a/Hardware/LPC/LPCIO.cs	Sun Nov 21 12:28:31 2010 +0000
     1.2 +++ b/Hardware/LPC/LPCIO.cs	Sun Nov 21 17:31:25 2010 +0000
     1.3 @@ -88,27 +88,27 @@
     1.4        report.AppendLine();
     1.5      }
     1.6  
     1.7 -    #region Winbond, Fintek
     1.8 +    #region Winbond, Nuvoton, Fintek
     1.9  
    1.10      private const byte FINTEK_VENDOR_ID_REGISTER = 0x23;
    1.11      private const ushort FINTEK_VENDOR_ID = 0x1934;
    1.12  
    1.13 -    private const byte WINBOND_HARDWARE_MONITOR_LDN = 0x0B;
    1.14 +    private const byte WINBOND_NUVOTON_HARDWARE_MONITOR_LDN = 0x0B;
    1.15  
    1.16      private const byte F71858_HARDWARE_MONITOR_LDN = 0x02;
    1.17      private const byte FINTEK_HARDWARE_MONITOR_LDN = 0x04;
    1.18  
    1.19 -    private void WinbondFintekEnter() {
    1.20 +    private void WinbondNuvotonFintekEnter() {
    1.21        Ring0.WriteIoPort(registerPort, 0x87);
    1.22        Ring0.WriteIoPort(registerPort, 0x87);
    1.23      }
    1.24  
    1.25 -    private void WinbondFintekExit() {
    1.26 +    private void WinbondNuvotonFintekExit() {
    1.27        Ring0.WriteIoPort(registerPort, 0xAA);
    1.28      }
    1.29  
    1.30      private bool DetectWinbondFintek() {
    1.31 -      WinbondFintekEnter();
    1.32 +      WinbondNuvotonFintekEnter();
    1.33  
    1.34        byte logicalDeviceNumber = 0;
    1.35        byte id = ReadByte(CHIP_ID_REGISTER);
    1.36 @@ -160,21 +160,21 @@
    1.37              case 0x3A:
    1.38              case 0x41:
    1.39                chip = Chip.W83627HF;
    1.40 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.41 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.42                break;
    1.43            } break;
    1.44          case 0x82:
    1.45            switch (revision & 0xF0) {
    1.46              case 0x80:
    1.47                chip = Chip.W83627THF;
    1.48 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.49 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.50                break;
    1.51            } break;
    1.52          case 0x85:
    1.53            switch (revision) {
    1.54              case 0x41:
    1.55                chip = Chip.W83687THF;
    1.56 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.57 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.58                break;
    1.59            } break;
    1.60          case 0x88:
    1.61 @@ -182,43 +182,51 @@
    1.62              case 0x50:
    1.63              case 0x60:
    1.64                chip = Chip.W83627EHF;
    1.65 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.66 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.67                break;
    1.68            } break;
    1.69          case 0xA0:
    1.70            switch (revision & 0xF0) {
    1.71              case 0x20:
    1.72                chip = Chip.W83627DHG;
    1.73 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.74 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.75                break;
    1.76            } break;
    1.77          case 0xA5:
    1.78            switch (revision & 0xF0) {
    1.79              case 0x10:
    1.80                chip = Chip.W83667HG;
    1.81 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.82 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.83                break;
    1.84            } break;
    1.85          case 0xB0:
    1.86            switch (revision & 0xF0) {
    1.87              case 0x70:
    1.88                chip = Chip.W83627DHGP;
    1.89 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.90 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.91                break;
    1.92            } break;
    1.93          case 0xB3:
    1.94            switch (revision & 0xF0) {
    1.95              case 0x50:
    1.96                chip = Chip.W83667HGB;
    1.97 -              logicalDeviceNumber = WINBOND_HARDWARE_MONITOR_LDN;
    1.98 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
    1.99 +              break;
   1.100 +          } break;
   1.101 +        case 0xB4:
   1.102 +          switch (revision & 0xF0) {
   1.103 +            case 0x70:
   1.104 +              chip = Chip.NCT6771F;
   1.105 +              logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
   1.106                break;
   1.107            } break;
   1.108        }
   1.109        if (chip == Chip.Unknown) {
   1.110          if (id != 0 && id != 0xff) {
   1.111 -          WinbondFintekExit();
   1.112 +          WinbondNuvotonFintekExit();
   1.113  
   1.114 -          ReportUnknownChip("Winbond / Fintek", ((id << 8) | revision));
   1.115 +          ReportUnknownChip("Winbond / Nuvoton / Fintek", 
   1.116 +            ((id << 8) | revision));
   1.117          }
   1.118        } else {
   1.119  
   1.120 @@ -229,7 +237,7 @@
   1.121  
   1.122          ushort vendorID = ReadWord(FINTEK_VENDOR_ID_REGISTER);
   1.123  
   1.124 -        WinbondFintekExit();
   1.125 +        WinbondNuvotonFintekExit();
   1.126  
   1.127          if (address != verify) {
   1.128            report.Append("Chip ID: 0x");
   1.129 @@ -270,6 +278,9 @@
   1.130            case Chip.W83687THF:
   1.131              superIOs.Add(new W836XX(chip, revision, address));
   1.132              break;
   1.133 +          case Chip.NCT6771F:
   1.134 +            superIOs.Add(new NCT677X(chip, revision, address));
   1.135 +            break;
   1.136            case Chip.F71858:
   1.137            case Chip.F71862:
   1.138            case Chip.F71869: