Re: regression: drm/omapdrm: Move commit_modeset_enables() before commit_planes()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tomi,

On 2017-04-20 09:27, Tomi Valkeinen wrote:
On 19/04/17 18:49, Jyri Sarha wrote:
On 04/19/17 16:35, Tomi Valkeinen wrote:
I was able to reproduce on my very old omap3 beagleboard. Looks very
much like a omap3 DSS HW bug to me. The unfortunate thing is that even
reverting the patch won't remove the issue, if the userspace happens to
configure things in certain order.

It looks to me that if the DSS output is enabled without an overlay (the
primary plane, normally), DSS gets stuck into a bad state, and only
reboot helps (because we can't reset, there's no omap hwmod reset
framework).

But there should be nothing wrong with that setup, and if there's first
been a successful display enable, then later we can enable the DSS
without any planes.

If that is the case, then maybe we could just enable errata i734 (the
gamma bug) work a round for omap3 too. The work a round makes an
artificial minimal display setup with GFX plane for one frame, with
outputs masked, so it could be exactly what we need.

Yep, that did come to my mind and I tested it yesterday. However, I
failed to realize there's the WA init part, and I only made sure the
dispc_errata_i734_wa() is called.

Now that I set the bit in the dispc features, it indeed seems to fix the
issue.

Below is a hack patch for people to try out. It's based on today's
linux-next, but should apply to more or less any semi-recent kernel. If
it works for others, I'll create a proper patch, which drops the
has_gamma_i734_bug flag and always does the WA.

This certainly fixes the screen issue on n900 when booting with omapdrm.

Tested-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx>


 Tomi

From 657694ed06ab57b61a5523954d15147e73a1e226 Mon Sep 17 00:00:00 2001
From: Tomi Valkeinen <tomi.valkeinen@xxxxxx>
Date: Thu, 20 Apr 2017 09:25:04 +0300
Subject: [PATCH] dispc hackfix


diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c
b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 5ac0145fbae6..6daf23f1ce3d 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -4004,6 +4004,7 @@ static const struct dispc_features
omap24xx_dispc_feats = {
 	.no_framedone_tv	=	true,
 	.set_max_preload	=	false,
 	.last_pixel_inc_missing	=	true,
+	.has_gamma_i734_bug	=	true,
 };

 static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
@@ -4025,6 +4026,7 @@ static const struct dispc_features
omap34xx_rev1_0_dispc_feats = {
 	.no_framedone_tv	=	true,
 	.set_max_preload	=	false,
 	.last_pixel_inc_missing	=	true,
+	.has_gamma_i734_bug	=	true,
 };

 static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
@@ -4046,6 +4048,7 @@ static const struct dispc_features
omap34xx_rev3_0_dispc_feats = {
 	.no_framedone_tv	=	true,
 	.set_max_preload	=	false,
 	.last_pixel_inc_missing	=	true,
+	.has_gamma_i734_bug	=	true,
 };

 static const struct dispc_features omap44xx_dispc_feats = {


- Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux