lcd: introduce getters for bg/fg color

Introduce lcd_getbgcolor() and lcd_getfgcolor(), and use them where
applicable.

This is a preparatory step for extracting lcd console code into its own
file.

Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Anatolij Gustschin <agust@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Nikita Kiryanov 2014-12-08 17:14:43 +02:00 committed by Anatolij Gustschin
parent a7de2953f5
commit 4d03634e5d
2 changed files with 36 additions and 9 deletions

View file

@ -177,6 +177,7 @@ void lcd_set_row(short row)
static void console_scrollup(void) static void console_scrollup(void)
{ {
const int rows = CONFIG_CONSOLE_SCROLL_LINES; const int rows = CONFIG_CONSOLE_SCROLL_LINES;
int bg_color = lcd_getbgcolor();
/* Copy up rows ignoring those that will be overwritten */ /* Copy up rows ignoring those that will be overwritten */
memcpy(CONSOLE_ROW_FIRST, memcpy(CONSOLE_ROW_FIRST,
@ -186,8 +187,7 @@ static void console_scrollup(void)
/* Clear the last rows */ /* Clear the last rows */
#if (LCD_BPP != LCD_COLOR32) #if (LCD_BPP != LCD_COLOR32)
memset(lcd_console_address + CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows, memset(lcd_console_address + CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows,
lcd_color_bg, bg_color, CONSOLE_ROW_SIZE * rows);
CONSOLE_ROW_SIZE * rows);
#else #else
u32 *ppix = lcd_console_address + u32 *ppix = lcd_console_address +
CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows; CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows;
@ -195,7 +195,7 @@ static void console_scrollup(void)
for (i = 0; for (i = 0;
i < (CONSOLE_ROW_SIZE * rows) / NBYTES(panel_info.vl_bpix); i < (CONSOLE_ROW_SIZE * rows) / NBYTES(panel_info.vl_bpix);
i++) { i++) {
*ppix++ = lcd_color_bg; *ppix++ = bg_color;
} }
#endif #endif
lcd_sync(); lcd_sync();
@ -316,6 +316,7 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
{ {
uchar *dest; uchar *dest;
ushort row; ushort row;
int fg_color, bg_color;
#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO) #if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
y += BMP_LOGO_HEIGHT; y += BMP_LOGO_HEIGHT;
@ -334,6 +335,8 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
uchar *d = dest; uchar *d = dest;
#endif #endif
fg_color = lcd_getfgcolor();
bg_color = lcd_getbgcolor();
for (i = 0; i < count; ++i) { for (i = 0; i < count; ++i) {
uchar c, bits; uchar c, bits;
@ -341,8 +344,7 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
bits = video_fontdata[c * VIDEO_FONT_HEIGHT + row]; bits = video_fontdata[c * VIDEO_FONT_HEIGHT + row];
for (c = 0; c < 8; ++c) { for (c = 0; c < 8; ++c) {
*d++ = (bits & 0x80) ? *d++ = (bits & 0x80) ? fg_color : bg_color;
lcd_color_fg : lcd_color_bg;
bits <<= 1; bits <<= 1;
} }
} }
@ -433,6 +435,7 @@ int drv_lcd_init(void)
void lcd_clear(void) void lcd_clear(void)
{ {
short console_rows, console_cols; short console_rows, console_cols;
int bg_color;
#if LCD_BPP == LCD_COLOR8 #if LCD_BPP == LCD_COLOR8
/* Setting the palette */ /* Setting the palette */
lcd_setcolreg(CONSOLE_COLOR_BLACK, 0, 0, 0); lcd_setcolreg(CONSOLE_COLOR_BLACK, 0, 0, 0);
@ -449,9 +452,11 @@ void lcd_clear(void)
#ifndef CONFIG_SYS_WHITE_ON_BLACK #ifndef CONFIG_SYS_WHITE_ON_BLACK
lcd_setfgcolor(CONSOLE_COLOR_BLACK); lcd_setfgcolor(CONSOLE_COLOR_BLACK);
lcd_setbgcolor(CONSOLE_COLOR_WHITE); lcd_setbgcolor(CONSOLE_COLOR_WHITE);
bg_color = CONSOLE_COLOR_WHITE;
#else #else
lcd_setfgcolor(CONSOLE_COLOR_WHITE); lcd_setfgcolor(CONSOLE_COLOR_WHITE);
lcd_setbgcolor(CONSOLE_COLOR_BLACK); lcd_setbgcolor(CONSOLE_COLOR_BLACK);
bg_color = CONSOLE_COLOR_BLACK;
#endif /* CONFIG_SYS_WHITE_ON_BLACK */ #endif /* CONFIG_SYS_WHITE_ON_BLACK */
#ifdef LCD_TEST_PATTERN #ifdef LCD_TEST_PATTERN
@ -459,16 +464,14 @@ void lcd_clear(void)
#else #else
/* set framebuffer to background color */ /* set framebuffer to background color */
#if (LCD_BPP != LCD_COLOR32) #if (LCD_BPP != LCD_COLOR32)
memset((char *)lcd_base, memset((char *)lcd_base, bg_color, lcd_line_length * panel_info.vl_row);
lcd_color_bg,
lcd_line_length * panel_info.vl_row);
#else #else
u32 *ppix = lcd_base; u32 *ppix = lcd_base;
u32 i; u32 i;
for (i = 0; for (i = 0;
i < (lcd_line_length * panel_info.vl_row)/NBYTES(panel_info.vl_bpix); i < (lcd_line_length * panel_info.vl_row)/NBYTES(panel_info.vl_bpix);
i++) { i++) {
*ppix++ = lcd_color_bg; *ppix++ = bg_color;
} }
#endif #endif
#endif #endif
@ -575,6 +578,11 @@ static void lcd_setfgcolor(int color)
lcd_color_fg = color; lcd_color_fg = color;
} }
int lcd_getfgcolor(void)
{
return lcd_color_fg;
}
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
static void lcd_setbgcolor(int color) static void lcd_setbgcolor(int color)
@ -582,6 +590,11 @@ static void lcd_setbgcolor(int color)
lcd_color_bg = color; lcd_color_bg = color;
} }
int lcd_getbgcolor(void)
{
return lcd_color_bg;
}
/************************************************************************/ /************************************************************************/
/* ** Chipset depending Bitmap / Logo stuff... */ /* ** Chipset depending Bitmap / Logo stuff... */
/************************************************************************/ /************************************************************************/

View file

@ -290,6 +290,20 @@ int lcd_get_screen_rows(void);
*/ */
int lcd_get_screen_columns(void); int lcd_get_screen_columns(void);
/**
* Get the background color of the LCD
*
* @return background color value
*/
int lcd_getbgcolor(void);
/**
* Get the foreground color of the LCD
*
* @return foreground color value
*/
int lcd_getfgcolor(void);
/** /**
* Set the position of the text cursor * Set the position of the text cursor
* *