[U-Boot] [PATCH 08/16] drivers/video/cfb_console.c: Add function console_clear and console_clear_line
Pali Rohár
pali.rohar at gmail.com
Sat Dec 17 18:03:10 CET 2011
* console_clear - clear full console framebuffer output
* console_clear_line - clear part of specified line (or full)
Signed-off-by: Pali Rohár <pali.rohar at gmail.com>
---
drivers/video/cfb_console.c | 56 +++++++++++++++++++++++++++++++++---------
1 files changed, 44 insertions(+), 12 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 867c789..7a4f0f3 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -691,6 +691,49 @@ static void memcpyl(int *d, int *s, int c)
}
#endif
+static void console_clear(void)
+{
+#ifdef VIDEO_HW_RECTFILL
+ video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */
+ 0, /* dest pos x */
+ video_logo_height, /* dest pos y */
+ VIDEO_VISIBLE_COLS, /* frame width */
+ VIDEO_VISIBLE_ROWS, /* frame height */
+ bgx /* fill color */
+ );
+#else
+ memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
+#endif
+}
+
+static void console_clear_line(int line, int begin, int end)
+{
+#ifdef VIDEO_HW_RECTFILL
+ video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */
+ VIDEO_FONT_WIDTH * begin, /* dest pos x */ /* FIXME: correct? */
+ video_logo_height + CONSOLE_ROW_SIZE * line, /* dest pos y */ /* FIXME: correct? */
+ VIDEO_FONT_WIDTH * ( end - begin ), /* frame width */ /* FIXME: correct? */
+ VIDEO_FONT_HEIGHT, /* frame height */
+ bgx /* fill color */
+ );
+#else
+ int i;
+ if ( begin == 0 && end == CONSOLE_COLS )
+ memsetl(CONSOLE_ROW_FIRST + CONSOLE_ROW_SIZE * line, /* offset of row */
+ CONSOLE_ROW_SIZE >> 2, /* length of row */
+ bgx /* fill color */
+ );
+ else
+ for ( i = 0; i < VIDEO_FONT_HEIGHT; ++i )
+ memsetl(CONSOLE_ROW_FIRST + CONSOLE_ROW_SIZE * line + /* offset of row */
+ VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE * begin + /* offset of col */
+ i * VIDEO_LINE_LEN, /* col offset of i-th line */
+ (VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE * ( end - begin + 1)) >> 2, /* length to end of line */
+ bgx /* fill color */
+ );
+#endif
+}
+
static void console_scrollup(void)
{
/* copy up rows ignoring the first one */
@@ -713,18 +756,7 @@ static void console_scrollup(void)
#endif
/* clear the last one */
-#ifdef VIDEO_HW_RECTFILL
- video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */
- 0, /* dest pos x */
- VIDEO_VISIBLE_ROWS
- - VIDEO_FONT_HEIGHT, /* dest pos y */
- VIDEO_VISIBLE_COLS, /* frame width */
- VIDEO_FONT_HEIGHT, /* frame height */
- CONSOLE_BG_COL /* fill color */
- );
-#else
- memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
-#endif
+ console_clear_line(CONSOLE_ROWS-1, 0, CONSOLE_COLS);
}
static void console_back(void)
--
1.7.5.4
More information about the U-Boot
mailing list