mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/fix_adc_pm_lock_release_issue_v5.0' into 'release/v5.0'
esp_adc: fix continuous mode pm lock release fail issue and add tests (v5.0) See merge request espressif/esp-idf!22551
This commit is contained in:
commit
21b42ce760
@ -84,11 +84,6 @@ typedef struct adc_continuous_ctx_t {
|
|||||||
esp_pm_lock_handle_t pm_lock; //For power management
|
esp_pm_lock_handle_t pm_lock; //For power management
|
||||||
} adc_continuous_ctx_t;
|
} adc_continuous_ctx_t;
|
||||||
|
|
||||||
#ifdef CONFIG_PM_ENABLE
|
|
||||||
//Only for deprecated API
|
|
||||||
extern esp_pm_lock_handle_t adc_digi_arbiter_lock;
|
|
||||||
#endif //CONFIG_PM_ENABLE
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------
|
/*---------------------------------------------------------------
|
||||||
ADC Continuous Read Mode (via DMA)
|
ADC Continuous Read Mode (via DMA)
|
||||||
---------------------------------------------------------------*/
|
---------------------------------------------------------------*/
|
||||||
@ -427,11 +422,6 @@ esp_err_t adc_continuous_stop(adc_continuous_handle_t handle)
|
|||||||
adc_hal_digi_stop(&handle->hal);
|
adc_hal_digi_stop(&handle->hal);
|
||||||
|
|
||||||
adc_hal_digi_deinit(&handle->hal);
|
adc_hal_digi_deinit(&handle->hal);
|
||||||
#if CONFIG_PM_ENABLE
|
|
||||||
if (handle->pm_lock) {
|
|
||||||
esp_pm_lock_release(handle->pm_lock);
|
|
||||||
}
|
|
||||||
#endif //CONFIG_PM_ENABLE
|
|
||||||
|
|
||||||
if (handle->use_adc2) {
|
if (handle->use_adc2) {
|
||||||
adc_lock_release(ADC_UNIT_2);
|
adc_lock_release(ADC_UNIT_2);
|
||||||
@ -492,11 +482,9 @@ esp_err_t adc_continuous_deinit(adc_continuous_handle_t handle)
|
|||||||
free(handle->ringbuf_struct);
|
free(handle->ringbuf_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_PM_ENABLE
|
|
||||||
if (handle->pm_lock) {
|
if (handle->pm_lock) {
|
||||||
esp_pm_lock_delete(handle->pm_lock);
|
esp_pm_lock_delete(handle->pm_lock);
|
||||||
}
|
}
|
||||||
#endif //CONFIG_PM_ENABLE
|
|
||||||
|
|
||||||
free(handle->rx_dma_buf);
|
free(handle->rx_dma_buf);
|
||||||
free(handle->hal.rx_desc);
|
free(handle->hal.rx_desc);
|
||||||
|
@ -13,6 +13,7 @@ from pytest_embedded import Dut
|
|||||||
@pytest.mark.parametrize('config', [
|
@pytest.mark.parametrize('config', [
|
||||||
'iram_safe',
|
'iram_safe',
|
||||||
'release',
|
'release',
|
||||||
|
'pm_enable'
|
||||||
], indirect=True)
|
], indirect=True)
|
||||||
def test_adc(dut: Dut) -> None:
|
def test_adc(dut: Dut) -> None:
|
||||||
dut.expect_exact('Press ENTER to see the list of tests')
|
dut.expect_exact('Press ENTER to see the list of tests')
|
||||||
@ -21,6 +22,7 @@ def test_adc(dut: Dut) -> None:
|
|||||||
|
|
||||||
|
|
||||||
# All ESP32C2 ADC runners are 26m xtal
|
# All ESP32C2 ADC runners are 26m xtal
|
||||||
|
# No PM test, as C2 doesn't support ADC continuous mode
|
||||||
@pytest.mark.esp32c2
|
@pytest.mark.esp32c2
|
||||||
@pytest.mark.adc
|
@pytest.mark.adc
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
14
components/esp_adc/test_apps/adc/sdkconfig.ci.pm_enable
Normal file
14
components/esp_adc/test_apps/adc/sdkconfig.ci.pm_enable
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
CONFIG_COMPILER_DUMP_RTL_FILES=y
|
||||||
|
CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM=y
|
||||||
|
CONFIG_GPTIMER_ISR_IRAM_SAFE=y
|
||||||
|
CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM=y
|
||||||
|
CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE=y
|
||||||
|
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
|
||||||
|
# silent the error check, as the error string are stored in rodata, causing RTL check failure
|
||||||
|
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
|
||||||
|
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y
|
||||||
|
CONFIG_HAL_ASSERTION_SILENT=y
|
||||||
|
|
||||||
|
CONFIG_PM_ENABLE=y
|
||||||
|
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
|
||||||
|
CONFIG_PM_DFS_INIT_AUTO=y
|
Loading…
x
Reference in New Issue
Block a user