aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-08-22 07:57:33 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-09-30 09:16:44 -0400
commitfa70dc5f472ddc261ad429f2c12eb7ac31c90b87 (patch)
tree0130a9f679c9d46db2f308a9369f2968c2935e9d /drivers/video
parentdf4769c9c4effa0960ead8d83522407f66e4a82a (diff)
OMAP: DSS2: HDMI: make set_timing saner
Currently the set_timings code for hdmi is quite strange. The display is disabled in hdmi_omap4_panel.c before setting timings, and enabled in hdmi.c after setting the timings. Furthermore, the timings were not permanent, and disabling and enabling the display would lose them. This patch makes the set_timings handling a bit better. Cc: Mythri P K <mythripk@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/hdmi.c13
-rw-r--r--drivers/video/omap2/dss/hdmi_panel.c7
2 files changed, 12 insertions, 8 deletions
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c
index 06a78b2ab690..f503aa495b2f 100644
--- a/drivers/video/omap2/dss/hdmi.c
+++ b/drivers/video/omap2/dss/hdmi.c
@@ -571,11 +571,20 @@ void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev)
571 struct hdmi_cm cm; 571 struct hdmi_cm cm;
572 572
573 hdmi.custom_set = 1; 573 hdmi.custom_set = 1;
574
574 cm = hdmi_get_code(&dssdev->panel.timings); 575 cm = hdmi_get_code(&dssdev->panel.timings);
575 hdmi.code = cm.code; 576 hdmi.code = cm.code;
576 hdmi.mode = cm.mode; 577 hdmi.mode = cm.mode;
577 omapdss_hdmi_display_enable(dssdev); 578
578 hdmi.custom_set = 0; 579 if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
580 int r;
581
582 hdmi_power_off(dssdev);
583
584 r = hdmi_power_on(dssdev);
585 if (r)
586 DSSERR("failed to power on device\n");
587 }
579} 588}
580 589
581int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev) 590int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev)
diff --git a/drivers/video/omap2/dss/hdmi_panel.c b/drivers/video/omap2/dss/hdmi_panel.c
index e30182f5fecf..8c851e624ee6 100644
--- a/drivers/video/omap2/dss/hdmi_panel.c
+++ b/drivers/video/omap2/dss/hdmi_panel.c
@@ -161,12 +161,7 @@ static void hdmi_set_timings(struct omap_dss_device *dssdev,
161 mutex_lock(&hdmi.hdmi_lock); 161 mutex_lock(&hdmi.hdmi_lock);
162 162
163 dssdev->panel.timings = *timings; 163 dssdev->panel.timings = *timings;
164 164 omapdss_hdmi_display_set_timing(dssdev);
165 if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
166 /* turn the hdmi off and on to get new timings to use */
167 omapdss_hdmi_display_disable(dssdev);
168 omapdss_hdmi_display_set_timing(dssdev);
169 }
170 165
171 mutex_unlock(&hdmi.hdmi_lock); 166 mutex_unlock(&hdmi.hdmi_lock);
172} 167}