Skip to content

Commit 0e92b38

Browse files
committed
Merge branch 'bugfix/bt_sleep_log_consistent' into 'master'
fix(ble): keep the log of the bluetooth sleep clock source consistent See merge request espressif/esp-idf!40281
2 parents 4527c3a + c2d666a commit 0e92b38

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

components/bt/controller/esp32/bt.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,12 +1540,14 @@ static esp_err_t btdm_low_power_mode_init(void)
15401540
bool select_src_ret __attribute__((unused));
15411541
bool set_div_ret __attribute__((unused));
15421542
if (btdm_lpclk_sel == ESP_BT_SLEEP_CLOCK_MAIN_XTAL) {
1543+
ESP_LOGI(BTDM_LOG_TAG, "Using main XTAL as clock source");
15431544
select_src_ret = btdm_lpclk_select_src(BTDM_LPCLK_SEL_XTAL);
15441545
set_div_ret = btdm_lpclk_set_div(esp_clk_xtal_freq() * 2 / MHZ - 1);
15451546
assert(select_src_ret && set_div_ret);
15461547
btdm_lpcycle_us_frac = RTC_CLK_CAL_FRACT;
15471548
btdm_lpcycle_us = 2 << (btdm_lpcycle_us_frac);
15481549
} else { // btdm_lpclk_sel == BTDM_LPCLK_SEL_XTAL32K
1550+
ESP_LOGI(BTDM_LOG_TAG, "Using external 32.768 kHz crystal/oscillator as clock source");
15491551
select_src_ret = btdm_lpclk_select_src(BTDM_LPCLK_SEL_XTAL32K);
15501552
set_div_ret = btdm_lpclk_set_div(0);
15511553
assert(select_src_ret && set_div_ret);

components/bt/controller/esp32c3/Kconfig.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,10 +416,10 @@ menu "MODEM SLEEP Options"
416416
modem sleep to be used with both DFS and light sleep.
417417

418418
config BT_CTRL_LPCLK_SEL_RTC_SLOW
419-
bool "Internal 150kHz RC oscillator"
419+
bool "Internal 136kHz RC oscillator"
420420
depends on RTC_CLK_SRC_INT_RC
421421
help
422-
Internal 150kHz RC oscillator. The accuracy of this clock is a lot larger than 500ppm which is required
422+
Internal 136kHz RC oscillator. The accuracy of this clock is a lot larger than 500ppm which is required
423423
in Bluetooth communication, so don't select this option in scenarios such as BLE connection state.
424424
endchoice
425425

components/bt/controller/esp32c3/bt.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,15 +1650,11 @@ static esp_err_t btdm_low_power_mode_init(esp_bt_controller_config_t *cfg)
16501650
#endif
16511651
}
16521652
} else if (s_lp_cntl.lpclk_sel == ESP_BT_SLEEP_CLOCK_RTC_SLOW) { // Internal 136kHz RC oscillator
1653-
if (rtc_clk_slow_src_get() == SOC_RTC_SLOW_CLK_SRC_RC_SLOW) {
1654-
ESP_LOGW(BT_LOG_TAG, "Internal 136kHz RC oscillator. The accuracy of this clock is a lot larger than 500ppm which is "
1655-
"required in Bluetooth communication, so don't select this option in scenarios such as BLE connection state.");
1656-
} else {
1653+
if (rtc_clk_slow_src_get() != SOC_RTC_SLOW_CLK_SRC_RC_SLOW) {
16571654
ESP_LOGW(BT_LOG_TAG, "Internal 136kHz RC oscillator not detected.");
16581655
assert(0);
16591656
}
16601657
} else if (s_lp_cntl.lpclk_sel == ESP_BT_SLEEP_CLOCK_MAIN_XTAL) {
1661-
ESP_LOGI(BT_LOG_TAG, "Bluetooth will use main XTAL as Bluetooth sleep clock.");
16621658
#if !CONFIG_BT_CTRL_MAIN_XTAL_PU_DURING_LIGHT_SLEEP
16631659
s_lp_cntl.no_light_sleep = 1;
16641660
#endif
@@ -1670,6 +1666,7 @@ static esp_err_t btdm_low_power_mode_init(esp_bt_controller_config_t *cfg)
16701666
bool select_src_ret __attribute__((unused));
16711667
bool set_div_ret __attribute__((unused));
16721668
if (s_lp_cntl.lpclk_sel == ESP_BT_SLEEP_CLOCK_MAIN_XTAL) {
1669+
ESP_LOGI(BT_LOG_TAG, "Using main XTAL as clock source");
16731670
#ifdef CONFIG_BT_CTRL_MAIN_XTAL_PU_DURING_LIGHT_SLEEP
16741671
ESP_ERROR_CHECK(esp_sleep_pd_config(ESP_PD_DOMAIN_XTAL, ESP_PD_OPTION_ON));
16751672
s_lp_cntl.main_xtal_pu = 1;
@@ -1680,6 +1677,7 @@ static esp_err_t btdm_low_power_mode_init(esp_bt_controller_config_t *cfg)
16801677
btdm_lpcycle_us_frac = RTC_CLK_CAL_FRACT;
16811678
btdm_lpcycle_us = 1 << (btdm_lpcycle_us_frac);
16821679
} else if (s_lp_cntl.lpclk_sel == ESP_BT_SLEEP_CLOCK_EXT_32K_XTAL) {
1680+
ESP_LOGI(BT_LOG_TAG, "Using external 32.768 kHz crystal/oscillator as clock source");
16831681
select_src_ret = btdm_lpclk_select_src(BTDM_LPCLK_SEL_XTAL32K);
16841682
set_div_ret = btdm_lpclk_set_div(0);
16851683
assert(select_src_ret && set_div_ret);
@@ -1688,6 +1686,8 @@ static esp_err_t btdm_low_power_mode_init(esp_bt_controller_config_t *cfg)
16881686
(1000000 >> (15 - RTC_CLK_CAL_FRACT));
16891687
assert(btdm_lpcycle_us != 0);
16901688
} else if (s_lp_cntl.lpclk_sel == ESP_BT_SLEEP_CLOCK_RTC_SLOW) {
1689+
ESP_LOGW(BT_LOG_TAG, "Using 136 kHz RC as clock source. The accuracy of this clock is a lot larger than 500ppm which is "
1690+
"required in Bluetooth communication, so don't select this option in scenarios such as BLE connection state.");
16911691
select_src_ret = btdm_lpclk_select_src(BTDM_LPCLK_SEL_RTC_SLOW);
16921692
set_div_ret = btdm_lpclk_set_div(0);
16931693
assert(select_src_ret && set_div_ret);

0 commit comments

Comments
 (0)