mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
fix(mcpwm): fix pm_lock memory issues
This commit is contained in:
@@ -69,9 +69,11 @@ static void mcpwm_cap_timer_unregister_from_group(mcpwm_cap_timer_t *cap_timer)
|
||||
|
||||
static esp_err_t mcpwm_cap_timer_destroy(mcpwm_cap_timer_t *cap_timer)
|
||||
{
|
||||
#if !SOC_MCPWM_CAPTURE_CLK_FROM_GROUP
|
||||
if (cap_timer->pm_lock) {
|
||||
ESP_RETURN_ON_ERROR(esp_pm_lock_delete(cap_timer->pm_lock), TAG, "delete pm_lock failed");
|
||||
}
|
||||
#endif
|
||||
if (cap_timer->group) {
|
||||
mcpwm_cap_timer_unregister_from_group(cap_timer);
|
||||
}
|
||||
@@ -101,6 +103,7 @@ esp_err_t mcpwm_new_capture_timer(const mcpwm_capture_timer_config_t *config, mc
|
||||
#if SOC_MCPWM_CAPTURE_CLK_FROM_GROUP
|
||||
// capture timer clock source is same as the MCPWM group
|
||||
ESP_GOTO_ON_ERROR(mcpwm_select_periph_clock(group, (soc_module_clk_t)clk_src), err, TAG, "set group clock failed");
|
||||
cap_timer->pm_lock = group->pm_lock;
|
||||
uint32_t periph_src_clk_hz = 0;
|
||||
ESP_GOTO_ON_ERROR(esp_clk_tree_src_get_freq_hz((soc_module_clk_t)clk_src, ESP_CLK_TREE_SRC_FREQ_PRECISION_CACHED, &periph_src_clk_hz), err, TAG, "get clock source freq failed");
|
||||
ESP_LOGD(TAG, "periph_src_clk_hz %"PRIu32"", periph_src_clk_hz);
|
||||
|
||||
@@ -110,6 +110,9 @@ void mcpwm_release_group_handle(mcpwm_group_t *group)
|
||||
MCPWM_RCC_ATOMIC() {
|
||||
mcpwm_ll_enable_bus_clock(group_id, false);
|
||||
}
|
||||
if (group->pm_lock) {
|
||||
esp_pm_lock_delete(group->pm_lock);
|
||||
}
|
||||
free(group);
|
||||
}
|
||||
_lock_release(&s_platform.mutex);
|
||||
|
||||
Reference in New Issue
Block a user