drm/amd/display: Fix hotspot programming during set cursor position.
authorZeyu Fan <Zeyu.Fan@amd.com>
Mon, 3 Apr 2017 15:54:11 +0000 (11:54 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 26 Sep 2017 21:23:15 +0000 (17:23 -0400)
- Remove x,y hotspot from dc_cursor_attributes. Only program it
  through setPosition.

Signed-off-by: Zeyu Fan <Zeyu.Fan@amd.com>
Acked-by: Harry Wentland <Harry.Wentland@amd.com>
Reviewed-by: Zeyu Fan <Zeyu.Fan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
drivers/gpu/drm/amd/display/dc/dc_hw_types.h
drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp_cursor.c
drivers/gpu/drm/amd/display/dc/dce120/dce120_ipp_cursor.c

index 4b0fc6b..58fda20 100644 (file)
@@ -90,8 +90,6 @@ static void dm_set_cursor(
        attributes.address.low_part  = lower_32_bits(gpu_addr);
        attributes.width             = width;
        attributes.height            = height;
-       attributes.x_hot             = 0;
-       attributes.y_hot             = 0;
        attributes.color_format      = CURSOR_MODE_COLOR_PRE_MULTIPLIED_ALPHA;
        attributes.rotation_angle    = 0;
        attributes.attribute_flags.value = 0;
@@ -118,7 +116,6 @@ static void dm_set_cursor(
        position.x = x;
        position.y = y;
 
-       position.hot_spot_enable = true;
        position.x_hotspot = xorigin;
        position.y_hotspot = yorigin;
 
@@ -260,7 +257,6 @@ static int dm_crtc_cursor_set(
                position.enable = false;
                position.x = 0;
                position.y = 0;
-               position.hot_spot_enable = false;
 
                if (amdgpu_crtc->stream) {
                        /*set cursor visible false*/
@@ -344,7 +340,6 @@ static int dm_crtc_cursor_move(struct drm_crtc *crtc,
        position.x = x;
        position.y = y;
 
-       position.hot_spot_enable = true;
        position.x_hotspot = xorigin;
        position.y_hotspot = yorigin;
 
index 568b7f0..b785dd7 100644 (file)
@@ -395,11 +395,6 @@ struct dc_cursor_position {
         */
        bool enable;
 
-       /*
-        * This parameter indicates whether cursor hot spot should be
-        * programmed
-        */
-       bool hot_spot_enable;
 };
 
 struct dc_cursor_mi_param {
@@ -464,8 +459,6 @@ struct dc_cursor_attributes {
        /* Width and height should correspond to cursor surface width x heigh */
        uint32_t width;
        uint32_t height;
-       uint32_t x_hot;
-       uint32_t y_hot;
 
        enum dc_cursor_color_format color_format;
 
index 1cab12b..5b230b1 100644 (file)
@@ -86,11 +86,10 @@ void dce110_ipp_cursor_set_position(
 
        program_position(ipp110, position->x, position->y);
 
-       if (position->hot_spot_enable)
-               program_hotspot(
-                               ipp110,
-                               position->x_hotspot,
-                               position->y_hotspot);
+       program_hotspot(
+                       ipp110,
+                       position->x_hotspot,
+                       position->y_hotspot);
 
        /* unlock cursor registers */
        lock(ipp110, false);
@@ -111,8 +110,6 @@ bool dce110_ipp_cursor_set_attributes(
                attributes->attribute_flags.bits.ENABLE_MAGNIFICATION,
                attributes->attribute_flags.bits.INVERSE_TRANSPARENT_CLAMPING);
 
-       /* Program hot spot coordinates */
-       program_hotspot(ipp110, attributes->x_hot, attributes->y_hot);
 
        /*
         * Program cursor size -- NOTE: HW spec specifies that HW register
index d520b5d..15671fd 100644 (file)
@@ -151,11 +151,10 @@ void dce120_ipp_cursor_set_position(
                CURSOR_X_POSITION, position->x,
                CURSOR_Y_POSITION, position->y);
 
-       if (position->hot_spot_enable)
-               DCP_REG_SET_2(
-                       DCP0_CUR_HOT_SPOT,
-                       CURSOR_HOT_SPOT_X, position->x_hotspot,
-                       CURSOR_HOT_SPOT_Y, position->y_hotspot);
+       DCP_REG_SET_2(
+               DCP0_CUR_HOT_SPOT,
+               CURSOR_HOT_SPOT_X, position->x_hotspot,
+               CURSOR_HOT_SPOT_Y, position->y_hotspot);
 
        /* unlock cursor registers */
        lock(ipp110, false);
@@ -176,12 +175,6 @@ bool dce120_ipp_cursor_set_attributes(
                attributes->attribute_flags.bits.ENABLE_MAGNIFICATION,
                attributes->attribute_flags.bits.INVERSE_TRANSPARENT_CLAMPING);
 
-       /* Program hot spot coordinates */
-       DCP_REG_SET_2(
-               DCP0_CUR_HOT_SPOT,
-               CURSOR_HOT_SPOT_X, attributes->x_hot,
-               CURSOR_HOT_SPOT_Y, attributes->y_hot);
-
        /*
         * Program cursor size -- NOTE: HW spec specifies that HW register
         * stores size as (height - 1, width - 1)