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

Commit 5d1d0cc8 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Reset crtc after resume



Based on a patch by Takashi Iwai.

Reported-by: default avatarMatthias Hopf <mat@mshopf.de>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=27272


Tested-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent f3269058
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -5551,6 +5551,18 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
	return ret;
}

static void intel_crtc_reset(struct drm_crtc *crtc)
{
	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);

	/* Reset flags back to the 'unknown' status so that they
	 * will be correctly set on the initial modeset.
	 */
	intel_crtc->cursor_addr = 0;
	intel_crtc->dpms_mode = -1;
	intel_crtc->active = true; /* force the pipe off on setup_init_config */
}

static struct drm_crtc_helper_funcs intel_helper_funcs = {
	.dpms = intel_crtc_dpms,
	.mode_fixup = intel_crtc_mode_fixup,
@@ -5562,6 +5574,7 @@ static struct drm_crtc_helper_funcs intel_helper_funcs = {
};

static const struct drm_crtc_funcs intel_crtc_funcs = {
	.reset = intel_crtc_reset,
	.cursor_set = intel_crtc_cursor_set,
	.cursor_move = intel_crtc_cursor_move,
	.gamma_set = intel_crtc_gamma_set,
@@ -5652,9 +5665,7 @@ static void intel_crtc_init(struct drm_device *dev, int pipe)
	dev_priv->plane_to_crtc_mapping[intel_crtc->plane] = &intel_crtc->base;
	dev_priv->pipe_to_crtc_mapping[intel_crtc->pipe] = &intel_crtc->base;

	intel_crtc->cursor_addr = 0;
	intel_crtc->dpms_mode = -1;
	intel_crtc->active = true; /* force the pipe off on setup_init_config */
	intel_crtc_reset(&intel_crtc->base);

	if (HAS_PCH_SPLIT(dev)) {
		intel_helper_funcs.prepare = ironlake_crtc_prepare;