11/*
2- * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
2+ * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
33 *
44 * SPDX-License-Identifier: Apache-2.0
55 */
@@ -70,9 +70,9 @@ struct sdm_channel_t {
7070 int gpio_num ; // GPIO number
7171 uint32_t sample_rate_hz ; // Sample rate, in Hz
7272 portMUX_TYPE spinlock ; // to protect per-channels resources concurrently accessed by task and ISR handler
73- esp_pm_lock_handle_t pm_lock ; // PM lock, for glitch filter, as that module can only be functional under APB
7473 sdm_fsm_t fsm ; // FSM state
7574#if CONFIG_PM_ENABLE
75+ esp_pm_lock_handle_t pm_lock ; // PM lock, for glitch filter, as that module can only be functional under APB
7676 char pm_lock_name [SDM_PM_LOCK_NAME_LEN_MAX ]; // pm lock name
7777#endif
7878};
@@ -181,9 +181,11 @@ static void sdm_unregister_from_group(sdm_channel_t *chan)
181181
182182static esp_err_t sdm_destroy (sdm_channel_t * chan )
183183{
184+ #if CONFIG_PM_ENABLE
184185 if (chan -> pm_lock ) {
185186 ESP_RETURN_ON_ERROR (esp_pm_lock_delete (chan -> pm_lock ), TAG , "delete pm lock failed" );
186187 }
188+ #endif
187189 if (chan -> group ) {
188190 sdm_unregister_from_group (chan );
189191 }
@@ -292,10 +294,12 @@ esp_err_t sdm_channel_enable(sdm_channel_handle_t chan)
292294 ESP_RETURN_ON_FALSE (chan , ESP_ERR_INVALID_ARG , TAG , "invalid argument" );
293295 ESP_RETURN_ON_FALSE (chan -> fsm == SDM_FSM_INIT , ESP_ERR_INVALID_STATE , TAG , "channel not in init state" );
294296
297+ #if CONFIG_PM_ENABLE
295298 // acquire power manager lock
296299 if (chan -> pm_lock ) {
297300 ESP_RETURN_ON_ERROR (esp_pm_lock_acquire (chan -> pm_lock ), TAG , "acquire pm_lock failed" );
298301 }
302+ #endif
299303 chan -> fsm = SDM_FSM_ENABLE ;
300304 return ESP_OK ;
301305}
@@ -305,10 +309,12 @@ esp_err_t sdm_channel_disable(sdm_channel_handle_t chan)
305309 ESP_RETURN_ON_FALSE (chan , ESP_ERR_INVALID_ARG , TAG , "invalid argument" );
306310 ESP_RETURN_ON_FALSE (chan -> fsm == SDM_FSM_ENABLE , ESP_ERR_INVALID_STATE , TAG , "channel not in enable state" );
307311
312+ #if CONFIG_PM_ENABLE
308313 // release power manager lock
309314 if (chan -> pm_lock ) {
310315 ESP_RETURN_ON_ERROR (esp_pm_lock_release (chan -> pm_lock ), TAG , "release pm_lock failed" );
311316 }
317+ #endif
312318 chan -> fsm = SDM_FSM_INIT ;
313319 return ESP_OK ;
314320}
0 commit comments