diff options
author | Laurent Pinchart | 2013-11-05 16:32:05 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab | 2013-12-11 12:05:32 +0100 |
commit | 112da08512bb0c58c169ec8bda0166f627250a2c (patch) | |
tree | 15888850e3cce700c4f4670bffdf6dfd54d1fda2 /drivers/staging/media/omap4iss/iss_video.h | |
parent | [media] v4l: omap4iss: csi2: Replace manual if statement with a subclk field (diff) | |
download | kernel-qcow2-linux-112da08512bb0c58c169ec8bda0166f627250a2c.tar.gz kernel-qcow2-linux-112da08512bb0c58c169ec8bda0166f627250a2c.tar.xz kernel-qcow2-linux-112da08512bb0c58c169ec8bda0166f627250a2c.zip |
[media] v4l: omap4iss: Cancel streaming when a fatal error occurs
When a fatal error that prevents any further video streaming occurs in a
pipeline, all queued buffers must be marked as erroneous and new buffers
must be prevented from being queued. Implement this behaviour with a new
omap4iss_pipeline_cancel_stream() function that can be used by
submodules to cancel streaming.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/staging/media/omap4iss/iss_video.h')
-rw-r--r-- | drivers/staging/media/omap4iss/iss_video.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/staging/media/omap4iss/iss_video.h b/drivers/staging/media/omap4iss/iss_video.h index 73e1a3419b01..878e4a3082e7 100644 --- a/drivers/staging/media/omap4iss/iss_video.h +++ b/drivers/staging/media/omap4iss/iss_video.h @@ -163,10 +163,11 @@ struct iss_video { /* Pipeline state */ struct iss_pipeline pipe; struct mutex stream_lock; /* pipeline and stream states */ + bool error; /* Video buffers queue */ struct vb2_queue *queue; - spinlock_t qlock; /* Spinlock for dmaqueue */ + spinlock_t qlock; /* protects dmaqueue and error */ struct list_head dmaqueue; enum iss_video_dmaqueue_flags dmaqueue_flags; struct vb2_alloc_ctx *alloc_ctx; @@ -194,6 +195,7 @@ int omap4iss_video_register(struct iss_video *video, struct v4l2_device *vdev); void omap4iss_video_unregister(struct iss_video *video); struct iss_buffer *omap4iss_video_buffer_next(struct iss_video *video); +void omap4iss_video_cancel_stream(struct iss_video *video); struct media_pad *omap4iss_video_remote_pad(struct iss_video *video); const struct iss_format_info * |