V4L/DVB (6087): ivtv: prevent changing VBI format while capture is in progress
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 20 Aug 2007 19:26:40 +0000 (16:26 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Wed, 10 Oct 2007 01:06:38 +0000 (22:06 -0300)
Changing the VBI format requires a CX2341X_ENC_INITIALIZE_INPUT firmware
call. This can only be done if no capture is in progress. So return
-EBUSY if the encoder is busy.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/ivtv/ivtv-ioctl.c

index 2bb1e324785bb9d5c09a6b6058cb56420becdca4..0dde82f67e26379ddee0c4c62f7531df42dc6378 100644 (file)
@@ -584,9 +584,7 @@ static int ivtv_try_or_set_fmt(struct ivtv *itv, int streamtype,
 
        /* set raw VBI format */
        if (fmt->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
-               if (set_fmt && streamtype == IVTV_ENC_STREAM_TYPE_VBI &&
-                   itv->vbi.sliced_in->service_set &&
-                   atomic_read(&itv->capturing) > 0) {
+               if (set_fmt && atomic_read(&itv->capturing) > 0) {
                        return -EBUSY;
                }
                if (set_fmt) {
@@ -624,7 +622,7 @@ static int ivtv_try_or_set_fmt(struct ivtv *itv, int streamtype,
                return 0;
        if (set == 0)
                return -EINVAL;
-       if (atomic_read(&itv->capturing) > 0 && itv->vbi.sliced_in->service_set == 0) {
+       if (atomic_read(&itv->capturing) > 0) {
                return -EBUSY;
        }
        itv->video_dec_func(itv, VIDIOC_S_FMT, fmt);