Skip to content

Commit 91f92b0

Browse files
committed
fix(glithc_filter): only call esp_pm APIs when CONFIG_PM_ENABLE is enabled
1 parent 90050df commit 91f92b0

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

components/esp_driver_gpio/src/gpio_flex_glitch_filter.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -28,8 +28,8 @@ struct gpio_flex_glitch_filter_t {
2828
gpio_glitch_filter_t base;
2929
gpio_flex_glitch_filter_group_t *group;
3030
uint32_t filter_id;
31-
esp_pm_lock_handle_t pm_lock;
3231
#if CONFIG_PM_ENABLE
32+
esp_pm_lock_handle_t pm_lock;
3333
char pm_lock_name[GLITCH_FILTER_PM_LOCK_NAME_LEN_MAX]; // pm lock name
3434
#endif
3535
};
@@ -72,9 +72,11 @@ static esp_err_t gpio_filter_destroy(gpio_flex_glitch_filter_t *filter)
7272
portEXIT_CRITICAL(&group->spinlock);
7373
}
7474

75+
#if CONFIG_PM_ENABLE
7576
if (filter->pm_lock) {
7677
esp_pm_lock_delete(filter->pm_lock);
7778
}
79+
#endif
7880

7981
free(filter);
8082
return ESP_OK;
@@ -92,10 +94,12 @@ static esp_err_t gpio_flex_glitch_filter_enable(gpio_glitch_filter_t *filter)
9294
ESP_RETURN_ON_FALSE(filter->fsm == GLITCH_FILTER_FSM_INIT, ESP_ERR_INVALID_STATE, TAG, "filter not in init state");
9395
gpio_flex_glitch_filter_t *flex_filter = __containerof(filter, gpio_flex_glitch_filter_t, base);
9496

97+
#if CONFIG_PM_ENABLE
9598
// acquire pm lock
9699
if (flex_filter->pm_lock) {
97100
esp_pm_lock_acquire(flex_filter->pm_lock);
98101
}
102+
#endif
99103

100104
int filter_id = flex_filter->filter_id;
101105
gpio_ll_glitch_filter_enable(s_gpio_glitch_filter_group.hw, filter_id, true);
@@ -111,10 +115,12 @@ static esp_err_t gpio_flex_glitch_filter_disable(gpio_glitch_filter_t *filter)
111115
int filter_id = flex_filter->filter_id;
112116
gpio_ll_glitch_filter_enable(s_gpio_glitch_filter_group.hw, filter_id, false);
113117

118+
#if CONFIG_PM_ENABLE
114119
// release pm lock
115120
if (flex_filter->pm_lock) {
116121
esp_pm_lock_release(flex_filter->pm_lock);
117122
}
123+
#endif
118124

119125
filter->fsm = GLITCH_FILTER_FSM_INIT;
120126
return ESP_OK;

components/esp_driver_gpio/src/gpio_pin_glitch_filter.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -20,17 +20,19 @@ static const char *TAG = "gpio-filter";
2020
*/
2121
typedef struct gpio_pin_glitch_filter_t {
2222
gpio_glitch_filter_t base;
23-
esp_pm_lock_handle_t pm_lock;
2423
#if CONFIG_PM_ENABLE
24+
esp_pm_lock_handle_t pm_lock;
2525
char pm_lock_name[GLITCH_FILTER_PM_LOCK_NAME_LEN_MAX]; // pm lock name
2626
#endif
2727
} gpio_pin_glitch_filter_t;
2828

2929
static esp_err_t gpio_filter_destroy(gpio_pin_glitch_filter_t *filter)
3030
{
31+
#if CONFIG_PM_ENABLE
3132
if (filter->pm_lock) {
3233
esp_pm_lock_delete(filter->pm_lock);
3334
}
35+
#endif
3436

3537
free(filter);
3638
return ESP_OK;
@@ -46,12 +48,14 @@ static esp_err_t gpio_pin_glitch_filter_del(gpio_glitch_filter_t *filter)
4648
static esp_err_t gpio_pin_glitch_filter_enable(gpio_glitch_filter_t *filter)
4749
{
4850
ESP_RETURN_ON_FALSE(filter->fsm == GLITCH_FILTER_FSM_INIT, ESP_ERR_INVALID_STATE, TAG, "filter not in init state");
49-
gpio_pin_glitch_filter_t *pin_filter = __containerof(filter, gpio_pin_glitch_filter_t, base);
51+
[[maybe_unused]] gpio_pin_glitch_filter_t *pin_filter = __containerof(filter, gpio_pin_glitch_filter_t, base);
5052

53+
#if CONFIG_PM_ENABLE
5154
// acquire pm lock
5255
if (pin_filter->pm_lock) {
5356
esp_pm_lock_acquire(pin_filter->pm_lock);
5457
}
58+
#endif
5559

5660
gpio_ll_pin_filter_enable(NULL, filter->gpio_num);
5761
filter->fsm = GLITCH_FILTER_FSM_ENABLE;
@@ -61,14 +65,16 @@ static esp_err_t gpio_pin_glitch_filter_enable(gpio_glitch_filter_t *filter)
6165
static esp_err_t gpio_pin_glitch_filter_disable(gpio_glitch_filter_t *filter)
6266
{
6367
ESP_RETURN_ON_FALSE(filter->fsm == GLITCH_FILTER_FSM_ENABLE, ESP_ERR_INVALID_STATE, TAG, "filter not in enable state");
64-
gpio_pin_glitch_filter_t *pin_filter = __containerof(filter, gpio_pin_glitch_filter_t, base);
68+
[[maybe_unused]] gpio_pin_glitch_filter_t *pin_filter = __containerof(filter, gpio_pin_glitch_filter_t, base);
6569

6670
gpio_ll_pin_filter_disable(NULL, filter->gpio_num);
6771

72+
#if CONFIG_PM_ENABLE
6873
// release pm lock
6974
if (pin_filter->pm_lock) {
7075
esp_pm_lock_release(pin_filter->pm_lock);
7176
}
77+
#endif
7278

7379
filter->fsm = GLITCH_FILTER_FSM_INIT;
7480
return ESP_OK;

0 commit comments

Comments
 (0)