Skip to content

Commit 7753ee9

Browse files
damesenedamesenePhyxionNL
authored
Proart x870e creator wifi (#1547)
* fix line endings to lf * add support for proart_x870e_creator_wifi --------- Co-authored-by: damesene <reg.sliva@hotmail.com> Co-authored-by: PhyxionNL <7643972+PhyxionNL@users.noreply.github.com>
1 parent 09197be commit 7753ee9

5 files changed

Lines changed: 110 additions & 79 deletions

File tree

LibreHardwareMonitorLib/Hardware/Motherboard/Identification.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,8 @@ public static Model GetModel(string name)
607607
return Model.X870E_AORUS_PRO;
608608
case var _ when name.Equals("X870E AORUS PRO ICE", StringComparison.OrdinalIgnoreCase):
609609
return Model.X870E_AORUS_PRO_ICE;
610+
case var _ when name.Equals("PROART X870E-CREATOR WIFI", StringComparison.OrdinalIgnoreCase):
611+
return Model.PROART_X870E_CREATOR_WIFI;
610612
case var _ when name.Equals("PRIME X870-P", StringComparison.OrdinalIgnoreCase):
611613
return Model.PRIME_X870_P;
612614
case var _ when name.Equals("ROG CROSSHAIR X870E HERO", StringComparison.OrdinalIgnoreCase):

LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/LpcIO.cs

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -403,9 +403,9 @@ private bool DetectWinbondFintek(LpcPort port)
403403
chip = Chip.NCT6799D;
404404
logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
405405
break;
406-
case 0x06:
407-
chip = Chip.NCT6701D;
408-
logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
406+
case 0x06:
407+
chip = Chip.NCT6701D;
408+
logicalDeviceNumber = WINBOND_NUVOTON_HARDWARE_MONITOR_LDN;
409409
break;
410410
}
411411

@@ -549,7 +549,7 @@ private bool DetectIT87(LpcPort port, Motherboard motherboard)
549549
port.IT87Enter();
550550
chipId = port.ReadWord(CHIP_ID_REGISTER);
551551
}
552-
552+
553553
Chip chip = chipId switch
554554
{
555555
0x8613 => Chip.IT8613E,
@@ -649,41 +649,41 @@ private bool DetectIT87(LpcPort port, Motherboard motherboard)
649649
return false;
650650
}
651651

652-
private IGigabyteController FindGigabyteEC(LpcPort port, Chip chip, Motherboard motherboard)
652+
private IGigabyteController FindGigabyteEC(LpcPort port, Chip chip, Motherboard motherboard)
653653
{
654654
// The controller only affects the 2nd ITE chip if present, and only a few
655655
// models are known to use this controller.
656656
// IT8795E likely to need this too, but may use different registers.
657657
if (motherboard.Manufacturer != Manufacturer.Gigabyte || port.RegisterPort != 0x4E || chip is not (Chip.IT8790E or Chip.IT8792E or Chip.IT87952E))
658-
return null;
659-
660-
Vendor vendor = DetectVendor();
661-
662-
IGigabyteController gigabyteController = FindGigabyteECUsingSmfi(port, chip, vendor);
663-
if (gigabyteController != null)
664-
return gigabyteController;
665-
666-
// ECIO is only available on AMD motherboards with IT8791E/IT8792E/IT8795E.
667-
if (chip == Chip.IT8792E && vendor == Vendor.AMD)
668-
{
669-
gigabyteController = EcioPortGigabyteController.TryCreate();
670-
if (gigabyteController != null)
671-
return gigabyteController;
672-
}
673-
674-
return null;
675-
676-
Vendor DetectVendor()
677-
{
678-
string manufacturer = motherboard.SMBios.Processors[0].ManufacturerName;
679-
if (manufacturer.IndexOf("Intel", StringComparison.OrdinalIgnoreCase) != -1)
680-
return Vendor.Intel;
681-
682-
if (manufacturer.IndexOf("Advanced Micro Devices", StringComparison.OrdinalIgnoreCase) != -1 || manufacturer.StartsWith("AMD", StringComparison.OrdinalIgnoreCase))
683-
return Vendor.AMD;
684-
685-
return Vendor.Unknown;
686-
}
658+
return null;
659+
660+
Vendor vendor = DetectVendor();
661+
662+
IGigabyteController gigabyteController = FindGigabyteECUsingSmfi(port, chip, vendor);
663+
if (gigabyteController != null)
664+
return gigabyteController;
665+
666+
// ECIO is only available on AMD motherboards with IT8791E/IT8792E/IT8795E.
667+
if (chip == Chip.IT8792E && vendor == Vendor.AMD)
668+
{
669+
gigabyteController = EcioPortGigabyteController.TryCreate();
670+
if (gigabyteController != null)
671+
return gigabyteController;
672+
}
673+
674+
return null;
675+
676+
Vendor DetectVendor()
677+
{
678+
string manufacturer = motherboard.SMBios.Processors[0].ManufacturerName;
679+
if (manufacturer.IndexOf("Intel", StringComparison.OrdinalIgnoreCase) != -1)
680+
return Vendor.Intel;
681+
682+
if (manufacturer.IndexOf("Advanced Micro Devices", StringComparison.OrdinalIgnoreCase) != -1 || manufacturer.StartsWith("AMD", StringComparison.OrdinalIgnoreCase))
683+
return Vendor.AMD;
684+
685+
return Vendor.Unknown;
686+
}
687687
}
688688

