[oe-commits] Koen Kooi : linux-omap 2.6.28: add patches to make XV work better with DSS2

GIT User account git at amethyst.openembedded.net
Wed Jan 7 15:35:09 UTC 2009


Module: openembedded.git
Branch: org.openembedded.dev
Commit: 952fbbaccb3ebe744c463b8090f536a1a856a658
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=952fbbaccb3ebe744c463b8090f536a1a856a658

Author: Koen Kooi <koen at openembedded.org>
Date:   Wed Jan  7 16:31:56 2009 +0100

linux-omap 2.6.28: add patches to make XV work better with DSS2

---

 ...FB-allocate-fbmem-only-for-fb0-or-if-spes.patch |  121 ++++++++++++++++++++
 ...FB-remove-extra-omapfb_setup_overlay-call.patch |   29 +++++
 ...B-fix-GFX_SYNC-to-be-compatible-with-DSS1.patch |   27 +++++
 .../linux/linux-omap-2.6.28/beagleboard/defconfig  |    2 +-
 .../linux/linux-omap-2.6.28/omap3evm/defconfig     |    2 +-
 packages/linux/linux-omap_2.6.28.bb                |    5 +-
 6 files changed, 183 insertions(+), 3 deletions(-)

diff --git a/packages/linux/linux-omap-2.6.28/0009-DSS-OMAPFB-allocate-fbmem-only-for-fb0-or-if-spes.patch b/packages/linux/linux-omap-2.6.28/0009-DSS-OMAPFB-allocate-fbmem-only-for-fb0-or-if-spes.patch
new file mode 100644
index 0000000..8917490
--- /dev/null
+++ b/packages/linux/linux-omap-2.6.28/0009-DSS-OMAPFB-allocate-fbmem-only-for-fb0-or-if-spes.patch
@@ -0,0 +1,121 @@
+From bd4fd1dd3be7ff31a6cf779f0683d617280ac92e Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen at nokia.com>
+Date: Wed, 7 Jan 2009 16:44:17 +0200
+Subject: [PATCH] DSS: OMAPFB: allocate fbmem only for fb0, or if spesified in vram arg
+
+---
+ drivers/video/omap2/omapfb-main.c |   65 +++++++++++++++++++-----------------
+ 1 files changed, 34 insertions(+), 31 deletions(-)
+
+diff --git a/drivers/video/omap2/omapfb-main.c b/drivers/video/omap2/omapfb-main.c
+index 76bd416..9dbff42 100644
+--- a/drivers/video/omap2/omapfb-main.c
++++ b/drivers/video/omap2/omapfb-main.c
+@@ -939,11 +939,12 @@ static int omapfb_alloc_fbmem_display(struct omapfb2_device *fbdev, int fbnum,
+ 		break;
+ 	}
+ 
+-	size = display->panel->timings.x_res * display->panel->timings.y_res *
+-		bytespp;
+-
+-	if (def_vram > size)
++	if (def_vram)
+ 		size = def_vram;
++	else
++		size = display->panel->timings.x_res *
++			display->panel->timings.y_res *
++			bytespp;
+ 
+ 	return omapfb_alloc_fbmem(fbdev, fbnum, size);
+ }
+@@ -956,13 +957,25 @@ static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
+ 	memset(vrams, 0, sizeof(vrams));
+ 
+ 	if (def_vram) {
+-		char *p = def_vram;
++		char str[64];
++		char *tok, *s;
++
++		if (strlen(def_vram) > sizeof(str) - 1) {
++			dev_err(fbdev->dev, "Illegal vram parameters\n");
++			return -EINVAL;
++		}
++
++		strcpy(str, def_vram);
++
++		s = str;
+ 		i = 0;
+ 
+-		while (true) {
++		while ((tok = strsep(&s, ","))) {
+ 			unsigned long size;
+ 
+-			size = memparse(p, &p);
++			printk("param '%s'\n", tok);
++
++			size = memparse(tok, NULL);
+ 
+ 			if (size == 0) {
+ 				dev_err(fbdev->dev, "illegal vram size\n");
+@@ -970,19 +983,18 @@ static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
+ 			}
+ 
+ 			vrams[i++] = size;
+-
+-			if (*p != ',')
+-				break;
+-
+-			p++;
+ 		}
+ 	}
+ 
+ 	for (i = 0; i < fbdev->num_fbs; i++) {
+-		r = omapfb_alloc_fbmem_display(fbdev, i, vrams[i]);
++		/* allocate memory automatically only for fb0, or if
++		 * excplicitly defined with vram option */
++		if (i == 0 || vrams[i] != 0) {
++			r = omapfb_alloc_fbmem_display(fbdev, i, vrams[i]);
+ 
+-		if (r)
+-			return r;
++			if (r)
++				return r;
++		}
+ 	}
+ 
+ 	for (i = 0; i < fbdev->num_fbs; i++) {
+@@ -1167,24 +1179,15 @@ static int omapfb_create_framebuffers(struct omapfb2_device *fbdev)
+ 			dev_err(fbdev->dev, "failed to change mode\n");
+ 	}
+ 
+-	/* Enable the first framebuffer that has overlay that is connected
+-	 * to display. Usually this would be the GFX plane. */
+-	r = 0;
+-	for (i = 0; i < fbdev->num_fbs; i++) {
+-		struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
+-		int t;
++	/* Enable fb0 */
++	if (fbdev->num_fbs > 0) {
++		struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[0]);
+ 
+-		for (t = 0; t < ofbi->num_overlays; t++) {
+-			struct omap_overlay *ovl = ofbi->overlays[t];
+-			if (ovl->manager && ovl->manager->display) {
+-				ovl->enable(ovl, 1);
+-				r = 1;
+-				break;
+-			}
+-		}
++		if (ofbi->num_overlays > 0 ) {
++			struct omap_overlay *ovl = ofbi->overlays[0];
+ 
+-		if (r)
+-			break;
++			ovl->enable(ovl, 1);
++		}
+ 	}
+ 
+ 	DBG("create_framebuffers done\n");
+-- 
+1.5.6.3
+
diff --git a/packages/linux/linux-omap-2.6.28/0010-DSS-OMAPFB-remove-extra-omapfb_setup_overlay-call.patch b/packages/linux/linux-omap-2.6.28/0010-DSS-OMAPFB-remove-extra-omapfb_setup_overlay-call.patch
new file mode 100644
index 0000000..c5ce980
--- /dev/null
+++ b/packages/linux/linux-omap-2.6.28/0010-DSS-OMAPFB-remove-extra-omapfb_setup_overlay-call.patch
@@ -0,0 +1,29 @@
+From 70c3edb223f7bfbc6c5b095826c779b7dd853f10 Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen at nokia.com>
+Date: Wed, 7 Jan 2009 17:00:46 +0200
+Subject: [PATCH] OMAPFB: remove extra omapfb_setup_overlay call
+
+It kinda messed things up...
+---
+ drivers/video/omap2/omapfb-ioctl.c |    5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/video/omap2/omapfb-ioctl.c b/drivers/video/omap2/omapfb-ioctl.c
+index 1f0f044..bb5f791 100644
+--- a/drivers/video/omap2/omapfb-ioctl.c
++++ b/drivers/video/omap2/omapfb-ioctl.c
+@@ -67,11 +67,6 @@ static int omapfb_setup_plane(struct fb_info *fbi, struct omapfb_plane_info *pi)
+ 			goto out;
+ 	}
+ 
+-	r = omapfb_setup_overlay(fbi, ovl, pi->pos_x, pi->pos_y,
+-			pi->out_width, pi->out_height);
+-	if (r)
+-		goto out;
+-
+ 	ovl->enable(ovl, pi->enabled);
+ 
+ 	if (ovl->manager)
+-- 
+1.5.6.3
+
diff --git a/packages/linux/linux-omap-2.6.28/0011-DSS-OMAPFB-fix-GFX_SYNC-to-be-compatible-with-DSS1.patch b/packages/linux/linux-omap-2.6.28/0011-DSS-OMAPFB-fix-GFX_SYNC-to-be-compatible-with-DSS1.patch
new file mode 100644
index 0000000..8d4165a
--- /dev/null
+++ b/packages/linux/linux-omap-2.6.28/0011-DSS-OMAPFB-fix-GFX_SYNC-to-be-compatible-with-DSS1.patch
@@ -0,0 +1,27 @@
+From 36d6e7edd70d16ad57ed745a1c48694805035dc7 Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen at nokia.com>
+Date: Wed, 7 Jan 2009 17:17:08 +0200
+Subject: [PATCH] OMAPFB: fix GFX_SYNC to be compatible with DSS1
+
+DSS1 never returned an error from GFX_SYNC ioctl. So we neither.
+---
+ drivers/video/omap2/omapfb-ioctl.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/video/omap2/omapfb-ioctl.c b/drivers/video/omap2/omapfb-ioctl.c
+index bb5f791..0cb0370 100644
+--- a/drivers/video/omap2/omapfb-ioctl.c
++++ b/drivers/video/omap2/omapfb-ioctl.c
+@@ -314,7 +314,8 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
+ 	switch (cmd) {
+ 	case OMAPFB_SYNC_GFX:
+ 		if (!display || !display->sync) {
+-			r = -EINVAL;
++			/* DSS1 never returns an error here, so we neither */
++			/*r = -EINVAL;*/
+ 			break;
+ 		}
+ 
+-- 
+1.5.6.3
+
diff --git a/packages/linux/linux-omap-2.6.28/beagleboard/defconfig b/packages/linux/linux-omap-2.6.28/beagleboard/defconfig
index 2257689..6b5cd3f 100644
--- a/packages/linux/linux-omap-2.6.28/beagleboard/defconfig
+++ b/packages/linux/linux-omap-2.6.28/beagleboard/defconfig
@@ -205,7 +205,7 @@ CONFIG_OMAP2_DSS_VENC=y
 # CONFIG_OMAP2_DSS_SDI is not set
 CONFIG_OMAP2_DSS_DSI=y
 CONFIG_OMAP2_DSS_USE_DSI_PLL=y
-CONFIG_OMAP2_DSS_FAKE_VSYNC=y
+CONFIG_OMAP2_DSS_FAKE_VSYNC=n
 CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1
 CONFIG_ARCH_OMAP34XX=y
 CONFIG_ARCH_OMAP3430=y
diff --git a/packages/linux/linux-omap-2.6.28/omap3evm/defconfig b/packages/linux/linux-omap-2.6.28/omap3evm/defconfig
index f6117f7..be0b2cf 100644
--- a/packages/linux/linux-omap-2.6.28/omap3evm/defconfig
+++ b/packages/linux/linux-omap-2.6.28/omap3evm/defconfig
@@ -207,7 +207,7 @@ CONFIG_OMAP2_DSS_VENC=y
 # CONFIG_OMAP2_DSS_SDI is not set
 CONFIG_OMAP2_DSS_DSI=y
 CONFIG_OMAP2_DSS_USE_DSI_PLL=y
-CONFIG_OMAP2_DSS_FAKE_VSYNC=y
+CONFIG_OMAP2_DSS_FAKE_VSYNC=n
 CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1
 CONFIG_ARCH_OMAP34XX=y
 CONFIG_ARCH_OMAP3430=y
diff --git a/packages/linux/linux-omap_2.6.28.bb b/packages/linux/linux-omap_2.6.28.bb
index 31a5c05..eddb665 100644
--- a/packages/linux/linux-omap_2.6.28.bb
+++ b/packages/linux/linux-omap_2.6.28.bb
@@ -10,7 +10,7 @@ DEFAULT_PREFERENCE = "-1"
 SRCREV = "401b285465488f515290e0f9111872b94e1cf922"
 
 PV = "2.6.28"
-PR = "r2"
+PR = "r3"
 
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \
 	   file://defconfig"
@@ -39,6 +39,9 @@ SRC_URI_append = " \
            file://0006-DSS-Support-for-OMAP3-SDP-board.patch;patch=1 \
            file://0007-DSS-Support-for-OMAP3-EVM-board.patch;patch=1 \
            file://0008-DSS-Hacked-N810-support.patch;patch=1 \
+           file://0009-DSS-OMAPFB-allocate-fbmem-only-for-fb0-or-if-spes.patch;patch=1 \
+           file://0010-DSS-OMAPFB-remove-extra-omapfb_setup_overlay-call.patch;patch=1 \
+           file://0011-DSS-OMAPFB-fix-GFX_SYNC-to-be-compatible-with-DSS1.patch;patch=1 \
 "
 
 





More information about the Openembedded-commits mailing list