summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2015-10-16 10:58:47 -0700
committerchrome-bot <chrome-bot@chromium.org>2015-10-19 13:45:49 -0700
commit4c8553dfb13d8046a32b833321826aade31a0264 (patch)
tree5fe32dcaa4d4884895cafd8237f93b79f2ce2a07 /common
parent979440a583ad4e3de8b4c29e7a0861206eb271aa (diff)
downloadchrome-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.c2
-rw-r--r--common/printf.c4
-rw-r--r--common/system.c6
-rw-r--r--common/uart_buffering.c4
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 */