Use common helper function for firmware version check and logging in
SMUv14

Signed-off-by: Lijo Lazar <[email protected]>
---
 drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h  |  7 ---
 .../gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c    | 60 -------------------
 .../drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c  | 18 +++++-
 .../drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c  |  5 +-
 4 files changed, 21 insertions(+), 69 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h 
b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h
index b453e6efc7c9..4eb40ff8aff2 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h
@@ -25,11 +25,6 @@
 
 #include "amdgpu_smu.h"
 
-#define SMU14_DRIVER_IF_VERSION_INV 0xFFFFFFFF
-#define SMU14_DRIVER_IF_VERSION_SMU_V14_0_0 0x7
-#define SMU14_DRIVER_IF_VERSION_SMU_V14_0_1 0x6
-#define SMU14_DRIVER_IF_VERSION_SMU_V14_0_2 0x2E
-
 #define FEATURE_MASK(feature) (1ULL << feature)
 
 /* MP Apertures */
@@ -124,8 +119,6 @@ int smu_v14_0_setup_pptable(struct smu_context *smu);
 
 int smu_v14_0_get_vbios_bootup_values(struct smu_context *smu);
 
-int smu_v14_0_check_fw_version(struct smu_context *smu);
-
 int smu_v14_0_set_driver_table_location(struct smu_context *smu);
 
 int smu_v14_0_set_tool_table_location(struct smu_context *smu);
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
index 9f01bed3970e..61655841c2e2 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
@@ -229,66 +229,6 @@ int smu_v14_0_check_fw_status(struct smu_context *smu)
        return -EIO;
 }
 
