diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0594-drm-amdgpu-dce11-Use-cursor_set2-hook-for-enabling-d.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0594-drm-amdgpu-dce11-Use-cursor_set2-hook-for-enabling-d.patch | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/common/recipes-kernel/linux/files/0594-drm-amdgpu-dce11-Use-cursor_set2-hook-for-enabling-d.patch b/common/recipes-kernel/linux/files/0594-drm-amdgpu-dce11-Use-cursor_set2-hook-for-enabling-d.patch deleted file mode 100644 index d15c6d27..00000000 --- a/common/recipes-kernel/linux/files/0594-drm-amdgpu-dce11-Use-cursor_set2-hook-for-enabling-d.patch +++ /dev/null @@ -1,142 +0,0 @@ -From d8ee89c6393d78b52b42fe0f188fe382fa8fc162 Mon Sep 17 00:00:00 2001 -From: Alex Deucher <alexander.deucher@amd.com> -Date: Wed, 7 Oct 2015 17:07:01 -0400 -Subject: [PATCH 0594/1565] drm/amdgpu/dce11: Use cursor_set2 hook for enabling - / disabling the HW cursor -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The cursor_set2 hook provides the cursor hotspot position within the -cursor image. When the hotspot position changes, we can adjust the cursor -position such that the hotspot doesn't move on the screen. This prevents -the cursor from appearing to intermittently jump around on the screen -when the position of the hotspot within the cursor image changes. - -Port of radeon commits: -78b1a6010b46a69bcd47b723a80f92693f26d17b -3feba08d79c32777a845c3c8a4ab93092bdf6f19 - -Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 74 +++++++++++++++++++++++----------- - 1 file changed, 51 insertions(+), 23 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c -index 6411e82..5be7783 100644 ---- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c -@@ -2482,20 +2482,8 @@ static void dce_v11_0_show_cursor(struct drm_crtc *crtc) - WREG32_IDX(mmCUR_CONTROL + amdgpu_crtc->crtc_offset, tmp); - } - --static void dce_v11_0_set_cursor(struct drm_crtc *crtc, struct drm_gem_object *obj, -- uint64_t gpu_addr) --{ -- struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); -- struct amdgpu_device *adev = crtc->dev->dev_private; -- -- WREG32(mmCUR_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset, -- upper_32_bits(gpu_addr)); -- WREG32(mmCUR_SURFACE_ADDRESS + amdgpu_crtc->crtc_offset, -- lower_32_bits(gpu_addr)); --} -- --static int dce_v11_0_crtc_cursor_move(struct drm_crtc *crtc, -- int x, int y) -+static int dce_v11_0_cursor_move_locked(struct drm_crtc *crtc, -+ int x, int y) - { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - struct amdgpu_device *adev = crtc->dev->dev_private; -@@ -2515,21 +2503,61 @@ static int dce_v11_0_crtc_cursor_move(struct drm_crtc *crtc, - y = 0; - } - -- dce_v11_0_lock_cursor(crtc, true); - WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); - WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); - WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, - ((amdgpu_crtc->cursor_width - 1) << 16) | (amdgpu_crtc->cursor_height - 1)); -- dce_v11_0_lock_cursor(crtc, false); -+ -+ amdgpu_crtc->cursor_x = x; -+ amdgpu_crtc->cursor_y = y; - - return 0; - } - --static int dce_v11_0_crtc_cursor_set(struct drm_crtc *crtc, -- struct drm_file *file_priv, -- uint32_t handle, -- uint32_t width, -- uint32_t height) -+static void dce_v11_0_set_cursor(struct drm_crtc *crtc, struct drm_gem_object *obj, -+ uint64_t gpu_addr, int hot_x, int hot_y) -+{ -+ struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); -+ struct amdgpu_device *adev = crtc->dev->dev_private; -+ -+ WREG32(mmCUR_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset, -+ upper_32_bits(gpu_addr)); -+ 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_v11_0_cursor_move_locked(crtc, x, y); -+ -+ amdgpu_crtc->cursor_hot_x = hot_x; -+ amdgpu_crtc->cursor_hot_y = hot_y; -+ } -+} -+ -+static int dce_v11_0_crtc_cursor_move(struct drm_crtc *crtc, -+ int x, int y) -+{ -+ int ret; -+ -+ dce_v11_0_lock_cursor(crtc, true); -+ ret = dce_v11_0_cursor_move_locked(crtc, x, y); -+ dce_v11_0_lock_cursor(crtc, false); -+ -+ return ret; -+} -+ -+static int dce_v11_0_crtc_cursor_set2(struct drm_crtc *crtc, -+ struct drm_file *file_priv, -+ uint32_t handle, -+ uint32_t width, -+ uint32_t height, -+ int32_t hot_x, -+ int32_t hot_y) - { - struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); - struct drm_gem_object *obj; -@@ -2570,7 +2598,7 @@ static int dce_v11_0_crtc_cursor_set(struct drm_crtc *crtc, - amdgpu_crtc->cursor_height = height; - - dce_v11_0_lock_cursor(crtc, true); -- dce_v11_0_set_cursor(crtc, obj, gpu_addr); -+ dce_v11_0_set_cursor(crtc, obj, gpu_addr, hot_x, hot_y); - dce_v11_0_show_cursor(crtc); - dce_v11_0_lock_cursor(crtc, false); - -@@ -2618,7 +2646,7 @@ static void dce_v11_0_crtc_destroy(struct drm_crtc *crtc) - } - - static const struct drm_crtc_funcs dce_v11_0_crtc_funcs = { -- .cursor_set = dce_v11_0_crtc_cursor_set, -+ .cursor_set2 = dce_v11_0_crtc_cursor_set2, - .cursor_move = dce_v11_0_crtc_cursor_move, - .gamma_set = dce_v11_0_crtc_gamma_set, - .set_config = amdgpu_crtc_set_config, --- -1.9.1 - |