| /* Copyright (c) 2014 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| /* Synchronous UART debug printf */ |
| |
| #include "common.h" |
| #include "printf.h" |
| #include "registers.h" |
| #include "util.h" |
| |
| static int debug_txchar(void *context, int c) |
| { |
| if (c == '\n') { |
| while (!(STM32_USART_SR(UARTN_BASE) & STM32_USART_SR_TXE)) |
| ; |
| STM32_USART_TDR(UARTN_BASE) = '\r'; |
| } |
| |
| /* Wait for space to transmit */ |
| while (!(STM32_USART_SR(UARTN_BASE) & STM32_USART_SR_TXE)) |
| ; |
| STM32_USART_TDR(UARTN_BASE) = c; |
| |
| return 0; |
| } |
| |
| |
| |
| void debug_printf(const char *format, ...) |
| { |
| va_list args; |
| |
| va_start(args, format); |
| vfnprintf(debug_txchar, NULL, format, args); |
| va_end(args); |
| } |