-int smu_v14_0_check_fw_version(struct smu_context *smu)
-{
-       struct amdgpu_device *adev = smu->adev;
-       uint32_t if_version = 0xff, smu_version = 0xff;
-       uint8_t smu_program, smu_major, smu_minor, smu_debug;
-       int ret = 0;
-
-       ret = smu_cmn_get_smc_version(smu, &if_version, &smu_version);
-       if (ret)
-               return ret;
-
-       smu_program = (smu_version >> 24) & 0xff;
-       smu_major = (smu_version >> 16) & 0xff;
-       smu_minor = (smu_version >> 8) & 0xff;
-       smu_debug = (smu_version >> 0) & 0xff;
-       if (smu->is_apu)
-               adev->pm.fw_version = smu_version;
-
-       switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
-       case IP_VERSION(14, 0, 0):
-       case IP_VERSION(14, 0, 4):
-       case IP_VERSION(14, 0, 5):
-               smu->smc_driver_if_version = 
SMU14_DRIVER_IF_VERSION_SMU_V14_0_0;
-               break;
-       case IP_VERSION(14, 0, 1):
-               smu->smc_driver_if_version = 
SMU14_DRIVER_IF_VERSION_SMU_V14_0_1;
-               break;
-       case IP_VERSION(14, 0, 2):
-       case IP_VERSION(14, 0, 3):
-               smu->smc_driver_if_version = 
SMU14_DRIVER_IF_VERSION_SMU_V14_0_2;
-               break;
-       default:
-               dev_err(adev->dev, "smu unsupported IP version: 0x%x.\n",
-                       amdgpu_ip_version(adev, MP1_HWIP, 0));
-               smu->smc_driver_if_version = SMU14_DRIVER_IF_VERSION_INV;
-               break;
-       }
-
-       if (adev->pm.fw)
-               dev_dbg(smu->adev->dev, "smu fw reported program %d, version = 
0x%08x (%d.%d.%d)\n",
-                        smu_program, smu_version, smu_major, smu_minor, 
smu_debug);
-
-       /*
-        * 1. if_version mismatch is not critical as our fw is designed
-        * to be backward compatible.
-        * 2. New fw usually brings some optimizations. But that's visible
-        * only on the paired driver.
-        * Considering above, we just leave user a verbal message instead
-        * of halt driver loading.
-        */
-       if (if_version != smu->smc_driver_if_version) {
-               dev_info(adev->dev, "smu driver if version = 0x%08x, smu fw if 
version = 0x%08x, "
-                        "smu fw program = %d, smu fw version = 0x%08x 
(%d.%d.%d)\n",
-                        smu->smc_driver_if_version, if_version,
-                        smu_program, smu_version, smu_major, smu_minor, 
smu_debug);
-       }
-
-       return ret;
-}
-
 static int smu_v14_0_set_pptable_v2_0(struct smu_context *smu, void **table, 
uint32_t *size)
 {
        struct amdgpu_device *adev = smu->adev;
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
index dbdf7653cc53..c76b1f07885e 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
@@ -65,6 +65,9 @@
 
 #define SMU_MALL_PG_CONFIG_DEFAULT SMU_MALL_PG_CONFIG_DRIVER_CONTROL_ALWAYS_ON
 
+#define SMU14_DRIVER_IF_VERSION_SMU_V14_0_0 0x7
+#define SMU14_DRIVER_IF_VERSION_SMU_V14_0_1 0x6
+
 #define SMU_14_0_0_UMD_PSTATE_GFXCLK                   700
 #define SMU_14_0_0_UMD_PSTATE_SOCCLK                   678
 #define SMU_14_0_0_UMD_PSTATE_FCLK                     1800
@@ -1699,7 +1702,7 @@ static int smu_v14_0_0_restore_user_od_settings(struct 
smu_context *smu)
 
 static const struct pptable_funcs smu_v14_0_0_ppt_funcs = {
        .check_fw_status = smu_v14_0_check_fw_status,
-       .check_fw_version = smu_v14_0_check_fw_version,
+       .check_fw_version = smu_cmn_check_fw_version,
        .init_smc_tables = smu_v14_0_0_init_smc_tables,
        .fini_smc_tables = smu_v14_0_0_fini_smc_tables,
        .get_vbios_bootup_values = smu_v14_0_get_vbios_bootup_values,
@@ -1750,10 +1753,23 @@ static void smu_v14_0_0_init_msg_ctl(struct smu_context 
*smu)
 
 void smu_v14_0_0_set_ppt_funcs(struct smu_context *smu)
 {
+       struct amdgpu_device *adev = smu->adev;
+
        smu->ppt_funcs = &smu_v14_0_0_ppt_funcs;
        smu->feature_map = smu_v14_0_0_feature_mask_map;
        smu->table_map = smu_v14_0_0_table_map;
        smu->is_apu = true;
 
+       switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
+       case IP_VERSION(14, 0, 0):
+       case IP_VERSION(14, 0, 4):
+       case IP_VERSION(14, 0, 5):
+               smu->smc_driver_if_version = 
SMU14_DRIVER_IF_VERSION_SMU_V14_0_0;
+               break;
+       case IP_VERSION(14, 0, 1):
+               smu->smc_driver_if_version = 
SMU14_DRIVER_IF_VERSION_SMU_V14_0_1;
+               break;
+       }
+
        smu_v14_0_0_init_msg_ctl(smu);
 }
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c
index 23a143b36fd0..236ccb9d7d89 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c
@@ -64,6 +64,8 @@ static const struct smu_feature_bits smu_v14_0_2_dpm_features 
= {
                  SMU_FEATURE_BIT_INIT(FEATURE_DPM_FCLK_BIT) }
 };
 
+#define SMU14_DRIVER_IF_VERSION_SMU_V14_0_2 0x2E
+
 #define MP0_MP1_DATA_REGION_SIZE_COMBOPPTABLE  0x4000
 #define DEBUGSMC_MSG_Mode1Reset        2
 #define LINK_SPEED_MAX                                 3
@@ -2768,7 +2770,7 @@ static const struct pptable_funcs smu_v14_0_2_ppt_funcs = 
{
        .fini_power = smu_v14_0_fini_power,
        .check_fw_status = smu_v14_0_check_fw_status,
        .setup_pptable = smu_v14_0_2_setup_pptable,
-       .check_fw_version = smu_v14_0_check_fw_version,
+       .check_fw_version = smu_cmn_check_fw_version,
        .set_driver_table_location = smu_v14_0_set_driver_table_location,
        .system_features_control = smu_v14_0_system_features_control,
        .set_allowed_mask = smu_v14_0_set_allowed_mask,
@@ -2833,5 +2835,6 @@ void smu_v14_0_2_set_ppt_funcs(struct smu_context *smu)
        smu->table_map = smu_v14_0_2_table_map;
        smu->pwr_src_map = smu_v14_0_2_pwr_src_map;
        smu->workload_map = smu_v14_0_2_workload_map;
+       smu->smc_driver_if_version = SMU14_DRIVER_IF_VERSION_SMU_V14_0_2;
        smu_v14_0_2_init_msg_ctl(smu);
 }
-- 
2.49.0

Reply via email to