diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2017-01-11 04:27:25 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-01-13 12:03:44 -0500 |
commit | 69bcc0b7140c30de552aa3ef08322295862e8e2f (patch) | |
tree | 1455f4151f71be3a49143416ac631adb3c6daf8d | |
parent | ab8db87b8256e13a62f10af1d32f5fc233c398cc (diff) |
Revert "drm/amdgpu: Only update the CUR_SIZE register when necessary"
This reverts commits 7c83d7abc9997cf1efac2c0ce384b5e8453ee870 and
a1f49cc179ce6b7b7758ae3ff5cdb138d0ee0f56.
They caused the HW cursor to disappear under various circumstances in
the wild. I wasn't able to reproduce any of them, and I'm not sure
what's going on. But those changes aren't a big deal anyway, so let's
just revert for now.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=191291
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99143
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 22 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 22 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 24 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 22 |
4 files changed, 30 insertions, 60 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c index 9999dc71b998..ccb5e02e7b20 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | |||
@@ -2512,6 +2512,8 @@ static int dce_v10_0_cursor_move_locked(struct drm_crtc *crtc, | |||
2512 | 2512 | ||
2513 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); | 2513 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); |
2514 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); | 2514 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); |
2515 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2516 | ((amdgpu_crtc->cursor_width - 1) << 16) | (amdgpu_crtc->cursor_height - 1)); | ||
2515 | 2517 | ||
2516 | return 0; | 2518 | return 0; |
2517 | } | 2519 | } |
@@ -2537,7 +2539,6 @@ static int dce_v10_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2537 | int32_t hot_y) | 2539 | int32_t hot_y) |
2538 | { | 2540 | { |
2539 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2541 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2540 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
2541 | struct drm_gem_object *obj; | 2542 | struct drm_gem_object *obj; |
2542 | struct amdgpu_bo *aobj; | 2543 | struct amdgpu_bo *aobj; |
2543 | int ret; | 2544 | int ret; |
@@ -2578,7 +2579,9 @@ static int dce_v10_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2578 | 2579 | ||
2579 | dce_v10_0_lock_cursor(crtc, true); | 2580 | dce_v10_0_lock_cursor(crtc, true); |
2580 | 2581 | ||
2581 | if (hot_x != amdgpu_crtc->cursor_hot_x || | 2582 | if (width != amdgpu_crtc->cursor_width || |
2583 | height != amdgpu_crtc->cursor_height || | ||
2584 | hot_x != amdgpu_crtc->cursor_hot_x || | ||
2582 | hot_y != amdgpu_crtc->cursor_hot_y) { | 2585 | hot_y != amdgpu_crtc->cursor_hot_y) { |
2583 | int x, y; | 2586 | int x, y; |
2584 | 2587 | ||
@@ -2587,16 +2590,10 @@ static int dce_v10_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2587 | 2590 | ||
2588 | dce_v10_0_cursor_move_locked(crtc, x, y); | 2591 | dce_v10_0_cursor_move_locked(crtc, x, y); |
2589 | 2592 | ||
2590 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
2591 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
2592 | } | ||
2593 | |||
2594 | if (width != amdgpu_crtc->cursor_width || | ||
2595 | height != amdgpu_crtc->cursor_height) { | ||
2596 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2597 | (width - 1) << 16 | (height - 1)); | ||
2598 | amdgpu_crtc->cursor_width = width; | 2593 | amdgpu_crtc->cursor_width = width; |
2599 | amdgpu_crtc->cursor_height = height; | 2594 | amdgpu_crtc->cursor_height = height; |
2595 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
2596 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
2600 | } | 2597 | } |
2601 | 2598 | ||
2602 | dce_v10_0_show_cursor(crtc); | 2599 | dce_v10_0_show_cursor(crtc); |
@@ -2620,7 +2617,6 @@ unpin: | |||
2620 | static void dce_v10_0_cursor_reset(struct drm_crtc *crtc) | 2617 | static void dce_v10_0_cursor_reset(struct drm_crtc *crtc) |
2621 | { | 2618 | { |
2622 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2619 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2623 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
2624 | 2620 | ||
2625 | if (amdgpu_crtc->cursor_bo) { | 2621 | if (amdgpu_crtc->cursor_bo) { |
2626 | dce_v10_0_lock_cursor(crtc, true); | 2622 | dce_v10_0_lock_cursor(crtc, true); |
@@ -2628,10 +2624,6 @@ static void dce_v10_0_cursor_reset(struct drm_crtc *crtc) | |||
2628 | dce_v10_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, | 2624 | dce_v10_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, |
2629 | amdgpu_crtc->cursor_y); | 2625 | amdgpu_crtc->cursor_y); |
2630 | 2626 | ||
2631 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2632 | (amdgpu_crtc->cursor_width - 1) << 16 | | ||
2633 | (amdgpu_crtc->cursor_height - 1)); | ||
2634 | |||
2635 | dce_v10_0_show_cursor(crtc); | 2627 | dce_v10_0_show_cursor(crtc); |
2636 | 2628 | ||
2637 | dce_v10_0_lock_cursor(crtc, false); | 2629 | dce_v10_0_lock_cursor(crtc, false); |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c index 2006abbbfb62..a7af5b33a5e3 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | |||
@@ -2532,6 +2532,8 @@ static int dce_v11_0_cursor_move_locked(struct drm_crtc *crtc, | |||
2532 | 2532 | ||
2533 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); | 2533 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); |
2534 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); | 2534 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); |
2535 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2536 | ((amdgpu_crtc->cursor_width - 1) << 16) | (amdgpu_crtc->cursor_height - 1)); | ||
2535 | 2537 | ||
2536 | return 0; | 2538 | return 0; |
2537 | } | 2539 | } |
@@ -2557,7 +2559,6 @@ static int dce_v11_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2557 | int32_t hot_y) | 2559 | int32_t hot_y) |
2558 | { | 2560 | { |
2559 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2561 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2560 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
2561 | struct drm_gem_object *obj; | 2562 | struct drm_gem_object *obj; |
2562 | struct amdgpu_bo *aobj; | 2563 | struct amdgpu_bo *aobj; |
2563 | int ret; | 2564 | int ret; |
@@ -2598,7 +2599,9 @@ static int dce_v11_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2598 | 2599 | ||
2599 | dce_v11_0_lock_cursor(crtc, true); | 2600 | dce_v11_0_lock_cursor(crtc, true); |
2600 | 2601 | ||
2601 | if (hot_x != amdgpu_crtc->cursor_hot_x || | 2602 | if (width != amdgpu_crtc->cursor_width || |
2603 | height != amdgpu_crtc->cursor_height || | ||
2604 | hot_x != amdgpu_crtc->cursor_hot_x || | ||
2602 | hot_y != amdgpu_crtc->cursor_hot_y) { | 2605 | hot_y != amdgpu_crtc->cursor_hot_y) { |
2603 | int x, y; | 2606 | int x, y; |
2604 | 2607 | ||
@@ -2607,16 +2610,10 @@ static int dce_v11_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2607 | 2610 | ||
2608 | dce_v11_0_cursor_move_locked(crtc, x, y); | 2611 | dce_v11_0_cursor_move_locked(crtc, x, y); |
2609 | 2612 | ||
2610 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
2611 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
2612 | } | ||
2613 | |||
2614 | if (width != amdgpu_crtc->cursor_width || | ||
2615 | height != amdgpu_crtc->cursor_height) { | ||
2616 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2617 | (width - 1) << 16 | (height - 1)); | ||
2618 | amdgpu_crtc->cursor_width = width; | 2613 | amdgpu_crtc->cursor_width = width; |
2619 | amdgpu_crtc->cursor_height = height; | 2614 | amdgpu_crtc->cursor_height = height; |
2615 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
2616 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
2620 | } | 2617 | } |
2621 | 2618 | ||
2622 | dce_v11_0_show_cursor(crtc); | 2619 | dce_v11_0_show_cursor(crtc); |
@@ -2640,7 +2637,6 @@ unpin: | |||
2640 | static void dce_v11_0_cursor_reset(struct drm_crtc *crtc) | 2637 | static void dce_v11_0_cursor_reset(struct drm_crtc *crtc) |
2641 | { | 2638 | { |
2642 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2639 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2643 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
2644 | 2640 | ||
2645 | if (amdgpu_crtc->cursor_bo) { | 2641 | if (amdgpu_crtc->cursor_bo) { |
2646 | dce_v11_0_lock_cursor(crtc, true); | 2642 | dce_v11_0_lock_cursor(crtc, true); |
@@ -2648,10 +2644,6 @@ static void dce_v11_0_cursor_reset(struct drm_crtc *crtc) | |||
2648 | dce_v11_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, | 2644 | dce_v11_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, |
2649 | amdgpu_crtc->cursor_y); | 2645 | amdgpu_crtc->cursor_y); |
2650 | 2646 | ||
2651 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2652 | (amdgpu_crtc->cursor_width - 1) << 16 | | ||
2653 | (amdgpu_crtc->cursor_height - 1)); | ||
2654 | |||
2655 | dce_v11_0_show_cursor(crtc); | 2647 | dce_v11_0_show_cursor(crtc); |
2656 | 2648 | ||
2657 | dce_v11_0_lock_cursor(crtc, false); | 2649 | dce_v11_0_lock_cursor(crtc, false); |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c index b4e4ec630e8c..39df6a50637f 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | |||
@@ -1859,6 +1859,8 @@ static int dce_v6_0_cursor_move_locked(struct drm_crtc *crtc, | |||
1859 | struct amdgpu_device *adev = crtc->dev->dev_private; | 1859 | struct amdgpu_device *adev = crtc->dev->dev_private; |
1860 | int xorigin = 0, yorigin = 0; | 1860 | int xorigin = 0, yorigin = 0; |
1861 | 1861 | ||
1862 | int w = amdgpu_crtc->cursor_width; | ||
1863 | |||
1862 | amdgpu_crtc->cursor_x = x; | 1864 | amdgpu_crtc->cursor_x = x; |
1863 | amdgpu_crtc->cursor_y = y; | 1865 | amdgpu_crtc->cursor_y = y; |
1864 | 1866 | ||
@@ -1878,6 +1880,8 @@ static int dce_v6_0_cursor_move_locked(struct drm_crtc *crtc, | |||
1878 | 1880 | ||
1879 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); | 1881 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); |
1880 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); | 1882 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); |
1883 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
1884 | ((w - 1) << 16) | (amdgpu_crtc->cursor_height - 1)); | ||
1881 | 1885 | ||
1882 | return 0; | 1886 | return 0; |
1883 | } | 1887 | } |
@@ -1903,7 +1907,6 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
1903 | int32_t hot_y) | 1907 | int32_t hot_y) |
1904 | { | 1908 | { |
1905 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 1909 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
1906 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
1907 | struct drm_gem_object *obj; | 1910 | struct drm_gem_object *obj; |
1908 | struct amdgpu_bo *aobj; | 1911 | struct amdgpu_bo *aobj; |
1909 | int ret; | 1912 | int ret; |
@@ -1944,7 +1947,9 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
1944 | 1947 | ||
1945 | dce_v6_0_lock_cursor(crtc, true); | 1948 | dce_v6_0_lock_cursor(crtc, true); |
1946 | 1949 | ||
1947 | if (hot_x != amdgpu_crtc->cursor_hot_x || | 1950 | if (width != amdgpu_crtc->cursor_width || |
1951 | height != amdgpu_crtc->cursor_height || | ||
1952 | hot_x != amdgpu_crtc->cursor_hot_x || | ||
1948 | hot_y != amdgpu_crtc->cursor_hot_y) { | 1953 | hot_y != amdgpu_crtc->cursor_hot_y) { |
1949 | int x, y; | 1954 | int x, y; |
1950 | 1955 | ||
@@ -1953,16 +1958,10 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
1953 | 1958 | ||
1954 | dce_v6_0_cursor_move_locked(crtc, x, y); | 1959 | dce_v6_0_cursor_move_locked(crtc, x, y); |
1955 | 1960 | ||
1956 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
1957 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
1958 | } | ||
1959 | |||
1960 | if (width != amdgpu_crtc->cursor_width || | ||
1961 | height != amdgpu_crtc->cursor_height) { | ||
1962 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
1963 | (width - 1) << 16 | (height - 1)); | ||
1964 | amdgpu_crtc->cursor_width = width; | 1961 | amdgpu_crtc->cursor_width = width; |
1965 | amdgpu_crtc->cursor_height = height; | 1962 | amdgpu_crtc->cursor_height = height; |
1963 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
1964 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
1966 | } | 1965 | } |
1967 | 1966 | ||
1968 | dce_v6_0_show_cursor(crtc); | 1967 | dce_v6_0_show_cursor(crtc); |
@@ -1986,7 +1985,6 @@ unpin: | |||
1986 | static void dce_v6_0_cursor_reset(struct drm_crtc *crtc) | 1985 | static void dce_v6_0_cursor_reset(struct drm_crtc *crtc) |
1987 | { | 1986 | { |
1988 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 1987 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
1989 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
1990 | 1988 | ||
1991 | if (amdgpu_crtc->cursor_bo) { | 1989 | if (amdgpu_crtc->cursor_bo) { |
1992 | dce_v6_0_lock_cursor(crtc, true); | 1990 | dce_v6_0_lock_cursor(crtc, true); |
@@ -1994,10 +1992,6 @@ static void dce_v6_0_cursor_reset(struct drm_crtc *crtc) | |||
1994 | dce_v6_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, | 1992 | dce_v6_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, |
1995 | amdgpu_crtc->cursor_y); | 1993 | amdgpu_crtc->cursor_y); |
1996 | 1994 | ||
1997 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
1998 | (amdgpu_crtc->cursor_width - 1) << 16 | | ||
1999 | (amdgpu_crtc->cursor_height - 1)); | ||
2000 | |||
2001 | dce_v6_0_show_cursor(crtc); | 1995 | dce_v6_0_show_cursor(crtc); |
2002 | dce_v6_0_lock_cursor(crtc, false); | 1996 | dce_v6_0_lock_cursor(crtc, false); |
2003 | } | 1997 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c index 584abe834a3c..28102bb1704d 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | |||
@@ -2363,6 +2363,8 @@ static int dce_v8_0_cursor_move_locked(struct drm_crtc *crtc, | |||
2363 | 2363 | ||
2364 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); | 2364 | WREG32(mmCUR_POSITION + amdgpu_crtc->crtc_offset, (x << 16) | y); |
2365 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); | 2365 | WREG32(mmCUR_HOT_SPOT + amdgpu_crtc->crtc_offset, (xorigin << 16) | yorigin); |
2366 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2367 | ((amdgpu_crtc->cursor_width - 1) << 16) | (amdgpu_crtc->cursor_height - 1)); | ||
2366 | 2368 | ||
2367 | return 0; | 2369 | return 0; |
2368 | } | 2370 | } |
@@ -2388,7 +2390,6 @@ static int dce_v8_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2388 | int32_t hot_y) | 2390 | int32_t hot_y) |
2389 | { | 2391 | { |
2390 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2392 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2391 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
2392 | struct drm_gem_object *obj; | 2393 | struct drm_gem_object *obj; |
2393 | struct amdgpu_bo *aobj; | 2394 | struct amdgpu_bo *aobj; |
2394 | int ret; | 2395 | int ret; |
@@ -2429,7 +2430,9 @@ static int dce_v8_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2429 | 2430 | ||
2430 | dce_v8_0_lock_cursor(crtc, true); | 2431 | dce_v8_0_lock_cursor(crtc, true); |
2431 | 2432 | ||
2432 | if (hot_x != amdgpu_crtc->cursor_hot_x || | 2433 | if (width != amdgpu_crtc->cursor_width || |
2434 | height != amdgpu_crtc->cursor_height || | ||
2435 | hot_x != amdgpu_crtc->cursor_hot_x || | ||
2433 | hot_y != amdgpu_crtc->cursor_hot_y) { | 2436 | hot_y != amdgpu_crtc->cursor_hot_y) { |
2434 | int x, y; | 2437 | int x, y; |
2435 | 2438 | ||
@@ -2438,16 +2441,10 @@ static int dce_v8_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2438 | 2441 | ||
2439 | dce_v8_0_cursor_move_locked(crtc, x, y); | 2442 | dce_v8_0_cursor_move_locked(crtc, x, y); |
2440 | 2443 | ||
2441 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
2442 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
2443 | } | ||
2444 | |||
2445 | if (width != amdgpu_crtc->cursor_width || | ||
2446 | height != amdgpu_crtc->cursor_height) { | ||
2447 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2448 | (width - 1) << 16 | (height - 1)); | ||
2449 | amdgpu_crtc->cursor_width = width; | 2444 | amdgpu_crtc->cursor_width = width; |
2450 | amdgpu_crtc->cursor_height = height; | 2445 | amdgpu_crtc->cursor_height = height; |
2446 | amdgpu_crtc->cursor_hot_x = hot_x; | ||
2447 | amdgpu_crtc->cursor_hot_y = hot_y; | ||
2451 | } | 2448 | } |
2452 | 2449 | ||
2453 | dce_v8_0_show_cursor(crtc); | 2450 | dce_v8_0_show_cursor(crtc); |
@@ -2471,7 +2468,6 @@ unpin: | |||
2471 | static void dce_v8_0_cursor_reset(struct drm_crtc *crtc) | 2468 | static void dce_v8_0_cursor_reset(struct drm_crtc *crtc) |
2472 | { | 2469 | { |
2473 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2470 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2474 | struct amdgpu_device *adev = crtc->dev->dev_private; | ||
2475 | 2471 | ||
2476 | if (amdgpu_crtc->cursor_bo) { | 2472 | if (amdgpu_crtc->cursor_bo) { |
2477 | dce_v8_0_lock_cursor(crtc, true); | 2473 | dce_v8_0_lock_cursor(crtc, true); |
@@ -2479,10 +2475,6 @@ static void dce_v8_0_cursor_reset(struct drm_crtc *crtc) | |||
2479 | dce_v8_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, | 2475 | dce_v8_0_cursor_move_locked(crtc, amdgpu_crtc->cursor_x, |
2480 | amdgpu_crtc->cursor_y); | 2476 | amdgpu_crtc->cursor_y); |
2481 | 2477 | ||
2482 | WREG32(mmCUR_SIZE + amdgpu_crtc->crtc_offset, | ||
2483 | (amdgpu_crtc->cursor_width - 1) << 16 | | ||
2484 | (amdgpu_crtc->cursor_height - 1)); | ||
2485 | |||
2486 | dce_v8_0_show_cursor(crtc); | 2478 | dce_v8_0_show_cursor(crtc); |
2487 | 2479 | ||
2488 | dce_v8_0_lock_cursor(crtc, false); | 2480 | dce_v8_0_lock_cursor(crtc, false); |