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