}
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;
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;
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);
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;