diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-12-18 16:26:18 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-12-20 11:32:07 +0100 |
commit | a76f3d953577414ae7b3a61acd26e4b5ce1bd3aa (patch) | |
tree | 9da9d6e8160335959515451dd79f96b37d8f48f9 | |
parent | 8bec1f2f1676a3914d46868064afa94b85a7b8cb (diff) | |
download | barebox-a76f3d953577414ae7b3a61acd26e4b5ce1bd3aa.tar.gz barebox-a76f3d953577414ae7b3a61acd26e4b5ce1bd3aa.tar.xz |
video: imx-ipu-fb: Allow to specify framebuffer memory size via platform_data
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/mach-imx/include/mach/imx-ipu-fb.h | 2 | ||||
-rw-r--r-- | drivers/video/imx-ipu-fb.c | 9 |
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; } |