diff --git a/components/esp_driver_tsens/src/temperature_sensor.c b/components/esp_driver_tsens/src/temperature_sensor.c index 7a11d7d06a9..1572096875f 100644 --- a/components/esp_driver_tsens/src/temperature_sensor.c +++ b/components/esp_driver_tsens/src/temperature_sensor.c @@ -150,10 +150,6 @@ esp_err_t temperature_sensor_install(const temperature_sensor_config_t *tsens_co #endif #endif // SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION -#if SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION && !SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); -#endif - #if TEMPERATURE_SENSOR_USE_RETENTION_LINK sleep_retention_module_init_param_t init_param = { .cbs = { .create = { .handle = s_temperature_sensor_sleep_retention_init, .arg = (void *)tsens } } @@ -216,10 +212,6 @@ esp_err_t temperature_sensor_uninstall(temperature_sensor_handle_t tsens) } #endif // TEMPERATURE_SENSOR_USE_RETENTION_LINK -#if SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION && !SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF); -#endif - temperature_sensor_power_release(); free(tsens); diff --git a/components/esp_hw_support/sar_tsens_ctrl.c b/components/esp_hw_support/sar_tsens_ctrl.c index cb77190bbfa..a9f5bba2431 100644 --- a/components/esp_hw_support/sar_tsens_ctrl.c +++ b/components/esp_hw_support/sar_tsens_ctrl.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,6 +10,7 @@ #include "esp_private/sar_periph_ctrl.h" #include "esp_log.h" #include "esp_timer.h" +#include "esp_sleep.h" #if SOC_TEMP_SENSOR_SUPPORTED #include "hal/temperature_sensor_ll.h" @@ -53,6 +54,9 @@ void temperature_sensor_power_acquire(void) // Initialize HAL layer with the same tsens_idx temperature_sensor_hal_init(); timer1 = esp_timer_get_time(); +#if SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION && !SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); +#endif } esp_os_exit_critical(&rtc_spinlock); } @@ -75,6 +79,9 @@ void temperature_sensor_power_release(void) adc_apb_periph_free(); #endif regi2c_saradc_disable(); +#if SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION && !SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF); +#endif } esp_os_exit_critical(&rtc_spinlock); } diff --git a/components/esp_pm/linker.lf b/components/esp_pm/linker.lf index ae69c7c2858..678cb65ab11 100644 --- a/components/esp_pm/linker.lf +++ b/components/esp_pm/linker.lf @@ -49,6 +49,8 @@ entries: sar_tsens_ctrl:temperature_sensor_power_acquire (noflash) sar_tsens_ctrl:temperature_sensor_power_release (noflash) sar_tsens_ctrl:temp_sensor_get_raw_value (noflash) + if (SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION = y) && (SOC_TEMPERATURE_SENSOR_UNDER_PD_TOP_DOMAIN = n): + sleep_modes:esp_sleep_pd_config (noflash) sar_periph_ctrl_common:regi2c_saradc_enable (noflash) sar_periph_ctrl_common:regi2c_saradc_disable (noflash) if SOC_ADC_SUPPORTED = y: