--- /dev/null
+From bd4fd1dd3be7ff31a6cf779f0683d617280ac92e Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen@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
+
--- /dev/null
+From 70c3edb223f7bfbc6c5b095826c779b7dd853f10 Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen@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
+
--- /dev/null
+From 36d6e7edd70d16ad57ed745a1c48694805035dc7 Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen@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
+