diff options
author | Alec Berg <alecaberg@chromium.org> | 2015-10-16 10:58:47 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-10-19 13:45:49 -0700 |
commit | 4c8553dfb13d8046a32b833321826aade31a0264 (patch) | |
tree | 5fe32dcaa4d4884895cafd8237f93b79f2ce2a07 /common | |
parent | 979440a583ad4e3de8b4c29e7a0861206eb271aa (diff) | |
download | chrome-ec-4c8553dfb13d8046a32b833321826aade31a0264.tar.gz |
stm32: add synchronous debug printf
Allow use of a synchronous debug printf instead of using the
full console task to save space. This can be turned on with
CONFIG_DEBUG_PRINTF, and will provide essentially a one-way
console for debugging. This is essentially expanding upon
the debug_printf work done for zinger.
BUG=chrome-os-partner:41959
BRANCH=none
TEST=tested with following CLs on glados_pd by verifying we
get a one-way console.
Change-Id: If028b5d873261890de5b270bbc00e06bdcaa7431
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/306782
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/panic_output.c | 2 | ||||
-rw-r--r-- | common/printf.c | 4 | ||||
-rw-r--r-- | common/system.c | 6 | ||||
-rw-r--r-- | common/uart_buffering.c | 4 |
4 files changed, 9 insertions, 7 deletions
diff --git a/common/panic_output.c b/common/panic_output.c index 144b7a0e19..8d9cf2205d 100644 --- a/common/panic_output.c +++ b/common/panic_output.c @@ -26,6 +26,7 @@ static struct panic_data * const pdata_ptr = PANIC_DATA_PTR; * @param c Character to write. * @return 0 if the character was transmitted, 1 if it was dropped. */ +#ifndef CONFIG_DEBUG_PRINTF static int panic_txchar(void *context, int c) { if (c == '\n') @@ -68,6 +69,7 @@ void panic_printf(const char *format, ...) /* Flush the transmit FIFO */ uart_tx_flush(); } +#endif /** * Display a message and reboot diff --git a/common/printf.c b/common/printf.c index 6e1a7401e9..987f7415ca 100644 --- a/common/printf.c +++ b/common/printf.c @@ -13,12 +13,12 @@ static const char error_str[] = "ERROR"; #define MAX_FORMAT 1024 /* Maximum chars in a single format field */ -#ifdef CONFIG_COMMON_RUNTIME +#ifndef CONFIG_DEBUG_PRINTF static inline int divmod(uint64_t *n, int d) { return uint64divmod(n, d); } -#else /* !CONFIG_COMMON_RUNTIME */ +#else /* CONFIG_DEBUG_PRINTF */ /* if we are optimizing for size, remove the 64-bit support */ #define NO_UINT64_SUPPORT static inline int divmod(uint32_t *n, int d) diff --git a/common/system.c b/common/system.c index 224ae7d78e..7f5a5ee5b4 100644 --- a/common/system.c +++ b/common/system.c @@ -448,9 +448,9 @@ static void jump_to_image(uintptr_t init_addr) /* Prepare I2C module for sysjump */ i2c_prepare_sysjump(); #endif - /* Flush UART output unless the UART hasn't been initialized yet */ - if (uart_init_done()) - uart_flush_output(); + + /* Flush UART output */ + cflush(); /* Disable interrupts before jump */ interrupt_disable(); diff --git a/common/uart_buffering.c b/common/uart_buffering.c index 86a3482951..949c3968d6 100644 --- a/common/uart_buffering.c +++ b/common/uart_buffering.c @@ -301,8 +301,8 @@ int uart_printf(const char *format, ...) void uart_flush_output(void) { - /* If UART is suspended, ignore flush request. */ - if (uart_suspended) + /* If UART not initialized or is suspended, ignore flush request. */ + if (!uart_init_done() || uart_suspended) return; /* Loop until buffer is empty */ |