mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 04:02:27 +00:00
feat(uart): add RCC atomic block to uart/lp-uart peripheral
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include "esp_cpu.h"
|
||||
|
||||
#include "esp_private/crosscore_int.h"
|
||||
#include "esp_private/uart_private.h"
|
||||
|
||||
#include "soc/rtc.h"
|
||||
#include "hal/uart_ll.h"
|
||||
@@ -42,6 +43,7 @@
|
||||
#include "esp_private/sleep_cpu.h"
|
||||
#include "esp_private/sleep_gpio.h"
|
||||
#include "esp_private/sleep_modem.h"
|
||||
#include "esp_private/periph_ctrl.h"
|
||||
#include "esp_sleep.h"
|
||||
|
||||
#include "sdkconfig.h"
|
||||
@@ -736,14 +738,19 @@ void esp_pm_impl_init(void)
|
||||
#else
|
||||
#error "No UART clock source is aware of DFS"
|
||||
#endif // SOC_UART_SUPPORT_xxx
|
||||
while(!uart_ll_is_tx_idle(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_sclk(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM), (soc_module_clk_t)clk_source);
|
||||
|
||||
UART_SCLK_ATOMIC() {
|
||||
uart_ll_set_sclk(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM), (soc_module_clk_t)clk_source);
|
||||
}
|
||||
uint32_t sclk_freq;
|
||||
esp_err_t err = uart_get_sclk_freq(clk_source, &sclk_freq);
|
||||
assert(err == ESP_OK);
|
||||
uart_ll_set_baudrate(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM), CONFIG_ESP_CONSOLE_UART_BAUDRATE, sclk_freq);
|
||||
UART_SCLK_ATOMIC() {
|
||||
uart_ll_set_baudrate(UART_LL_GET_HW(CONFIG_ESP_CONSOLE_UART_NUM), CONFIG_ESP_CONSOLE_UART_BAUDRATE, sclk_freq);
|
||||
}
|
||||
#endif // CONFIG_ESP_CONSOLE_UART
|
||||
|
||||
#ifdef CONFIG_PM_TRACE
|
||||
|
Reference in New Issue
Block a user