diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0604-drm-amdgpu-dce8-Move-hotspot-handling-out-of-set_cur.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0604-drm-amdgpu-dce8-Move-hotspot-handling-out-of-set_cur.patch | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0604-drm-amdgpu-dce8-Move-hotspot-handling-out-of-set_cur.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0604-drm-amdgpu-dce8-Move-hotspot-handling-out-of-set_cur.patch new file mode 100644 index 00000000..ecbe908a --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0604-drm-amdgpu-dce8-Move-hotspot-handling-out-of-set_cur.patch @@ -0,0 +1,91 @@ +From bdee77fe6b395b9226aa9c6b07f1026e1654a85d Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Wed, 7 Oct 2015 23:38:03 -0400 +Subject: [PATCH 0604/1050] drm/amdgpu/dce8: Move hotspot handling out of + set_cursor +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It's only needed in dce8 crtc_cursor_set2. + +Port of radeon commit: +2e007e611bc0a46dfed1547e0228a57f800e703d + +Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 36 +++++++++++++++++------------------ + 1 file changed, 17 insertions(+), 19 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +index 570f854..3a981f5 100644 +--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +@@ -2467,8 +2467,7 @@ static int dce_v8_0_cursor_move_locked(struct drm_crtc *crtc, + return 0; + } + +-static int dce_v8_0_set_cursor(struct drm_crtc *crtc, struct drm_gem_object *obj, +- int hot_x, int hot_y) ++static int dce_v8_0_set_cursor(struct drm_crtc *crtc, struct drm_gem_object *obj) + { + struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); + struct amdgpu_device *adev = crtc->dev->dev_private; +@@ -2490,19 +2489,6 @@ static int dce_v8_0_set_cursor(struct drm_crtc *crtc, struct drm_gem_object *obj + WREG32(mmCUR_SURFACE_ADDRESS + amdgpu_crtc->crtc_offset, + lower_32_bits(gpu_addr)); + +- if (hot_x != amdgpu_crtc->cursor_hot_x || +- hot_y != amdgpu_crtc->cursor_hot_y) { +- int x, y; +- +- x = amdgpu_crtc->cursor_x + amdgpu_crtc->cursor_hot_x - hot_x; +- y = amdgpu_crtc->cursor_y + amdgpu_crtc->cursor_hot_y - hot_y; +- +- dce_v8_0_cursor_move_locked(crtc, x, y); +- +- amdgpu_crtc->cursor_hot_x = hot_x; +- amdgpu_crtc->cursor_hot_y = hot_y; +- } +- + return 0; + + fail: +@@ -2558,7 +2544,21 @@ static int dce_v8_0_crtc_cursor_set2(struct drm_crtc *crtc, + amdgpu_crtc->cursor_height = height; + + dce_v8_0_lock_cursor(crtc, true); +- ret = dce_v8_0_set_cursor(crtc, obj, hot_x, hot_y); ++ ++ if (hot_x != amdgpu_crtc->cursor_hot_x || ++ hot_y != amdgpu_crtc->cursor_hot_y) { ++ int x, y; ++ ++ x = amdgpu_crtc->cursor_x + amdgpu_crtc->cursor_hot_x - hot_x; ++ y = amdgpu_crtc->cursor_y + amdgpu_crtc->cursor_hot_y - hot_y; ++ ++ dce_v8_0_cursor_move_locked(crtc, x, y); ++ ++ amdgpu_crtc->cursor_hot_x = hot_x; ++ amdgpu_crtc->cursor_hot_y = hot_y; ++ } ++ ++ ret = dce_v8_0_set_cursor(crtc, obj); + if (ret) + DRM_ERROR("dce_v8_0_set_cursor returned %d, not changing cursor\n", + ret); +@@ -2593,9 +2593,7 @@ static void dce_v8_0_cursor_reset(struct drm_crtc *crtc) + dce_v8_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, + amdgpu_crtc->cursor_y); + +- ret = dce_v8_0_set_cursor(crtc, amdgpu_crtc->cursor_bo, +- amdgpu_crtc->cursor_hot_x, +- amdgpu_crtc->cursor_hot_y); ++ ret = dce_v8_0_set_cursor(crtc, amdgpu_crtc->cursor_bo); + if (ret) + DRM_ERROR("dce_v8_0_set_cursor returned %d, not showing " + "cursor\n", ret); +-- +1.9.1 + |