Change-Id: I68d47d2f9c9021514543ac9386012cc4056b2fe5
Signed-off-by: Evan Quan <evan.q...@amd.com>
---
 .../gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c   | 30 +++++++++++++++++-----
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c 
b/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
index 2696784..408514c 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
@@ -356,6 +356,9 @@ int vega10_set_tools_address(struct pp_smumgr *smumgr)
 static int vega10_verify_smc_interface(struct pp_smumgr *smumgr)
 {
        uint32_t smc_driver_if_version;
+       struct cgs_system_info sys_info = {0};
+       uint32_t dev_id;
+       uint32_t rev_id;
 
        PP_ASSERT_WITH_CODE(!vega10_send_msg_to_smc(smumgr,
                        PPSMC_MSG_GetDriverIfVersion),
@@ -363,12 +366,27 @@ static int vega10_verify_smc_interface(struct pp_smumgr 
*smumgr)
                        return -EINVAL);
        vega10_read_arg_from_smc(smumgr, &smc_driver_if_version);
 
-       if (smc_driver_if_version != SMU9_DRIVER_IF_VERSION) {
-               pr_err("Your firmware(0x%x) doesn't match \
-                       SMU9_DRIVER_IF_VERSION(0x%x). \
-                       Please update your firmware!\n",
-                       smc_driver_if_version, SMU9_DRIVER_IF_VERSION);
-               return -EINVAL;
+       sys_info.size = sizeof(struct cgs_system_info);
+       sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+       cgs_query_system_info(smumgr->device, &sys_info);
+       dev_id = (uint32_t)sys_info.value;
+
+       sys_info.size = sizeof(struct cgs_system_info);
+       sys_info.info_id = CGS_SYSTEM_INFO_PCIE_REV;
+       cgs_query_system_info(smumgr->device, &sys_info);
+       rev_id = (uint32_t)sys_info.value;
+
+       if (!((dev_id == 0x687f) &&
+               ((rev_id == 0xc0) ||
+               (rev_id == 0xc1) ||
+               (rev_id == 0xc3)))) {
+               if (smc_driver_if_version != SMU9_DRIVER_IF_VERSION) {
+                       pr_err("Your firmware(0x%x) doesn't match \
+                               SMU9_DRIVER_IF_VERSION(0x%x). \
+                               Please update your firmware!\n",
+                               smc_driver_if_version, SMU9_DRIVER_IF_VERSION);
+                       return -EINVAL;
+               }
        }
 
        return 0;
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to