summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonghwa Lee <dh09.lee@samsung.com>2014-07-31 15:01:59 +0900
committerChanho Park <chanho61.park@samsung.com>2014-08-13 15:37:21 +0900
commit2b8cf57126b7598506ddc080dc2ef6217919f9cd (patch)
treebbc4e5b0c1cc84116a7d3aa7c2abfec77b6e2175
parentc34c9643d8f6bdb693769e8b4624a45b0dcf0704 (diff)
downloadlinux-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.h1
-rwxr-xr-xdrivers/media/platform/s5p-mfc/s5p_mfc.c5
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);