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

Commit cca6bca0 authored by Andrzej Hajda's avatar Andrzej Hajda Committed by Greg Kroah-Hartman
Browse files

drm/exynos/decon5433: update shadow registers iff there are active windows




[ Upstream commit f65a7c9cb3770ed4d3e7c57c66d7032689081b5e ]

Improper usage of DECON_UPDATE register leads to subtle errors.
If it set in decon_commit when there are no active windows it results
in slow registry updates - all subsequent shadow registry updates takes more
than full vblank. On the other side if it is not set when there are
active windows it results in garbage on the screen after suspend/resume of
FB console.

The patch hopefully fixes it.

Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9f800573
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -188,8 +188,6 @@ static void decon_commit(struct exynos_drm_crtc *crtc)

	/* enable output and display signal */
	decon_set_bits(ctx, DECON_VIDCON0, VIDCON0_ENVID | VIDCON0_ENVID_F, ~0);

	decon_set_bits(ctx, DECON_UPDATE, STANDALONE_UPDATE_F, ~0);
}

static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned int win,
@@ -340,7 +338,8 @@ static void decon_atomic_flush(struct exynos_drm_crtc *crtc)
	for (i = ctx->first_win; i < WINDOWS_NR; i++)
		decon_shadow_protect_win(ctx, i, false);

	/* standalone update */
	/* update iff there are active windows */
	if (crtc->base.state->plane_mask)
		decon_set_bits(ctx, DECON_UPDATE, STANDALONE_UPDATE_F, ~0);

	if (ctx->out_type & IFTYPE_I80)