-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feature/bringup_esp32c6_light_sleep_pd_modem' into 'mas…
…ter' esp32c6: support light_sleep (Stage 3: support Modem power down) Closes WIFI-5150, WIFI-5151, and IDF-5679 See merge request espressif/esp-idf!22236
- Loading branch information
Showing
62 changed files
with
1,323 additions
and
660 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 0 additions & 43 deletions
43
components/esp_hw_support/include/esp_private/sleep_mac_bb.h
This file was deleted.
Oops, something went wrong.
152 changes: 152 additions & 0 deletions
152
components/esp_hw_support/include/esp_private/sleep_modem.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
/* | ||
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#pragma once | ||
#include <stdint.h> | ||
#include <stdbool.h> | ||
#include "sdkconfig.h" | ||
#include "esp_err.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* @file sleep_modem.h | ||
* | ||
* This file contains declarations of MAC and baseband power consumption related functions in light sleep mode. | ||
*/ | ||
|
||
#if CONFIG_MAC_BB_PD | ||
|
||
/** | ||
* @brief A callback function completes MAC and baseband power down operation | ||
* | ||
* In light sleep mode, execute Wi-Fi and Bluetooth module MAC and baseband | ||
* power down and backup register configuration information operations. | ||
*/ | ||
void mac_bb_power_down_cb_execute(void); | ||
|
||
/** | ||
* @brief A callback function completes MAC and baseband power up operation | ||
* | ||
* In light sleep mode, execute Wi-Fi and Bluetooth module MAC and baseband | ||
* power up and restore register configuration information operations. | ||
*/ | ||
void mac_bb_power_up_cb_execute(void); | ||
|
||
#endif // CONFIG_MAC_BB_PD | ||
|
||
#if SOC_PM_SUPPORT_PMU_MODEM_STATE | ||
|
||
/** | ||
* @brief Get WiFi modem state | ||
* | ||
* @return true or false for WiFi modem state is enabled or disabled | ||
*/ | ||
bool sleep_modem_wifi_modem_state_enabled(void); | ||
|
||
#endif /* SOC_PM_SUPPORT_PMU_MODEM_STATE */ | ||
|
||
/** | ||
* @brief Whether the current target allows Modem or the TOP power domain to be powered off during light sleep | ||
* | ||
* During light sleep on some targets, it is possible to power OFF the Modem or TOP | ||
* power domains in order to further lower power power consumption. However, this | ||
* can only occur on targets that support REGDMA for modem (WiFi, Bluetooth, | ||
* IEEE802.15.4) retention. | ||
*/ | ||
bool modem_domain_pd_allowed(void); | ||
|
||
/** | ||
* @brief Get the reject trigger signal of Modem system | ||
* | ||
* @return the reject trigger signal of Modem system. | ||
*/ | ||
uint32_t sleep_modem_reject_triggers(void); | ||
|
||
/** | ||
* @brief Configure the parameters of the modem subsytem during the sleep process | ||
* | ||
* In light sleep mode, the wake-up early time of the WiFi module and the TBTT | ||
* interrupt early time (trigger enabling RF) are determined by the maximum and | ||
* minimum frequency of system (higher system frequency means less time to wake | ||
* up and enable RF). | ||
* For the esp32c6 SOC, the modem state is strongly dependent on the light sleep | ||
* mode, and the modem state will be enabled only when light sleep is enabled | ||
* and the `CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP` is configured in menuconfig. | ||
* | ||
* @param max_freq_mhz the maximum frequency of system | ||
* @param min_freq_mhz the minimum frequency of system | ||
* @param light_sleep_enable ture or false for enable or disable light sleep mode, respectively | ||
* | ||
* @return | ||
* - ESP_OK on success | ||
*/ | ||
esp_err_t sleep_modem_configure(int max_freq_mhz, int min_freq_mhz, bool light_sleep_enable); | ||
|
||
/** | ||
* @brief Callback function type for peripherals to know light sleep wakeup overhead. | ||
* | ||
*/ | ||
typedef void (* inform_out_light_sleep_overhead_cb_t)(uint32_t); | ||
|
||
/** | ||
* @brief Register informing peripherals light sleep wakeup overhead time callback | ||
* | ||
* This function allows you to register a callback that informs the peripherals of | ||
* the wakeup overhead time of light sleep. | ||
* @param cb function to inform time | ||
* @return | ||
* - ESP_OK on success | ||
* - ESP_ERR_NO_MEM if no more callback slots are available | ||
*/ | ||
esp_err_t esp_pm_register_inform_out_light_sleep_overhead_callback(inform_out_light_sleep_overhead_cb_t cb); | ||
|
||
/** | ||
* @brief Unregister informing peripherals light sleep wakeup overhead time callback | ||
* | ||
* This function allows you to unregister a callback that informs the peripherals of | ||
* the wakeup overhead time of light sleep. | ||
* @param cb function to inform time | ||
* @return | ||
* - ESP_OK on success | ||
* - ESP_ERR_INVALID_STATE if the given callback hasn't been registered before | ||
*/ | ||
esp_err_t esp_pm_unregister_inform_out_light_sleep_overhead_callback(inform_out_light_sleep_overhead_cb_t cb); | ||
|
||
/** | ||
* @brief A callback that informs the peripherals of the wakeup overhead time of light sleep | ||
* | ||
* @param out_light_sleep_time wakeup overhead time of light sleep | ||
*/ | ||
void periph_inform_out_light_sleep_overhead(uint32_t out_light_sleep_time); | ||
|
||
/** | ||
* @brief Callback function type for peripherals to know light sleep default parameters | ||
*/ | ||
typedef void (* update_light_sleep_default_params_config_cb_t)(int, int); | ||
|
||
/** | ||
* @brief Register peripherals light sleep default parameters configure callback | ||
* | ||
* This function allows you to register a callback that configure the peripherals | ||
* of default parameters of light sleep | ||
* @param cb function to update default parameters | ||
*/ | ||
void esp_pm_register_light_sleep_default_params_config_callback(update_light_sleep_default_params_config_cb_t cb); | ||
|
||
/** | ||
* @brief Unregister peripherals light sleep default parameters configure Callback | ||
* | ||
* This function allows you to unregister a callback that configure the peripherals | ||
* of default parameters of light sleep | ||
*/ | ||
void esp_pm_unregister_light_sleep_default_params_config_callback(void); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.