diff options
author | Donghwa Lee <dh09.lee@samsung.com> | 2014-07-31 15:01:59 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-08-13 15:37:21 +0900 |
commit | 2b8cf57126b7598506ddc080dc2ef6217919f9cd (patch) | |
tree | bbc4e5b0c1cc84116a7d3aa7c2abfec77b6e2175 | |
parent | c34c9643d8f6bdb693769e8b4624a45b0dcf0704 (diff) | |
download | linux-3.10-2b8cf57126b7598506ddc080dc2ef6217919f9cd.tar.gz linux-3.10-2b8cf57126b7598506ddc080dc2ef6217919f9cd.tar.bz2 linux-3.10-2b8cf57126b7598506ddc080dc2ef6217919f9cd.zip |
media: s5p-mfc: skip incomeplete framesubmit/tizen/20140813.070512
Currently, when incomplete frame is recieved in the middle of decoding,
driver have treated it to error, so src/dst queue and clock are cleaned.
Although it is obviously error case, it is need to maintain video
decoding in case of necessity. This patch supports skip incomplete frame
to next.
Change-Id: I328275a01d9f4bdfda55daf08a0e8b238ed7da5d
Signed-off-by: Donghwa Lee <dh09.lee@samsung.com>
-rw-r--r-- | drivers/media/platform/s5p-mfc/regs-mfc.h | 1 | ||||
-rwxr-xr-x | drivers/media/platform/s5p-mfc/s5p_mfc.c | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/media/platform/s5p-mfc/regs-mfc.h b/drivers/media/platform/s5p-mfc/regs-mfc.h index 882739ba895..053eb1e7374 100644 --- a/drivers/media/platform/s5p-mfc/regs-mfc.h +++ b/drivers/media/platform/s5p-mfc/regs-mfc.h @@ -396,6 +396,7 @@ #define S5P_FIMV_REG_CLEAR_COUNT 0 /* Error handling defines */ +#define S5P_FIMV_ERR_INCOMPLETE_FRAME 124 #define S5P_FIMV_ERR_WARNINGS_START 145 #define S5P_FIMV_ERR_DEC_MASK 0xFFFF #define S5P_FIMV_ERR_DEC_SHIFT 0 diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c index 8d30f1226fc..c67d4469c72 100755 --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c @@ -605,8 +605,9 @@ static irqreturn_t s5p_mfc_irq(int irq, void *priv) case S5P_MFC_R2H_CMD_ERR_RET: /* An error has occurred */ if (ctx->state == MFCINST_RUNNING && - s5p_mfc_hw_call(dev->mfc_ops, err_dec, err) >= - dev->warn_start) + (s5p_mfc_hw_call(dev->mfc_ops, err_dec, err) >= + dev->warn_start || + err == S5P_FIMV_ERR_INCOMPLETE_FRAME)) s5p_mfc_handle_frame(ctx, reason, err); else s5p_mfc_handle_error(dev, ctx, reason, err); |