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: