summaryrefslogtreecommitdiff
path: root/common/uart_buffering.c
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-04-24 16:29:28 -0700
committerRandall Spangler <rspangler@chromium.org>2012-04-24 17:46:54 -0700
commit135f14bf498ab19b6e75efc3a0d18ef7c8a8752d (patch)
tree1dd03ec292b5f9f44a24e045e64e0c10ff58b6a6 /common/uart_buffering.c
parent0d19c59aba807f915f1ea46d273bfebe1ded1db9 (diff)
downloadchrome-ec-135f14bf498ab19b6e75efc3a0d18ef7c8a8752d.tar.gz
Refactor async console output
This adds a 'ch' command which prints/sets which channels are active This handles all the async output; the remaining debug commands will be refactored to use ccprintf() / ccputs() in a followup CL. Signed-off-by: Randall Spangler <rspangler@chromium.org> BUG=chrome-os-partner:7464 TEST=manual ch --> all channels active ch 0x100 -> just port80 active powerbtn -> system boots; only port 80 codes shown on console Change-Id: I9efc43acec919b62b78c2c82c61946d32380adfe
Diffstat (limited to 'common/uart_buffering.c')
-rw-r--r--common/uart_buffering.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/common/uart_buffering.c b/common/uart_buffering.c
index 6d08dbb9af..d83b34ea40 100644
--- a/common/uart_buffering.c
+++ b/common/uart_buffering.c
@@ -357,6 +357,7 @@ void uart_process(void)
uart_tx_stop();
}
+
void uart_set_console_mode(int enable)
{
console_mode = enable;
@@ -382,7 +383,7 @@ int uart_puts(const char *outstr)
}
-int uart_printf(const char *format, ...)
+int uart_vprintf(const char *format, va_list args)
{
static const char int_chars[] = "0123456789abcdef";
static const char error_str[] = "ERROR";
@@ -394,12 +395,9 @@ int uart_printf(const char *format, ...)
int is_left;
int pad_zero;
int pad_width;
- va_list args;
char *vstr;
int vlen;
- va_start(args, format);
-
while (*format && !dropped_chars) {
int c = *format++;
@@ -532,7 +530,6 @@ int uart_printf(const char *format, ...)
vlen++;
}
}
- va_end(args);
if (uart_tx_stopped())
uart_tx_start();
@@ -541,6 +538,19 @@ int uart_printf(const char *format, ...)
return dropped_chars ? EC_ERROR_OVERFLOW : EC_SUCCESS;
}
+
+int uart_printf(const char *format, ...)
+{
+ int rv;
+ va_list args;
+
+ va_start(args, format);
+ rv = uart_vprintf(format, args);
+ va_end(args);
+ return rv;
+}
+
+
void uart_flush_output(void)
{
/* Wait for buffer to empty */