The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=a9a71513ccfcb38346c84b006b43d45511d1652c

commit a9a71513ccfcb38346c84b006b43d45511d1652c
Author:     Simon Wells <swel...@gmail.com>
AuthorDate: 2025-01-12 11:46:05 +0000
Commit:     Konstantin Belousov <k...@freebsd.org>
CommitDate: 2025-01-12 12:14:01 +0000

    amdsmn(4), amdtemp(4): add support for Zen 5
    
    Zen 5 support, tested on Ryzen 7 9700X
    
    PR:     284010
    MFC after:      1 week
---
 sys/dev/amdsmn/amdsmn.c   |  3 ++-
 sys/dev/amdtemp/amdtemp.c | 28 +++++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/sys/dev/amdsmn/amdsmn.c b/sys/dev/amdsmn/amdsmn.c
index 9f5c55b1abd6..1fc93a68fbf3 100644
--- a/sys/dev/amdsmn/amdsmn.c
+++ b/sys/dev/amdsmn/amdsmn.c
@@ -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);
diff --git a/sys/dev/amdtemp/amdtemp.c b/sys/dev/amdtemp/amdtemp.c
index 0c423e0b2502..b609c0944499 100644
--- a/sys/dev/amdtemp/amdtemp.c
+++ b/sys/dev/amdtemp/amdtemp.c
@@ -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);
+}

Reply via email to