drm/amdgpu:add fw version entry to info
authorFrank Min <Frank.Min@amd.com>
Wed, 27 Apr 2016 10:53:29 +0000 (18:53 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 22 Sep 2016 14:24:15 +0000 (10:24 -0400)
Signed-off-by: Frank Min <Frank.Min@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
drivers/gpu/drm/amd/include/cgs_common.h [changed mode: 0644->0755]
drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c [changed mode: 0644->0755]

index f1c53a2b09c6441b99e257dc3139d0bd9d06a12c..7a8bfa34682fdd8a92959d43328a7de058b42b7f 100644 (file)
@@ -711,6 +711,47 @@ static int amdgpu_cgs_rel_firmware(struct cgs_device *cgs_device, enum cgs_ucode
        return -EINVAL;
 }
 
+static uint16_t amdgpu_get_firmware_version(struct cgs_device *cgs_device,
+                                       enum cgs_ucode_id type)
+{
+       CGS_FUNC_ADEV;
+       uint16_t fw_version;
+
+       switch (type) {
+               case CGS_UCODE_ID_SDMA0:
+                       fw_version = adev->sdma.instance[0].fw_version;
+                       break;
+               case CGS_UCODE_ID_SDMA1:
+                       fw_version = adev->sdma.instance[1].fw_version;
+                       break;
+               case CGS_UCODE_ID_CP_CE:
+                       fw_version = adev->gfx.ce_fw_version;
+                       break;
+               case CGS_UCODE_ID_CP_PFP:
+                       fw_version = adev->gfx.pfp_fw_version;
+                       break;
+               case CGS_UCODE_ID_CP_ME:
+                       fw_version = adev->gfx.me_fw_version;
+                       break;
+               case CGS_UCODE_ID_CP_MEC:
+                       fw_version = adev->gfx.mec_fw_version;
+                       break;
+               case CGS_UCODE_ID_CP_MEC_JT1:
+                       fw_version = adev->gfx.mec_fw_version;
+                       break;
+               case CGS_UCODE_ID_CP_MEC_JT2:
+                       fw_version = adev->gfx.mec_fw_version;
+                       break;
+               case CGS_UCODE_ID_RLC_G:
+                       fw_version = adev->gfx.rlc_fw_version;
+                       break;
+               default:
+                       DRM_ERROR("firmware type %d do not have version\n", type);
+                       fw_version = 0;
+       }
+       return fw_version;
+}
+
 static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
                                        enum cgs_ucode_id type,
                                        struct cgs_firmware_info *info)
@@ -741,6 +782,7 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
                info->mc_addr = gpu_addr;
                info->image_size = data_size;
                info->version = (uint16_t)le32_to_cpu(header->header.ucode_version);
+               info->fw_version = amdgpu_get_firmware_version(cgs_device, type);
                info->feature_version = (uint16_t)le32_to_cpu(header->ucode_feature_version);
        } else {
                char fw_name[30] = {0};
old mode 100644 (file)
new mode 100755 (executable)
index 6aa8938..df7c18b
@@ -161,6 +161,7 @@ struct cgs_clock_limits {
  */
 struct cgs_firmware_info {
        uint16_t                version;
+       uint16_t                fw_version;
        uint16_t                feature_version;
        uint32_t                image_size;
        uint64_t                mc_addr;