diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2011-03-11 17:03:41 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-03-22 15:38:01 -0400 |
commit | cc0a2d411f158c61af34d056191c7b4669913ddc (patch) | |
tree | e5fb6360858dae408d743537db3b6a658266b562 /drivers | |
parent | 99cd47bc733436da282016e629eef6baa0f6047c (diff) |
[media] ivtv: convert to core priority handling
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/ivtv/ivtv-driver.h | 2 | ||||
-rw-r--r-- | drivers/media/video/ivtv/ivtv-fileops.c | 2 | ||||
-rw-r--r-- | drivers/media/video/ivtv/ivtv-ioctl.c | 56 |
3 files changed, 15 insertions, 45 deletions
diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h index 04bacdbd10bb..84bdf0f42a8e 100644 --- a/drivers/media/video/ivtv/ivtv-driver.h +++ b/drivers/media/video/ivtv/ivtv-driver.h | |||
@@ -383,7 +383,6 @@ struct ivtv_open_id { | |||
383 | u32 open_id; /* unique ID for this file descriptor */ | 383 | u32 open_id; /* unique ID for this file descriptor */ |
384 | int type; /* stream type */ | 384 | int type; /* stream type */ |
385 | int yuv_frames; /* 1: started OUT_UDMA_YUV output mode */ | 385 | int yuv_frames; /* 1: started OUT_UDMA_YUV output mode */ |
386 | enum v4l2_priority prio; /* priority */ | ||
387 | struct ivtv *itv; | 386 | struct ivtv *itv; |
388 | }; | 387 | }; |
389 | 388 | ||
@@ -710,7 +709,6 @@ struct ivtv { | |||
710 | 709 | ||
711 | /* Miscellaneous */ | 710 | /* Miscellaneous */ |
712 | u32 open_id; /* incremented each time an open occurs, is >= 1 */ | 711 | u32 open_id; /* incremented each time an open occurs, is >= 1 */ |
713 | struct v4l2_prio_state prio; /* priority state */ | ||
714 | int search_pack_header; /* 1 if ivtv_copy_buf_to_user() is scanning for a pack header (0xba) */ | 712 | int search_pack_header; /* 1 if ivtv_copy_buf_to_user() is scanning for a pack header (0xba) */ |
715 | int speed; /* current playback speed setting */ | 713 | int speed; /* current playback speed setting */ |
716 | u8 speed_mute_audio; /* 1 if audio should be muted when fast forward */ | 714 | u8 speed_mute_audio; /* 1 if audio should be muted when fast forward */ |
diff --git a/drivers/media/video/ivtv/ivtv-fileops.c b/drivers/media/video/ivtv/ivtv-fileops.c index c57a58523ca8..4463bf4ec4ee 100644 --- a/drivers/media/video/ivtv/ivtv-fileops.c +++ b/drivers/media/video/ivtv/ivtv-fileops.c | |||
@@ -856,7 +856,6 @@ int ivtv_v4l2_close(struct file *filp) | |||
856 | 856 | ||
857 | IVTV_DEBUG_FILE("close %s\n", s->name); | 857 | IVTV_DEBUG_FILE("close %s\n", s->name); |
858 | 858 | ||
859 | v4l2_prio_close(&itv->prio, id->prio); | ||
860 | v4l2_fh_del(fh); | 859 | v4l2_fh_del(fh); |
861 | v4l2_fh_exit(fh); | 860 | v4l2_fh_exit(fh); |
862 | 861 | ||
@@ -973,7 +972,6 @@ static int ivtv_serialized_open(struct ivtv_stream *s, struct file *filp) | |||
973 | } | 972 | } |
974 | item->itv = itv; | 973 | item->itv = itv; |
975 | item->type = s->type; | 974 | item->type = s->type; |
976 | v4l2_prio_open(&itv->prio, &item->prio); | ||
977 | 975 | ||
978 | item->open_id = itv->open_id++; | 976 | item->open_id = itv->open_id++; |
979 | filp->private_data = &item->fh; | 977 | filp->private_data = &item->fh; |
diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c index d34a326c0ef0..b443c03d21de 100644 --- a/drivers/media/video/ivtv/ivtv-ioctl.c +++ b/drivers/media/video/ivtv/ivtv-ioctl.c | |||
@@ -750,23 +750,6 @@ static int ivtv_s_register(struct file *file, void *fh, struct v4l2_dbg_register | |||
750 | } | 750 | } |
751 | #endif | 751 | #endif |
752 | 752 | ||
753 | static int ivtv_g_priority(struct file *file, void *fh, enum v4l2_priority *p) | ||
754 | { | ||
755 | struct ivtv *itv = ((struct ivtv_open_id *)fh)->itv; | ||
756 | |||
757 | *p = v4l2_prio_max(&itv->prio); | ||
758 | |||
759 | return 0; | ||
760 | } | ||
761 | |||
762 | static int ivtv_s_priority(struct file *file, void *fh, enum v4l2_priority prio) | ||
763 | { | ||
764 | struct ivtv_open_id *id = fh; | ||
765 | struct ivtv *itv = id->itv; | ||
766 | |||
767 | return v4l2_prio_change(&itv->prio, &id->prio, prio); | ||
768 | } | ||
769 | |||
770 | static int ivtv_querycap(struct file *file, void *fh, struct v4l2_capability *vcap) | 753 | static int ivtv_querycap(struct file *file, void *fh, struct v4l2_capability *vcap) |
771 | { | 754 | { |
772 | struct ivtv *itv = ((struct ivtv_open_id *)fh)->itv; | 755 | struct ivtv *itv = ((struct ivtv_open_id *)fh)->itv; |
@@ -1800,6 +1783,21 @@ static long ivtv_default(struct file *file, void *fh, bool valid_prio, | |||
1800 | { | 1783 | { |
1801 | struct ivtv *itv = ((struct ivtv_open_id *)fh)->itv; | 1784 | struct ivtv *itv = ((struct ivtv_open_id *)fh)->itv; |
1802 | 1785 | ||
1786 | if (!valid_prio) { | ||
1787 | switch (cmd) { | ||
1788 | case VIDEO_PLAY: | ||
1789 | case VIDEO_STOP: | ||
1790 | case VIDEO_FREEZE: | ||
1791 | case VIDEO_CONTINUE: | ||
1792 | case VIDEO_COMMAND: | ||
1793 | case VIDEO_SELECT_SOURCE: | ||
1794 | case AUDIO_SET_MUTE: | ||
1795 | case AUDIO_CHANNEL_SELECT: | ||
1796 | case AUDIO_BILINGUAL_CHANNEL_SELECT: | ||
1797 | return -EBUSY; | ||
1798 | } | ||
1799 | } | ||
1800 | |||
1803 | switch (cmd) { | 1801 | switch (cmd) { |
1804 | case VIDIOC_INT_RESET: { | 1802 | case VIDIOC_INT_RESET: { |
1805 | u32 val = *(u32 *)arg; | 1803 | u32 val = *(u32 *)arg; |
@@ -1837,30 +1835,8 @@ static long ivtv_serialized_ioctl(struct ivtv *itv, struct file *filp, | |||
1837 | unsigned int cmd, unsigned long arg) | 1835 | unsigned int cmd, unsigned long arg) |
1838 | { | 1836 | { |
1839 | struct video_device *vfd = video_devdata(filp); | 1837 | struct video_device *vfd = video_devdata(filp); |
1840 | struct ivtv_open_id *id = fh2id(filp->private_data); | ||
1841 | long ret; | 1838 | long ret; |
1842 | 1839 | ||
1843 | /* check priority */ | ||
1844 | switch (cmd) { | ||
1845 | case VIDIOC_S_CTRL: | ||
1846 | case VIDIOC_S_STD: | ||
1847 | case VIDIOC_S_INPUT: | ||
1848 | case VIDIOC_S_OUTPUT: | ||
1849 | case VIDIOC_S_TUNER: | ||
1850 | case VIDIOC_S_FREQUENCY: | ||
1851 | case VIDIOC_S_FMT: | ||
1852 | case VIDIOC_S_CROP: | ||
1853 | case VIDIOC_S_AUDIO: | ||
1854 | case VIDIOC_S_AUDOUT: | ||
1855 | case VIDIOC_S_EXT_CTRLS: | ||
1856 | case VIDIOC_S_FBUF: | ||
1857 | case VIDIOC_S_PRIORITY: | ||
1858 | case VIDIOC_OVERLAY: | ||
1859 | ret = v4l2_prio_check(&itv->prio, id->prio); | ||
1860 | if (ret) | ||
1861 | return ret; | ||
1862 | } | ||
1863 | |||
1864 | if (ivtv_debug & IVTV_DBGFLG_IOCTL) | 1840 | if (ivtv_debug & IVTV_DBGFLG_IOCTL) |
1865 | vfd->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG; | 1841 | vfd->debug = V4L2_DEBUG_IOCTL | V4L2_DEBUG_IOCTL_ARG; |
1866 | ret = video_ioctl2(filp, cmd, arg); | 1842 | ret = video_ioctl2(filp, cmd, arg); |
@@ -1885,8 +1861,6 @@ long ivtv_v4l2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
1885 | 1861 | ||
1886 | static const struct v4l2_ioctl_ops ivtv_ioctl_ops = { | 1862 | static const struct v4l2_ioctl_ops ivtv_ioctl_ops = { |
1887 | .vidioc_querycap = ivtv_querycap, | 1863 | .vidioc_querycap = ivtv_querycap, |
1888 | .vidioc_g_priority = ivtv_g_priority, | ||
1889 | .vidioc_s_priority = ivtv_s_priority, | ||
1890 | .vidioc_s_audio = ivtv_s_audio, | 1864 | .vidioc_s_audio = ivtv_s_audio, |
1891 | .vidioc_g_audio = ivtv_g_audio, | 1865 | .vidioc_g_audio = ivtv_g_audio, |
1892 | .vidioc_enumaudio = ivtv_enumaudio, | 1866 | .vidioc_enumaudio = ivtv_enumaudio, |