drm/amdgpu: add me/ce/pfp_feature_version interface query
authorKen Wang <Qingqing.Wang@amd.com>
Wed, 3 Jun 2015 11:52:06 +0000 (19:52 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 4 Jun 2015 01:04:02 +0000 (21:04 -0400)
Provide this information to usermode drivers.  We were previously
missing this info.

Signed-off-by: Ken Wang <Qingqing.Wang@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c

index 6c99b7560a270b0419489f1041fb422d28f54147..4bdc3265b410ce1fa9ddd3aacafc65cfe26f9ccc 100644 (file)
@@ -1125,6 +1125,9 @@ struct amdgpu_gfx {
        uint32_t                        mec_fw_version;
        const struct firmware           *mec2_fw; /* MEC2 firmware */
        uint32_t                        mec2_fw_version;
+       uint32_t                        me_feature_version;
+       uint32_t                        ce_feature_version;
+       uint32_t                        pfp_feature_version;
        struct amdgpu_ring              gfx_ring[AMDGPU_MAX_GFX_RINGS];
        unsigned                        num_gfx_rings;
        struct amdgpu_ring              compute_ring[AMDGPU_MAX_COMPUTE_RINGS];
index 9ede2446dcd6a1823c4e7c23df7e3e07dbd27b4c..12b756e8c6b8253f371ff1c3e80902ff736d3b69 100644 (file)
@@ -291,15 +291,15 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
                        break;
                case AMDGPU_INFO_FW_GFX_ME:
                        fw_info.ver = adev->gfx.me_fw_version;
-                       fw_info.feature = 0;
+                       fw_info.feature = adev->gfx.me_feature_version;
                        break;
                case AMDGPU_INFO_FW_GFX_PFP:
                        fw_info.ver = adev->gfx.pfp_fw_version;
-                       fw_info.feature = 0;
+                       fw_info.feature = adev->gfx.pfp_feature_version;
                        break;
                case AMDGPU_INFO_FW_GFX_CE:
                        fw_info.ver = adev->gfx.ce_fw_version;
-                       fw_info.feature = 0;
+                       fw_info.feature = adev->gfx.ce_feature_version;
                        break;
                case AMDGPU_INFO_FW_GFX_RLC:
                        fw_info.ver = adev->gfx.rlc_fw_version;
index faa39b38f0f315b2c3f1b44e37e3fd0b48ac2d52..5fefe402e0851eb938542e185690b783d31eea3a 100644 (file)
@@ -2705,6 +2705,9 @@ static int gfx_v7_0_cp_gfx_load_microcode(struct amdgpu_device *adev)
        adev->gfx.pfp_fw_version = le32_to_cpu(pfp_hdr->header.ucode_version);
        adev->gfx.ce_fw_version = le32_to_cpu(ce_hdr->header.ucode_version);
        adev->gfx.me_fw_version = le32_to_cpu(me_hdr->header.ucode_version);
+       adev->gfx.me_feature_version = le32_to_cpu(me_hdr->ucode_feature_version);
+       adev->gfx.ce_feature_version = le32_to_cpu(ce_hdr->ucode_feature_version);
+       adev->gfx.pfp_feature_version = le32_to_cpu(pfp_hdr->ucode_feature_version);
 
        gfx_v7_0_cp_gfx_enable(adev, false);
 
index 1895de4334467e90ac2ef6ba4b931a4475cb7622..04b91523008c789e4fad5fbf04aff748461af711 100644 (file)
@@ -2279,6 +2279,9 @@ static int gfx_v8_0_cp_gfx_load_microcode(struct amdgpu_device *adev)
        adev->gfx.pfp_fw_version = le32_to_cpu(pfp_hdr->header.ucode_version);
        adev->gfx.ce_fw_version = le32_to_cpu(ce_hdr->header.ucode_version);
        adev->gfx.me_fw_version = le32_to_cpu(me_hdr->header.ucode_version);
+       adev->gfx.me_feature_version = le32_to_cpu(me_hdr->ucode_feature_version);
+       adev->gfx.ce_feature_version = le32_to_cpu(ce_hdr->ucode_feature_version);
+       adev->gfx.pfp_feature_version = le32_to_cpu(pfp_hdr->ucode_feature_version);
 
        gfx_v8_0_cp_gfx_enable(adev, false);