diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2010-12-24 08:33:19 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-12-29 05:17:07 -0500 |
commit | 08af245de0cf6ab5f4ed008ee2bb99273774fce0 (patch) | |
tree | d07a9b38eb4b9442ef0e935063a5f7f40248e19e /drivers/media/video/v4l2-compat-ioctl32.c | |
parent | b69a219e0e97441dbeb0262cf85468b61a161399 (diff) |
[media] V4L: remove V4L1 compatibility mode
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/v4l2-compat-ioctl32.c')
-rw-r--r-- | drivers/media/video/v4l2-compat-ioctl32.c | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/drivers/media/video/v4l2-compat-ioctl32.c b/drivers/media/video/v4l2-compat-ioctl32.c index e30e8dfb6205..425ac1e4a00e 100644 --- a/drivers/media/video/v4l2-compat-ioctl32.c +++ b/drivers/media/video/v4l2-compat-ioctl32.c | |||
@@ -22,212 +22,6 @@ | |||
22 | 22 | ||
23 | #ifdef CONFIG_COMPAT | 23 | #ifdef CONFIG_COMPAT |
24 | 24 | ||
25 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
26 | struct video_tuner32 { | ||
27 | compat_int_t tuner; | ||
28 | char name[32]; | ||
29 | compat_ulong_t rangelow, rangehigh; | ||
30 | u32 flags; /* It is really u32 in videodev.h */ | ||
31 | u16 mode, signal; | ||
32 | }; | ||
33 | |||
34 | static int get_video_tuner32(struct video_tuner *kp, struct video_tuner32 __user *up) | ||
35 | { | ||
36 | if (!access_ok(VERIFY_READ, up, sizeof(struct video_tuner32)) || | ||
37 | get_user(kp->tuner, &up->tuner) || | ||
38 | copy_from_user(kp->name, up->name, 32) || | ||
39 | get_user(kp->rangelow, &up->rangelow) || | ||
40 | get_user(kp->rangehigh, &up->rangehigh) || | ||
41 | get_user(kp->flags, &up->flags) || | ||
42 | get_user(kp->mode, &up->mode) || | ||
43 | get_user(kp->signal, &up->signal)) | ||
44 | return -EFAULT; | ||
45 | return 0; | ||
46 | } | ||
47 | |||
48 | static int put_video_tuner32(struct video_tuner *kp, struct video_tuner32 __user *up) | ||
49 | { | ||
50 | if (!access_ok(VERIFY_WRITE, up, sizeof(struct video_tuner32)) || | ||
51 | put_user(kp->tuner, &up->tuner) || | ||
52 | copy_to_user(up->name, kp->name, 32) || | ||
53 | put_user(kp->rangelow, &up->rangelow) || | ||
54 | put_user(kp->rangehigh, &up->rangehigh) || | ||
55 | put_user(kp->flags, &up->flags) || | ||
56 | put_user(kp->mode, &up->mode) || | ||
57 | put_user(kp->signal, &up->signal)) | ||
58 | return -EFAULT; | ||
59 | return 0; | ||
60 | } | ||
61 | |||
62 | struct video_buffer32 { | ||
63 | compat_caddr_t base; | ||
64 | compat_int_t height, width, depth, bytesperline; | ||
65 | }; | ||
66 | |||
67 | static int get_video_buffer32(struct video_buffer *kp, struct video_buffer32 __user *up) | ||
68 | { | ||
69 | u32 tmp; | ||
70 | |||
71 | if (!access_ok(VERIFY_READ, up, sizeof(struct video_buffer32)) || | ||
72 | get_user(tmp, &up->base) || | ||
73 | get_user(kp->height, &up->height) || | ||
74 | get_user(kp->width, &up->width) || | ||
75 | get_user(kp->depth, &up->depth) || | ||
76 | get_user(kp->bytesperline, &up->bytesperline)) | ||
77 | return -EFAULT; | ||
78 | |||
79 | /* This is actually a physical address stored | ||
80 | * as a void pointer. | ||
81 | */ | ||
82 | kp->base = (void *)(unsigned long) tmp; | ||
83 | |||
84 | return 0; | ||
85 | } | ||
86 | |||
87 | static int put_video_buffer32(struct video_buffer *kp, struct video_buffer32 __user *up) | ||
88 | { | ||
89 | u32 tmp = (u32)((unsigned long)kp->base); | ||
90 | |||
91 | if (!access_ok(VERIFY_WRITE, up, sizeof(struct video_buffer32)) || | ||
92 | put_user(tmp, &up->base) || | ||
93 | put_user(kp->height, &up->height) || | ||
94 | put_user(kp->width, &up->width) || | ||
95 | put_user(kp->depth, &up->depth) || | ||
96 | put_user(kp->bytesperline, &up->bytesperline)) | ||
97 | return -EFAULT; | ||
98 | return 0; | ||
99 | } | ||
100 | |||
101 | struct video_clip32 { | ||
102 | s32 x, y, width, height; /* It's really s32 in videodev.h */ | ||
103 | compat_caddr_t next; | ||
104 | }; | ||
105 | |||
106 | struct video_window32 { | ||
107 | u32 x, y, width, height, chromakey, flags; | ||
108 | compat_caddr_t clips; | ||
109 | compat_int_t clipcount; | ||
110 | }; | ||
111 | |||
112 | static int get_video_window32(struct video_window *kp, struct video_window32 __user *up) | ||
113 | { | ||
114 | struct video_clip __user *uclips; | ||
115 | struct video_clip __user *kclips; | ||
116 | compat_caddr_t p; | ||
117 | int nclips; | ||
118 | |||
119 | if (!access_ok(VERIFY_READ, up, sizeof(struct video_window32))) | ||
120 | return -EFAULT; | ||
121 | |||
122 | if (get_user(nclips, &up->clipcount)) | ||
123 | return -EFAULT; | ||
124 | |||
125 | if (!access_ok(VERIFY_READ, up, sizeof(struct video_window32)) || | ||
126 | get_user(kp->x, &up->x) || | ||
127 | get_user(kp->y, &up->y) || | ||
128 | get_user(kp->width, &up->width) || | ||
129 | get_user(kp->height, &up->height) || | ||
130 | get_user(kp->chromakey, &up->chromakey) || | ||
131 | get_user(kp->flags, &up->flags) || | ||
132 | get_user(kp->clipcount, &up->clipcount)) | ||
133 | return -EFAULT; | ||
134 | |||
135 | nclips = kp->clipcount; | ||
136 | kp->clips = NULL; | ||
137 | |||
138 | if (nclips == 0) | ||
139 | return 0; | ||
140 | if (get_user(p, &up->clips)) | ||
141 | return -EFAULT; | ||
142 | uclips = compat_ptr(p); | ||
143 | |||
144 | /* If nclips < 0, then it is a clipping bitmap of size | ||
145 | VIDEO_CLIPMAP_SIZE */ | ||
146 | if (nclips < 0) { | ||
147 | if (!access_ok(VERIFY_READ, uclips, VIDEO_CLIPMAP_SIZE)) | ||
148 | return -EFAULT; | ||
149 | kp->clips = compat_alloc_user_space(VIDEO_CLIPMAP_SIZE); | ||
150 | if (copy_in_user(kp->clips, uclips, VIDEO_CLIPMAP_SIZE)) | ||
151 | return -EFAULT; | ||
152 | return 0; | ||
153 | } | ||
154 | |||
155 | /* Otherwise it is an array of video_clip structs. */ | ||
156 | if (!access_ok(VERIFY_READ, uclips, nclips * sizeof(struct video_clip))) | ||
157 | return -EFAULT; | ||
158 | |||
159 | kp->clips = compat_alloc_user_space(nclips * sizeof(struct video_clip)); | ||
160 | kclips = kp->clips; | ||
161 | while (nclips--) { | ||
162 | int err; | ||
163 | |||
164 | err = copy_in_user(&kclips->x, &uclips->x, sizeof(kclips->x)); | ||
165 | err |= copy_in_user(&kclips->y, &uclips->y, sizeof(kclips->y)); | ||
166 | err |= copy_in_user(&kclips->width, &uclips->width, sizeof(kclips->width)); | ||
167 | err |= copy_in_user(&kclips->height, &uclips->height, sizeof(kclips->height)); | ||
168 | kclips->next = NULL; | ||
169 | if (err) | ||
170 | return -EFAULT; | ||
171 | kclips++; | ||
172 | uclips++; | ||
173 | } | ||
174 | return 0; | ||
175 | } | ||
176 | |||
177 | /* You get back everything except the clips... */ | ||
178 | static int put_video_window32(struct video_window *kp, struct video_window32 __user *up) | ||
179 | { | ||
180 | if (!access_ok(VERIFY_WRITE, up, sizeof(struct video_window32)) || | ||
181 | put_user(kp->x, &up->x) || | ||
182 | put_user(kp->y, &up->y) || | ||
183 | put_user(kp->width, &up->width) || | ||
184 | put_user(kp->height, &up->height) || | ||
185 | put_user(kp->chromakey, &up->chromakey) || | ||
186 | put_user(kp->flags, &up->flags) || | ||
187 | put_user(kp->clipcount, &up->clipcount)) | ||
188 | return -EFAULT; | ||
189 | return 0; | ||
190 | } | ||
191 | |||
192 | struct video_code32 { | ||
193 | char loadwhat[16]; /* name or tag of file being passed */ | ||
194 | compat_int_t datasize; | ||
195 | compat_uptr_t data; | ||
196 | }; | ||
197 | |||
198 | static struct video_code __user *get_microcode32(struct video_code32 *kp) | ||
199 | { | ||
200 | struct video_code __user *up; | ||
201 | |||
202 | up = compat_alloc_user_space(sizeof(*up)); | ||
203 | |||
204 | /* | ||
205 | * NOTE! We don't actually care if these fail. If the | ||
206 | * user address is invalid, the native ioctl will do | ||
207 | * the error handling for us | ||
208 | */ | ||
209 | (void) copy_to_user(up->loadwhat, kp->loadwhat, sizeof(up->loadwhat)); | ||
210 | (void) put_user(kp->datasize, &up->datasize); | ||
211 | (void) put_user(compat_ptr(kp->data), &up->data); | ||
212 | return up; | ||
213 | } | ||
214 | |||
215 | #define VIDIOCGTUNER32 _IOWR('v', 4, struct video_tuner32) | ||
216 | #define VIDIOCSTUNER32 _IOW('v', 5, struct video_tuner32) | ||
217 | #define VIDIOCGWIN32 _IOR('v', 9, struct video_window32) | ||
218 | #define VIDIOCSWIN32 _IOW('v', 10, struct video_window32) | ||
219 | #define VIDIOCGFBUF32 _IOR('v', 11, struct video_buffer32) | ||
220 | #define VIDIOCSFBUF32 _IOW('v', 12, struct video_buffer32) | ||
221 | #define VIDIOCGFREQ32 _IOR('v', 14, u32) | ||
222 | #define VIDIOCSFREQ32 _IOW('v', 15, u32) | ||
223 | #define VIDIOCSMICROCODE32 _IOW('v', 27, struct video_code32) | ||
224 | |||
225 | #define VIDIOCCAPTURE32 _IOW('v', 8, s32) | ||
226 | #define VIDIOCSYNC32 _IOW('v', 18, s32) | ||
227 | #define VIDIOCSWRITEMODE32 _IOW('v', 25, s32) | ||
228 | |||
229 | #endif | ||
230 | |||
231 | static long native_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 25 | static long native_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
232 | { | 26 | { |
233 | long ret = -ENOIOCTLCMD; | 27 | long ret = -ENOIOCTLCMD; |
@@ -741,13 +535,6 @@ static int put_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext | |||
741 | static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 535 | static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
742 | { | 536 | { |
743 | union { | 537 | union { |
744 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
745 | struct video_tuner vt; | ||
746 | struct video_buffer vb; | ||
747 | struct video_window vw; | ||
748 | struct video_code32 vc; | ||
749 | struct video_audio va; | ||
750 | #endif | ||
751 | struct v4l2_format v2f; | 538 | struct v4l2_format v2f; |
752 | struct v4l2_buffer v2b; | 539 | struct v4l2_buffer v2b; |
753 | struct v4l2_framebuffer v2fb; | 540 | struct v4l2_framebuffer v2fb; |
@@ -763,17 +550,6 @@ static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long ar | |||
763 | 550 | ||
764 | /* First, convert the command. */ | 551 | /* First, convert the command. */ |
765 | switch (cmd) { | 552 | switch (cmd) { |
766 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
767 | case VIDIOCGTUNER32: cmd = VIDIOCGTUNER; break; | ||
768 | case VIDIOCSTUNER32: cmd = VIDIOCSTUNER; break; | ||
769 | case VIDIOCGWIN32: cmd = VIDIOCGWIN; break; | ||
770 | case VIDIOCSWIN32: cmd = VIDIOCSWIN; break; | ||
771 | case VIDIOCGFBUF32: cmd = VIDIOCGFBUF; break; | ||
772 | case VIDIOCSFBUF32: cmd = VIDIOCSFBUF; break; | ||
773 | case VIDIOCGFREQ32: cmd = VIDIOCGFREQ; break; | ||
774 | case VIDIOCSFREQ32: cmd = VIDIOCSFREQ; break; | ||
775 | case VIDIOCSMICROCODE32: cmd = VIDIOCSMICROCODE; break; | ||
776 | #endif | ||
777 | case VIDIOC_G_FMT32: cmd = VIDIOC_G_FMT; break; | 553 | case VIDIOC_G_FMT32: cmd = VIDIOC_G_FMT; break; |
778 | case VIDIOC_S_FMT32: cmd = VIDIOC_S_FMT; break; | 554 | case VIDIOC_S_FMT32: cmd = VIDIOC_S_FMT; break; |
779 | case VIDIOC_QUERYBUF32: cmd = VIDIOC_QUERYBUF; break; | 555 | case VIDIOC_QUERYBUF32: cmd = VIDIOC_QUERYBUF; break; |
@@ -800,46 +576,6 @@ static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long ar | |||
800 | } | 576 | } |
801 | 577 | ||
802 | switch (cmd) { | 578 | switch (cmd) { |
803 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
804 | case VIDIOCSTUNER: | ||
805 | case VIDIOCGTUNER: | ||
806 | err = get_video_tuner32(&karg.vt, up); | ||
807 | compatible_arg = 0; | ||
808 | break; | ||
809 | |||
810 | case VIDIOCSFBUF: | ||
811 | err = get_video_buffer32(&karg.vb, up); | ||
812 | compatible_arg = 0; | ||
813 | break; | ||
814 | |||
815 | case VIDIOCSWIN: | ||
816 | err = get_video_window32(&karg.vw, up); | ||
817 | compatible_arg = 0; | ||
818 | break; | ||
819 | |||
820 | case VIDIOCGWIN: | ||
821 | case VIDIOCGFBUF: | ||
822 | case VIDIOCGFREQ: | ||
823 | compatible_arg = 0; | ||
824 | break; | ||
825 | |||
826 | case VIDIOCSMICROCODE: | ||
827 | /* Copy the 32-bit "video_code32" to kernel space */ | ||
828 | if (copy_from_user(&karg.vc, up, sizeof(karg.vc))) | ||
829 | return -EFAULT; | ||
830 | /* Convert the 32-bit version to a 64-bit version in user space */ | ||
831 | up = get_microcode32(&karg.vc); | ||
832 | break; | ||
833 | |||
834 | case VIDIOCSFREQ: | ||
835 | err = get_user(karg.vx, (u32 __user *)up); | ||
836 | compatible_arg = 0; | ||
837 | break; | ||
838 | |||
839 | case VIDIOCCAPTURE: | ||
840 | case VIDIOCSYNC: | ||
841 | case VIDIOCSWRITEMODE: | ||
842 | #endif | ||
843 | case VIDIOC_OVERLAY: | 579 | case VIDIOC_OVERLAY: |
844 | case VIDIOC_STREAMON: | 580 | case VIDIOC_STREAMON: |
845 | case VIDIOC_STREAMOFF: | 581 | case VIDIOC_STREAMOFF: |
@@ -922,23 +658,6 @@ static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long ar | |||
922 | return err; | 658 | return err; |
923 | 659 | ||
924 | switch (cmd) { | 660 | switch (cmd) { |
925 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
926 | case VIDIOCGTUNER: | ||
927 | err = put_video_tuner32(&karg.vt, up); | ||
928 | break; | ||
929 | |||
930 | case VIDIOCGWIN: | ||
931 | err = put_video_window32(&karg.vw, up); | ||
932 | break; | ||
933 | |||
934 | case VIDIOCGFBUF: | ||
935 | err = put_video_buffer32(&karg.vb, up); | ||
936 | break; | ||
937 | |||
938 | case VIDIOCGFREQ: | ||
939 | err = put_user(((u32)karg.vx), (u32 __user *)up); | ||
940 | break; | ||
941 | #endif | ||
942 | case VIDIOC_S_INPUT: | 661 | case VIDIOC_S_INPUT: |
943 | case VIDIOC_S_OUTPUT: | 662 | case VIDIOC_S_OUTPUT: |
944 | case VIDIOC_G_INPUT: | 663 | case VIDIOC_G_INPUT: |
@@ -981,37 +700,6 @@ long v4l2_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) | |||
981 | return ret; | 700 | return ret; |
982 | 701 | ||
983 | switch (cmd) { | 702 | switch (cmd) { |
984 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
985 | case VIDIOCGCAP: | ||
986 | case VIDIOCGCHAN: | ||
987 | case VIDIOCSCHAN: | ||
988 | case VIDIOCGTUNER32: | ||
989 | case VIDIOCSTUNER32: | ||
990 | case VIDIOCGPICT: | ||
991 | case VIDIOCSPICT: | ||
992 | case VIDIOCCAPTURE32: | ||
993 | case VIDIOCGWIN32: | ||
994 | case VIDIOCSWIN32: | ||
995 | case VIDIOCGFBUF32: | ||
996 | case VIDIOCSFBUF32: | ||
997 | case VIDIOCKEY: | ||
998 | case VIDIOCGFREQ32: | ||
999 | case VIDIOCSFREQ32: | ||
1000 | case VIDIOCGAUDIO: | ||
1001 | case VIDIOCSAUDIO: | ||
1002 | case VIDIOCSYNC32: | ||
1003 | case VIDIOCMCAPTURE: | ||
1004 | case VIDIOCGMBUF: | ||
1005 | case VIDIOCGUNIT: | ||
1006 | case VIDIOCGCAPTURE: | ||
1007 | case VIDIOCSCAPTURE: | ||
1008 | case VIDIOCSPLAYMODE: | ||
1009 | case VIDIOCSWRITEMODE32: | ||
1010 | case VIDIOCGPLAYINFO: | ||
1011 | case VIDIOCSMICROCODE32: | ||
1012 | case VIDIOCGVBIFMT: | ||
1013 | case VIDIOCSVBIFMT: | ||
1014 | #endif | ||
1015 | #ifdef __OLD_VIDIOC_ | 703 | #ifdef __OLD_VIDIOC_ |
1016 | case VIDIOC_OVERLAY32_OLD: | 704 | case VIDIOC_OVERLAY32_OLD: |
1017 | case VIDIOC_S_PARM_OLD: | 705 | case VIDIOC_S_PARM_OLD: |
@@ -1096,19 +784,6 @@ long v4l2_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) | |||
1096 | ret = do_video_ioctl(file, cmd, arg); | 784 | ret = do_video_ioctl(file, cmd, arg); |
1097 | break; | 785 | break; |
1098 | 786 | ||
1099 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
1100 | /* BTTV specific... */ | ||
1101 | case _IOW('v', BASE_VIDIOCPRIVATE+0, char [256]): | ||
1102 | case _IOR('v', BASE_VIDIOCPRIVATE+1, char [256]): | ||
1103 | case _IOR('v' , BASE_VIDIOCPRIVATE+2, unsigned int): | ||
1104 | case _IOW('v' , BASE_VIDIOCPRIVATE+3, char [16]): /* struct bttv_pll_info */ | ||
1105 | case _IOR('v' , BASE_VIDIOCPRIVATE+4, int): | ||
1106 | case _IOR('v' , BASE_VIDIOCPRIVATE+5, int): | ||
1107 | case _IOR('v' , BASE_VIDIOCPRIVATE+6, int): | ||
1108 | case _IOR('v' , BASE_VIDIOCPRIVATE+7, int): | ||
1109 | ret = native_ioctl(file, cmd, (unsigned long)compat_ptr(arg)); | ||
1110 | break; | ||
1111 | #endif | ||
1112 | default: | 787 | default: |
1113 | printk(KERN_WARNING "compat_ioctl32: " | 788 | printk(KERN_WARNING "compat_ioctl32: " |
1114 | "unknown ioctl '%c', dir=%d, #%d (0x%08x)\n", | 789 | "unknown ioctl '%c', dir=%d, #%d (0x%08x)\n", |