]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amd/pm: Add VCN reset message support for SMU v13.0.12
authorJesse.Zhang <Jesse.Zhang@amd.com>
Mon, 22 Sep 2025 01:40:51 +0000 (09:40 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 23 Sep 2025 14:41:41 +0000 (10:41 -0400)
This commit adds support for VCN reset functionality in SMU v13.0.12 by:

1. Adding two new PPSMC messages in smu_v13_0_12_ppsmc.h:
   - PPSMC_MSG_ResetVCN (0x5E)
   - Updates PPSMC_Message_Count to 0x5F to account for new messages

2. Adding message mapping for ResetVCN in smu_v13_0_12_ppt.c:
   - Maps SMU_MSG_ResetVCN to PPSMC_MSG_ResetVCN

These changes enable proper VCN reset handling through the SMU firmware
interface for compatible AMD GPUs.

v2: Added fw version check to support vcn queue reset.

Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Sonny Jiang <sonny.jiang@amd.com>
Signed-off-by: Jesse Zhang <Jesse.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_12_ppsmc.h
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c

index aff2776a8b6f42887deed548075b726ba9bb6c69..4b066c42e0ec9b9546380a7072f2be134563227f 100644 (file)
 #define PPSMC_MSG_GetBadPageSeverity                0x5B
 #define PPSMC_MSG_GetSystemMetricsTable             0x5C
 #define PPSMC_MSG_GetSystemMetricsVersion           0x5D
-#define PPSMC_Message_Count                         0x5E
+#define PPSMC_MSG_ResetVCN                          0x5E
+#define PPSMC_Message_Count                         0x5F
 
 //PPSMC Reset Types for driver msg argument
 #define PPSMC_RESET_TYPE_DRIVER_MODE_1_RESET        0x1
index 1842a33b2bce74792412be621d2cd8a6f3cdb81a..cb3fea9e8cf319d0de0ca5356b23205ac2779b60 100644 (file)
@@ -136,6 +136,7 @@ const struct cmn2asic_msg_mapping smu_v13_0_12_message_map[SMU_MSG_MAX_COUNT] =
        MSG_MAP(RmaDueToBadPageThreshold,            PPSMC_MSG_RmaDueToBadPageThreshold,        0),
        MSG_MAP(SetThrottlingPolicy,                 PPSMC_MSG_SetThrottlingPolicy,             0),
        MSG_MAP(ResetSDMA,                           PPSMC_MSG_ResetSDMA,                       0),
+       MSG_MAP(ResetVCN,                            PPSMC_MSG_ResetVCN,                        0),
        MSG_MAP(GetStaticMetricsTable,               PPSMC_MSG_GetStaticMetricsTable,           1),
        MSG_MAP(GetSystemMetricsTable,               PPSMC_MSG_GetSystemMetricsTable,           1),
 };
index 349b6b8be0108bb46eeb0d41cbcbc4365f736a05..cbe5b06438c155c36683ecdaf4451d6e9eb26747 100644 (file)
@@ -353,6 +353,9 @@ static void smu_v13_0_12_init_caps(struct smu_context *smu)
                smu_v13_0_6_cap_set(smu, SMU_CAP(PLDM_VERSION));
        }
 
+       if (fw_ver > 0x04560900)
+               smu_v13_0_6_cap_set(smu, SMU_CAP(VCN_RESET));
+
        if (fw_ver >= 0x04560700) {
                if (fw_ver >= 0x04560900) {
                        smu_v13_0_6_cap_set(smu, SMU_CAP(TEMP_METRICS));