Seems that on omap3 enabling a crtc without any planes causes a sync
lost flood. This only happens on the first enable, and after that it
works. This looks like an HW issue.

It's unclear why this is happening or how to fix it, but as a quick
work-around, this patch enables i734 errata work-around for omap2 and
omap3 too. The errata work-around enables and disables the LCD output
with a plane once when waking up the DSS IP, and it seems to resolve the
omap3 problem too. It is unclear if omap2 has the same issue, but it
probably has and the WA should have no side effects so it should be safe
to enable on omap2 too.

Signed-off-by: Tomi Valkeinen <tomi.valkei...@ti.com>
---
 drivers/gpu/drm/omapdrm/dss/dispc.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c 
b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 5ac0145fbae6..75e89707a70a 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -4004,6 +4004,11 @@ static const struct dispc_features omap24xx_dispc_feats 
= {
        .no_framedone_tv        =       true,
        .set_max_preload        =       false,
        .last_pixel_inc_missing =       true,
+       /*
+        * HACK: see comment in omap34xx_rev1_0_dispc_feats. OMAP2 probably
+        * has the same issue.
+        */
+       .has_gamma_i734_bug     =       true,
 };
 
 static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
@@ -4025,6 +4030,13 @@ static const struct dispc_features 
omap34xx_rev1_0_dispc_feats = {
        .no_framedone_tv        =       true,
        .set_max_preload        =       false,
        .last_pixel_inc_missing =       true,
+       /*
+        * HACK: OMAP3 doesn't have i734, but enabling the lcd output without
+        * planes causes synclost flood. This only happens on initial enable,
+        * not after that.
+        * Piggyback on i734 flag until we understand this better.
+        */
+       .has_gamma_i734_bug     =       true,
 };
 
 static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
@@ -4046,6 +4058,8 @@ static const struct dispc_features 
omap34xx_rev3_0_dispc_feats = {
        .no_framedone_tv        =       true,
        .set_max_preload        =       false,
        .last_pixel_inc_missing =       true,
+       /* HACK: see comment in omap34xx_rev1_0_dispc_feats */
+       .has_gamma_i734_bug     =       true,
 };
 
 static const struct dispc_features omap44xx_dispc_feats = {
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to