forked from Minki/linux
davinci: fb: fix frame buffer driver issues
Following issues have been addressed on DA8XX/OMAP-L1XX: a. Screen misalignment during booting when frame buffer console is enabled. b. Driver was configured always in PSEUDOCOLOR mode. This patch dynamically configures the driver either in PSEUDOCOLOUR or TRUECOLOR mode depending on bpp. c. The RED and BLUE offsets were interchanged resulting in wrong bootup logo colour. This patch has been tested on DA830/OMAP-L137 and DA850/OMAP-L138 EVMs. Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com> Cc: Steve Chen <schen@mvista.com> Cc: Pavel Kiryukhin <pkiryukhin@ru.mvista.com> Cc: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fa00e106eb
commit
3510b8f7f5
@ -554,11 +554,11 @@ static int fb_check_var(struct fb_var_screeninfo *var,
|
||||
var->transp.length = 0;
|
||||
break;
|
||||
case 16: /* RGB 565 */
|
||||
var->red.offset = 0;
|
||||
var->red.offset = 11;
|
||||
var->red.length = 5;
|
||||
var->green.offset = 5;
|
||||
var->green.length = 6;
|
||||
var->blue.offset = 11;
|
||||
var->blue.offset = 0;
|
||||
var->blue.length = 5;
|
||||
var->transp.offset = 0;
|
||||
var->transp.length = 0;
|
||||
@ -591,7 +591,7 @@ static int __devexit fb_remove(struct platform_device *dev)
|
||||
unregister_framebuffer(info);
|
||||
fb_dealloc_cmap(&info->cmap);
|
||||
dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE,
|
||||
info->screen_base,
|
||||
info->screen_base - PAGE_SIZE,
|
||||
info->fix.smem_start);
|
||||
free_irq(par->irq, par);
|
||||
clk_disable(par->lcdc_clk);
|
||||
@ -749,6 +749,7 @@ static int __init fb_probe(struct platform_device *device)
|
||||
(PAGE_SIZE - par->palette_sz);
|
||||
|
||||
/* the rest of the frame buffer is pixel data */
|
||||
da8xx_fb_info->screen_base = par->v_palette_base + par->palette_sz;
|
||||
da8xx_fb_fix.smem_start = par->p_palette_base + par->palette_sz;
|
||||
da8xx_fb_fix.smem_len = par->databuf_sz - par->palette_sz;
|
||||
da8xx_fb_fix.line_length = (lcdc_info->width * lcd_cfg->bpp) / 8;
|
||||
@ -787,6 +788,8 @@ static int __init fb_probe(struct platform_device *device)
|
||||
da8xx_fb_info->var = da8xx_fb_var;
|
||||
da8xx_fb_info->fbops = &da8xx_fb_ops;
|
||||
da8xx_fb_info->pseudo_palette = par->pseudo_palette;
|
||||
da8xx_fb_info->fix.visual = (da8xx_fb_info->var.bits_per_pixel <= 8) ?
|
||||
FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
|
||||
|
||||
ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0);
|
||||
if (ret)
|
||||
@ -825,7 +828,7 @@ err_free_irq:
|
||||
|
||||
err_release_fb_mem:
|
||||
dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE,
|
||||
da8xx_fb_info->screen_base,
|
||||
da8xx_fb_info->screen_base - PAGE_SIZE,
|
||||
da8xx_fb_info->fix.smem_start);
|
||||
|
||||
err_release_fb:
|
||||
|
Loading…
Reference in New Issue
Block a user