Re: OMAPFB: cannot parse default modes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2010-03-04 at 16:25 +0100, ext Enric Balletbò i Serra wrote:
> Hello,
> 
> Testing the Linux Omap master branch on IGEP v2 board I get this feature
> 
> [   17.565155] omapfb omapfb: cannot parse default modes
> 
> My kernel command line is something like  '..
> omapfb.mode=dvi:1280x720MR-24@60' which works without problems with
> latest 2.6.33-rc8. Any idea about this ? There is something different
> between 2.6.33 and 2.633-rc8 ? I'm missing something ?

There's no difference between the tagged 2.6.33-rc8 and 2.6.33. But in
the current merge window there went a big bunch of DSS patches in, and
you are right, setting modes doesn't work in git HEAD.

There's some code missing related to mode setting, and it needs some
thinking how to make it properly. But here's a quick hack patch I made,
that makes mode setting work at least for me on 3430SDP.

 Tomi

>From cfd210495c3f42c700f569f722818c52c6dfc7c3 Mon Sep 17 00:00:00 2001
From: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxx>
Date: Thu, 4 Mar 2010 17:52:43 +0200
Subject: [PATCH] hack for set mode

---
 drivers/video/omap2/displays/panel-generic.c |   33 ++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/drivers/video/omap2/displays/panel-generic.c b/drivers/video/omap2/displays/panel-generic.c
index c59e4ba..57c3a26 100644
--- a/drivers/video/omap2/displays/panel-generic.c
+++ b/drivers/video/omap2/displays/panel-generic.c
@@ -116,6 +116,35 @@ static int generic_panel_resume(struct omap_dss_device *dssdev)
 	return 0;
 }
 
+static void generic_panel_set_timings(struct omap_dss_device *dssdev,
+		struct omap_video_timings *timings)
+{
+	int r;
+
+	if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE)
+		omapdss_dpi_display_disable(dssdev);
+
+	dssdev->panel.timings = *timings;
+
+	if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
+		r = omapdss_dpi_display_enable(dssdev);
+		if (r)
+			printk("enable failed\n");
+	}
+}
+
+static void generic_panel_get_timings(struct omap_dss_device *dssdev,
+		struct omap_video_timings *timings)
+{
+	*timings = dssdev->panel.timings;
+}
+
+static int generic_panel_check_timings(struct omap_dss_device *dssdev,
+		struct omap_video_timings *timings)
+{
+	return 0;
+}
+
 static struct omap_dss_driver generic_driver = {
 	.probe		= generic_panel_probe,
 	.remove		= generic_panel_remove,
@@ -125,6 +154,10 @@ static struct omap_dss_driver generic_driver = {
 	.suspend	= generic_panel_suspend,
 	.resume		= generic_panel_resume,
 
+	.set_timings	= generic_panel_set_timings,
+	.get_timings	= generic_panel_get_timings,
+	.check_timings	= generic_panel_check_timings,
+
 	.driver         = {
 		.name   = "generic_panel",
 		.owner  = THIS_MODULE,
-- 
1.6.5


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux