From 1c085a4583f9a80f80793c1743e760658c7af1ee Mon Sep 17 00:00:00 2001 From: Marek Matej Date: Wed, 5 Jun 2024 23:09:01 +0200 Subject: [PATCH] drivers: clock: esp32: fix ROM baudrate Allow to update ROM Uart baudrate each time the clocks are reconfigured. Signed-off-by: Marek Matej --- drivers/clock_control/clock_control_esp32.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/clock_control/clock_control_esp32.c b/drivers/clock_control/clock_control_esp32.c index c239ec199a1e..3dd40792486e 100644 --- a/drivers/clock_control/clock_control_esp32.c +++ b/drivers/clock_control/clock_control_esp32.c @@ -498,7 +498,12 @@ static int esp32_cpu_clock_configure(const struct esp32_cpu_clock_config *cpu_cf esp_cpu_set_cycle_count((uint64_t)esp_cpu_get_cycle_count() * rtc_clk_cfg.cpu_freq_mhz / old_config.freq_mhz); +#if ESP_ROM_UART_CLK_IS_XTAL + uart_clock_src_hz = (uint32_t)rtc_clk_xtal_freq_get() * MHZ(1); +#else uart_clock_src_hz = esp_clk_apb_freq(); +#endif + #if !defined(ESP_CONSOLE_UART_NONE) esp_rom_uart_set_clock_baudrate(ESP_CONSOLE_UART_NUM, uart_clock_src_hz, ESP_CONSOLE_UART_BAUDRATE); @@ -545,7 +550,6 @@ static int clock_control_esp32_init(const struct device *dev) soc_reset_reason_t rst_reas; rtc_config_t rtc_cfg = RTC_CONFIG_DEFAULT(); bool ret; - uint32_t uart_clock_src_hz; rst_reas = esp_rom_get_reset_reason(0); #if !defined(CONFIG_SOC_SERIES_ESP32) @@ -565,14 +569,6 @@ static int clock_control_esp32_init(const struct device *dev) return ret; } -#if defined(CONFIG_SOC_SERIES_ESP32S3) - uart_clock_src_hz = (uint32_t)rtc_clk_xtal_freq_get() * MHZ(1); -#if !defined(ESP_CONSOLE_UART_NONE) - esp_rom_uart_set_clock_baudrate(ESP_CONSOLE_UART_NUM, uart_clock_src_hz, - ESP_CONSOLE_UART_BAUDRATE); -#endif -#endif - rtc_clk_fast_src_set(cfg->rtc.rtc_fast_clock_src); ret = esp32_select_rtc_slow_clk(cfg->rtc.rtc_slow_clock_src);