diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2009-09-15 07:08:20 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-09-18 23:15:25 -0400 |
commit | 707ca1e30f087f9a6d144693dafc4b67880678c2 (patch) | |
tree | c485bdf7ac2f1fd49fc154502edb94ef1511a7ca | |
parent | 3a360ced7b3756efbfe822871cc36dc0490fc46b (diff) |
V4L/DVB (12948): v4l1-compat: fix VIDIOC_G_STD handling
The VIDIOC_G_STD ioctl may not be present in the case of radio receivers.
In that case G_STD will return an error. The v4l1-compat layer should not
attempt to propagate that error to the caller, instead it should be
ignored.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/v4l1-compat.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/media/video/v4l1-compat.c b/drivers/media/video/v4l1-compat.c index 761fbd64db58..0c2105ca611e 100644 --- a/drivers/media/video/v4l1-compat.c +++ b/drivers/media/video/v4l1-compat.c | |||
@@ -564,10 +564,9 @@ static noinline long v4l1_compat_get_input_info( | |||
564 | break; | 564 | break; |
565 | } | 565 | } |
566 | chan->norm = 0; | 566 | chan->norm = 0; |
567 | err = drv(file, VIDIOC_G_STD, &sid); | 567 | /* Note: G_STD might not be present for radio receivers, |
568 | if (err < 0) | 568 | * so we should ignore any errors. */ |
569 | dprintk("VIDIOCGCHAN / VIDIOC_G_STD: %ld\n", err); | 569 | if (drv(file, VIDIOC_G_STD, &sid) == 0) { |
570 | if (err == 0) { | ||
571 | if (sid & V4L2_STD_PAL) | 570 | if (sid & V4L2_STD_PAL) |
572 | chan->norm = VIDEO_MODE_PAL; | 571 | chan->norm = VIDEO_MODE_PAL; |
573 | if (sid & V4L2_STD_NTSC) | 572 | if (sid & V4L2_STD_NTSC) |
@@ -776,10 +775,9 @@ static noinline long v4l1_compat_get_tuner( | |||
776 | tun->flags |= VIDEO_TUNER_SECAM; | 775 | tun->flags |= VIDEO_TUNER_SECAM; |
777 | } | 776 | } |
778 | 777 | ||
779 | err = drv(file, VIDIOC_G_STD, &sid); | 778 | /* Note: G_STD might not be present for radio receivers, |
780 | if (err < 0) | 779 | * so we should ignore any errors. */ |
781 | dprintk("VIDIOCGTUNER / VIDIOC_G_STD: %ld\n", err); | 780 | if (drv(file, VIDIOC_G_STD, &sid) == 0) { |
782 | if (err == 0) { | ||
783 | if (sid & V4L2_STD_PAL) | 781 | if (sid & V4L2_STD_PAL) |
784 | tun->mode = VIDEO_MODE_PAL; | 782 | tun->mode = VIDEO_MODE_PAL; |
785 | if (sid & V4L2_STD_NTSC) | 783 | if (sid & V4L2_STD_NTSC) |