diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c index 640ae30736f9..deb515641521 100644 --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c @@ -1698,9 +1698,15 @@ static void mtk_jpegdec_worker(struct work_struct *work) ret = wait_event_interruptible_timeout(jpeg->hw_wq, atomic_read(&jpeg->hw_rdy) > 0, MTK_JPEG_HW_TIMEOUT_MSEC); - if (ret != 0 || (i++ > MTK_JPEG_MAX_RETRY_TIME)) { - dev_err(jpeg->dev, "%s : %d, all HW are busy\n", - __func__, __LINE__); + if (ret < 0) { + dev_err(jpeg->dev, "decoder HW wait interrupted: %d\n", + ret); + v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx); + return; + } + + if (!ret && i++ > MTK_JPEG_MAX_RETRY_TIME) { + dev_err(jpeg->dev, "all decoder HW are busy\n"); v4l2_m2m_job_finish(jpeg->m2m_dev, ctx->fh.m2m_ctx); return; }