mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
fix(hal): fix the issue of dual-core contention for RTC_CNTL regs
This commit is contained in:
@@ -69,6 +69,8 @@
|
||||
|
||||
#define BT_LOG_TAG "BLE_INIT"
|
||||
|
||||
#define RTC_CNTL_ATOMIC() PERIPH_RCC_ATOMIC()
|
||||
|
||||
#define BTDM_INIT_PERIOD (5000) /* ms */
|
||||
|
||||
/* Low Power Clock Selection */
|
||||
@@ -805,8 +807,10 @@ void IRAM_ATTR btdm_hw_mac_power_down_wrapper(void)
|
||||
#if CONFIG_MAC_BB_PD
|
||||
#if SOC_PM_SUPPORT_BT_PD
|
||||
// Bluetooth module power down
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
RTC_CNTL_ATOMIC() {
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
}
|
||||
#endif
|
||||
esp_mac_bb_power_down();
|
||||
#endif
|
||||
@@ -817,8 +821,10 @@ void IRAM_ATTR btdm_hw_mac_power_up_wrapper(void)
|
||||
#if CONFIG_MAC_BB_PD
|
||||
#if SOC_PM_SUPPORT_BT_PD
|
||||
// Bluetooth module power up
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
RTC_CNTL_ATOMIC() {
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
}
|
||||
#endif
|
||||
esp_mac_bb_power_up();
|
||||
#endif
|
||||
@@ -835,8 +841,10 @@ static inline void esp_bt_power_domain_on(void)
|
||||
{
|
||||
// Bluetooth module power up
|
||||
#if SOC_PM_SUPPORT_BT_PD
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
RTC_CNTL_ATOMIC() {
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
}
|
||||
#endif
|
||||
esp_wifi_bt_power_domain_on();
|
||||
}
|
||||
@@ -845,8 +853,10 @@ static inline void esp_bt_power_domain_off(void)
|
||||
{
|
||||
// Bluetooth module power down
|
||||
#if SOC_PM_SUPPORT_BT_PD
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
RTC_CNTL_ATOMIC() {
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_BT_FORCE_ISO);
|
||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_FORCE_PD);
|
||||
}
|
||||
#endif
|
||||
esp_wifi_bt_power_domain_off();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user