aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4705-drm-amdgpu-Support-new-VCN-FW-version-naming-convent.patch
diff options
context:
space:
mode:
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.patch81
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
+