From 50ef2f97d6997424b04113a0103d5ec78e6b5697 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 14 Oct 2020 19:35:24 +0200 Subject: [PATCH] esp_pm: fix garbage on UART when CONFIG_PM_ENABLE=y `uart_ll_get_txfifo_len` returns the number of bytes available in the TX FIFO; The condition we need is "FIFO empty", not "FIFO has free space". `uart_ll_is_tx_idle` does that, and also ensures that the last character popped from the TX FIFO has been fully transmitted. --- components/esp_pm/pm_impl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp_pm/pm_impl.c b/components/esp_pm/pm_impl.c index 59064d72dd..e0f9be0f8a 100644 --- a/components/esp_pm/pm_impl.c +++ b/components/esp_pm/pm_impl.c @@ -680,7 +680,7 @@ void esp_pm_impl_dump_stats(FILE* out) void esp_pm_impl_init(void) { #if defined(CONFIG_ESP_CONSOLE_UART) - while(!uart_ll_get_txfifo_len(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM))); + while(!uart_ll_is_tx_idle(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM))); /* When DFS is enabled, override system setting and use REFTICK as UART clock source */ uart_ll_set_baudrate(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM), UART_SCLK_REF_TICK, CONFIG_ESP_CONSOLE_UART_BAUDRATE); #endif // CONFIG_ESP_CONSOLE_UART