diff options
author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-08-12 18:08:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-12 19:07:29 -0400 |
commit | ea757acad5a5183c65a3e1b28b49a5978fe6a052 (patch) | |
tree | 6cefcbb3770fa13719792e03158b9d8f3b0d36ac /drivers/video/atmel_lcdfb.c | |
parent | e730d8b0a5882b66c169e1bed09774d5d365e2e0 (diff) |
atmel_lcdfb: add board parameter specify framebuffer memory size
Specify how much physically continuous, DMA capable memory will be
allocated at driver initialization time. This allow to create framebuffer
device with larger virtual resolution. Combine with y-panning this can be
used to implement double buffering acceleration method.
Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/atmel_lcdfb.c')
-rw-r--r-- | drivers/video/atmel_lcdfb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index 16e47eb2ff5d..9c5925927ece 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c | |||
@@ -242,9 +242,11 @@ static int atmel_lcdfb_alloc_video_memory(struct atmel_lcdfb_info *sinfo) | |||
242 | { | 242 | { |
243 | struct fb_info *info = sinfo->info; | 243 | struct fb_info *info = sinfo->info; |
244 | struct fb_var_screeninfo *var = &info->var; | 244 | struct fb_var_screeninfo *var = &info->var; |
245 | unsigned int smem_len; | ||
245 | 246 | ||
246 | info->fix.smem_len = (var->xres_virtual * var->yres_virtual | 247 | smem_len = (var->xres_virtual * var->yres_virtual |
247 | * ((var->bits_per_pixel + 7) / 8)); | 248 | * ((var->bits_per_pixel + 7) / 8)); |
249 | info->fix.smem_len = max(smem_len, sinfo->smem_len); | ||
248 | 250 | ||
249 | info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len, | 251 | info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len, |
250 | (dma_addr_t *)&info->fix.smem_start, GFP_KERNEL); | 252 | (dma_addr_t *)&info->fix.smem_start, GFP_KERNEL); |
@@ -796,6 +798,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) | |||
796 | sinfo->default_monspecs = pdata_sinfo->default_monspecs; | 798 | sinfo->default_monspecs = pdata_sinfo->default_monspecs; |
797 | sinfo->atmel_lcdfb_power_control = pdata_sinfo->atmel_lcdfb_power_control; | 799 | sinfo->atmel_lcdfb_power_control = pdata_sinfo->atmel_lcdfb_power_control; |
798 | sinfo->guard_time = pdata_sinfo->guard_time; | 800 | sinfo->guard_time = pdata_sinfo->guard_time; |
801 | sinfo->smem_len = pdata_sinfo->smem_len; | ||
799 | sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight; | 802 | sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight; |
800 | sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode; | 803 | sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode; |
801 | } else { | 804 | } else { |