mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-04 21:24:32 +02:00
Merge branch 'fix/force_enable_uart0_sclk_in_esp_restart' into 'master'
fix(esp_system): force enable uart0 sclk in esp_restart Closes PM-423 and PM-424 See merge request espressif/esp-idf!40196
This commit is contained in:
@@ -439,7 +439,7 @@ uint32_t get_act_hp_dbias(void)
|
|||||||
hp_cali_dbias = 31;
|
hp_cali_dbias = 31;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ESP_HW_LOGW(TAG, "hp_cali_dbias not burnt in efuse, use default.");
|
ESP_HW_LOGD(TAG, "hp_cali_dbias not burnt in efuse, use default.");
|
||||||
}
|
}
|
||||||
return hp_cali_dbias;
|
return hp_cali_dbias;
|
||||||
}
|
}
|
||||||
@@ -463,7 +463,7 @@ uint32_t get_act_lp_dbias(void)
|
|||||||
lp_cali_dbias = 31;
|
lp_cali_dbias = 31;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ESP_HW_LOGW(TAG, "lp_cali_dbias not burnt in efuse, use default.");
|
ESP_HW_LOGD(TAG, "lp_cali_dbias not burnt in efuse, use default.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return lp_cali_dbias;
|
return lp_cali_dbias;
|
||||||
|
@@ -434,7 +434,7 @@ uint32_t get_act_hp_dbias(void)
|
|||||||
hp_cali_dbias = 31;
|
hp_cali_dbias = 31;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ESP_HW_LOGW(TAG, "hp_cali_dbias not burnt in efuse, use default.");
|
ESP_HW_LOGD(TAG, "hp_cali_dbias not burnt in efuse, use default.");
|
||||||
}
|
}
|
||||||
return hp_cali_dbias;
|
return hp_cali_dbias;
|
||||||
}
|
}
|
||||||
@@ -457,7 +457,7 @@ uint32_t get_act_lp_dbias(void)
|
|||||||
lp_cali_dbias = 31;
|
lp_cali_dbias = 31;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ESP_HW_LOGW(TAG, "lp_cali_dbias not burnt in efuse, use default.");
|
ESP_HW_LOGD(TAG, "lp_cali_dbias not burnt in efuse, use default.");
|
||||||
}
|
}
|
||||||
return lp_cali_dbias;
|
return lp_cali_dbias;
|
||||||
}
|
}
|
||||||
|
@@ -345,7 +345,7 @@ uint32_t get_act_hp_dbias(void)
|
|||||||
hp_cali_dbias = 31;
|
hp_cali_dbias = 31;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ESP_HW_LOGW(TAG, "hp_cali_dbias not burnt in efuse, use default.");
|
ESP_HW_LOGD(TAG, "hp_cali_dbias not burnt in efuse, use default.");
|
||||||
}
|
}
|
||||||
return hp_cali_dbias;
|
return hp_cali_dbias;
|
||||||
}
|
}
|
||||||
@@ -367,7 +367,7 @@ uint32_t get_act_lp_dbias(void)
|
|||||||
lp_cali_dbias = 31;
|
lp_cali_dbias = 31;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ESP_HW_LOGW(TAG, "lp_cali_dbias not burnt in efuse, use default.");
|
ESP_HW_LOGD(TAG, "lp_cali_dbias not burnt in efuse, use default.");
|
||||||
}
|
}
|
||||||
return lp_cali_dbias;
|
return lp_cali_dbias;
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/uart_reg.h"
|
#include "soc/uart_reg.h"
|
||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
|
#include "hal/uart_ll.h"
|
||||||
#if SOC_MODEM_CLOCK_SUPPORTED
|
#if SOC_MODEM_CLOCK_SUPPORTED
|
||||||
#include "hal/modem_syscon_ll.h"
|
#include "hal/modem_syscon_ll.h"
|
||||||
#include "hal/modem_lpcon_ll.h"
|
#include "hal/modem_lpcon_ll.h"
|
||||||
@@ -82,6 +83,10 @@ void esp_system_reset_modules_on_exit(void)
|
|||||||
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
||||||
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
|
|
||||||
|
// UART's sclk is controlled in the PCR register and does not reset with the UART module. The ROM missed enabling
|
||||||
|
// it when initializing the ROM UART. If it is not turned on, it will trigger LP_WDT in the ROM.
|
||||||
|
uart_ll_sclk_enable(&UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "esp_private/rtc_clk.h"
|
#include "esp_private/rtc_clk.h"
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/uart_reg.h"
|
#include "soc/uart_reg.h"
|
||||||
|
#include "hal/uart_ll.h"
|
||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
#include "hal/modem_syscon_ll.h"
|
#include "hal/modem_syscon_ll.h"
|
||||||
#include "hal/modem_lpcon_ll.h"
|
#include "hal/modem_lpcon_ll.h"
|
||||||
@@ -75,6 +76,10 @@ void esp_system_reset_modules_on_exit(void)
|
|||||||
CLEAR_PERI_REG_MASK(PCR_HMAC_CONF_REG, PCR_HMAC_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_HMAC_CONF_REG, PCR_HMAC_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
|
|
||||||
|
// UART's sclk is controlled in the PCR register and does not reset with the UART module. The ROM missed enabling
|
||||||
|
// it when initializing the ROM UART. If it is not turned on, it will trigger LP_WDT in the ROM.
|
||||||
|
uart_ll_sclk_enable(&UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "esp_private/rtc_clk.h"
|
#include "esp_private/rtc_clk.h"
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/uart_reg.h"
|
#include "soc/uart_reg.h"
|
||||||
|
#include "hal/uart_ll.h"
|
||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
#include "esp_private/cache_err_int.h"
|
#include "esp_private/cache_err_int.h"
|
||||||
|
|
||||||
@@ -82,6 +83,10 @@ void esp_system_reset_modules_on_exit(void)
|
|||||||
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
||||||
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
|
|
||||||
|
// UART's sclk is controlled in the PCR register and does not reset with the UART module. The ROM missed enabling
|
||||||
|
// it when initializing the ROM UART. If it is not turned on, it will trigger LP_WDT in the ROM.
|
||||||
|
uart_ll_sclk_enable(&UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include "soc/uart_reg.h"
|
#include "soc/uart_reg.h"
|
||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
#include "hal/spimem_flash_ll.h"
|
#include "hal/spimem_flash_ll.h"
|
||||||
|
#include "hal/uart_ll.h"
|
||||||
#include "esp_private/cache_err_int.h"
|
#include "esp_private/cache_err_int.h"
|
||||||
#include "esp_private/mspi_timing_tuning.h"
|
#include "esp_private/mspi_timing_tuning.h"
|
||||||
|
|
||||||
@@ -73,6 +74,10 @@ void esp_system_reset_modules_on_exit(void)
|
|||||||
CLEAR_PERI_REG_MASK(PCR_HMAC_CONF_REG, PCR_HMAC_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_HMAC_CONF_REG, PCR_HMAC_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
|
|
||||||
|
// UART's sclk is controlled in the PCR register and does not reset with the UART module. The ROM missed enabling
|
||||||
|
// it when initializing the ROM UART. If it is not turned on, it will trigger LP_WDT in the ROM.
|
||||||
|
uart_ll_sclk_enable(&UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "esp_private/rtc_clk.h"
|
#include "esp_private/rtc_clk.h"
|
||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/uart_reg.h"
|
#include "soc/uart_reg.h"
|
||||||
|
#include "hal/uart_ll.h"
|
||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
#include "hal/spimem_flash_ll.h"
|
#include "hal/spimem_flash_ll.h"
|
||||||
#include "esp_private/cache_err_int.h"
|
#include "esp_private/cache_err_int.h"
|
||||||
@@ -77,6 +78,10 @@ void esp_system_reset_modules_on_exit(void)
|
|||||||
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_RSA_CONF_REG, PCR_RSA_RST_EN);
|
||||||
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
|
|
||||||
|
// UART's sclk is controlled in the PCR register and does not reset with the UART module. The ROM missed enabling
|
||||||
|
// it when initializing the ROM UART. If it is not turned on, it will trigger LP_WDT in the ROM.
|
||||||
|
uart_ll_sclk_enable(&UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include "soc/rtc_periph.h"
|
#include "soc/rtc_periph.h"
|
||||||
#include "soc/uart_reg.h"
|
#include "soc/uart_reg.h"
|
||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
|
#include "hal/uart_ll.h"
|
||||||
|
|
||||||
#include "esp32h4/rom/cache.h"
|
#include "esp32h4/rom/cache.h"
|
||||||
// TODO: IDF-11911 need refactor
|
// TODO: IDF-11911 need refactor
|
||||||
@@ -70,6 +71,10 @@ void esp_system_reset_modules_on_exit(void)
|
|||||||
CLEAR_PERI_REG_MASK(PCR_HMAC_CONF_REG, PCR_HMAC_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_HMAC_CONF_REG, PCR_HMAC_RST_EN);
|
||||||
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
SET_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
CLEAR_PERI_REG_MASK(PCR_SHA_CONF_REG, PCR_SHA_RST_EN);
|
||||||
|
|
||||||
|
// UART's sclk is controlled in the PCR register and does not reset with the UART module. The ROM missed enabling
|
||||||
|
// it when initializing the ROM UART. If it is not turned on, it will trigger LP_WDT in the ROM.
|
||||||
|
uart_ll_sclk_enable(&UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
/* "inner" restart function for after RTOS, interrupts & anything else on this
|
||||||
|
Reference in New Issue
Block a user