Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed270223 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915: Refactor CURPOS calculation



Move the CURPOS calculations to seprate function. This will allow
sharing the code between the 845/865 vs. others codepaths when we
otherwise split them apart.

v2: Don't pass intel_plane as it's not needed

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170327185546.2977-6-ville.syrjala@linux.intel.com
parent cd5dcbf1
Loading
Loading
Loading
Loading
+22 −15
Original line number Original line Diff line number Diff line
@@ -9157,6 +9157,27 @@ static u32 intel_cursor_base(const struct intel_plane_state *plane_state)
	return base;
	return base;
}
}


static u32 intel_cursor_position(const struct intel_plane_state *plane_state)
{
	int x = plane_state->base.crtc_x;
	int y = plane_state->base.crtc_y;
	u32 pos = 0;

	if (x < 0) {
		pos |= CURSOR_POS_SIGN << CURSOR_X_SHIFT;
		x = -x;
	}
	pos |= x << CURSOR_X_SHIFT;

	if (y < 0) {
		pos |= CURSOR_POS_SIGN << CURSOR_Y_SHIFT;
		y = -y;
	}
	pos |= y << CURSOR_Y_SHIFT;

	return pos;
}

static u32 i845_cursor_ctl(const struct intel_crtc_state *crtc_state,
static u32 i845_cursor_ctl(const struct intel_crtc_state *crtc_state,
			   const struct intel_plane_state *plane_state)
			   const struct intel_plane_state *plane_state)
{
{
@@ -9294,22 +9315,8 @@ static void intel_crtc_update_cursor(struct intel_plane *plane,
	unsigned long irqflags;
	unsigned long irqflags;


	if (plane_state) {
	if (plane_state) {
		int x = plane_state->base.crtc_x;
		int y = plane_state->base.crtc_y;

		if (x < 0) {
			pos |= CURSOR_POS_SIGN << CURSOR_X_SHIFT;
			x = -x;
		}
		pos |= x << CURSOR_X_SHIFT;

		if (y < 0) {
			pos |= CURSOR_POS_SIGN << CURSOR_Y_SHIFT;
			y = -y;
		}
		pos |= y << CURSOR_Y_SHIFT;

		base = intel_cursor_base(plane_state);
		base = intel_cursor_base(plane_state);
		pos = intel_cursor_position(plane_state);
	}
	}


	spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
	spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);