V4L/DVB (9720): cx18: Major rewrite of interrupt handling for incoming mailbox processing
[pandora-kernel.git] / drivers / media / video / cx18 / cx18-dvb.c
index afc694e..b74253b 100644 (file)
@@ -107,20 +107,23 @@ static int cx18_dvb_start_feed(struct dvb_demux_feed *feed)
        if (!demux->dmx.frontend)
                return -EINVAL;
 
-       if (stream) {
-               mutex_lock(&stream->dvb.feedlock);
-               if (stream->dvb.feeding++ == 0) {
-                       CX18_DEBUG_INFO("Starting Transport DMA\n");
-                       ret = cx18_start_v4l2_encode_stream(stream);
-                       if (ret < 0) {
-                               CX18_DEBUG_INFO(
-                                       "Failed to start Transport DMA\n");
-                               stream->dvb.feeding--;
-                       }
-               } else
-                       ret = 0;
-               mutex_unlock(&stream->dvb.feedlock);
-       }
+       if (!stream)
+               return -EINVAL;
+
+       mutex_lock(&stream->dvb.feedlock);
+       if (stream->dvb.feeding++ == 0) {
+               CX18_DEBUG_INFO("Starting Transport DMA\n");
+               set_bit(CX18_F_S_STREAMING, &stream->s_flags);
+               ret = cx18_start_v4l2_encode_stream(stream);
+               if (ret < 0) {
+                       CX18_DEBUG_INFO("Failed to start Transport DMA\n");
+                       stream->dvb.feeding--;
+                       if (stream->dvb.feeding == 0)
+                               clear_bit(CX18_F_S_STREAMING, &stream->s_flags);
+               }
+       } else
+               ret = 0;
+       mutex_unlock(&stream->dvb.feedlock);
 
        return ret;
 }