From 1d73a42006b0ae3d81a901778b0fb12d85406bbd Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 19 Aug 2009 17:30:03 +0200 Subject: [PATCH] imxfb: make framebuffer base address configurable Signed-off-by: Sascha Hauer --- drivers/video/imx.c | 14 ++++++++++---- include/asm-arm/arch-imx/imxfb.h | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/video/imx.c b/drivers/video/imx.c index cf18ed0eb..10aaa80cf 100644 --- a/drivers/video/imx.c +++ b/drivers/video/imx.c @@ -425,7 +425,7 @@ static int imxfb_alpha_set(struct device_d *dev, struct param_d *param, return 0; } -static int imxfb_register_overlay(struct imxfb_info *fbi) +static int imxfb_register_overlay(struct imxfb_info *fbi, void *fb) { struct fb_info *overlay; struct imxfb_rgb *rgb; @@ -440,7 +440,10 @@ static int imxfb_register_overlay(struct imxfb_info *fbi) overlay->bits_per_pixel = fbi->info.bits_per_pixel; overlay->fbops = &imxfb_overlay_ops; - overlay->screen_base = xzalloc(overlay->xres * overlay->yres * + if (fb) + overlay->screen_base = fb; + else + overlay->screen_base = xzalloc(overlay->xres * overlay->yres * (overlay->bits_per_pixel >> 3)); writel((unsigned long)overlay->screen_base, fbi->regs + LCDC_LGWSAR); @@ -526,7 +529,10 @@ static int imxfb_probe(struct device_d *dev) dev_info(dev, "i.MX Framebuffer driver\n"); - fbi->info.screen_base = xzalloc(info->xres * info->yres * + if (pdata->framebuffer) + fbi->info.screen_base = pdata->framebuffer; + else + fbi->info.screen_base = xzalloc(info->xres * info->yres * (info->bits_per_pixel >> 3)); imxfb_activate_var(&fbi->info); @@ -537,7 +543,7 @@ static int imxfb_probe(struct device_d *dev) return ret; } #ifdef CONFIG_IMXFB_DRIVER_VIDEO_IMX_OVERLAY - imxfb_register_overlay(fbi); + imxfb_register_overlay(fbi, pdata->framebuffer_ovl); #endif imxfb_enable_controller(info); diff --git a/include/asm-arm/arch-imx/imxfb.h b/include/asm-arm/arch-imx/imxfb.h index 4bfa3f206..ca7ea32fb 100644 --- a/include/asm-arm/arch-imx/imxfb.h +++ b/include/asm-arm/arch-imx/imxfb.h @@ -66,6 +66,9 @@ struct imx_fb_platform_data { u_int pwmr; u_int lscr1; u_int dmacr; + + void *framebuffer; + void *framebuffer_ovl; }; void set_imx_fb_info(struct imx_fb_platform_data *);