[coreboot-gerrit] New patch to review for coreboot: b9eee79 printk: support and use %hh prefix

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Sat Jan 18 18:29:47 CET 2014


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4717

-gerrit

commit b9eee7927830b20115e3482d409c50a8233ffb31
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Sat Jan 18 16:56:36 2014 +0100

    printk: support and use %hh prefix
    
    clang complains otherwise.
    
    Change-Id: I2ac98d7147ecd3d7064f17f8c9d214d44baedf97
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 src/console/vtxprintf.c | 10 +++++++++-
 src/lib/edid.c          | 10 +++++-----
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/console/vtxprintf.c b/src/console/vtxprintf.c
index c57f38c..502d53e 100644
--- a/src/console/vtxprintf.c
+++ b/src/console/vtxprintf.c
@@ -129,7 +129,7 @@ int vtxprintf(void (*tx_byte)(unsigned char byte), const char *fmt, va_list args
 	int field_width;	/* width of output field */
 	int precision;		/* min. # of digits for integers; max
 				   number of chars for from string */
-	int qualifier;		/* 'h', 'l', or 'L' for integer fields */
+	int qualifier;		/* 'h', 'H', 'l', or 'L' for integer fields */
 
 	int count;
 
@@ -194,6 +194,10 @@ repeat:
 				qualifier = 'L';
 				++fmt;
 			}
+			if (*fmt == 'h') {
+				qualifier = 'H';
+				++fmt;
+			}
 		}
 
 		/* default base */
@@ -287,6 +291,10 @@ repeat:
 			num = (unsigned short) va_arg(args, int);
 			if (flags & SIGN)
 				num = (short) num;
+		} else if (qualifier == 'H') {
+			num = (unsigned char) va_arg(args, int);
+			if (flags & SIGN)
+				num = (signed char) num;
 		} else if (flags & SIGN) {
 			num = va_arg(args, int);
 		} else {
diff --git a/src/lib/edid.c b/src/lib/edid.c
index 4be0dc6..91ff972 100644
--- a/src/lib/edid.c
+++ b/src/lib/edid.c
@@ -543,14 +543,14 @@ detailed_block(struct edid *out, unsigned char *x, int in_extension)
 static int
 do_checksum(unsigned char *x)
 {
-	printk(BIOS_SPEW, "Checksum: 0x%hx", x[0x7f]);
+	printk(BIOS_SPEW, "Checksum: 0x%hhx", x[0x7f]);
 	{
 		unsigned char sum = 0;
 		int i;
 		for (i = 0; i < 128; i++)
 			sum += x[i];
 		if (sum) {
-			printk(BIOS_SPEW, " (should be 0x%hx)", (unsigned char)(x[0x7f] - sum));
+			printk(BIOS_SPEW, " (should be 0x%hhx)", (unsigned char)(x[0x7f] - sum));
 			has_valid_checksum = 0;
 		} else {
 			has_valid_checksum = 1;
@@ -1009,7 +1009,7 @@ int decode_edid(unsigned char *edid, int size, struct edid *out)
 			if (edid[0x11] > 0x0f) {
 				if (edid[0x10] == 0xff) {
 					has_valid_year = 1;
-					printk(BIOS_SPEW, "Made week %hd of model year %hd\n", edid[0x10],
+					printk(BIOS_SPEW, "Made week %hhu of model year %hhu\n", edid[0x10],
 					       edid[0x11]);
 					out->week = edid[0x10];
 					out->year = edid[0x11];
@@ -1017,7 +1017,7 @@ int decode_edid(unsigned char *edid, int size, struct edid *out)
 					/* we know it's at least 2013, when this code was written */
 					if (edid[0x11] + 90 <= 2013) {
 						has_valid_year = 1;
-						printk(BIOS_SPEW, "Made week %hd of %hd\n",
+						printk(BIOS_SPEW, "Made week %hhu of %d\n",
 						       edid[0x10], edid[0x11] + 1990);
 						out->week = edid[0x10];
 						out->year = edid[0x11] + 1990;
@@ -1027,7 +1027,7 @@ int decode_edid(unsigned char *edid, int size, struct edid *out)
 		}
 
 
-	printk(BIOS_SPEW, "EDID version: %hd.%hd\n", edid[0x12], edid[0x13]);
+	printk(BIOS_SPEW, "EDID version: %hhu.%hhu\n", edid[0x12], edid[0x13]);
 	out->version[0] = edid[0x12];
 	out->version[1] = edid[0x13];
 



More information about the coreboot-gerrit mailing list