aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2015-02-26 08:20:25 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2015-03-24 07:50:58 -0400
commitef4222838846fdecb6f1eae5671d9c462fd34852 (patch)
treee7a3768336e0bf4141e7f2f172f4ee1ef8505ac5
parenta36af73f5e825c4c5ae5b11580c24fa7841bd5e2 (diff)
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>
-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)
155 if (dispc_mgr_is_enabled(channel) == enable) 155 if (dispc_mgr_is_enabled(channel) == enable)
156 return; 156 return;
157 157
158 /* 158 if (omap_crtc->channel == OMAP_DSS_CHANNEL_DIGIT) {
159 * Digit output produces some sync lost interrupts during the first 159 /*
160 * frame when enabling, so we need to ignore those. 160 * Digit output produces some sync lost interrupts during the
161 */ 161 * first frame when enabling, so we need to ignore those.
162 omap_crtc->ignore_digit_sync_lost = true; 162 */
163 omap_crtc->ignore_digit_sync_lost = true;
164 }
163 165
164 framedone_irq = dispc_mgr_get_framedone_irq(channel); 166 framedone_irq = dispc_mgr_get_framedone_irq(channel);
165 vsync_irq = dispc_mgr_get_vsync_irq(channel); 167 vsync_irq = dispc_mgr_get_vsync_irq(channel);
@@ -190,9 +192,11 @@ static void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable)
190 omap_crtc->name, enable ? "enable" : "disable"); 192 omap_crtc->name, enable ? "enable" : "disable");
191 } 193 }
192 194
193 omap_crtc->ignore_digit_sync_lost = false; 195 if (omap_crtc->channel == OMAP_DSS_CHANNEL_DIGIT) {
194 /* make sure the irq handler sees the value above */ 196 omap_crtc->ignore_digit_sync_lost = false;
195 mb(); 197 /* make sure the irq handler sees the value above */
198 mb();
199 }
196} 200}
197 201
198 202