1 From bd4fd1dd3be7ff31a6cf779f0683d617280ac92e Mon Sep 17 00:00:00 2001
2 From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3 Date: Wed, 7 Jan 2009 16:44:17 +0200
4 Subject: [PATCH] DSS: OMAPFB: allocate fbmem only for fb0, or if spesified in vram arg
7 drivers/video/omap2/omapfb-main.c | 65 +++++++++++++++++++-----------------
8 1 files changed, 34 insertions(+), 31 deletions(-)
10 diff --git a/drivers/video/omap2/omapfb-main.c b/drivers/video/omap2/omapfb-main.c
11 index 76bd416..9dbff42 100644
12 --- a/drivers/video/omap2/omapfb-main.c
13 +++ b/drivers/video/omap2/omapfb-main.c
14 @@ -939,11 +939,12 @@ static int omapfb_alloc_fbmem_display(struct omapfb2_device *fbdev, int fbnum,
18 - size = display->panel->timings.x_res * display->panel->timings.y_res *
21 - if (def_vram > size)
25 + size = display->panel->timings.x_res *
26 + display->panel->timings.y_res *
29 return omapfb_alloc_fbmem(fbdev, fbnum, size);
31 @@ -956,13 +957,25 @@ static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
32 memset(vrams, 0, sizeof(vrams));
39 + if (strlen(def_vram) > sizeof(str) - 1) {
40 + dev_err(fbdev->dev, "Illegal vram parameters\n");
44 + strcpy(str, def_vram);
50 + while ((tok = strsep(&s, ","))) {
53 - size = memparse(p, &p);
54 + printk("param '%s'\n", tok);
56 + size = memparse(tok, NULL);
59 dev_err(fbdev->dev, "illegal vram size\n");
60 @@ -970,19 +983,18 @@ static int omapfb_allocate_all_fbs(struct omapfb2_device *fbdev)
72 for (i = 0; i < fbdev->num_fbs; i++) {
73 - r = omapfb_alloc_fbmem_display(fbdev, i, vrams[i]);
74 + /* allocate memory automatically only for fb0, or if
75 + * excplicitly defined with vram option */
76 + if (i == 0 || vrams[i] != 0) {
77 + r = omapfb_alloc_fbmem_display(fbdev, i, vrams[i]);
86 for (i = 0; i < fbdev->num_fbs; i++) {
87 @@ -1167,24 +1179,15 @@ static int omapfb_create_framebuffers(struct omapfb2_device *fbdev)
88 dev_err(fbdev->dev, "failed to change mode\n");
91 - /* Enable the first framebuffer that has overlay that is connected
92 - * to display. Usually this would be the GFX plane. */
94 - for (i = 0; i < fbdev->num_fbs; i++) {
95 - struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
98 + if (fbdev->num_fbs > 0) {
99 + struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[0]);
101 - for (t = 0; t < ofbi->num_overlays; t++) {
102 - struct omap_overlay *ovl = ofbi->overlays[t];
103 - if (ovl->manager && ovl->manager->display) {
104 - ovl->enable(ovl, 1);
109 + if (ofbi->num_overlays > 0 ) {
110 + struct omap_overlay *ovl = ofbi->overlays[0];
114 + ovl->enable(ovl, 1);
118 DBG("create_framebuffers done\n");