Add initial support for MSI X870 and Z890 Motherboards (NCT6687D) (#1621)
* Add support for a number of X870 and Z890 MSI Motherboards using NCT6687D chips * Fixing labels and comments * Update master.yml Change name to allow nuget publish * Update master.yml Still fixing nuget api shit * Update Identification.cs Remove B650 Edge board, as it's fine with existing implementation.
This commit is contained in:
@@ -619,6 +619,18 @@ internal class Identification
|
||||
return Model.PRIME_X870_P;
|
||||
case var _ when name.Equals("ROG CROSSHAIR X870E HERO", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.ROG_CROSSHAIR_X870E_HERO;
|
||||
case var _ when name.Equals("MAG X870 TOMAHAWK WIFI (MS-7E51)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.X870_TOMAHAWK_WIFI;
|
||||
case var _ when name.Equals("MPG Z890 CARBON WIFI (MS-7E17)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.Z890_CARBON_WIFI;
|
||||
case var _ when name.Equals("MAG X870E TOMAHAWK WIFI (MS-7E59)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.X870E_TOMAHAWK_WIFI;
|
||||
case var _ when name.Equals("MPG X870E CARBON WIFI (MS-7E49)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.X870E_CARBON_WIFI;
|
||||
case var _ when name.Equals("PRO X870-P WIFI (MS-7E47)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.X870_P_WIFI;
|
||||
case var _ when name.Equals("MPG Z890 EDGE TI WIFI (MS-7E19)", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.Z890_EDGE_TI_WIFI;
|
||||
case var _ when name.Equals("X11SWN-E", StringComparison.OrdinalIgnoreCase):
|
||||
return Model.X11SWN_E;
|
||||
case var _ when name.Equals("Base Board Product Name", StringComparison.OrdinalIgnoreCase):
|
||||
|
||||
@@ -69,12 +69,12 @@ internal class Nct677X : ISuperIO
|
||||
|
||||
_vBatMonitorControlRegister = 0x0318;
|
||||
}
|
||||
else if (chip is Chip.NCT6683D or Chip.NCT6686D or Chip.NCT6687D)
|
||||
else if (chip is Chip.NCT6683D or Chip.NCT6686D or Chip.NCT6687D) //These work on older NCT6687D boards, but only fans 0, 1 and 3 on newer (X870 and Z890) motherboards. Unsure of controls for "next pack of 8".
|
||||
{
|
||||
FAN_PWM_OUT_REG = new ushort[] { 0x160, 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167 };
|
||||
FAN_PWM_COMMAND_REG = new ushort[] { 0xA28, 0xA29, 0xA2A, 0xA2B, 0xA2C, 0xA2D, 0xA2E, 0xA2F };
|
||||
FAN_CONTROL_MODE_REG = new ushort[] { 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00 };
|
||||
FAN_PWM_REQUEST_REG = new ushort[] { 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01 };
|
||||
FAN_PWM_OUT_REG = new ushort[] { 0x160, 0x161, 0x162, 0x163, 0x164, 0x165, 0x166, 0x167 }; // Next 8 fans will be 0xE00, 0xE01, 0xE02, 0xE03, 0xE04, 0xE05, 0xE06, 0xE07
|
||||
FAN_PWM_COMMAND_REG = new ushort[] { 0xA28, 0xA29, 0xA2A, 0xA2B, 0xA2C, 0xA2D, 0xA2E, 0xA2F }; // Possibly 0X260, 0X261, 0X262, 0X263, 0X264, 0X265, 0X266, 0X267 but can't confirm
|
||||
FAN_CONTROL_MODE_REG = new ushort[] { 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00, 0xA00 }; // Not sure of next 8, MSI won't provide info
|
||||
FAN_PWM_REQUEST_REG = new ushort[] { 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01, 0xA01 }; // Not sure of next 8, MSI won't provide info
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -272,7 +272,7 @@ internal class Nct677X : ISuperIO
|
||||
case Chip.NCT6683D:
|
||||
case Chip.NCT6686D:
|
||||
case Chip.NCT6687D:
|
||||
Fans = new float?[8];
|
||||
Fans = new float?[16];
|
||||
Controls = new float?[8];
|
||||
Voltages = new float?[14];
|
||||
Temperatures = new float?[7];
|
||||
@@ -312,13 +312,19 @@ internal class Nct677X : ISuperIO
|
||||
|
||||
// CPU Fan
|
||||
// PUMP Fan
|
||||
// SYS Fan 1
|
||||
// SYS Fan 2
|
||||
// SYS Fan 3
|
||||
// SYS Fan 4
|
||||
// SYS Fan 5
|
||||
// SYS Fan 6
|
||||
_fanRpmRegister = new ushort[] { 0x140, 0x142, 0x144, 0x146, 0x148, 0x14A, 0x14C, 0x14E };
|
||||
// SYS Fan 1 on some older NCT6687Ds, Nil on others
|
||||
// SYS Fan 2 on some older NCT6687Ds, EZConn on others
|
||||
// SYS Fan 3 on some older NCT6687Ds
|
||||
// SYS Fan 4 on some older NCT6687Ds
|
||||
// SYS Fan 5 on some older NCT6687Ds
|
||||
// SYS Fan 6 on some older NCT6687Ds
|
||||
// SYS Fan 6 on newer NCT6687Ds
|
||||
// SYS Fan 5 on newer NCT6687Ds
|
||||
// SYS Fan 4 on newer NCT6687Ds
|
||||
// SYS Fan 3 on newer NCT6687Ds
|
||||
// SYS Fan 2 on newer NCT6687Ds
|
||||
// SYS Fan 1 on newer NCT6687Ds
|
||||
_fanRpmRegister = new ushort[] { 0x140, 0x142, 0x144, 0x146, 0x148, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E };
|
||||
|
||||
_restoreDefaultFanControlRequired = new bool[_fanRpmRegister.Length];
|
||||
_initialFanControlMode = new byte[_fanRpmRegister.Length];
|
||||
|
||||
@@ -136,6 +136,13 @@ public enum Model
|
||||
Z77_MS7751,
|
||||
Z68_MS7672,
|
||||
X570_Gaming_Plus,
|
||||
X870_TOMAHAWK_WIFI,
|
||||
Z890_CARBON_WIFI,
|
||||
B650M_PROJECT_ZERO,
|
||||
X870E_TOMAHAWK_WIFI,
|
||||
X870E_CARBON_WIFI,
|
||||
X870_P_WIFI,
|
||||
Z890_EDGE_TI_WIFI,
|
||||
|
||||
// EVGA
|
||||
X58_SLI_Classified,
|
||||
|
||||
@@ -483,6 +483,76 @@ internal sealed class SuperIOHardware : Hardware
|
||||
|
||||
break;
|
||||
|
||||
case Manufacturer.MSI when model == Model.X870_TOMAHAWK_WIFI: //NCT6687D with 9 fans
|
||||
case Manufacturer.MSI when model == Model.X870_TOMAHAWK_WIFI:
|
||||
case Manufacturer.MSI when model == Model.Z890_CARBON_WIFI:
|
||||
case Manufacturer.MSI when model == Model.X870E_TOMAHAWK_WIFI:
|
||||
case Manufacturer.MSI when model == Model.X870E_CARBON_WIFI:
|
||||
case Manufacturer.MSI when model == Model.X870_P_WIFI:
|
||||
case Manufacturer.MSI when model == Model.Z890_EDGE_TI_WIFI:
|
||||
v.Add(new Voltage("+12V", 0));
|
||||
v.Add(new Voltage("+5V", 1));
|
||||
v.Add(new Voltage("CPU Northbridge/SoC", 2));
|
||||
v.Add(new Voltage("VDDIO", 3, 1, 1, 0));
|
||||
v.Add(new Voltage("Vcore", 4, -1, 2, 0));
|
||||
v.Add(new Voltage("+3.3V", 8));
|
||||
v.Add(new Voltage("+3V Standby", 11));
|
||||
v.Add(new Voltage("AVSB", 12));
|
||||
v.Add(new Voltage("CPU Termination", 9));
|
||||
v.Add(new Voltage("CMOS Battery", 13));
|
||||
|
||||
t.Add(new Temperature("CPU", 0));
|
||||
t.Add(new Temperature("System", 1));
|
||||
t.Add(new Temperature("VRM MOS", 2));
|
||||
t.Add(new Temperature("Chipset A", 3));
|
||||
|
||||
f.Add(new Fan("CPU Fan", 0));
|
||||
f.Add(new Fan("Pump Fan", 1));
|
||||
f.Add(new Fan("EZConn Fan", 3));
|
||||
f.Add(new Fan("System Fan #6", 10));
|
||||
f.Add(new Fan("System Fan #5", 11));
|
||||
f.Add(new Fan("System Fan #4", 12));
|
||||
f.Add(new Fan("System Fan #3", 13));
|
||||
f.Add(new Fan("System Fan #2", 14));
|
||||
f.Add(new Fan("System Fan #1", 15));
|
||||
|
||||
c.Add(new Control("CPU Fan", 0));
|
||||
c.Add(new Control("Pump Fan", 1));
|
||||
c.Add(new Control("EZConn Fan", 3));
|
||||
break;
|
||||
|
||||
case Manufacturer.MSI when model == Model.Z890_CARBON_WIFI: //NCT6687D with 8 fans
|
||||
case Manufacturer.MSI when model == Model.X870E_CARBON_WIFI:
|
||||
v.Add(new Voltage("+12V", 0));
|
||||
v.Add(new Voltage("+5V", 1));
|
||||
v.Add(new Voltage("CPU Northbridge/SoC", 2));
|
||||
v.Add(new Voltage("VDDIO", 3, 1, 1, 0));
|
||||
v.Add(new Voltage("Vcore", 4, -1, 2, 0));
|
||||
v.Add(new Voltage("+3.3V", 8));
|
||||
v.Add(new Voltage("+3V Standby", 11));
|
||||
v.Add(new Voltage("AVSB", 12));
|
||||
v.Add(new Voltage("CPU Termination", 9));
|
||||
v.Add(new Voltage("CMOS Battery", 13));
|
||||
|
||||
t.Add(new Temperature("CPU", 0));
|
||||
t.Add(new Temperature("System", 1));
|
||||
t.Add(new Temperature("VRM MOS", 2));
|
||||
t.Add(new Temperature("Chipset A", 3));
|
||||
|
||||
f.Add(new Fan("CPU Fan", 0));
|
||||
f.Add(new Fan("Pump Fan", 1));
|
||||
f.Add(new Fan("EZConn Fan", 3));
|
||||
f.Add(new Fan("System Fan #5", 11));
|
||||
f.Add(new Fan("System Fan #4", 12));
|
||||
f.Add(new Fan("System Fan #3", 13));
|
||||
f.Add(new Fan("System Fan #2", 14));
|
||||
f.Add(new Fan("System Fan #1", 15));
|
||||
|
||||
c.Add(new Control("CPU Fan", 0));
|
||||
c.Add(new Control("Pump Fan", 1));
|
||||
c.Add(new Control("EZConn Fan", 3));
|
||||
break;
|
||||
|
||||
default:
|
||||
v.Add(new Voltage("+12V", 0));
|
||||
v.Add(new Voltage("+5V", 1));
|
||||
|
||||
Reference in New Issue
Block a user