diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4705-drm-amdgpu-Support-new-VCN-FW-version-naming-convent.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4705-drm-amdgpu-Support-new-VCN-FW-version-naming-convent.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4705-drm-amdgpu-Support-new-VCN-FW-version-naming-convent.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4705-drm-amdgpu-Support-new-VCN-FW-version-naming-convent.patch new file mode 100644 index 00000000..c5b94354 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4705-drm-amdgpu-Support-new-VCN-FW-version-naming-convent.patch @@ -0,0 +1,81 @@ +From 176be73a8522e88634a9716765c93c7ef6682198 Mon Sep 17 00:00:00 2001 +From: James Zhu <James.Zhu@amd.com> +Date: Tue, 19 Jun 2018 13:44:04 -0400 +Subject: [PATCH 4705/5725] drm/amdgpu:Support new VCN FW version naming + convention + +Support new VCN FW version naming convention: + [31, 28] for VEP interface major version if applicable + [27, 24] for decode interface major version + [23, 20] for encode interface major version + [19, 12] for encode interface minor version + [11, 0] for firmware revision +Bit 20-23, it is encode major and non-zero for new naming convention. +This field is part of version minor and DRM_DISABLED_FLAG in old naming +convention. Since the latest version minor is 0x5B and DRM_DISABLED_FLAG +is zero in old naming convention, this field is always zero so far. +These four bits are used to tell which naming convention is present. + +Signed-off-by: James Zhu <James.Zhu@amd.com> +Reviewed-by: Fang, Peter <Peter.Fang@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Raveendra Talabattula <raveendra.talabattula@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +index e836d7c..be1cbba 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +@@ -52,7 +52,7 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) + unsigned long bo_size; + const char *fw_name; + const struct common_firmware_header *hdr; +- unsigned version_major, version_minor, family_id; ++ unsigned char fw_check; + int r; + + INIT_DELAYED_WORK(&adev->vcn.idle_work, amdgpu_vcn_idle_work_handler); +@@ -83,12 +83,33 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) + + hdr = (const struct common_firmware_header *)adev->vcn.fw->data; + adev->vcn.fw_version = le32_to_cpu(hdr->ucode_version); +- family_id = le32_to_cpu(hdr->ucode_version) & 0xff; +- version_major = (le32_to_cpu(hdr->ucode_version) >> 24) & 0xff; +- version_minor = (le32_to_cpu(hdr->ucode_version) >> 8) & 0xff; +- DRM_INFO("Found VCN firmware Version: %hu.%hu Family ID: %hu\n", +- version_major, version_minor, family_id); + ++ /* Bit 20-23, it is encode major and non-zero for new naming convention. ++ * This field is part of version minor and DRM_DISABLED_FLAG in old naming ++ * convention. Since the l:wq!atest version minor is 0x5B and DRM_DISABLED_FLAG ++ * is zero in old naming convention, this field is always zero so far. ++ * These four bits are used to tell which naming convention is present. ++ */ ++ fw_check = (le32_to_cpu(hdr->ucode_version) >> 20) & 0xf; ++ if (fw_check) { ++ unsigned int dec_ver, enc_major, enc_minor, vep, fw_rev; ++ ++ fw_rev = le32_to_cpu(hdr->ucode_version) & 0xfff; ++ enc_minor = (le32_to_cpu(hdr->ucode_version) >> 12) & 0xff; ++ enc_major = fw_check; ++ dec_ver = (le32_to_cpu(hdr->ucode_version) >> 24) & 0xf; ++ vep = (le32_to_cpu(hdr->ucode_version) >> 28) & 0xf; ++ DRM_INFO("Found VCN firmware Version ENC: %hu.%hu DEC: %hu VEP: %hu Revision: %hu\n", ++ enc_major, enc_minor, dec_ver, vep, fw_rev); ++ } else { ++ unsigned int version_major, version_minor, family_id; ++ ++ family_id = le32_to_cpu(hdr->ucode_version) & 0xff; ++ version_major = (le32_to_cpu(hdr->ucode_version) >> 24) & 0xff; ++ version_minor = (le32_to_cpu(hdr->ucode_version) >> 8) & 0xff; ++ DRM_INFO("Found VCN firmware Version: %hu.%hu Family ID: %hu\n", ++ version_major, version_minor, family_id); ++ } + + bo_size = AMDGPU_VCN_STACK_SIZE + AMDGPU_VCN_HEAP_SIZE + + AMDGPU_VCN_SESSION_SIZE * 40; +-- +2.7.4 + |