From: Albert Wang <twang13@marvell.com>
To: corbet@lwn.net, g.liakhovetski@gmx.de
Cc: linux-media@vger.kernel.org, Libin Yang <lbyang@marvell.com>,
Albert Wang <twang13@marvell.com>
Subject: [PATCH V3 07/15] [media] marvell-ccic: add SOF / EOF pair check for marvell-ccic driver
Date: Sat, 15 Dec 2012 17:57:56 +0800 [thread overview]
Message-ID: <1355565484-15791-8-git-send-email-twang13@marvell.com> (raw)
In-Reply-To: <1355565484-15791-1-git-send-email-twang13@marvell.com>
From: Libin Yang <lbyang@marvell.com>
This patch adds the SOFx/EOFx pair check for marvell-ccic.
When switching format, the last EOF may not arrive when stop streamning.
And the EOF will be detected in the next start streaming.
Must ensure clear the obsolete frame flags before every really start streaming.
Signed-off-by: Albert Wang <twang13@marvell.com>
Signed-off-by: Libin Yang <lbyang@marvell.com>
---
drivers/media/platform/marvell-ccic/mcam-core.c | 30 ++++++++++++++++++++---
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c
index a679917..c3c8873 100755
--- a/drivers/media/platform/marvell-ccic/mcam-core.c
+++ b/drivers/media/platform/marvell-ccic/mcam-core.c
@@ -94,6 +94,9 @@ MODULE_PARM_DESC(buffer_mode,
#define CF_CONFIG_NEEDED 4 /* Must configure hardware */
#define CF_SINGLE_BUFFER 5 /* Running with a single buffer */
#define CF_SG_RESTART 6 /* SG restart needed */
+#define CF_FRAME_SOF0 7 /* Frame 0 started */
+#define CF_FRAME_SOF1 8
+#define CF_FRAME_SOF2 9
#define sensor_call(cam, o, f, args...) \
v4l2_subdev_call(cam->sensor, o, f, ##args)
@@ -251,8 +254,10 @@ static void mcam_reset_buffers(struct mcam_camera *cam)
int i;
cam->next_buf = -1;
- for (i = 0; i < cam->nbufs; i++)
+ for (i = 0; i < cam->nbufs; i++) {
clear_bit(i, &cam->flags);
+ clear_bit(CF_FRAME_SOF0 + i, &cam->flags);
+ }
}
static inline int mcam_needs_config(struct mcam_camera *cam)
@@ -1134,6 +1139,7 @@ static void mcam_vb_wait_finish(struct vb2_queue *vq)
static int mcam_vb_start_streaming(struct vb2_queue *vq, unsigned int count)
{
struct mcam_camera *cam = vb2_get_drv_priv(vq);
+ unsigned int frame;
if (cam->state != S_IDLE) {
INIT_LIST_HEAD(&cam->buffers);
@@ -1151,6 +1157,14 @@ static int mcam_vb_start_streaming(struct vb2_queue *vq, unsigned int count)
cam->state = S_BUFWAIT;
return 0;
}
+
+ /*
+ * Ensure clear the obsolete frame flags
+ * before every really start streaming
+ */
+ for (frame = 0; frame < cam->nbufs; frame++)
+ clear_bit(CF_FRAME_SOF0 + frame, &cam->flags);
+
return mcam_read_setup(cam);
}
@@ -1875,9 +1889,11 @@ int mccic_irq(struct mcam_camera *cam, unsigned int irqs)
* each time.
*/
for (frame = 0; frame < cam->nbufs; frame++)
- if (irqs & (IRQ_EOF0 << frame)) {
+ if (irqs & (IRQ_EOF0 << frame) &&
+ test_bit(CF_FRAME_SOF0 + frame, &cam->flags)) {
mcam_frame_complete(cam, frame);
handled = 1;
+ clear_bit(CF_FRAME_SOF0 + frame, &cam->flags);
if (cam->buffer_mode == B_DMA_sg)
break;
}
@@ -1886,9 +1902,15 @@ int mccic_irq(struct mcam_camera *cam, unsigned int irqs)
* code assumes that we won't get multiple frame interrupts
* at once; may want to rethink that.
*/
- if (irqs & (IRQ_SOF0 | IRQ_SOF1 | IRQ_SOF2)) {
+ for (frame = 0; frame < cam->nbufs; frame++) {
+ if (irqs & (IRQ_SOF0 << frame)) {
+ set_bit(CF_FRAME_SOF0 + frame, &cam->flags);
+ handled = IRQ_HANDLED;
+ }
+ }
+
+ if (handled == IRQ_HANDLED) {
set_bit(CF_DMA_ACTIVE, &cam->flags);
- handled = 1;
if (cam->buffer_mode == B_DMA_sg)
mcam_ctlr_stop(cam);
}
--
1.7.9.5
next prev parent reply other threads:[~2012-12-15 9:59 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-15 9:57 [PATCH V3 00/15] [media] marvell-ccic: add soc camera support on marvell-ccic Albert Wang
2012-12-15 9:57 ` [PATCH V3 01/15] [media] marvell-ccic: use internal variable replace global frame stats variable Albert Wang
2012-12-16 15:36 ` Jonathan Corbet
2012-12-27 20:07 ` Mauro Carvalho Chehab
2013-01-01 14:56 ` Guennadi Liakhovetski
2012-12-15 9:57 ` [PATCH V3 02/15] [media] marvell-ccic: add MIPI support for marvell-ccic driver Albert Wang
2012-12-16 15:54 ` Jonathan Corbet
2012-12-16 21:45 ` Albert Wang
2013-01-01 15:28 ` Guennadi Liakhovetski
2013-01-01 19:31 ` Albert Wang
2012-12-15 9:57 ` [PATCH V3 03/15] [media] marvell-ccic: add clock tree " Albert Wang
2012-12-16 16:03 ` Jonathan Corbet
2012-12-16 21:51 ` Albert Wang
2013-01-03 17:37 ` Nicolas THERY
2013-01-03 19:27 ` Albert Wang
2013-01-01 16:05 ` Guennadi Liakhovetski
2013-01-01 19:36 ` Albert Wang
2013-01-04 5:42 ` Libin Yang
2013-01-04 10:25 ` Guennadi Liakhovetski
2013-01-05 3:12 ` Libin Yang
2012-12-15 9:57 ` [PATCH V3 04/15] [media] marvell-ccic: reset ccic phy when stop streaming for stability Albert Wang
2012-12-16 16:04 ` Jonathan Corbet
2013-01-01 16:13 ` Guennadi Liakhovetski
2012-12-15 9:57 ` [PATCH V3 05/15] [media] marvell-ccic: refine mcam_set_contig_buffer function Albert Wang
2012-12-16 16:06 ` Jonathan Corbet
2012-12-16 21:54 ` Albert Wang
2012-12-15 9:57 ` [PATCH V3 06/15] [media] marvell-ccic: add new formats support for marvell-ccic driver Albert Wang
2012-12-16 16:16 ` Jonathan Corbet
2012-12-16 21:58 ` Albert Wang
2013-01-01 16:56 ` Guennadi Liakhovetski
2013-01-01 19:42 ` Albert Wang
2013-01-01 20:03 ` Guennadi Liakhovetski
2013-01-04 9:32 ` Libin Yang
2013-01-10 7:53 ` Libin Yang
2012-12-15 9:57 ` Albert Wang [this message]
2012-12-16 16:19 ` [PATCH V3 07/15] [media] marvell-ccic: add SOF / EOF pair check " Jonathan Corbet
2012-12-16 22:00 ` Albert Wang
2013-01-02 7:48 ` Guennadi Liakhovetski
2012-12-15 9:57 ` [PATCH V3 08/15] [media] marvell-ccic: switch to resource managed allocation and request Albert Wang
2012-12-16 16:20 ` Jonathan Corbet
2013-01-02 8:00 ` Guennadi Liakhovetski
2012-12-15 9:57 ` [PATCH V3 09/15] [media] marvell-ccic: add get_mcam function for marvell-ccic driver Albert Wang
2012-12-16 16:24 ` Jonathan Corbet
2012-12-16 22:04 ` Albert Wang
2013-01-02 8:16 ` Guennadi Liakhovetski
2012-12-15 9:57 ` [PATCH V3 10/15] [media] marvell-ccic: split mcam-core into 2 parts for soc_camera support Albert Wang
2012-12-16 16:37 ` Jonathan Corbet
2012-12-16 22:12 ` Albert Wang
2012-12-17 15:28 ` Jonathan Corbet
2012-12-18 3:04 ` Albert Wang
2012-12-18 19:15 ` Jonathan Corbet
2012-12-18 20:48 ` Albert Wang
2013-01-31 8:29 ` Albert Wang
2013-02-05 3:14 ` Jonathan Corbet
2013-02-06 3:21 ` Albert Wang
2012-12-15 9:58 ` [PATCH V3 11/15] [media] marvell-ccic: add soc_camera support in mcam core Albert Wang
2012-12-15 9:58 ` [PATCH V3 12/15] [media] marvell-ccic: add soc_camera support in mmp driver Albert Wang
2012-12-16 16:46 ` Jonathan Corbet
2012-12-16 22:19 ` Albert Wang
2012-12-15 9:58 ` [PATCH V3 13/15] [media] marvell-ccic: add dma burst mode support in marvell-ccic driver Albert Wang
2012-12-16 16:49 ` Jonathan Corbet
2012-12-16 22:22 ` Albert Wang
2012-12-15 9:58 ` [PATCH V3 14/15] [media] marvell-ccic: use unsigned int type replace int type Albert Wang
2012-12-16 16:50 ` Jonathan Corbet
2012-12-15 9:58 ` [PATCH V3 15/15] [media] marvell-ccic: add 3 frame buffers support in DMA_CONTIG mode Albert Wang
2012-12-16 16:56 ` Jonathan Corbet
2012-12-16 22:34 ` Albert Wang
2012-12-16 22:55 ` Jonathan Corbet
2012-12-17 5:06 ` Albert Wang
2012-12-16 16:57 ` [PATCH V3 00/15] [media] marvell-ccic: add soc camera support on marvell-ccic Jonathan Corbet
2012-12-16 22:34 ` Albert Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1355565484-15791-8-git-send-email-twang13@marvell.com \
--to=twang13@marvell.com \
--cc=corbet@lwn.net \
--cc=g.liakhovetski@gmx.de \
--cc=lbyang@marvell.com \
--cc=linux-media@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).