From 872a3a2d716106833f652430233beb7b86ac0a34 Mon Sep 17 00:00:00 2001 From: "C.S.M" Date: Thu, 14 Nov 2024 15:49:06 +0800 Subject: [PATCH] fix(temperature_sensor): Fix temperature sensor sleep retention on p4 --- components/esp_driver_tsens/src/temperature_sensor.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/esp_driver_tsens/src/temperature_sensor.c b/components/esp_driver_tsens/src/temperature_sensor.c index 39e44afb9b..db2436cdf5 100644 --- a/components/esp_driver_tsens/src/temperature_sensor.c +++ b/components/esp_driver_tsens/src/temperature_sensor.c @@ -29,6 +29,7 @@ #include "soc/temperature_sensor_periph.h" #include "esp_memory_utils.h" #include "esp_private/sar_periph_ctrl.h" +#include "esp_sleep.h" #if TEMPERATURE_SENSOR_USE_RETENTION_LINK #include "esp_private/sleep_retention.h" #endif @@ -137,6 +138,10 @@ esp_err_t temperature_sensor_install(const temperature_sensor_config_t *tsens_co ESP_RETURN_ON_FALSE(tsens_config->flags.allow_pd == 0, ESP_ERR_NOT_SUPPORTED, TAG, "not able to power down in light sleep"); #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 } } @@ -199,6 +204,10 @@ 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);