drm/amd/display: Fix hotspot programming during set cursor position.
- 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>
This commit is contained in:
parent
035e0fe548
commit
632550d71f
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue