aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0145-amdgpu-vce3-Simplify-idle-and-wait-for-idle-code.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0145-amdgpu-vce3-Simplify-idle-and-wait-for-idle-code.patch')
-rw-r--r--common/recipes-kernel/linux/files/0145-amdgpu-vce3-Simplify-idle-and-wait-for-idle-code.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0145-amdgpu-vce3-Simplify-idle-and-wait-for-idle-code.patch b/common/recipes-kernel/linux/files/0145-amdgpu-vce3-Simplify-idle-and-wait-for-idle-code.patch
new file mode 100644
index 00000000..a035054f
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0145-amdgpu-vce3-Simplify-idle-and-wait-for-idle-code.patch
@@ -0,0 +1,71 @@
+From 8ba6c8ff3550f5ff51e323f03d07d481b64f50cf Mon Sep 17 00:00:00 2001
+From: Tom St Denis <tom.stdenis@amd.com>
+Date: Tue, 15 Dec 2015 10:35:56 -0500
+Subject: [PATCH 0145/1110] amdgpu/vce3: Simplify idle and wait for idle code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+More LOC reductions in VCE3 code. This patch simplifies the is_idle and
+wait_for_idle logic.
+
+Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 30 +++++-------------------------
+ 1 file changed, 5 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
+index 0de86de..f20529d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
+@@ -535,17 +535,9 @@ static bool vce_v3_0_is_idle(void *handle)
+ {
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+ u32 mask = 0;
+- int idx;
+-
+- for (idx = 0; idx < 2; ++idx) {
+- if (adev->vce.harvest_config & (1 << idx))
+- continue;
+
+- if (idx == 0)
+- mask |= SRBM_STATUS2__VCE0_BUSY_MASK;
+- else
+- mask |= SRBM_STATUS2__VCE1_BUSY_MASK;
+- }
++ mask |= (adev->vce.harvest_config & (1<<0)) ? 0 : SRBM_STATUS2__VCE0_BUSY_MASK;
++ mask |= (adev->vce.harvest_config & (1<<1)) ? 0 : SRBM_STATUS2__VCE1_BUSY_MASK;
+
+ return !(RREG32(mmSRBM_STATUS2) & mask);
+ }
+@@ -554,23 +546,11 @@ static int vce_v3_0_wait_for_idle(void *handle)
+ {
+ unsigned i;
+ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+- u32 mask = 0;
+- int idx;
+
+- for (idx = 0; idx < 2; ++idx) {
+- if (adev->vce.harvest_config & (1 << idx))
+- continue;
+-
+- if (idx == 0)
+- mask |= SRBM_STATUS2__VCE0_BUSY_MASK;
+- else
+- mask |= SRBM_STATUS2__VCE1_BUSY_MASK;
+- }
+-
+- for (i = 0; i < adev->usec_timeout; i++) {
+- if (!(RREG32(mmSRBM_STATUS2) & mask))
++ for (i = 0; i < adev->usec_timeout; i++)
++ if (vce_v3_0_is_idle(handle))
+ return 0;
+- }
++
+ return -ETIMEDOUT;
+ }
+
+--
+2.7.4
+