[coreboot-gerrit] New patch to review for coreboot: video: add video_printf

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Fri Aug 28 10:20:38 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11407

-gerrit

commit d99752ae9cf7fac8dc163be5651292f3fdca9707
Author: Daisuke Nojiri <dnojiri at chromium.org>
Date:   Fri Jul 31 15:22:58 2015 -0700

    video: add video_printf
    
    video_printf prints strings on the screen with specified foreground and
    background color.
    
    BUG=none
    BRANCH=smaug
    TEST=verified messages printed on Smaug
    
    Change-Id: I619625f7d4c5bc19cd9de64a0ba07899cf9ba289
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
    Original-Commit-Id: e0ac4cb4c0d43b40f5c8f8f5a90eac45b0263b77
    Original-Reviewed-on: https://chromium-review.googlesource.com/290130
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Original-(cherry picked from commit 75ea2c025d629c8fabc0cb859c4e8ab8ba6ce6e3)
    Original-Change-Id: Ief6d1fc820330b54f37ad9260cf3119853460b70
    Original-Signed-off-by: Daisuke Nojiri <dnojiri at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/290373
---
 payloads/libpayload/drivers/video/video.c | 21 +++++++++++++++++++++
 payloads/libpayload/include/libpayload.h  |  5 +++++
 2 files changed, 26 insertions(+)

diff --git a/payloads/libpayload/drivers/video/video.c b/payloads/libpayload/drivers/video/video.c
index 834a121..f183517 100644
--- a/payloads/libpayload/drivers/video/video.c
+++ b/payloads/libpayload/drivers/video/video.c
@@ -162,6 +162,27 @@ void video_console_putchar(unsigned int ch)
 	video_console_fixup_cursor();
 }
 
+void video_printf(int foreground, int background, const char *fmt, ...)
+{
+	int i = 0, len;
+	char str[200];
+
+	va_list ap;
+	va_start(ap, fmt);
+	len = vsnprintf(str, ARRAY_SIZE(str), fmt, ap);
+	va_end(ap);
+	if (len <= 0)
+		return;
+
+	foreground &= 0xf;
+	foreground <<= 8;
+	background &= 0xf;
+	background <<= 12;
+
+	while (str[i])
+		video_console_putchar(str[i++] | foreground | background);
+}
+
 void video_console_get_cursor(unsigned int *x, unsigned int *y, unsigned int *en)
 {
 	*x=0;
diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h
index 5e787e1..3ae3590 100644
--- a/payloads/libpayload/include/libpayload.h
+++ b/payloads/libpayload/include/libpayload.h
@@ -206,6 +206,11 @@ void video_console_clear(void);
 void video_console_cursor_enable(int state);
 void video_console_get_cursor(unsigned int *x, unsigned int *y, unsigned int *en);
 void video_console_set_cursor(unsigned int cursorx, unsigned int cursory);
+/*
+ * print characters on video console with colors. note that there is a size
+ * restriction for the internal buffer. so, output string can be truncated.
+ */
+void video_printf(int foreground, int background, const char *fmt, ...);
 /** @} */
 
 /**



More information about the coreboot-gerrit mailing list