change(pm): move the modem_clock-related code outside SOC_PM_SUPPORT_PMU_MODEM_STATE

This commit is contained in:
Lou Tianhao
2024-03-13 20:52:56 +08:00
parent 29076a43f6
commit f5487c72ab
4 changed files with 13 additions and 8 deletions

View File

@@ -70,7 +70,7 @@ void modem_clock_module_disable(periph_module_t module);
*/ */
void modem_clock_module_mac_reset(periph_module_t module); void modem_clock_module_mac_reset(periph_module_t module);
#if SOC_PMU_SUPPORTED #if SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND
/** /**
* @brief Enable modem clock domain clock gate to gate it's output * @brief Enable modem clock domain clock gate to gate it's output
* *

View File

@@ -29,7 +29,9 @@ extern "C" {
*/ */
typedef enum { typedef enum {
PMU_HP_ICG_MODEM_CODE_SLEEP = 0, PMU_HP_ICG_MODEM_CODE_SLEEP = 0,
#if SOC_PM_SUPPORT_PMU_MODEM_STATE
PMU_HP_ICG_MODEM_CODE_MODEM = 1, PMU_HP_ICG_MODEM_CODE_MODEM = 1,
#endif
PMU_HP_ICG_MODEM_CODE_ACTIVE = 2, PMU_HP_ICG_MODEM_CODE_ACTIVE = 2,
} pmu_hp_icg_modem_mode_t; } pmu_hp_icg_modem_mode_t;

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -157,7 +157,7 @@ modem_clock_context_t * __attribute__((weak)) IRAM_ATTR MODEM_CLOCK_instance(voi
return &modem_clock_context; return &modem_clock_context;
} }
#if SOC_PM_SUPPORT_PMU_MODEM_STATE #if SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND
esp_err_t modem_clock_domain_clk_gate_enable(modem_clock_domain_t domain, pmu_hp_icg_modem_mode_t mode) esp_err_t modem_clock_domain_clk_gate_enable(modem_clock_domain_t domain, pmu_hp_icg_modem_mode_t mode)
{ {
if (domain >= MODEM_CLOCK_DOMAIN_MAX || domain < MODEM_CLOCK_DOMAIN_MODEM_APB) { if (domain >= MODEM_CLOCK_DOMAIN_MAX || domain < MODEM_CLOCK_DOMAIN_MODEM_APB) {
@@ -189,7 +189,7 @@ esp_err_t modem_clock_domain_clk_gate_disable(modem_clock_domain_t domain, pmu_h
portEXIT_CRITICAL_SAFE(&MODEM_CLOCK_instance()->lock); portEXIT_CRITICAL_SAFE(&MODEM_CLOCK_instance()->lock);
return ESP_OK; return ESP_OK;
} }
#endif // #if SOC_PM_SUPPORT_PMU_MODEM_STATE #endif // #if SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND
static void IRAM_ATTR modem_clock_device_enable(modem_clock_context_t *ctx, uint32_t dev_map) static void IRAM_ATTR modem_clock_device_enable(modem_clock_context_t *ctx, uint32_t dev_map)
{ {
@@ -290,12 +290,13 @@ static IRAM_ATTR uint32_t modem_clock_get_module_deps(periph_module_t module)
return deps; return deps;
} }
#if SOC_PM_SUPPORT_PMU_MODEM_STATE
/* the ICG code's bit 0, 1 and 2 indicates the ICG state /* the ICG code's bit 0, 1 and 2 indicates the ICG state
* of pmu SLEEP, MODEM and ACTIVE mode respectively */ * of pmu SLEEP, MODEM and ACTIVE mode respectively */
#define ICG_NOGATING_SLEEP (BIT(PMU_HP_ICG_MODEM_CODE_SLEEP))
#define ICG_NOGATING_MODEM (BIT(PMU_HP_ICG_MODEM_CODE_MODEM))
#define ICG_NOGATING_ACTIVE (BIT(PMU_HP_ICG_MODEM_CODE_ACTIVE)) #define ICG_NOGATING_ACTIVE (BIT(PMU_HP_ICG_MODEM_CODE_ACTIVE))
#define ICG_NOGATING_SLEEP (BIT(PMU_HP_ICG_MODEM_CODE_SLEEP))
#if SOC_PM_SUPPORT_PMU_MODEM_STATE
#define ICG_NOGATING_MODEM (BIT(PMU_HP_ICG_MODEM_CODE_MODEM))
#endif
static const DRAM_ATTR uint32_t initial_gating_mode[MODEM_CLOCK_DOMAIN_MAX] = { static const DRAM_ATTR uint32_t initial_gating_mode[MODEM_CLOCK_DOMAIN_MAX] = {
[MODEM_CLOCK_DOMAIN_MODEM_APB] = ICG_NOGATING_ACTIVE | ICG_NOGATING_MODEM, [MODEM_CLOCK_DOMAIN_MODEM_APB] = ICG_NOGATING_ACTIVE | ICG_NOGATING_MODEM,
@@ -315,8 +316,10 @@ static IRAM_ATTR void modem_clock_module_icg_map_init_all(void)
{ {
portENTER_CRITICAL_SAFE(&MODEM_CLOCK_instance()->lock); portENTER_CRITICAL_SAFE(&MODEM_CLOCK_instance()->lock);
for (int domain = 0; domain < MODEM_CLOCK_DOMAIN_MAX; domain++) { for (int domain = 0; domain < MODEM_CLOCK_DOMAIN_MAX; domain++) {
#if !CONFIG_IDF_TARGET_ESP32H2 //TODO: ESP32H2 need icg
uint32_t code = modem_clock_hal_get_clock_domain_icg_bitmap(MODEM_CLOCK_instance()->hal, domain); uint32_t code = modem_clock_hal_get_clock_domain_icg_bitmap(MODEM_CLOCK_instance()->hal, domain);
modem_clock_hal_set_clock_domain_icg_bitmap(MODEM_CLOCK_instance()->hal, domain, initial_gating_mode[domain] | code); modem_clock_hal_set_clock_domain_icg_bitmap(MODEM_CLOCK_instance()->hal, domain, initial_gating_mode[domain] | code);
#endif
} }
portEXIT_CRITICAL_SAFE(&MODEM_CLOCK_instance()->lock); portEXIT_CRITICAL_SAFE(&MODEM_CLOCK_instance()->lock);
} }

View File

@@ -23,7 +23,7 @@ typedef struct {
modem_lpcon_dev_t *lpcon_dev; modem_lpcon_dev_t *lpcon_dev;
} modem_clock_hal_context_t; } modem_clock_hal_context_t;
#if MAC_SUPPORT_PMU_MODEM_STATE #if !CONFIG_IDF_TARGET_ESP32H2 //TODO: PM-
void modem_clock_hal_set_clock_domain_icg_bitmap(modem_clock_hal_context_t *hal, modem_clock_domain_t domain, uint32_t bitmap); void modem_clock_hal_set_clock_domain_icg_bitmap(modem_clock_hal_context_t *hal, modem_clock_domain_t domain, uint32_t bitmap);
uint32_t modem_clock_hal_get_clock_domain_icg_bitmap(modem_clock_hal_context_t *hal, modem_clock_domain_t domain); uint32_t modem_clock_hal_get_clock_domain_icg_bitmap(modem_clock_hal_context_t *hal, modem_clock_domain_t domain);
#endif #endif