mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-04 17:15:50 +00:00
amdsmn(4), amdtemp(4): add support for Zen 5
Zen 5 support, tested on Ryzen 7 9700X PR: 284010 MFC after: 1 week
This commit is contained in:
parent
7aa6eeb220
commit
a9a71513cc
@ -60,7 +60,7 @@
|
||||
#define PCI_DEVICE_ID_AMD_17H_M60H_ROOT 0x1630 /* Also F19H M50H */
|
||||
#define PCI_DEVICE_ID_AMD_19H_M10H_ROOT 0x14a4
|
||||
#define PCI_DEVICE_ID_AMD_19H_M40H_ROOT 0x14b5
|
||||
#define PCI_DEVICE_ID_AMD_19H_M60H_ROOT 0x14d8
|
||||
#define PCI_DEVICE_ID_AMD_19H_M60H_ROOT 0x14d8 /* Also F1AH M40H */
|
||||
#define PCI_DEVICE_ID_AMD_19H_M70H_ROOT 0x14e8
|
||||
|
||||
struct pciid;
|
||||
@ -211,6 +211,7 @@ amdsmn_probe(device_t dev)
|
||||
case 0x15:
|
||||
case 0x17:
|
||||
case 0x19:
|
||||
case 0x1a:
|
||||
break;
|
||||
default:
|
||||
return (ENXIO);
|
||||
|
@ -115,7 +115,7 @@ struct amdtemp_softc {
|
||||
#define DEVICEID_AMD_HOSTB17H_M60H_ROOT 0x1630 /* Also F19H M50H */
|
||||
#define DEVICEID_AMD_HOSTB19H_M10H_ROOT 0x14a4
|
||||
#define DEVICEID_AMD_HOSTB19H_M40H_ROOT 0x14b5
|
||||
#define DEVICEID_AMD_HOSTB19H_M60H_ROOT 0x14d8
|
||||
#define DEVICEID_AMD_HOSTB19H_M60H_ROOT 0x14d8 /* Also F1AH M40H */
|
||||
#define DEVICEID_AMD_HOSTB19H_M70H_ROOT 0x14e8
|
||||
|
||||
static const struct amdtemp_product {
|
||||
@ -230,6 +230,7 @@ static int32_t amdtemp_gettemp15hm60h(device_t dev, amdsensor_t sensor);
|
||||
static int32_t amdtemp_gettemp17h(device_t dev, amdsensor_t sensor);
|
||||
static void amdtemp_probe_ccd_sensors17h(device_t dev, uint32_t model);
|
||||
static void amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model);
|
||||
static void amdtemp_probe_ccd_sensors1ah(device_t dev, uint32_t model);
|
||||
static int amdtemp_sysctl(SYSCTL_HANDLER_ARGS);
|
||||
|
||||
static device_method_t amdtemp_methods[] = {
|
||||
@ -317,6 +318,7 @@ amdtemp_probe(device_t dev)
|
||||
case 0x16:
|
||||
case 0x17:
|
||||
case 0x19:
|
||||
case 0x1a:
|
||||
break;
|
||||
default:
|
||||
return (ENXIO);
|
||||
@ -476,6 +478,7 @@ amdtemp_attach(device_t dev)
|
||||
break;
|
||||
case 0x17:
|
||||
case 0x19:
|
||||
case 0x1a:
|
||||
sc->sc_ntemps = 1;
|
||||
sc->sc_gettemp = amdtemp_gettemp17h;
|
||||
needsmn = true;
|
||||
@ -539,6 +542,8 @@ amdtemp_attach(device_t dev)
|
||||
amdtemp_probe_ccd_sensors17h(dev, model);
|
||||
else if (family == 0x19)
|
||||
amdtemp_probe_ccd_sensors19h(dev, model);
|
||||
else if (family == 0x1a)
|
||||
amdtemp_probe_ccd_sensors1ah(dev, model);
|
||||
else if (sc->sc_ntemps > 1) {
|
||||
SYSCTL_ADD_PROC(sysctlctx,
|
||||
SYSCTL_CHILDREN(sysctlnode),
|
||||
@ -892,3 +897,24 @@ amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model)
|
||||
|
||||
amdtemp_probe_ccd_sensors(dev, maxreg);
|
||||
}
|
||||
|
||||
static void
|
||||
amdtemp_probe_ccd_sensors1ah(device_t dev, uint32_t model)
|
||||
{
|
||||
struct amdtemp_softc *sc = device_get_softc(dev);
|
||||
uint32_t maxreg;
|
||||
|
||||
switch (model) {
|
||||
case 0x40 ... 0x4f: /* Zen5 Ryzen "Granite Ridge" */
|
||||
sc->sc_temp_base = AMDTEMP_ZEN4_CCD_TMP_BASE;
|
||||
maxreg = 8;
|
||||
_Static_assert((int)NUM_CCDS >= 8, "");
|
||||
break;
|
||||
default:
|
||||
device_printf(dev,
|
||||
"Unrecognized Family 1ah Model: %02xh\n", model);
|
||||
return;
|
||||
}
|
||||
|
||||
amdtemp_probe_ccd_sensors(dev, maxreg);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user