summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/omap_crtc.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2015-02-26 14:20:25 +0100
committerTomi Valkeinen <tomi.valkeinen@ti.com>2015-03-24 12:50:58 +0100
commitef4222838846fdecb6f1eae5671d9c462fd34852 (patch)
treee7a3768336e0bf4141e7f2f172f4ee1ef8505ac5 /drivers/gpu/drm/omapdrm/omap_crtc.c
parentdrm/omap: fix race with error_irq (diff)
downloadlinux-ef4222838846fdecb6f1eae5671d9c462fd34852.tar.xz
linux-ef4222838846fdecb6f1eae5671d9c462fd34852.zip
drm/omap: only ignore DIGIT SYNC LOST for TV output
We need to ignore DIGIT SYNC LOST error when enabling/disabling TV output. The code does that, but it ignores the DIGI SYNC LOST when enabling any output. Normally this does no harm, but it could make us miss DIGIT SYNC LOST on some rare occasions. Fix the code to only ignore DIGIT SYNC LOST when enabling/disabling TV. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_crtc.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_crtc.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
index c5c21776131a..7b93880a4577 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -155,11 +155,13 @@ static void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable)
if (dispc_mgr_is_enabled(channel) == enable)
return;
- /*
- * Digit output produces some sync lost interrupts during the first
- * frame when enabling, so we need to ignore those.
- */
- omap_crtc->ignore_digit_sync_lost = true;
+ if (omap_crtc->channel == OMAP_DSS_CHANNEL_DIGIT) {
+ /*
+ * Digit output produces some sync lost interrupts during the
+ * first frame when enabling, so we need to ignore those.
+ */
+ omap_crtc->ignore_digit_sync_lost = true;
+ }
framedone_irq = dispc_mgr_get_framedone_irq(channel);
vsync_irq = dispc_mgr_get_vsync_irq(channel);
@@ -190,9 +192,11 @@ static void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable)
omap_crtc->name, enable ? "enable" : "disable");
}
- omap_crtc->ignore_digit_sync_lost = false;
- /* make sure the irq handler sees the value above */
- mb();
+ if (omap_crtc->channel == OMAP_DSS_CHANNEL_DIGIT) {
+ omap_crtc->ignore_digit_sync_lost = false;
+ /* make sure the irq handler sees the value above */
+ mb();
+ }
}