]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00170145-2 ipuv3 fb: reserve overlay fb buffer with valid resource
authorXinyu Chen <xinyu.chen@freescale.com>
Tue, 13 Dec 2011 07:30:42 +0000 (15:30 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:33:37 +0000 (08:33 +0200)
Reserve the overlay fb triple buffer when we have a valid
resource for start and end.
Clear the GB fb buffers when we reserve memory for it.

Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
drivers/video/mxc/mxc_ipuv3_fb.c

index ba652d73028c30e6717ff7df11760d63d2ec98ee..46cc9f76a8bf063da00a63633fc2a51c332487ab 100644 (file)
@@ -1874,7 +1874,7 @@ static void mxcfb_unregister(struct fb_info *fbi)
 }
 
 static int mxcfb_setup_overlay(struct platform_device *pdev,
-               struct fb_info *fbi_bg)
+               struct fb_info *fbi_bg, struct resource *res)
 {
        struct fb_info *ovfbi;
        struct mxcfb_info *mxcfbi_bg = (struct mxcfb_info *)fbi_bg->par;
@@ -1907,6 +1907,14 @@ static int mxcfb_setup_overlay(struct platform_device *pdev,
        ovfbi->var.xres = 240;
        ovfbi->var.yres = 320;
 
+       if (res && res->end) {
+               ovfbi->fix.smem_len = res->end - res->start + 1;
+               ovfbi->fix.smem_start = res->start;
+               ovfbi->screen_base = ioremap(
+                                       ovfbi->fix.smem_start,
+                                       ovfbi->fix.smem_len);
+       }
+
        ret = mxcfb_register(ovfbi);
        if (ret < 0)
                goto register_ov_failed;
@@ -1995,6 +2003,7 @@ static int mxcfb_probe(struct platform_device *pdev)
                fbi->fix.smem_len = res->end - res->start + 1;
                fbi->fix.smem_start = res->start;
                fbi->screen_base = ioremap(fbi->fix.smem_start, fbi->fix.smem_len);
+               memset(fbi->screen_base, 0, fbi->fix.smem_len);
        }
 
        mxcfbi->ipu = ipu_get_soc(mxcfbi->ipu_id);
@@ -2018,7 +2027,9 @@ static int mxcfb_probe(struct platform_device *pdev)
                if (ret < 0)
                        goto mxcfb_register_failed;
 
-               ret = mxcfb_setup_overlay(pdev, fbi);
+               res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+               ret = mxcfb_setup_overlay(pdev, fbi, res);
+
                if (ret < 0) {
                        mxcfb_unregister(fbi);
                        goto mxcfb_setupoverlay_failed;