forked from espressif/esp-idf
fix(jpeg): only call esp_pm APIs when CONFIG_PM_ENABLE is enabled
This commit is contained in:
@@ -95,9 +95,11 @@ esp_err_t jpeg_release_codec_handle(jpeg_codec_handle_t jpeg_codec)
|
||||
vSemaphoreDeleteWithCaps(jpeg_codec->codec_mutex);
|
||||
jpeg_codec->codec_mutex = NULL;
|
||||
}
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (jpeg_codec->pm_lock) {
|
||||
esp_pm_lock_delete(jpeg_codec->pm_lock);
|
||||
}
|
||||
#endif
|
||||
PERIPH_RCC_ATOMIC() {
|
||||
jpeg_ll_enable_bus_clock(false);
|
||||
}
|
||||
|
@@ -212,9 +212,11 @@ esp_err_t jpeg_decoder_process(jpeg_decoder_handle_t decoder_engine, const jpeg_
|
||||
|
||||
esp_err_t ret = ESP_OK;
|
||||
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (decoder_engine->codec_base->pm_lock) {
|
||||
ESP_RETURN_ON_ERROR(esp_pm_lock_acquire(decoder_engine->codec_base->pm_lock), TAG, "acquire pm_lock failed");
|
||||
}
|
||||
#endif
|
||||
|
||||
xSemaphoreTake(decoder_engine->codec_base->codec_mutex, portMAX_DELAY);
|
||||
/* Reset queue */
|
||||
@@ -269,18 +271,22 @@ esp_err_t jpeg_decoder_process(jpeg_decoder_handle_t decoder_engine, const jpeg_
|
||||
}
|
||||
|
||||
xSemaphoreGive(decoder_engine->codec_base->codec_mutex);
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (decoder_engine->codec_base->pm_lock) {
|
||||
ESP_RETURN_ON_ERROR(esp_pm_lock_release(decoder_engine->codec_base->pm_lock), TAG, "release pm_lock failed");
|
||||
}
|
||||
#endif
|
||||
return ESP_OK;
|
||||
|
||||
err1:
|
||||
dma2d_force_end(decoder_engine->trans_desc, &need_yield);
|
||||
err2:
|
||||
xSemaphoreGive(decoder_engine->codec_base->codec_mutex);
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (decoder_engine->codec_base->pm_lock) {
|
||||
esp_pm_lock_release(decoder_engine->codec_base->pm_lock);
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -148,9 +148,11 @@ esp_err_t jpeg_encoder_process(jpeg_encoder_handle_t encoder_engine, const jpeg_
|
||||
|
||||
esp_err_t ret = ESP_OK;
|
||||
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (encoder_engine->codec_base->pm_lock) {
|
||||
ESP_RETURN_ON_ERROR(esp_pm_lock_acquire(encoder_engine->codec_base->pm_lock), TAG, "acquire pm_lock failed");
|
||||
}
|
||||
#endif
|
||||
jpeg_hal_context_t *hal = &encoder_engine->codec_base->hal;
|
||||
uint8_t *raw_buffer = (uint8_t*)encode_inbuf;
|
||||
uint32_t compressed_size;
|
||||
@@ -280,18 +282,22 @@ esp_err_t jpeg_encoder_process(jpeg_encoder_handle_t encoder_engine, const jpeg_
|
||||
*out_size = compressed_size;
|
||||
|
||||
xSemaphoreGive(encoder_engine->codec_base->codec_mutex);
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (encoder_engine->codec_base->pm_lock) {
|
||||
ESP_RETURN_ON_ERROR(esp_pm_lock_release(encoder_engine->codec_base->pm_lock), TAG, "release pm_lock failed");
|
||||
}
|
||||
#endif
|
||||
return ESP_OK;
|
||||
|
||||
err1:
|
||||
dma2d_force_end(encoder_engine->trans_desc, &need_yield);
|
||||
err2:
|
||||
xSemaphoreGive(encoder_engine->codec_base->codec_mutex);
|
||||
#if CONFIG_PM_ENABLE
|
||||
if (encoder_engine->codec_base->pm_lock) {
|
||||
esp_pm_lock_release(encoder_engine->codec_base->pm_lock);
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -52,7 +52,9 @@ struct jpeg_codec_t {
|
||||
intr_handle_t intr_handle; // jpeg codec interrupt handler
|
||||
int intr_priority; // jpeg codec interrupt priority
|
||||
SLIST_HEAD(jpeg_isr_handler_list_, jpeg_isr_handler_) jpeg_isr_handler_list; // List for jpeg interrupt.
|
||||
#if CONFIG_PM_ENABLE
|
||||
esp_pm_lock_handle_t pm_lock; // power manage lock
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
|
Reference in New Issue
Block a user