Patrick Georgi (patrick@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@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@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];