aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0904-drm-amdgpu-vcn-Update-vcn.cur_state-during-suspend.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0904-drm-amdgpu-vcn-Update-vcn.cur_state-during-suspend.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0904-drm-amdgpu-vcn-Update-vcn.cur_state-during-suspend.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0904-drm-amdgpu-vcn-Update-vcn.cur_state-during-suspend.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0904-drm-amdgpu-vcn-Update-vcn.cur_state-during-suspend.patch
new file mode 100644
index 00000000..173b22e4
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0904-drm-amdgpu-vcn-Update-vcn.cur_state-during-suspend.patch
@@ -0,0 +1,39 @@
+From 7897931a98ff22ab83f6f5c81730d70e4bcbd990 Mon Sep 17 00:00:00 2001
+From: James Zhu <James.Zhu@amd.com>
+Date: Mon, 3 Dec 2018 22:04:28 -0500
+Subject: [PATCH 0904/2940] drm/amdgpu/vcn: Update vcn.cur_state during suspend
+
+Replace vcn_v1_0_stop with vcn_v1_0_set_powergating_state during suspend,
+to keep adev->vcn.cur_state update. It will fix VCN S3 hung issue.
+
+Signed-off-by: James Zhu <James.Zhu@amd.com>
+Reviewed-by: Leo Liu <leo.liu@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
+index c1a03505f956..4f8352044563 100644
+--- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
+@@ -48,6 +48,7 @@ static void vcn_v1_0_set_enc_ring_funcs(struct amdgpu_device *adev);
+ static void vcn_v1_0_set_jpeg_ring_funcs(struct amdgpu_device *adev);
+ static void vcn_v1_0_set_irq_funcs(struct amdgpu_device *adev);
+ static void vcn_v1_0_jpeg_ring_set_patch_ring(struct amdgpu_ring *ring, uint32_t ptr);
++static int vcn_v1_0_set_powergating_state(void *handle, enum amd_powergating_state state);
+
+ /**
+ * vcn_v1_0_early_init - set function pointers
+@@ -214,7 +215,7 @@ static int vcn_v1_0_hw_fini(void *handle)
+ struct amdgpu_ring *ring = &adev->vcn.ring_dec;
+
+ if (RREG32_SOC15(VCN, 0, mmUVD_STATUS))
+- vcn_v1_0_stop(adev);
++ vcn_v1_0_set_powergating_state(adev, AMD_PG_STATE_GATE);
+
+ ring->sched.ready = false;
+
+--
+2.17.1
+