V4L/DVB (8090): ivtv: yuv decoder lock fix (2)
authorIan Armstrong <ian@iarmst.demon.co.uk>
Sat, 21 Jun 2008 14:09:46 +0000 (11:09 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 20 Jul 2008 10:11:18 +0000 (07:11 -0300)
The IVTV_IOC_DMA_FRAME ioctl fails to correctly 'start' the decoder. Although
yuv output will be correct, some functions which should be disabled while the
decoder is in use remain enabled. This can result in hardware registers being
corrupted, causing problems with the mpeg decoder. This patch ensures the
decoder 'start' sequence is called, disabling these functions until the
device is closed.

Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
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 b1cda6cd5582205e0b1b9db48b28dc1a5e01725c..aa222056dd476020d853bb8260d820b7f6e976e5 100644 (file)
@@ -1539,7 +1539,7 @@ static int ivtv_decoder_ioctls(struct file *filp, unsigned int cmd, void *arg)
                        return -EINVAL;
                if (itv->output_mode == OUT_UDMA_YUV && args->y_source == NULL)
                        return 0;
-               if (ivtv_claim_stream(id, id->type)) {
+               if (ivtv_start_decoding(id, id->type)) {
                        return -EBUSY;
                }
                if (ivtv_set_output_mode(itv, OUT_UDMA_YUV) != OUT_UDMA_YUV) {