689689
private IGigabyteController FindGigabyteECUsingSmfi(LpcPort port, Chip chip, Vendor vendor)

LibreHardwareMonitorLib/Hardware/Motherboard/Lpc/Nct677X.cs

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -820,33 +820,33 @@ private byte ReadByte(ushort address)
820820
}
821821

822822
byte page = (byte)(address >> 8);
823-
byte index = (byte)(address & 0xFF);
824-
825-
//wait for access, access == EC_SPACE_PAGE_SELECT
826-
//timeout: after 500ms, abort and force access
827-
byte access;
828-
829-
DateTime timeout = DateTime.UtcNow.AddMilliseconds(500);
830-
while (true)
831-
{
832-
access = Ring0.ReadIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET);
833-
if (access == EC_SPACE_PAGE_SELECT || DateTime.UtcNow > timeout)
834-
break;
835-
836-
System.Threading.Thread.Sleep(1);
837-
}
838-
839-
if (access != EC_SPACE_PAGE_SELECT)
840-
{
841-
// Failed to gain access: force register access
842-
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, EC_SPACE_PAGE_SELECT);
843-
}
844-
823+
byte index = (byte)(address & 0xFF);
824+
825+
//wait for access, access == EC_SPACE_PAGE_SELECT
826+
//timeout: after 500ms, abort and force access
827+
byte access;
828+
829+
DateTime timeout = DateTime.UtcNow.AddMilliseconds(500);
830+
while (true)
831+
{
832+
access = Ring0.ReadIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET);
833+
if (access == EC_SPACE_PAGE_SELECT || DateTime.UtcNow > timeout)
834+
break;
835+
836+
System.Threading.Thread.Sleep(1);
837+
}
838+
839+
if (access != EC_SPACE_PAGE_SELECT)
840+
{
841+
// Failed to gain access: force register access
842+
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, EC_SPACE_PAGE_SELECT);
843+
}
844+
845845
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, page);
846846
Ring0.WriteIoPort(_port + EC_SPACE_INDEX_REGISTER_OFFSET, index);
847-
byte result = Ring0.ReadIoPort(_port + EC_SPACE_DATA_REGISTER_OFFSET);
848-
849-
//free access for other instances
847+
byte result = Ring0.ReadIoPort(_port + EC_SPACE_DATA_REGISTER_OFFSET);
848+
849+
//free access for other instances
850850
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, EC_SPACE_PAGE_SELECT);
851851

