|
|
|
@ -63,7 +63,7 @@ |
|
|
|
|
/************************************************************************/ |
|
|
|
|
#ifdef CONFIG_LCD_LOGO |
|
|
|
|
# include <bmp_logo.h> /* Get logo data, width and height */ |
|
|
|
|
# if (CONSOLE_COLOR_WHITE >= BMP_LOGO_OFFSET) |
|
|
|
|
# if (CONSOLE_COLOR_WHITE >= BMP_LOGO_OFFSET) && (LCD_BPP != LCD_COLOR16) |
|
|
|
|
# error Default Color Map overlaps with Logo Color Map |
|
|
|
|
# endif |
|
|
|
|
#endif |
|
|
|
@ -218,8 +218,12 @@ static void lcd_drawchars (ushort x, ushort y, uchar *str, int count) |
|
|
|
|
|
|
|
|
|
for (row=0; row < VIDEO_FONT_HEIGHT; ++row, dest += lcd_line_length) { |
|
|
|
|
uchar *s = str; |
|
|
|
|
uchar *d = dest; |
|
|
|
|
int i; |
|
|
|
|
#if LCD_BPP == LCD_COLOR16 |
|
|
|
|
ushort *d = (ushort *)dest; |
|
|
|
|
#else |
|
|
|
|
uchar *d = dest; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#if LCD_BPP == LCD_MONOCHROME |
|
|
|
|
uchar rest = *d & -(1 << (8-off)); |
|
|
|
@ -244,7 +248,7 @@ static void lcd_drawchars (ushort x, ushort y, uchar *str, int count) |
|
|
|
|
bits <<= 1; |
|
|
|
|
} |
|
|
|
|
#elif LCD_BPP == LCD_COLOR16 |
|
|
|
|
for (c=0; c<16; ++c) { |
|
|
|
|
for (c=0; c<8; ++c) { |
|
|
|
|
*d++ = (bits & 0x80) ? |
|
|
|
|
lcd_color_fg : lcd_color_bg; |
|
|
|
|
bits <<= 1; |
|
|
|
@ -521,6 +525,13 @@ void bitmap_plot (int x, int y) |
|
|
|
|
cmap = (ushort *)&(cp->lcd_cmap[BMP_LOGO_OFFSET*sizeof(ushort)]); |
|
|
|
|
#elif defined(CONFIG_ATMEL_LCD) |
|
|
|
|
cmap = (uint *) (panel_info.mmio + ATMEL_LCDC_LUT(0)); |
|
|
|
|
#else |
|
|
|
|
/*
|
|
|
|
|
* default case: generic system with no cmap (most likely 16bpp) |
|
|
|
|
* We set cmap to the source palette, so no change is done. |
|
|
|
|
* This avoids even more ifdef in the next stanza |
|
|
|
|
*/ |
|
|
|
|
cmap = bmp_logo_palette; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
WATCHDOG_RESET(); |
|
|
|
@ -559,10 +570,15 @@ void bitmap_plot (int x, int y) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else { /* true color mode */ |
|
|
|
|
u16 col16; |
|
|
|
|
fb16 = (ushort *)(lcd_base + y * lcd_line_length + x); |
|
|
|
|
for (i=0; i<BMP_LOGO_HEIGHT; ++i) { |
|
|
|
|
for (j=0; j<BMP_LOGO_WIDTH; j++) { |
|
|
|
|
fb16[j] = bmp_logo_palette[(bmap[j])]; |
|
|
|
|
col16 = bmp_logo_palette[(bmap[j]-16)]; |
|
|
|
|
fb16[j] = |
|
|
|
|
((col16 & 0x000F) << 1) | |
|
|
|
|
((col16 & 0x00F0) << 3) | |
|
|
|
|
((col16 & 0x0F00) << 4); |
|
|
|
|
} |
|
|
|
|
bmap += BMP_LOGO_WIDTH; |
|
|
|
|
fb16 += panel_info.vl_col; |
|
|
|
|