* console_clear - clear full console framebuffer output
 * console_clear_line - clear part of specified line (or full)

Signed-off-by: Pali Rohár <pali.ro...@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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to