Add support for AMD Ryzen 5000 processors (#328)

* Add bare-minimum support for family 0x19

* Treat Zen 3 like Zen 2 in most-cases

* Remove mistakenly added whitespace
This commit is contained in:
Lucas Towers
2020-11-14 20:16:51 +01:00
committed by GitHub
parent 51d76e1a16
commit a80b455eaa
3 changed files with 8 additions and 6 deletions
@@ -164,7 +164,7 @@ namespace LibreHardwareMonitor.Hardware.CPU
Ring0.WritePciConfig(0x00, FAMILY_17H_PCI_CONTROL_REGISTER, F17H_M01H_SVI + 0x8);
Ring0.ReadPciConfig(0x00, FAMILY_17H_PCI_CONTROL_REGISTER + 4, out smuSvi0Tfn);
bool isZen2 = false;
bool supportsPerCCDTemperatures = false;
// TODO: find a better way because these will probably keep changing in the future.
@@ -176,14 +176,15 @@ namespace LibreHardwareMonitor.Hardware.CPU
{
sviPlane0Offset = F17H_M01H_SVI + 0x14;
sviPlane1Offset = F17H_M01H_SVI + 0x10;
isZen2 = true;
supportsPerCCDTemperatures = true;
break;
}
case 0x71: // Zen 2.
case 0x21: // Zen 3.
{
sviPlane0Offset = F17H_M01H_SVI + 0x10;
sviPlane1Offset = F17H_M01H_SVI + 0xC;
isZen2 = true;
supportsPerCCDTemperatures = true;
break;
}
default: // Zen and Zen+.
@@ -270,7 +271,7 @@ namespace LibreHardwareMonitor.Hardware.CPU
}
// Tested only on R5 3600 & Threadripper 3960X.
if (isZen2)
if (supportsPerCCDTemperatures)
{
for (uint i = 0; i < _ccdTemperatures.Length; i++)
{
@@ -339,7 +340,7 @@ namespace LibreHardwareMonitor.Hardware.CPU
}
// SoC (0x02), not every Zen cpu has this voltage.
if (cpu.Model == 0x71 || cpu.Model == 0x31 || (smuSvi0Tfn & 0x02) == 0)
if (cpu.Model == 0x21 || cpu.Model == 0x71 || cpu.Model == 0x31 || (smuSvi0Tfn & 0x02) == 0)
{
svi0PlaneXVddCor = (smuSvi0TelPlane1 >> 16) & 0xff;
vcc = 1.550 - vidStep * svi0PlaneXVddCor;
@@ -51,6 +51,7 @@ namespace LibreHardwareMonitor.Hardware.CPU
_hardware.Add(new Amd10Cpu(index, coreThreads, settings));
break;
case 0x17:
case 0x19:
_hardware.Add(new Amd17Cpu(index, coreThreads, settings));
break;
default:
@@ -168,7 +168,7 @@ namespace LibreHardwareMonitor.Hardware.CPU
threadMaskWith = 0;
coreMaskWith = NextLog2(corePerPackage);
if (Family == 0x17)
if (Family == 0x17 || Family == 0x19)
{
// ApicIdCoreIdSize: APIC ID size.
// cores per DIE