Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Sudhakar Rajashekhara and committed by
Linus Torvalds
3510b8f7 fa00e106

+7 -4
+7 -4
drivers/video/da8xx-fb.c
··· 554 554 var->transp.length = 0; 555 555 break; 556 556 case 16: /* RGB 565 */ 557 - var->red.offset = 0; 557 + var->red.offset = 11; 558 558 var->red.length = 5; 559 559 var->green.offset = 5; 560 560 var->green.length = 6; 561 - var->blue.offset = 11; 561 + var->blue.offset = 0; 562 562 var->blue.length = 5; 563 563 var->transp.offset = 0; 564 564 var->transp.length = 0; ··· 591 591 unregister_framebuffer(info); 592 592 fb_dealloc_cmap(&info->cmap); 593 593 dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE, 594 - info->screen_base, 594 + info->screen_base - PAGE_SIZE, 595 595 info->fix.smem_start); 596 596 free_irq(par->irq, par); 597 597 clk_disable(par->lcdc_clk); ··· 749 749 (PAGE_SIZE - par->palette_sz); 750 750 751 751 /* the rest of the frame buffer is pixel data */ 752 + da8xx_fb_info->screen_base = par->v_palette_base + par->palette_sz; 752 753 da8xx_fb_fix.smem_start = par->p_palette_base + par->palette_sz; 753 754 da8xx_fb_fix.smem_len = par->databuf_sz - par->palette_sz; 754 755 da8xx_fb_fix.line_length = (lcdc_info->width * lcd_cfg->bpp) / 8; ··· 788 787 da8xx_fb_info->var = da8xx_fb_var; 789 788 da8xx_fb_info->fbops = &da8xx_fb_ops; 790 789 da8xx_fb_info->pseudo_palette = par->pseudo_palette; 790 + da8xx_fb_info->fix.visual = (da8xx_fb_info->var.bits_per_pixel <= 8) ? 791 + FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR; 791 792 792 793 ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0); 793 794 if (ret) ··· 828 825 829 826 err_release_fb_mem: 830 827 dma_free_coherent(NULL, par->databuf_sz + PAGE_SIZE, 831 - da8xx_fb_info->screen_base, 828 + da8xx_fb_info->screen_base - PAGE_SIZE, 832 829 da8xx_fb_info->fix.smem_start); 833 830 834 831 err_release_fb: