diff mbox

[U-Boot,V3,07/12] lcd: expand console api

Message ID 1418051686-630-8-git-send-email-nikita@compulab.co.il
State Accepted
Delegated to: Anatolij Gustschin
Headers show

Commit Message

Nikita Kiryanov Dec. 8, 2014, 3:14 p.m. UTC
Introduce set_console_row(), set_console_col(), and lcd_init_console().
Use these functions in lcd functions: lcd_init(), lcd_clear(), lcd_logo().

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>
Tested-by: Simon Glass <sjg@chromium.org>
---
Changes in V3:
	- No changes.

Changes in V2:
	- New patch.

 common/lcd.c | 35 ++++++++++++++++++++++++++---------
 1 file changed, 26 insertions(+), 9 deletions(-)
diff mbox

Patch

diff --git a/common/lcd.c b/common/lcd.c
index f8fff90..bc15c78 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -155,6 +155,25 @@  void lcd_set_flush_dcache(int flush)
 	lcd_flush_dcache = (flush != 0);
 }
 
+void lcd_init_console(void *address, int rows, int cols)
+{
+	console_curr_col = 0;
+	console_curr_row = 0;
+	console_cols = cols;
+	console_rows = rows;
+	lcd_console_address = address;
+}
+
+void lcd_set_col(short col)
+{
+	console_curr_col = col;
+}
+
+void lcd_set_row(short row)
+{
+	console_curr_row = row;
+}
+
 /*----------------------------------------------------------------------*/
 
 static void console_scrollup(void)
@@ -415,6 +434,7 @@  int drv_lcd_init(void)
 /*----------------------------------------------------------------------*/
 void lcd_clear(void)
 {
+	short console_rows, console_cols;
 #if LCD_BPP == LCD_COLOR8
 	/* Setting the palette */
 	lcd_setcolreg(CONSOLE_COLOR_BLACK, 0, 0, 0);
@@ -456,8 +476,6 @@  void lcd_clear(void)
 #endif
 	/* Paint the logo and retrieve LCD base address */
 	debug("[LCD] Drawing the logo...\n");
-	lcd_console_address = lcd_logo();
-
 #if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
 	console_rows = (panel_info.vl_row - BMP_LOGO_HEIGHT);
 	console_rows /= VIDEO_FONT_HEIGHT;
@@ -465,8 +483,7 @@  void lcd_clear(void)
 	console_rows = panel_info.vl_row / VIDEO_FONT_HEIGHT;
 #endif
 	console_cols = panel_info.vl_col / VIDEO_FONT_WIDTH;
-	console_curr_col = 0;
-	console_curr_row = 0;
+	lcd_init_console(lcd_logo(), console_rows, console_cols);
 	lcd_sync();
 }
 
@@ -509,11 +526,11 @@  static int lcd_init(void *lcdbase)
 	lcd_enable();
 
 	/* Initialize the console */
-	console_curr_col = 0;
+	lcd_set_col(0);
 #ifdef CONFIG_LCD_INFO_BELOW_LOGO
-	console_curr_row = 7 + BMP_LOGO_HEIGHT / VIDEO_FONT_HEIGHT;
+	lcd_set_row(7 + BMP_LOGO_HEIGHT / VIDEO_FONT_HEIGHT);
 #else
-	console_curr_row = 1;	/* leave 1 blank line below logo */
+	lcd_set_row(1);	/* leave 1 blank line below logo */
 #endif
 
 	return 0;
@@ -1063,8 +1080,8 @@  static void *lcd_logo(void)
 	bitmap_plot(0, 0);
 
 #ifdef CONFIG_LCD_INFO
-	console_curr_col = LCD_INFO_X / VIDEO_FONT_WIDTH;
-	console_curr_row = LCD_INFO_Y / VIDEO_FONT_HEIGHT;
+	lcd_set_col(LCD_INFO_X / VIDEO_FONT_WIDTH);
+	lcd_set_row(LCD_INFO_Y / VIDEO_FONT_HEIGHT);
 	lcd_show_board_info();
 #endif /* CONFIG_LCD_INFO */