V4L/DVB (11619): cx18: Simplify the work handler for outgoing mailbox commands
[safe/jmp/linux-2.6] / drivers / media / video / cx18 / cx18-streams.h
index 1fdcfff..1afc3fd 100644 (file)
@@ -29,9 +29,20 @@ int cx18_streams_register(struct cx18 *cx);
 void cx18_streams_cleanup(struct cx18 *cx, int unregister);
 
 /* Related to submission of buffers to firmware */
-void cx18_stream_load_fw_queue(struct cx18_stream *s);
-struct cx18_queue *cx18_stream_put_buf_fw(struct cx18_stream *s,
-                                         struct cx18_buffer *buf);
+static inline void cx18_stream_load_fw_queue(struct cx18_stream *s)
+{
+       struct cx18 *cx = s->cx;
+       queue_work(cx->out_work_queue, &s->out_work_order);
+}
+
+static inline void cx18_stream_put_buf_fw(struct cx18_stream *s,
+                                         struct cx18_buffer *buf)
+{
+       /* Put buf on q_free; the out work handler will move buf(s) to q_busy */
+       cx18_enqueue(s, buf, &s->q_free);
+       cx18_stream_load_fw_queue(s);
+}
+
 void cx18_out_work_handler(struct work_struct *work);
 
 /* Capture related */