aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/dss/hdmi_panel.c')
-rwxr-xr-x[-rw-r--r--]drivers/video/omap2/dss/hdmi_panel.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/drivers/video/omap2/dss/hdmi_panel.c b/drivers/video/omap2/dss/hdmi_panel.c
index 95090f27daa..fab1d303004 100644..100755
--- a/drivers/video/omap2/dss/hdmi_panel.c
+++ b/drivers/video/omap2/dss/hdmi_panel.c
@@ -143,11 +143,10 @@ static int hdmi_panel_probe(struct omap_dss_device *dssdev)
143 DSSDBG("hdmi_panel_probe x_res= %d y_res = %d\n", 143 DSSDBG("hdmi_panel_probe x_res= %d y_res = %d\n",
144 dssdev->panel.timings.x_res, 144 dssdev->panel.timings.x_res,
145 dssdev->panel.timings.y_res); 145 dssdev->panel.timings.y_res);
146 146#ifndef CONFIG_USE_FB_MODE_DB
147 omapdss_hdmi_display_set_timing(dssdev, &dssdev->panel.timings); 147 omapdss_hdmi_display_set_timing(dssdev, &dssdev->panel.timings);
148
149 hdmi.dssdev = dssdev; 148 hdmi.dssdev = dssdev;
150 149#endif
151 return 0; 150 return 0;
152} 151}
153 152
@@ -326,9 +325,9 @@ static int hdmi_panel_enable(struct omap_dss_device *dssdev)
326 r = -EINVAL; 325 r = -EINVAL;
327 goto err; 326 goto err;
328 } 327 }
329 328#ifndef CONFIG_USE_FB_MODE_DB
330 omapdss_hdmi_display_set_timing(dssdev, &dssdev->panel.timings); 329 omapdss_hdmi_display_set_timing(dssdev, &dssdev->panel.timings);
331 330#endif
332 r = omapdss_hdmi_display_enable(dssdev); 331 r = omapdss_hdmi_display_enable(dssdev);
333 if (r) { 332 if (r) {
334 DSSERR("failed to power on\n"); 333 DSSERR("failed to power on\n");
@@ -412,10 +411,14 @@ static void hdmi_set_timings(struct omap_dss_device *dssdev,
412 */ 411 */
413 hdmi_panel_audio_disable(dssdev); 412 hdmi_panel_audio_disable(dssdev);
414 413
415 omapdss_hdmi_display_set_timing(dssdev, timings);
416 dssdev->panel.timings = *timings; 414 dssdev->panel.timings = *timings;
417 415#ifndef CONFIG_USE_FB_MODE_DB
416 omapdss_hdmi_display_set_timing(dssdev, timings);
417 mutex_unlock(&hdmi.lock);
418#else
418 mutex_unlock(&hdmi.lock); 419 mutex_unlock(&hdmi.lock);
420 omapdss_hdmi_display_set_timing(dssdev, timings);
421#endif
419} 422}
420 423
421static int hdmi_check_timings(struct omap_dss_device *dssdev, 424static int hdmi_check_timings(struct omap_dss_device *dssdev,
@@ -496,6 +499,16 @@ MODULE_DEVICE_TABLE(of, hdmi_panel_of_match);
496#define dss_of_match NULL 499#define dss_of_match NULL
497#endif 500#endif
498 501
502static int hdmi_get_modedb(struct omap_dss_device *dssdev,
503 struct fb_videomode *modedb, int modedb_len)
504{
505 struct fb_monspecs *specs = &dssdev->panel.monspecs;
506 if (specs->modedb_len < modedb_len)
507 modedb_len = specs->modedb_len;
508 memcpy(modedb, specs->modedb, sizeof(*modedb) * modedb_len);
509 return modedb_len;
510}
511
499static struct omap_dss_driver hdmi_driver = { 512static struct omap_dss_driver hdmi_driver = {
500 .probe = hdmi_panel_probe, 513 .probe = hdmi_panel_probe,
501 .remove = hdmi_panel_remove, 514 .remove = hdmi_panel_remove,
@@ -505,6 +518,8 @@ static struct omap_dss_driver hdmi_driver = {
505 .set_timings = hdmi_set_timings, 518 .set_timings = hdmi_set_timings,
506 .check_timings = hdmi_check_timings, 519 .check_timings = hdmi_check_timings,
507 .read_edid = hdmi_read_edid, 520 .read_edid = hdmi_read_edid,
521 .get_modedb = hdmi_get_modedb,
522 .set_mode = omapdss_hdmi_display_set_mode,
508 .detect = hdmi_detect, 523 .detect = hdmi_detect,
509 .audio_enable = hdmi_panel_audio_enable, 524 .audio_enable = hdmi_panel_audio_enable,
510 .audio_disable = hdmi_panel_audio_disable, 525 .audio_disable = hdmi_panel_audio_disable,