Commit 632550d7 authored by Zeyu Fan's avatar Zeyu Fan Committed by Alex Deucher
Browse files

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: default avatarZeyu Fan <Zeyu.Fan@amd.com>
Acked-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Reviewed-by: default avatarZeyu Fan <Zeyu.Fan@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 035e0fe5
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -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;

+0 −7
Original line number Diff line number Diff line
@@ -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;

+4 −7
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@ void dce110_ipp_cursor_set_position(

	program_position(ipp110, position->x, position->y);

	if (position->hot_spot_enable)
	program_hotspot(
			ipp110,
			position->x_hotspot,
@@ -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
+4 −11
Original line number Diff line number Diff line
@@ -151,7 +151,6 @@ 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,
@@ -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)