]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/media/usb/usbvision/usbvision-cards.c
HID: usbhid: Add HID_QUIRK_NOGET for Aten CS-1758 KVM switch
[mirror_ubuntu-artful-kernel.git] / drivers / media / usb / usbvision / usbvision-cards.c
1 /*
2 * usbvision-cards.c
3 * usbvision cards definition file
4 *
5 * Copyright (c) 1999-2005 Joerg Heckenbach <joerg@heckenbach-aw.de>
6 *
7 * This module is part of usbvision driver project.
8 * Updates to driver completed by Dwaine P. Garden
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 */
24
25
26 #include <linux/list.h>
27 #include <linux/module.h>
28 #include <media/v4l2-dev.h>
29 #include <media/tuner.h>
30 #include "usbvision.h"
31 #include "usbvision-cards.h"
32
33 /* Supported Devices: A table for usbvision.c*/
34 struct usbvision_device_data_st usbvision_device_data[] = {
35 [XANBOO] = {
36 .interface = -1,
37 .codec = CODEC_SAA7113,
38 .video_channels = 4,
39 .video_norm = V4L2_STD_NTSC,
40 .audio_channels = 1,
41 .radio = 0,
42 .vbi = 1,
43 .tuner = 0,
44 .tuner_type = 0,
45 .x_offset = -1,
46 .y_offset = -1,
47 .model_string = "Xanboo",
48 },
49 [BELKIN_VIDEOBUS_II] = {
50 .interface = -1,
51 .codec = CODEC_SAA7113,
52 .video_channels = 2,
53 .video_norm = V4L2_STD_PAL,
54 .audio_channels = 1,
55 .radio = 0,
56 .vbi = 1,
57 .tuner = 0,
58 .tuner_type = 0,
59 .x_offset = 0,
60 .y_offset = 3,
61 .dvi_yuv_override = 1,
62 .dvi_yuv = 7,
63 .model_string = "Belkin USB VideoBus II Adapter",
64 },
65 [BELKIN_VIDEOBUS] = {
66 .interface = -1,
67 .codec = CODEC_SAA7111,
68 .video_channels = 2,
69 .video_norm = V4L2_STD_NTSC,
70 .audio_channels = 1,
71 .radio = 0,
72 .vbi = 1,
73 .tuner = 0,
74 .tuner_type = 0,
75 .x_offset = -1,
76 .y_offset = -1,
77 .model_string = "Belkin Components USB VideoBus",
78 },
79 [BELKIN_USB_VIDEOBUS_II] = {
80 .interface = -1,
81 .codec = CODEC_SAA7113,
82 .video_channels = 2,
83 .video_norm = V4L2_STD_NTSC,
84 .audio_channels = 1,
85 .radio = 0,
86 .vbi = 1,
87 .tuner = 0,
88 .tuner_type = 0,
89 .x_offset = 0,
90 .y_offset = 3,
91 .dvi_yuv_override = 1,
92 .dvi_yuv = 7,
93 .model_string = "Belkin USB VideoBus II",
94 },
95 [ECHOFX_INTERVIEW_LITE] = {
96 .interface = 0,
97 .codec = CODEC_SAA7111,
98 .video_channels = 2,
99 .video_norm = V4L2_STD_PAL,
100 .audio_channels = 0,
101 .radio = 0,
102 .vbi = 1,
103 .tuner = 0,
104 .tuner_type = 0,
105 .x_offset = -1,
106 .y_offset = -1,
107 .dvi_yuv_override = 1,
108 .dvi_yuv = 7,
109 .model_string = "echoFX InterView Lite",
110 },
111 [USBGEAR_USBG_V1] = {
112 .interface = -1,
113 .codec = CODEC_SAA7111,
114 .video_channels = 2,
115 .video_norm = V4L2_STD_NTSC,
116 .audio_channels = 1,
117 .radio = 0,
118 .vbi = 1,
119 .tuner = 0,
120 .tuner_type = 0,
121 .x_offset = -1,
122 .y_offset = -1,
123 .model_string = "USBGear USBG-V1 resp. HAMA USB",
124 },
125 [D_LINK_V100] = {
126 .interface = -1,
127 .codec = CODEC_SAA7113,
128 .video_channels = 4,
129 .video_norm = V4L2_STD_NTSC,
130 .audio_channels = 0,
131 .radio = 0,
132 .vbi = 1,
133 .tuner = 0,
134 .tuner_type = 0,
135 .x_offset = 0,
136 .y_offset = 3,
137 .dvi_yuv_override = 1,
138 .dvi_yuv = 7,
139 .model_string = "D-Link V100",
140 },
141 [X10_USB_CAMERA] = {
142 .interface = -1,
143 .codec = CODEC_SAA7111,
144 .video_channels = 2,
145 .video_norm = V4L2_STD_NTSC,
146 .audio_channels = 1,
147 .radio = 0,
148 .vbi = 1,
149 .tuner = 0,
150 .tuner_type = 0,
151 .x_offset = -1,
152 .y_offset = -1,
153 .model_string = "X10 USB Camera",
154 },
155 [HPG_WINTV_LIVE_PAL_BG] = {
156 .interface = -1,
157 .codec = CODEC_SAA7111,
158 .video_channels = 2,
159 .video_norm = V4L2_STD_PAL,
160 .audio_channels = 1,
161 .radio = 0,
162 .vbi = 1,
163 .tuner = 0,
164 .tuner_type = 0,
165 .x_offset = -1,
166 .y_offset = 3,
167 .dvi_yuv_override = 1,
168 .dvi_yuv = 7,
169 .model_string = "Hauppauge WinTV USB Live (PAL B/G)",
170 },
171 [HPG_WINTV_LIVE_PRO_NTSC_MN] = {
172 .interface = -1,
173 .codec = CODEC_SAA7113,
174 .video_channels = 2,
175 .video_norm = V4L2_STD_NTSC,
176 .audio_channels = 0,
177 .radio = 0,
178 .vbi = 1,
179 .tuner = 0,
180 .tuner_type = 0,
181 .x_offset = 0,
182 .y_offset = 3,
183 .dvi_yuv_override = 1,
184 .dvi_yuv = 7,
185 .model_string = "Hauppauge WinTV USB Live Pro (NTSC M/N)",
186 },
187 [ZORAN_PMD_NOGATECH] = {
188 .interface = -1,
189 .codec = CODEC_SAA7113,
190 .video_channels = 2,
191 .video_norm = V4L2_STD_PAL,
192 .audio_channels = 2,
193 .radio = 0,
194 .vbi = 1,
195 .tuner = 0,
196 .tuner_type = 0,
197 .x_offset = 0,
198 .y_offset = 3,
199 .dvi_yuv_override = 1,
200 .dvi_yuv = 7,
201 .model_string = "Zoran Co. PMD (Nogatech) AV-grabber Manhattan",
202 },
203 [NOGATECH_USB_TV_NTSC_FM] = {
204 .interface = -1,
205 .codec = CODEC_SAA7111,
206 .video_channels = 3,
207 .video_norm = V4L2_STD_NTSC,
208 .audio_channels = 1,
209 .radio = 1,
210 .vbi = 1,
211 .tuner = 1,
212 .tuner_type = TUNER_PHILIPS_NTSC_M,
213 .x_offset = -1,
214 .y_offset = 20,
215 .model_string = "Nogatech USB-TV (NTSC) FM",
216 },
217 [PNY_USB_TV_NTSC_FM] = {
218 .interface = -1,
219 .codec = CODEC_SAA7111,
220 .video_channels = 3,
221 .video_norm = V4L2_STD_NTSC,
222 .audio_channels = 1,
223 .radio = 1,
224 .vbi = 1,
225 .tuner = 1,
226 .tuner_type = TUNER_PHILIPS_NTSC_M,
227 .x_offset = -1,
228 .y_offset = 20,
229 .model_string = "PNY USB-TV (NTSC) FM",
230 },
231 [PV_PLAYTV_USB_PRO_PAL_FM] = {
232 .interface = 0,
233 .codec = CODEC_SAA7113,
234 .video_channels = 3,
235 .video_norm = V4L2_STD_PAL,
236 .audio_channels = 1,
237 .radio = 1,
238 .vbi = 1,
239 .tuner = 1,
240 .tuner_type = TUNER_PHILIPS_PAL,
241 .x_offset = 0,
242 .y_offset = 3,
243 .dvi_yuv_override = 1,
244 .dvi_yuv = 7,
245 .model_string = "PixelView PlayTv-USB PRO (PAL) FM",
246 },
247 [ZT_721] = {
248 .interface = 0,
249 .codec = CODEC_SAA7113,
250 .video_channels = 3,
251 .video_norm = V4L2_STD_PAL,
252 .audio_channels = 1,
253 .radio = 1,
254 .vbi = 1,
255 .tuner = 1,
256 .tuner_type = TUNER_PHILIPS_PAL,
257 .x_offset = 0,
258 .y_offset = 3,
259 .dvi_yuv_override = 1,
260 .dvi_yuv = 7,
261 .model_string = "ZTV ZT-721 2.4GHz USB A/V Receiver",
262 },
263 [HPG_WINTV_NTSC_MN] = {
264 .interface = -1,
265 .codec = CODEC_SAA7111,
266 .video_channels = 3,
267 .video_norm = V4L2_STD_NTSC,
268 .audio_channels = 1,
269 .radio = 0,
270 .vbi = 1,
271 .tuner = 1,
272 .tuner_type = TUNER_PHILIPS_NTSC_M,
273 .x_offset = -1,
274 .y_offset = 20,
275 .model_string = "Hauppauge WinTV USB (NTSC M/N)",
276 },
277 [HPG_WINTV_PAL_BG] = {
278 .interface = -1,
279 .codec = CODEC_SAA7111,
280 .video_channels = 3,
281 .video_norm = V4L2_STD_PAL,
282 .audio_channels = 1,
283 .radio = 0,
284 .vbi = 1,
285 .tuner = 1,
286 .tuner_type = TUNER_PHILIPS_PAL,
287 .x_offset = -1,
288 .y_offset = -1,
289 .model_string = "Hauppauge WinTV USB (PAL B/G)",
290 },
291 [HPG_WINTV_PAL_I] = {
292 .interface = -1,
293 .codec = CODEC_SAA7111,
294 .video_channels = 3,
295 .video_norm = V4L2_STD_PAL,
296 .audio_channels = 1,
297 .radio = 0,
298 .vbi = 1,
299 .tuner = 1,
300 .tuner_type = TUNER_PHILIPS_PAL,
301 .x_offset = -1,
302 .y_offset = -1,
303 .model_string = "Hauppauge WinTV USB (PAL I)",
304 },
305 [HPG_WINTV_PAL_SECAM_L] = {
306 .interface = -1,
307 .codec = CODEC_SAA7111,
308 .video_channels = 3,
309 .video_norm = V4L2_STD_SECAM,
310 .audio_channels = 1,
311 .radio = 0,
312 .vbi = 1,
313 .tuner = 1,
314 .tuner_type = TUNER_PHILIPS_SECAM,
315 .x_offset = 0x80,
316 .y_offset = 0x16,
317 .model_string = "Hauppauge WinTV USB (PAL/SECAM L)",
318 },
319 [HPG_WINTV_PAL_D_K] = {
320 .interface = -1,
321 .codec = CODEC_SAA7111,
322 .video_channels = 3,
323 .video_norm = V4L2_STD_PAL,
324 .audio_channels = 1,
325 .radio = 0,
326 .vbi = 1,
327 .tuner = 1,
328 .tuner_type = TUNER_PHILIPS_PAL,
329 .x_offset = -1,
330 .y_offset = -1,
331 .model_string = "Hauppauge WinTV USB (PAL D/K)",
332 },
333 [HPG_WINTV_NTSC_FM] = {
334 .interface = -1,
335 .codec = CODEC_SAA7111,
336 .video_channels = 3,
337 .video_norm = V4L2_STD_NTSC,
338 .audio_channels = 1,
339 .radio = 1,
340 .vbi = 1,
341 .tuner = 1,
342 .tuner_type = TUNER_PHILIPS_NTSC_M,
343 .x_offset = -1,
344 .y_offset = -1,
345 .model_string = "Hauppauge WinTV USB (NTSC FM)",
346 },
347 [HPG_WINTV_PAL_BG_FM] = {
348 .interface = -1,
349 .codec = CODEC_SAA7111,
350 .video_channels = 3,
351 .video_norm = V4L2_STD_PAL,
352 .audio_channels = 1,
353 .radio = 1,
354 .vbi = 1,
355 .tuner = 1,
356 .tuner_type = TUNER_PHILIPS_PAL,
357 .x_offset = -1,
358 .y_offset = -1,
359 .model_string = "Hauppauge WinTV USB (PAL B/G FM)",
360 },
361 [HPG_WINTV_PAL_I_FM] = {
362 .interface = -1,
363 .codec = CODEC_SAA7111,
364 .video_channels = 3,
365 .video_norm = V4L2_STD_PAL,
366 .audio_channels = 1,
367 .radio = 1,
368 .vbi = 1,
369 .tuner = 1,
370 .tuner_type = TUNER_PHILIPS_PAL,
371 .x_offset = -1,
372 .y_offset = -1,
373 .model_string = "Hauppauge WinTV USB (PAL I FM)",
374 },
375 [HPG_WINTV_PAL_D_K_FM] = {
376 .interface = -1,
377 .codec = CODEC_SAA7111,
378 .video_channels = 3,
379 .video_norm = V4L2_STD_PAL,
380 .audio_channels = 1,
381 .radio = 1,
382 .vbi = 1,
383 .tuner = 1,
384 .tuner_type = TUNER_PHILIPS_PAL,
385 .x_offset = -1,
386 .y_offset = -1,
387 .model_string = "Hauppauge WinTV USB (PAL D/K FM)",
388 },
389 [HPG_WINTV_PRO_NTSC_MN] = {
390 .interface = 0,
391 .codec = CODEC_SAA7113,
392 .video_channels = 3,
393 .video_norm = V4L2_STD_NTSC,
394 .audio_channels = 1,
395 .radio = 1,
396 .vbi = 1,
397 .tuner = 1,
398 .tuner_type = TUNER_MICROTUNE_4049FM5,
399 .x_offset = 0,
400 .y_offset = 3,
401 .dvi_yuv_override = 1,
402 .dvi_yuv = 7,
403 .model_string = "Hauppauge WinTV USB Pro (NTSC M/N)",
404 },
405 [HPG_WINTV_PRO_NTSC_MN_V2] = {
406 .interface = 0,
407 .codec = CODEC_SAA7113,
408 .video_channels = 3,
409 .video_norm = V4L2_STD_NTSC,
410 .audio_channels = 1,
411 .radio = 1,
412 .vbi = 1,
413 .tuner = 1,
414 .tuner_type = TUNER_MICROTUNE_4049FM5,
415 .x_offset = 0,
416 .y_offset = 3,
417 .dvi_yuv_override = 1,
418 .dvi_yuv = 7,
419 .model_string = "Hauppauge WinTV USB Pro (NTSC M/N) V2",
420 },
421 [HPG_WINTV_PRO_PAL] = {
422 .interface = 0,
423 .codec = CODEC_SAA7113,
424 .video_channels = 3,
425 .video_norm = V4L2_STD_PAL,
426 .audio_channels = 1,
427 .radio = 0,
428 .vbi = 1,
429 .tuner = 1,
430 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
431 .x_offset = 0,
432 .y_offset = 3,
433 .dvi_yuv_override = 1,
434 .dvi_yuv = 7,
435 .model_string = "Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L)",
436 },
437 [HPG_WINTV_PRO_NTSC_MN_V3] = {
438 .interface = 0,
439 .codec = CODEC_SAA7113,
440 .video_channels = 3,
441 .video_norm = V4L2_STD_NTSC,
442 .audio_channels = 1,
443 .radio = 1,
444 .vbi = 1,
445 .tuner = 1,
446 .tuner_type = TUNER_PHILIPS_NTSC_M,
447 .x_offset = 0,
448 .y_offset = 3,
449 .dvi_yuv_override = 1,
450 .dvi_yuv = 7,
451 .model_string = "Hauppauge WinTV USB Pro (NTSC M/N) V3",
452 },
453 [HPG_WINTV_PRO_PAL_BG] = {
454 .interface = 0,
455 .codec = CODEC_SAA7113,
456 .video_channels = 3,
457 .video_norm = V4L2_STD_PAL,
458 .audio_channels = 1,
459 .radio = 0,
460 .vbi = 1,
461 .tuner = 1,
462 .tuner_type = TUNER_PHILIPS_PAL,
463 .x_offset = 0,
464 .y_offset = 3,
465 .dvi_yuv_override = 1,
466 .dvi_yuv = 7,
467 .model_string = "Hauppauge WinTV USB Pro (PAL B/G)",
468 },
469 [HPG_WINTV_PRO_PAL_I] = {
470 .interface = 0,
471 .codec = CODEC_SAA7113,
472 .video_channels = 3,
473 .video_norm = V4L2_STD_PAL,
474 .audio_channels = 1,
475 .radio = 0,
476 .vbi = 1,
477 .tuner = 1,
478 .tuner_type = TUNER_PHILIPS_PAL,
479 .x_offset = 0,
480 .y_offset = 3,
481 .dvi_yuv_override = 1,
482 .dvi_yuv = 7,
483 .model_string = "Hauppauge WinTV USB Pro (PAL I)",
484 },
485 [HPG_WINTV_PRO_PAL_SECAM_L] = {
486 .interface = -1,
487 .codec = CODEC_SAA7113,
488 .video_channels = 3,
489 .video_norm = V4L2_STD_SECAM,
490 .audio_channels = 1,
491 .radio = 0,
492 .vbi = 1,
493 .tuner = 1,
494 .tuner_type = TUNER_PHILIPS_SECAM,
495 .x_offset = 0,
496 .y_offset = 3,
497 .dvi_yuv_override = 1,
498 .dvi_yuv = 7,
499 .model_string = "Hauppauge WinTV USB Pro (PAL/SECAM L)",
500 },
501 [HPG_WINTV_PRO_PAL_D_K] = {
502 .interface = -1,
503 .codec = CODEC_SAA7113,
504 .video_channels = 3,
505 .video_norm = V4L2_STD_PAL,
506 .audio_channels = 1,
507 .radio = 0,
508 .vbi = 1,
509 .tuner = 1,
510 .tuner_type = TUNER_PHILIPS_PAL,
511 .x_offset = 0,
512 .y_offset = 3,
513 .dvi_yuv_override = 1,
514 .dvi_yuv = 7,
515 .model_string = "Hauppauge WinTV USB Pro (PAL D/K)",
516 },
517 [HPG_WINTV_PRO_PAL_SECAM] = {
518 .interface = -1,
519 .codec = CODEC_SAA7113,
520 .video_channels = 3,
521 .video_norm = V4L2_STD_SECAM,
522 .audio_channels = 1,
523 .radio = 0,
524 .vbi = 1,
525 .tuner = 1,
526 .tuner_type = TUNER_PHILIPS_SECAM,
527 .x_offset = 0,
528 .y_offset = 3,
529 .dvi_yuv_override = 1,
530 .dvi_yuv = 7,
531 .model_string = "Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L)",
532 },
533 [HPG_WINTV_PRO_PAL_SECAM_V2] = {
534 .interface = -1,
535 .codec = CODEC_SAA7113,
536 .video_channels = 3,
537 .video_norm = V4L2_STD_SECAM,
538 .audio_channels = 1,
539 .radio = 0,
540 .vbi = 1,
541 .tuner = 1,
542 .tuner_type = TUNER_PHILIPS_SECAM,
543 .x_offset = 0,
544 .y_offset = 3,
545 .dvi_yuv_override = 1,
546 .dvi_yuv = 7,
547 .model_string = "Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L) V2",
548 },
549 [HPG_WINTV_PRO_PAL_BG_V2] = {
550 .interface = -1,
551 .codec = CODEC_SAA7113,
552 .video_channels = 3,
553 .video_norm = V4L2_STD_PAL,
554 .audio_channels = 1,
555 .radio = 0,
556 .vbi = 1,
557 .tuner = 1,
558 .tuner_type = TUNER_ALPS_TSBE1_PAL,
559 .x_offset = 0,
560 .y_offset = 3,
561 .dvi_yuv_override = 1,
562 .dvi_yuv = 7,
563 .model_string = "Hauppauge WinTV USB Pro (PAL B/G) V2",
564 },
565 [HPG_WINTV_PRO_PAL_BG_D_K] = {
566 .interface = -1,
567 .codec = CODEC_SAA7113,
568 .video_channels = 3,
569 .video_norm = V4L2_STD_PAL,
570 .audio_channels = 1,
571 .radio = 0,
572 .vbi = 1,
573 .tuner = 1,
574 .tuner_type = TUNER_ALPS_TSBE1_PAL,
575 .x_offset = 0,
576 .y_offset = 3,
577 .dvi_yuv_override = 1,
578 .dvi_yuv = 7,
579 .model_string = "Hauppauge WinTV USB Pro (PAL B/G,D/K)",
580 },
581 [HPG_WINTV_PRO_PAL_I_D_K] = {
582 .interface = -1,
583 .codec = CODEC_SAA7113,
584 .video_channels = 3,
585 .video_norm = V4L2_STD_PAL,
586 .audio_channels = 1,
587 .radio = 0,
588 .vbi = 1,
589 .tuner = 1,
590 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
591 .x_offset = 0,
592 .y_offset = 3,
593 .dvi_yuv_override = 1,
594 .dvi_yuv = 7,
595 .model_string = "Hauppauge WinTV USB Pro (PAL I,D/K)",
596 },
597 [HPG_WINTV_PRO_NTSC_MN_FM] = {
598 .interface = -1,
599 .codec = CODEC_SAA7113,
600 .video_channels = 3,
601 .video_norm = V4L2_STD_NTSC,
602 .audio_channels = 1,
603 .radio = 1,
604 .vbi = 1,
605 .tuner = 1,
606 .tuner_type = TUNER_PHILIPS_NTSC_M,
607 .x_offset = 0,
608 .y_offset = 3,
609 .dvi_yuv_override = 1,
610 .dvi_yuv = 7,
611 .model_string = "Hauppauge WinTV USB Pro (NTSC M/N FM)",
612 },
613 [HPG_WINTV_PRO_PAL_BG_FM] = {
614 .interface = 0,
615 .codec = CODEC_SAA7113,
616 .video_channels = 3,
617 .video_norm = V4L2_STD_PAL,
618 .audio_channels = 1,
619 .radio = 1,
620 .vbi = 1,
621 .tuner = 1,
622 .tuner_type = TUNER_PHILIPS_PAL,
623 .x_offset = 0,
624 .y_offset = 3,
625 .dvi_yuv_override = 1,
626 .dvi_yuv = 7,
627 .model_string = "Hauppauge WinTV USB Pro (PAL B/G FM)",
628 },
629 [HPG_WINTV_PRO_PAL_I_FM] = {
630 .interface = 0,
631 .codec = CODEC_SAA7113,
632 .video_channels = 3,
633 .video_norm = V4L2_STD_PAL,
634 .audio_channels = 1,
635 .radio = 1,
636 .vbi = 1,
637 .tuner = 1,
638 .tuner_type = TUNER_PHILIPS_PAL,
639 .x_offset = 0,
640 .y_offset = 3,
641 .dvi_yuv_override = 1,
642 .dvi_yuv = 7,
643 .model_string = "Hauppauge WinTV USB Pro (PAL I FM)",
644 },
645 [HPG_WINTV_PRO_PAL_D_K_FM] = {
646 .interface = 0,
647 .codec = CODEC_SAA7113,
648 .video_channels = 3,
649 .video_norm = V4L2_STD_PAL,
650 .audio_channels = 1,
651 .radio = 1,
652 .vbi = 1,
653 .tuner = 1,
654 .tuner_type = TUNER_PHILIPS_PAL,
655 .x_offset = 0,
656 .y_offset = 3,
657 .dvi_yuv_override = 1,
658 .dvi_yuv = 7,
659 .model_string = "Hauppauge WinTV USB Pro (PAL D/K FM)",
660 },
661 [HPG_WINTV_PRO_TEMIC_PAL_FM] = {
662 .interface = 0,
663 .codec = CODEC_SAA7113,
664 .video_channels = 3,
665 .video_norm = V4L2_STD_PAL,
666 .audio_channels = 1,
667 .radio = 1,
668 .vbi = 1,
669 .tuner = 1,
670 .tuner_type = TUNER_MICROTUNE_4049FM5,
671 .x_offset = 0,
672 .y_offset = 3,
673 .dvi_yuv_override = 1,
674 .dvi_yuv = 7,
675 .model_string = "Hauppauge WinTV USB Pro (Temic PAL/SECAM B/G/I/D/K/L FM)",
676 },
677 [HPG_WINTV_PRO_TEMIC_PAL_BG_FM] = {
678 .interface = 0,
679 .codec = CODEC_SAA7113,
680 .video_channels = 3,
681 .video_norm = V4L2_STD_PAL,
682 .audio_channels = 1,
683 .radio = 1,
684 .vbi = 1,
685 .tuner = 1,
686 .tuner_type = TUNER_MICROTUNE_4049FM5,
687 .x_offset = 0,
688 .y_offset = 3,
689 .dvi_yuv_override = 1,
690 .dvi_yuv = 7,
691 .model_string = "Hauppauge WinTV USB Pro (Temic PAL B/G FM)",
692 },
693 [HPG_WINTV_PRO_PAL_FM] = {
694 .interface = 0,
695 .codec = CODEC_SAA7113,
696 .video_channels = 3,
697 .video_norm = V4L2_STD_PAL,
698 .audio_channels = 1,
699 .radio = 1,
700 .vbi = 1,
701 .tuner = 1,
702 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
703 .x_offset = 0,
704 .y_offset = 3,
705 .dvi_yuv_override = 1,
706 .dvi_yuv = 7,
707 .model_string = "Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L FM)",
708 },
709 [HPG_WINTV_PRO_NTSC_MN_FM_V2] = {
710 .interface = 0,
711 .codec = CODEC_SAA7113,
712 .video_channels = 3,
713 .video_norm = V4L2_STD_NTSC,
714 .audio_channels = 1,
715 .radio = 1,
716 .vbi = 1,
717 .tuner = 1,
718 .tuner_type = TUNER_PHILIPS_NTSC_M,
719 .x_offset = 0,
720 .y_offset = 3,
721 .dvi_yuv_override = 1,
722 .dvi_yuv = 7,
723 .model_string = "Hauppauge WinTV USB Pro (NTSC M/N FM) V2",
724 },
725 [CAMTEL_TVB330] = {
726 .interface = -1,
727 .codec = CODEC_SAA7113,
728 .video_channels = 3,
729 .video_norm = V4L2_STD_NTSC,
730 .audio_channels = 1,
731 .radio = 1,
732 .vbi = 1,
733 .tuner = 1,
734 .tuner_type = TUNER_PHILIPS_NTSC_M,
735 .x_offset = 5,
736 .y_offset = 5,
737 .model_string = "Camtel Technology USB TV Genie Pro FM Model TVB330",
738 },
739 [DIGITAL_VIDEO_CREATOR_I] = {
740 .interface = -1,
741 .codec = CODEC_SAA7113,
742 .video_channels = 2,
743 .video_norm = V4L2_STD_PAL,
744 .audio_channels = 0,
745 .radio = 0,
746 .vbi = 1,
747 .tuner = 0,
748 .tuner_type = 0,
749 .x_offset = 0,
750 .y_offset = 3,
751 .dvi_yuv_override = 1,
752 .dvi_yuv = 7,
753 .model_string = "Digital Video Creator I",
754 },
755 [GLOBAL_VILLAGE_GV_007_NTSC] = {
756 .interface = -1,
757 .codec = CODEC_SAA7111,
758 .video_channels = 2,
759 .video_norm = V4L2_STD_NTSC,
760 .audio_channels = 0,
761 .radio = 0,
762 .vbi = 1,
763 .tuner = 0,
764 .tuner_type = 0,
765 .x_offset = 82,
766 .y_offset = 20,
767 .dvi_yuv_override = 1,
768 .dvi_yuv = 7,
769 .model_string = "Global Village GV-007 (NTSC)",
770 },
771 [DAZZLE_DVC_50_REV_1_NTSC] = {
772 .interface = 0,
773 .codec = CODEC_SAA7113,
774 .video_channels = 2,
775 .video_norm = V4L2_STD_NTSC,
776 .audio_channels = 0,
777 .radio = 0,
778 .vbi = 1,
779 .tuner = 0,
780 .tuner_type = 0,
781 .x_offset = 0,
782 .y_offset = 3,
783 .dvi_yuv_override = 1,
784 .dvi_yuv = 7,
785 .model_string = "Dazzle Fusion Model DVC-50 Rev 1 (NTSC)",
786 },
787 [DAZZLE_DVC_80_REV_1_PAL] = {
788 .interface = 0,
789 .codec = CODEC_SAA7113,
790 .video_channels = 2,
791 .video_norm = V4L2_STD_PAL,
792 .audio_channels = 0,
793 .radio = 0,
794 .vbi = 1,
795 .tuner = 0,
796 .tuner_type = 0,
797 .x_offset = 0,
798 .y_offset = 3,
799 .dvi_yuv_override = 1,
800 .dvi_yuv = 7,
801 .model_string = "Dazzle Fusion Model DVC-80 Rev 1 (PAL)",
802 },
803 [DAZZLE_DVC_90_REV_1_SECAM] = {
804 .interface = 0,
805 .codec = CODEC_SAA7113,
806 .video_channels = 2,
807 .video_norm = V4L2_STD_SECAM,
808 .audio_channels = 0,
809 .radio = 0,
810 .vbi = 1,
811 .tuner = 0,
812 .tuner_type = 0,
813 .x_offset = 0,
814 .y_offset = 3,
815 .dvi_yuv_override = 1,
816 .dvi_yuv = 7,
817 .model_string = "Dazzle Fusion Model DVC-90 Rev 1 (SECAM)",
818 },
819 [ESKAPE_LABS_MYTV2GO] = {
820 .interface = 0,
821 .codec = CODEC_SAA7113,
822 .video_channels = 2,
823 .video_norm = V4L2_STD_PAL,
824 .audio_channels = 1,
825 .radio = 1,
826 .vbi = 1,
827 .tuner = 1,
828 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
829 .x_offset = 0,
830 .y_offset = 3,
831 .dvi_yuv_override = 1,
832 .dvi_yuv = 7,
833 .model_string = "Eskape Labs MyTV2Go",
834 },
835 [PINNA_PCTV_USB_PAL] = {
836 .interface = -1,
837 .codec = CODEC_SAA7111,
838 .video_channels = 3,
839 .video_norm = V4L2_STD_PAL,
840 .audio_channels = 1,
841 .radio = 0,
842 .vbi = 0,
843 .tuner = 1,
844 .tuner_type = TUNER_TEMIC_4066FY5_PAL_I,
845 .x_offset = -1,
846 .y_offset = -1,
847 .model_string = "Pinnacle Studio PCTV USB (PAL)",
848 },
849 [PINNA_PCTV_USB_SECAM] = {
850 .interface = -1,
851 .codec = CODEC_SAA7111,
852 .video_channels = 3,
853 .video_norm = V4L2_STD_SECAM,
854 .audio_channels = 1,
855 .radio = 0,
856 .vbi = 1,
857 .tuner = 1,
858 .tuner_type = TUNER_PHILIPS_SECAM,
859 .x_offset = -1,
860 .y_offset = -1,
861 .model_string = "Pinnacle Studio PCTV USB (SECAM)",
862 },
863 [PINNA_PCTV_USB_PAL_FM] = {
864 .interface = -1,
865 .codec = CODEC_SAA7111,
866 .video_channels = 3,
867 .video_norm = V4L2_STD_PAL,
868 .audio_channels = 1,
869 .radio = 1,
870 .vbi = 1,
871 .tuner = 1,
872 .tuner_type = TUNER_PHILIPS_PAL,
873 .x_offset = 128,
874 .y_offset = 23,
875 .model_string = "Pinnacle Studio PCTV USB (PAL) FM",
876 },
877 [MIRO_PCTV_USB] = {
878 .interface = -1,
879 .codec = CODEC_SAA7111,
880 .video_channels = 3,
881 .video_norm = V4L2_STD_PAL,
882 .audio_channels = 1,
883 .radio = 0,
884 .vbi = 1,
885 .tuner = 1,
886 .tuner_type = TUNER_PHILIPS_PAL,
887 .x_offset = -1,
888 .y_offset = -1,
889 .model_string = "Miro PCTV USB",
890 },
891 [PINNA_PCTV_USB_NTSC_FM] = {
892 .interface = -1,
893 .codec = CODEC_SAA7111,
894 .video_channels = 3,
895 .video_norm = V4L2_STD_NTSC,
896 .audio_channels = 1,
897 .radio = 1,
898 .vbi = 1,
899 .tuner = 1,
900 .tuner_type = TUNER_PHILIPS_NTSC_M,
901 .x_offset = -1,
902 .y_offset = -1,
903 .model_string = "Pinnacle Studio PCTV USB (NTSC) FM",
904 },
905 [PINNA_PCTV_USB_NTSC_FM_V3] = {
906 .interface = -1,
907 .codec = CODEC_SAA7111,
908 .video_channels = 3,
909 .video_norm = V4L2_STD_NTSC,
910 .audio_channels = 1,
911 .radio = 1,
912 .vbi = 1,
913 .tuner = 1,
914 .tuner_type = TUNER_PHILIPS_NTSC_M,
915 .x_offset = -1,
916 .y_offset = -1,
917 .model_string = "Pinnacle Studio PCTV USB (NTSC) FM V3",
918 },
919 [PINNA_PCTV_USB_PAL_FM_V2] = {
920 .interface = -1,
921 .codec = CODEC_SAA7113,
922 .video_channels = 3,
923 .video_norm = V4L2_STD_PAL,
924 .audio_channels = 1,
925 .radio = 1,
926 .vbi = 1,
927 .tuner = 1,
928 .tuner_type = TUNER_TEMIC_4009FR5_PAL,
929 .x_offset = 0,
930 .y_offset = 3,
931 .dvi_yuv_override = 1,
932 .dvi_yuv = 7,
933 .model_string = "Pinnacle Studio PCTV USB (PAL) FM V2",
934 },
935 [PINNA_PCTV_USB_NTSC_FM_V2] = {
936 .interface = -1,
937 .codec = CODEC_SAA7111,
938 .video_channels = 3,
939 .video_norm = V4L2_STD_NTSC,
940 .audio_channels = 1,
941 .radio = 1,
942 .vbi = 1,
943 .tuner = 1,
944 .tuner_type = TUNER_TEMIC_4039FR5_NTSC,
945 .x_offset = 0,
946 .y_offset = 3,
947 .dvi_yuv_override = 1,
948 .dvi_yuv = 7,
949 .model_string = "Pinnacle Studio PCTV USB (NTSC) FM V2",
950 },
951 [PINNA_PCTV_USB_PAL_FM_V3] = {
952 .interface = -1,
953 .codec = CODEC_SAA7113,
954 .video_channels = 3,
955 .video_norm = V4L2_STD_PAL,
956 .audio_channels = 1,
957 .radio = 1,
958 .vbi = 1,
959 .tuner = 1,
960 .tuner_type = TUNER_TEMIC_4009FR5_PAL,
961 .x_offset = 0,
962 .y_offset = 3,
963 .dvi_yuv_override = 1,
964 .dvi_yuv = 7,
965 .model_string = "Pinnacle Studio PCTV USB (PAL) FM V3",
966 },
967 [PINNA_LINX_VD_IN_CAB_NTSC] = {
968 .interface = -1,
969 .codec = CODEC_SAA7113,
970 .video_channels = 2,
971 .video_norm = V4L2_STD_NTSC,
972 .audio_channels = 1,
973 .radio = 0,
974 .vbi = 1,
975 .tuner = 0,
976 .tuner_type = 0,
977 .x_offset = 0,
978 .y_offset = 3,
979 .dvi_yuv_override = 1,
980 .dvi_yuv = 7,
981 .model_string = "Pinnacle Studio Linx Video input cable (NTSC)",
982 },
983 [PINNA_LINX_VD_IN_CAB_PAL] = {
984 .interface = -1,
985 .codec = CODEC_SAA7113,
986 .video_channels = 2,
987 .video_norm = V4L2_STD_PAL,
988 .audio_channels = 1,
989 .radio = 0,
990 .vbi = 1,
991 .tuner = 0,
992 .tuner_type = 0,
993 .x_offset = 0,
994 .y_offset = 3,
995 .dvi_yuv_override = 1,
996 .dvi_yuv = 7,
997 .model_string = "Pinnacle Studio Linx Video input cable (PAL)",
998 },
999 [PINNA_PCTV_BUNGEE_PAL_FM] = {
1000 .interface = -1,
1001 .codec = CODEC_SAA7113,
1002 .video_channels = 3,
1003 .video_norm = V4L2_STD_PAL,
1004 .audio_channels = 1,
1005 .radio = 1,
1006 .vbi = 1,
1007 .tuner = 1,
1008 .tuner_type = TUNER_TEMIC_4009FR5_PAL,
1009 .x_offset = 0,
1010 .y_offset = 3,
1011 .dvi_yuv_override = 1,
1012 .dvi_yuv = 7,
1013 .model_string = "Pinnacle PCTV Bungee USB (PAL) FM",
1014 },
1015 [HPG_WINTV] = {
1016 .interface = -1,
1017 .codec = CODEC_SAA7111,
1018 .video_channels = 3,
1019 .video_norm = V4L2_STD_NTSC,
1020 .audio_channels = 1,
1021 .radio = 0,
1022 .vbi = 1,
1023 .tuner = 1,
1024 .tuner_type = TUNER_PHILIPS_NTSC_M,
1025 .x_offset = -1,
1026 .y_offset = -1,
1027 .model_string = "Hauppauge WinTv-USB",
1028 },
1029 [MICROCAM_NTSC] = {
1030 .interface = -1,
1031 .codec = CODEC_WEBCAM,
1032 .video_channels = 1,
1033 .video_norm = V4L2_STD_NTSC,
1034 .audio_channels = 0,
1035 .radio = 0,
1036 .vbi = 0,
1037 .tuner = 0,
1038 .tuner_type = 0,
1039 .x_offset = 71,
1040 .y_offset = 15,
1041 .model_string = "Nogatech USB MicroCam NTSC (NV3000N)",
1042 },
1043 [MICROCAM_PAL] = {
1044 .interface = -1,
1045 .codec = CODEC_WEBCAM,
1046 .video_channels = 1,
1047 .video_norm = V4L2_STD_PAL,
1048 .audio_channels = 0,
1049 .radio = 0,
1050 .vbi = 0,
1051 .tuner = 0,
1052 .tuner_type = 0,
1053 .x_offset = 71,
1054 .y_offset = 18,
1055 .model_string = "Nogatech USB MicroCam PAL (NV3001P)",
1056 },
1057 };
1058 const int usbvision_device_data_size = ARRAY_SIZE(usbvision_device_data);
1059
1060 /* Supported Devices */
1061
1062 struct usb_device_id usbvision_table[] = {
1063 { USB_DEVICE(0x0a6f, 0x0400), .driver_info = XANBOO },
1064 { USB_DEVICE(0x050d, 0x0106), .driver_info = BELKIN_VIDEOBUS_II },
1065 { USB_DEVICE(0x050d, 0x0207), .driver_info = BELKIN_VIDEOBUS },
1066 { USB_DEVICE(0x050d, 0x0208), .driver_info = BELKIN_USB_VIDEOBUS_II },
1067 { USB_DEVICE(0x0571, 0x0002), .driver_info = ECHOFX_INTERVIEW_LITE },
1068 { USB_DEVICE(0x0573, 0x0003), .driver_info = USBGEAR_USBG_V1 },
1069 { USB_DEVICE(0x0573, 0x0400), .driver_info = D_LINK_V100 },
1070 { USB_DEVICE(0x0573, 0x2000), .driver_info = X10_USB_CAMERA },
1071 { USB_DEVICE(0x0573, 0x2d00), .driver_info = HPG_WINTV_LIVE_PAL_BG },
1072 { USB_DEVICE(0x0573, 0x2d01), .driver_info = HPG_WINTV_LIVE_PRO_NTSC_MN },
1073 { USB_DEVICE(0x0573, 0x2101), .driver_info = ZORAN_PMD_NOGATECH },
1074 { USB_DEVICE(0x0573, 0x3000), .driver_info = MICROCAM_NTSC },
1075 { USB_DEVICE(0x0573, 0x3001), .driver_info = MICROCAM_PAL },
1076 { USB_DEVICE(0x0573, 0x4100), .driver_info = NOGATECH_USB_TV_NTSC_FM },
1077 { USB_DEVICE(0x0573, 0x4110), .driver_info = PNY_USB_TV_NTSC_FM },
1078 { USB_DEVICE(0x0573, 0x4450), .driver_info = PV_PLAYTV_USB_PRO_PAL_FM },
1079 { USB_DEVICE(0x0573, 0x4550), .driver_info = ZT_721 },
1080 { USB_DEVICE(0x0573, 0x4d00), .driver_info = HPG_WINTV_NTSC_MN },
1081 { USB_DEVICE(0x0573, 0x4d01), .driver_info = HPG_WINTV_PAL_BG },
1082 { USB_DEVICE(0x0573, 0x4d02), .driver_info = HPG_WINTV_PAL_I },
1083 { USB_DEVICE(0x0573, 0x4d03), .driver_info = HPG_WINTV_PAL_SECAM_L },
1084 { USB_DEVICE(0x0573, 0x4d04), .driver_info = HPG_WINTV_PAL_D_K },
1085 { USB_DEVICE(0x0573, 0x4d10), .driver_info = HPG_WINTV_NTSC_FM },
1086 { USB_DEVICE(0x0573, 0x4d11), .driver_info = HPG_WINTV_PAL_BG_FM },
1087 { USB_DEVICE(0x0573, 0x4d12), .driver_info = HPG_WINTV_PAL_I_FM },
1088 { USB_DEVICE(0x0573, 0x4d14), .driver_info = HPG_WINTV_PAL_D_K_FM },
1089 { USB_DEVICE(0x0573, 0x4d2a), .driver_info = HPG_WINTV_PRO_NTSC_MN },
1090 { USB_DEVICE(0x0573, 0x4d2b), .driver_info = HPG_WINTV_PRO_NTSC_MN_V2 },
1091 { USB_DEVICE(0x0573, 0x4d2c), .driver_info = HPG_WINTV_PRO_PAL },
1092 { USB_DEVICE(0x0573, 0x4d20), .driver_info = HPG_WINTV_PRO_NTSC_MN_V3 },
1093 { USB_DEVICE(0x0573, 0x4d21), .driver_info = HPG_WINTV_PRO_PAL_BG },
1094 { USB_DEVICE(0x0573, 0x4d22), .driver_info = HPG_WINTV_PRO_PAL_I },
1095 { USB_DEVICE(0x0573, 0x4d23), .driver_info = HPG_WINTV_PRO_PAL_SECAM_L },
1096 { USB_DEVICE(0x0573, 0x4d24), .driver_info = HPG_WINTV_PRO_PAL_D_K },
1097 { USB_DEVICE(0x0573, 0x4d25), .driver_info = HPG_WINTV_PRO_PAL_SECAM },
1098 { USB_DEVICE(0x0573, 0x4d26), .driver_info = HPG_WINTV_PRO_PAL_SECAM_V2 },
1099 { USB_DEVICE(0x0573, 0x4d27), .driver_info = HPG_WINTV_PRO_PAL_BG_V2 },
1100 { USB_DEVICE(0x0573, 0x4d28), .driver_info = HPG_WINTV_PRO_PAL_BG_D_K },
1101 { USB_DEVICE(0x0573, 0x4d29), .driver_info = HPG_WINTV_PRO_PAL_I_D_K },
1102 { USB_DEVICE(0x0573, 0x4d30), .driver_info = HPG_WINTV_PRO_NTSC_MN_FM },
1103 { USB_DEVICE(0x0573, 0x4d31), .driver_info = HPG_WINTV_PRO_PAL_BG_FM },
1104 { USB_DEVICE(0x0573, 0x4d32), .driver_info = HPG_WINTV_PRO_PAL_I_FM },
1105 { USB_DEVICE(0x0573, 0x4d34), .driver_info = HPG_WINTV_PRO_PAL_D_K_FM },
1106 { USB_DEVICE(0x0573, 0x4d35), .driver_info = HPG_WINTV_PRO_TEMIC_PAL_FM },
1107 { USB_DEVICE(0x0573, 0x4d36), .driver_info = HPG_WINTV_PRO_TEMIC_PAL_BG_FM },
1108 { USB_DEVICE(0x0573, 0x4d37), .driver_info = HPG_WINTV_PRO_PAL_FM },
1109 { USB_DEVICE(0x0573, 0x4d38), .driver_info = HPG_WINTV_PRO_NTSC_MN_FM_V2 },
1110 { USB_DEVICE(0x0768, 0x0006), .driver_info = CAMTEL_TVB330 },
1111 { USB_DEVICE(0x07d0, 0x0001), .driver_info = DIGITAL_VIDEO_CREATOR_I },
1112 { USB_DEVICE(0x07d0, 0x0002), .driver_info = GLOBAL_VILLAGE_GV_007_NTSC },
1113 { USB_DEVICE(0x07d0, 0x0003), .driver_info = DAZZLE_DVC_50_REV_1_NTSC },
1114 { USB_DEVICE(0x07d0, 0x0004), .driver_info = DAZZLE_DVC_80_REV_1_PAL },
1115 { USB_DEVICE(0x07d0, 0x0005), .driver_info = DAZZLE_DVC_90_REV_1_SECAM },
1116 { USB_DEVICE(0x07f8, 0x9104), .driver_info = ESKAPE_LABS_MYTV2GO },
1117 { USB_DEVICE(0x2304, 0x010d), .driver_info = PINNA_PCTV_USB_PAL },
1118 { USB_DEVICE(0x2304, 0x0109), .driver_info = PINNA_PCTV_USB_SECAM },
1119 { USB_DEVICE(0x2304, 0x0110), .driver_info = PINNA_PCTV_USB_PAL_FM },
1120 { USB_DEVICE(0x2304, 0x0111), .driver_info = MIRO_PCTV_USB },
1121 { USB_DEVICE(0x2304, 0x0112), .driver_info = PINNA_PCTV_USB_NTSC_FM },
1122 { USB_DEVICE(0x2304, 0x0113), .driver_info = PINNA_PCTV_USB_NTSC_FM_V3 },
1123 { USB_DEVICE(0x2304, 0x0210), .driver_info = PINNA_PCTV_USB_PAL_FM_V2 },
1124 { USB_DEVICE(0x2304, 0x0212), .driver_info = PINNA_PCTV_USB_NTSC_FM_V2 },
1125 { USB_DEVICE(0x2304, 0x0214), .driver_info = PINNA_PCTV_USB_PAL_FM_V3 },
1126 { USB_DEVICE(0x2304, 0x0300), .driver_info = PINNA_LINX_VD_IN_CAB_NTSC },
1127 { USB_DEVICE(0x2304, 0x0301), .driver_info = PINNA_LINX_VD_IN_CAB_PAL },
1128 { USB_DEVICE(0x2304, 0x0419), .driver_info = PINNA_PCTV_BUNGEE_PAL_FM },
1129 { USB_DEVICE(0x2400, 0x4200), .driver_info = HPG_WINTV },
1130 { }, /* terminate list */
1131 };
1132
1133 MODULE_DEVICE_TABLE(usb, usbvision_table);