852852
return result;
@@ -866,26 +866,26 @@ private void WriteByte(ushort address, byte value)
866866
else
867867
{
868868
byte page = (byte)(address >> 8);
869-
byte index = (byte)(address & 0xFF);
870-
871-
//wait for access, access == EC_SPACE_PAGE_SELECT
872-
//timeout: after 500ms, abort and force access
873-
byte access;
874-
875-
DateTime timeout = DateTime.UtcNow.AddMilliseconds(500);
876-
while (true)
877-
{
878-
access = Ring0.ReadIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET);
879-
if (access == EC_SPACE_PAGE_SELECT || DateTime.UtcNow > timeout)
880-
break;
881-
882-
System.Threading.Thread.Sleep(1);
883-
}
884-
885-
if (access != EC_SPACE_PAGE_SELECT)
886-
{
887-
// Failed to gain access: force register access
888-
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, EC_SPACE_PAGE_SELECT);
869+
byte index = (byte)(address & 0xFF);
870+
871+
//wait for access, access == EC_SPACE_PAGE_SELECT
872+
//timeout: after 500ms, abort and force access
873+
byte access;
874+
875+
DateTime timeout = DateTime.UtcNow.AddMilliseconds(500);
876+
while (true)
877+
{
878+
access = Ring0.ReadIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET);
879+
if (access == EC_SPACE_PAGE_SELECT || DateTime.UtcNow > timeout)
880+
break;
881+
882+
System.Threading.Thread.Sleep(1);
883+
}
884+
885+
if (access != EC_SPACE_PAGE_SELECT)
886+
{
887+
// Failed to gain access: force register access
888+
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, EC_SPACE_PAGE_SELECT);
889889
}
890890

891891
Ring0.WriteIoPort(_port + EC_SPACE_PAGE_REGISTER_OFFSET, page);

LibreHardwareMonitorLib/Hardware/Motherboard/Model.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ public enum Model
254254
B650M_AORUS_ELITE_AX,
255255
X870E_AORUS_PRO,
256256
X870E_AORUS_PRO_ICE,
257+
PROART_X870E_CREATOR_WIFI,
257258

258259
// Shuttle
259260
FH67,

LibreHardwareMonitorLib/Hardware/Motherboard/SuperIOHardware.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4430,6 +4430,34 @@ private static void GetNuvotonConfigurationD(ISuperIO superIO, Manufacturer manu
44304430

44314431
break;
44324432

4433+
case Model.PROART_X870E_CREATOR_WIFI: // ITE IT8696E
4434+
v.Add(new Voltage("Vcore", 0));
4435+
v.Add(new Voltage("Voltage #2", 1, true));
4436+
v.Add(new Voltage("AVCC", 2, 34, 34));
4437+
v.Add(new Voltage("+3.3V", 3, 34, 34));
4438+
v.Add(new Voltage("Voltage #5", 4, true));
4439+
v.Add(new Voltage("Voltage #6", 5, true));
4440+
v.Add(new Voltage("Voltage #7", 6, true));
4441+
v.Add(new Voltage("+3V Standby", 7, 34, 34));
4442+
v.Add(new Voltage("CMOS Battery", 8, 34, 34));
4443+
v.Add(new Voltage("CPU Termination", 9));
4444+
v.Add(new Voltage("Voltage #11", 10, true));
4445+
v.Add(new Voltage("Voltage #12", 11, true));
4446+
v.Add(new Voltage("Voltage #13", 12, true));
4447+
v.Add(new Voltage("Voltage #14", 13, true));
4448+
v.Add(new Voltage("Voltage #15", 14, true));
4449+
4450+
t.Add(new Temperature("Motherboard", 2));
4451+
t.Add(new Temperature("CPU", 22));
4452+
4453+
for (int i = 0; i < superIO.Fans.Length; i++)
4454+
f.Add(new Fan("Fan #" + (i + 1), i));
4455+
4456+
for (int i = 0; i < superIO.Controls.Length; i++)
4457+
c.Add(new Control("Fan #" + (i + 1), i));
4458+
4459+
break;
4460+
44334461
default:
44344462
v.Add(new Voltage("Vcore", 0));
44354463
v.Add(new Voltage("Voltage #2", 1, true));

0 commit comments

Comments
 (0)