summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-imx/include/mach/imx-ipu-fb.h2
-rw-r--r--drivers/video/imx-ipu-fb.c9
2 files changed, 9 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/include/mach/imx-ipu-fb.h b/arch/arm/mach-imx/include/mach/imx-ipu-fb.h
index ee1a9b5839..73028d26cf 100644
--- a/arch/arm/mach-imx/include/mach/imx-ipu-fb.h
+++ b/arch/arm/mach-imx/include/mach/imx-ipu-fb.h
@@ -44,7 +44,9 @@ struct imx_ipu_fb_platform_data {
u_int num_modes;
enum disp_data_mapping disp_data_fmt;
void __iomem *framebuffer;
+ unsigned long framebuffer_size;
void __iomem *framebuffer_ovl;
+ unsigned long framebuffer_ovl_size;
/** hook to enable backlight and stuff */
void (*enable)(int enable);
/*
diff --git a/drivers/video/imx-ipu-fb.c b/drivers/video/imx-ipu-fb.c
index 4b9aae75fb..18a70521de 100644
--- a/drivers/video/imx-ipu-fb.c
+++ b/drivers/video/imx-ipu-fb.c
@@ -964,6 +964,8 @@ static int sdc_fb_register_overlay(struct ipu_fb_info *fbi, void *fb)
if (!overlay->screen_base)
return -ENOMEM;
+ overlay->screen_size = pdata->framebuffer_ovl_size;
+
sdc_enable_channel(fbi, overlay->screen_base, IDMAC_SDC_1);
ret = register_framebuffer(&fbi->overlay);
@@ -1011,14 +1013,17 @@ static int imxfb_probe(struct device_d *dev)
dev_info(dev, "i.MX Framebuffer driver\n");
+ fbi->info.screen_size = pdata->framebuffer_size;
+ if (!fbi->info.screen_size)
+ fbi->info.screen_size = info->xres * info->yres *
+ (info->bits_per_pixel >> 3);
/*
* Use a given frambuffer or reserve some
* memory for screen usage
*/
fbi->info.screen_base = pdata->framebuffer;
if (fbi->info.screen_base == NULL) {
- fbi->info.screen_base = malloc(info->xres * info->yres *
- (info->bits_per_pixel >> 3));
+ fbi->info.screen_base = malloc(fbi->info.screen_size);
if (!fbi->info.screen_base)
return -ENOMEM;
}