aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3211-drm-amd-amdgpu-Add-Polaris-version-check.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3211-drm-amd-amdgpu-Add-Polaris-version-check.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3211-drm-amd-amdgpu-Add-Polaris-version-check.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3211-drm-amd-amdgpu-Add-Polaris-version-check.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3211-drm-amd-amdgpu-Add-Polaris-version-check.patch
new file mode 100644
index 00000000..1aa3a0d4
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3211-drm-amd-amdgpu-Add-Polaris-version-check.patch
@@ -0,0 +1,63 @@
+From 769d4e89a98318cdb17fc8e90837f03efe4bbafe Mon Sep 17 00:00:00 2001
+From: James Zhu <James.Zhu@amd.com>
+Date: Mon, 22 Jan 2018 13:46:16 -0500
+Subject: [PATCH 3211/4131] drm/amd/amdgpu: Add Polaris version check
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add Polaris version check if firmware support UVD encode
+
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+
+Signed-off-by: James Zhu <James.Zhu@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
+index 6f03eba..84c558d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
+@@ -37,6 +37,9 @@
+ #include "gmc/gmc_8_1_d.h"
+ #include "vi.h"
+
++/* Polaris10/11/12 firmware version */
++#define FW_1_130_16 ((1 << 24) | (130 << 16) | (16 << 8))
++
+ static void uvd_v6_0_set_ring_funcs(struct amdgpu_device *adev);
+ static void uvd_v6_0_set_enc_ring_funcs(struct amdgpu_device *adev);
+
+@@ -58,7 +61,9 @@ static void uvd_v6_0_enable_mgcg(struct amdgpu_device *adev,
+ */
+ static inline bool uvd_v6_0_enc_support(struct amdgpu_device *adev)
+ {
+- return ((adev->asic_type >= CHIP_POLARIS10) && (adev->asic_type <= CHIP_POLARIS12));
++ return ((adev->asic_type >= CHIP_POLARIS10) &&
++ (adev->asic_type <= CHIP_POLARIS12) &&
++ (!adev->uvd.fw_version || adev->uvd.fw_version >= FW_1_130_16));
+ }
+
+ /**
+@@ -411,7 +416,15 @@ static int uvd_v6_0_sw_init(void *handle)
+ if (r)
+ return r;
+
+- if (uvd_v6_0_enc_support(adev)) {
++ if (!uvd_v6_0_enc_support(adev)) {
++ for (i = 0; i < adev->uvd.num_enc_rings; ++i)
++ adev->uvd.ring_enc[i].funcs = NULL;
++
++ adev->uvd.irq.num_types = 1;
++ adev->uvd.num_enc_rings = 0;
++
++ DRM_INFO("UVD ENC is disabled\n");
++ } else {
+ struct drm_sched_rq *rq;
+ ring = &adev->uvd.ring_enc[0];
+ rq = &ring->sched.sched_rq[DRM_SCHED_PRIORITY_NORMAL];
+--
+2.7.4
+