video: cfb_console: add function to plot the logo area black
authorBastian Ruppert <Bastian.Ruppert@Sewerin.de>
Thu, 13 Sep 2012 22:29:02 +0000 (22:29 +0000)
committerTom Rini <trini@ti.com>
Mon, 1 Oct 2012 17:02:13 +0000 (10:02 -0700)
Signed-off-by: Bastian Ruppert <Bastian.Ruppert@Sewerin.de>
CC: Anatolij Gustschin <agust@denx.de>
CC: Tom Rini <trini@ti.com>
CC: Stefano Babic <sbabic@denx.de>
drivers/video/cfb_console.c

index fc4ea7216cb067e905ad79e87797c3abe2560a44..9f7794fe5300c8d45d6c836b0287aa34133e26b0 100644 (file)
@@ -1487,7 +1487,39 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
 static int video_logo_xpos;
 static int video_logo_ypos;
 
-void logo_plot(void *screen, int width, int x, int y)
+static void plot_logo_or_black(void *screen, int width, int x, int y,  \
+                       int black);
+
+static void logo_plot(void *screen, int width, int x, int y)
+{
+       plot_logo_or_black(screen, width, x, y, 0);
+}
+
+static void logo_black(void)
+{
+       plot_logo_or_black(video_fb_address, \
+                       VIDEO_COLS, \
+                       video_logo_xpos, \
+                       video_logo_ypos, \
+                       1);
+}
+
+static int do_clrlogo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       if (argc != 1)
+               return cmd_usage(cmdtp);
+
+       logo_black();
+       return 0;
+}
+
+U_BOOT_CMD(
+          clrlogo, 1, 0, do_clrlogo,
+          "fill the boot logo area with black",
+          " "
+          );
+
+static void plot_logo_or_black(void *screen, int width, int x, int y, int black)
 {
 
        int xcount, i;
@@ -1545,9 +1577,15 @@ void logo_plot(void *screen, int width, int x, int y)
 #endif
                xcount = VIDEO_LOGO_WIDTH;
                while (xcount--) {
-                       r = logo_red[*source - VIDEO_LOGO_LUT_OFFSET];
-                       g = logo_green[*source - VIDEO_LOGO_LUT_OFFSET];
-                       b = logo_blue[*source - VIDEO_LOGO_LUT_OFFSET];
+                       if (black) {
+                               r = 0x00;
+                               g = 0x00;
+                               b = 0x00;
+                       } else {
+                               r = logo_red[*source - VIDEO_LOGO_LUT_OFFSET];
+                               g = logo_green[*source - VIDEO_LOGO_LUT_OFFSET];
+                               b = logo_blue[*source - VIDEO_LOGO_LUT_OFFSET];
+                       }
 
                        switch (VIDEO_DATA_FORMAT) {
                        case GDF__8BIT_INDEX: