summaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/omap4iss/iss_video.h
diff options
context:
space:
mode:
authorLaurent Pinchart2013-11-05 16:32:05 +0100
committerMauro Carvalho Chehab2013-12-11 12:05:32 +0100
commit112da08512bb0c58c169ec8bda0166f627250a2c (patch)
tree15888850e3cce700c4f4670bffdf6dfd54d1fda2 /drivers/staging/media/omap4iss/iss_video.h
parent[media] v4l: omap4iss: csi2: Replace manual if statement with a subclk field (diff)
downloadkernel-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.h4
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 *