return 0;
 }
 
+static void omapfb_clear_fb(struct fb_info *fbi)
+{
+       const struct fb_fillrect rect = {
+               .dx = 0,
+               .dy = 0,
+               .width = fbi->var.xres_virtual,
+               .height = fbi->var.yres_virtual,
+               .color = 0,
+               .rop = ROP_COPY,
+       };
+
+       cfb_fillrect(fbi, &rect);
+}
+
 int omapfb_realloc_fbmem(struct fb_info *fbi, unsigned long size, int type)
 {
        struct omapfb_info *ofbi = FB2OFB(fbi);
                        goto err;
        }
 
+       omapfb_clear_fb(fbi);
+
        return 0;
 err:
        omapfb_free_fbmem(fbi);
                }
        }
 
+       for (i = 0; i < fbdev->num_fbs; i++) {
+               struct fb_info *fbi = fbdev->fbs[i];
+               struct omapfb_info *ofbi = FB2OFB(fbi);
+
+               if (ofbi->region->size == 0)
+                       continue;
+
+               omapfb_clear_fb(fbi);
+       }
+
        /* Enable fb0 */
        if (fbdev->num_fbs > 0) {
                struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[0]);