aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/bt8xx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/bt8xx')
-rw-r--r--drivers/media/video/bt8xx/bttv-cards.c442
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c34
-rw-r--r--drivers/media/video/bt8xx/bttv-input.c2
-rw-r--r--drivers/media/video/bt8xx/bttv.h2
-rw-r--r--drivers/media/video/bt8xx/bttvp.h2
5 files changed, 280 insertions, 202 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index 6b31e50fb951..2aea09c72093 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -178,8 +178,8 @@ static struct CARD {
178 /* this seems to happen as well ... */ 178 /* this seems to happen as well ... */
179 { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" }, 179 { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
180 180
181 { 0x3000121a, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, 181 { 0x3000121a, BTTV_BOARD_VOODOOTV_200, "3Dfx VoodooTV 200" },
182 { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, 182 { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM" },
183 { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" }, 183 { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" },
184 184
185 { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" }, 185 { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
@@ -313,6 +313,7 @@ static struct CARD {
313 { 0xdb1118ac, BTTV_BOARD_DVICO_DVBT_LITE, "Ultraview DVB-T Lite" }, 313 { 0xdb1118ac, BTTV_BOARD_DVICO_DVBT_LITE, "Ultraview DVB-T Lite" },
314 { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" }, 314 { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" },
315 { 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "}, 315 { 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "},
316 { 0xd200dbc0, BTTV_BOARD_DVICO_FUSIONHDTV_2, "DViCO FusionHDTV 2" },
316 317
317 { 0, -1, NULL } 318 { 0, -1, NULL }
318}; 319};
@@ -329,7 +330,7 @@ struct tvcard bttv_tvcards[] = {
329 .tuner = 0, 330 .tuner = 0,
330 .svhs = 2, 331 .svhs = 2,
331 .muxsel = { 2, 3, 1, 0 }, 332 .muxsel = { 2, 3, 1, 0 },
332 .tuner_type = -1, 333 .tuner_type = UNSET,
333 .tuner_addr = ADDR_UNSET, 334 .tuner_addr = ADDR_UNSET,
334 .radio_addr = ADDR_UNSET, 335 .radio_addr = ADDR_UNSET,
335 }, 336 },
@@ -344,7 +345,7 @@ struct tvcard bttv_tvcards[] = {
344 .gpiomux = { 2, 0, 0, 0 }, 345 .gpiomux = { 2, 0, 0, 0 },
345 .gpiomute = 10, 346 .gpiomute = 10,
346 .needs_tvaudio = 1, 347 .needs_tvaudio = 1,
347 .tuner_type = -1, 348 .tuner_type = UNSET,
348 .tuner_addr = ADDR_UNSET, 349 .tuner_addr = ADDR_UNSET,
349 .radio_addr = ADDR_UNSET, 350 .radio_addr = ADDR_UNSET,
350 }, 351 },
@@ -359,7 +360,7 @@ struct tvcard bttv_tvcards[] = {
359 .gpiomux = { 0, 1, 2, 3 }, 360 .gpiomux = { 0, 1, 2, 3 },
360 .gpiomute = 4, 361 .gpiomute = 4,
361 .needs_tvaudio = 1, 362 .needs_tvaudio = 1,
362 .tuner_type = -1, 363 .tuner_type = UNSET,
363 .tuner_addr = ADDR_UNSET, 364 .tuner_addr = ADDR_UNSET,
364 .radio_addr = ADDR_UNSET, 365 .radio_addr = ADDR_UNSET,
365 }, 366 },
@@ -387,13 +388,13 @@ struct tvcard bttv_tvcards[] = {
387 .name = "Intel Create and Share PCI/ Smart Video Recorder III", 388 .name = "Intel Create and Share PCI/ Smart Video Recorder III",
388 .video_inputs = 4, 389 .video_inputs = 4,
389 .audio_inputs = 0, 390 .audio_inputs = 0,
390 .tuner = -1, 391 .tuner = UNSET,
391 .svhs = 2, 392 .svhs = 2,
392 .gpiomask = 0, 393 .gpiomask = 0,
393 .muxsel = { 2, 3, 1, 1 }, 394 .muxsel = { 2, 3, 1, 1 },
394 .gpiomux = { 0 }, 395 .gpiomux = { 0 },
395 .needs_tvaudio = 0, 396 .needs_tvaudio = 0,
396 .tuner_type = 4, 397 .tuner_type = TUNER_ABSENT,
397 .tuner_addr = ADDR_UNSET, 398 .tuner_addr = ADDR_UNSET,
398 .radio_addr = ADDR_UNSET, 399 .radio_addr = ADDR_UNSET,
399 }, 400 },
@@ -408,7 +409,7 @@ struct tvcard bttv_tvcards[] = {
408 .gpiomux = { 0, 1, 0, 1 }, 409 .gpiomux = { 0, 1, 0, 1 },
409 .gpiomute = 3, 410 .gpiomute = 3,
410 .needs_tvaudio = 1, 411 .needs_tvaudio = 1,
411 .tuner_type = -1, 412 .tuner_type = UNSET,
412 .tuner_addr = ADDR_UNSET, 413 .tuner_addr = ADDR_UNSET,
413 .radio_addr = ADDR_UNSET, 414 .radio_addr = ADDR_UNSET,
414 }, 415 },
@@ -423,7 +424,7 @@ struct tvcard bttv_tvcards[] = {
423 .gpiomux = { 0x0c, 0x04, 0x08, 0x04 }, 424 .gpiomux = { 0x0c, 0x04, 0x08, 0x04 },
424 /* 0x04 for some cards ?? */ 425 /* 0x04 for some cards ?? */
425 .needs_tvaudio = 1, 426 .needs_tvaudio = 1,
426 .tuner_type = -1, 427 .tuner_type = UNSET,
427 .tuner_addr = ADDR_UNSET, 428 .tuner_addr = ADDR_UNSET,
428 .radio_addr = ADDR_UNSET, 429 .radio_addr = ADDR_UNSET,
429 .audio_hook = avermedia_tvphone_audio, 430 .audio_hook = avermedia_tvphone_audio,
@@ -433,13 +434,13 @@ struct tvcard bttv_tvcards[] = {
433 .name = "MATRIX-Vision MV-Delta", 434 .name = "MATRIX-Vision MV-Delta",
434 .video_inputs = 5, 435 .video_inputs = 5,
435 .audio_inputs = 1, 436 .audio_inputs = 1,
436 .tuner = -1, 437 .tuner = UNSET,
437 .svhs = 3, 438 .svhs = 3,
438 .gpiomask = 0, 439 .gpiomask = 0,
439 .muxsel = { 2, 3, 1, 0, 0 }, 440 .muxsel = { 2, 3, 1, 0, 0 },
440 .gpiomux = { 0 }, 441 .gpiomux = { 0 },
441 .needs_tvaudio = 1, 442 .needs_tvaudio = 1,
442 .tuner_type = -1, 443 .tuner_type = UNSET,
443 .tuner_addr = ADDR_UNSET, 444 .tuner_addr = ADDR_UNSET,
444 .radio_addr = ADDR_UNSET, 445 .radio_addr = ADDR_UNSET,
445 }, 446 },
@@ -457,7 +458,7 @@ struct tvcard bttv_tvcards[] = {
457 .gpiomute = 0xc00, 458 .gpiomute = 0xc00,
458 .needs_tvaudio = 1, 459 .needs_tvaudio = 1,
459 .pll = PLL_28, 460 .pll = PLL_28,
460 .tuner_type = -1, 461 .tuner_type = UNSET,
461 .tuner_addr = ADDR_UNSET, 462 .tuner_addr = ADDR_UNSET,
462 .radio_addr = ADDR_UNSET, 463 .radio_addr = ADDR_UNSET,
463 }, 464 },
@@ -488,7 +489,7 @@ struct tvcard bttv_tvcards[] = {
488 .gpiomute = 4, 489 .gpiomute = 4,
489 .needs_tvaudio = 1, 490 .needs_tvaudio = 1,
490 .pll = PLL_28, 491 .pll = PLL_28,
491 .tuner_type = -1, 492 .tuner_type = UNSET,
492 .tuner_addr = ADDR_UNSET, 493 .tuner_addr = ADDR_UNSET,
493 .radio_addr = ADDR_UNSET, 494 .radio_addr = ADDR_UNSET,
494 }, 495 },
@@ -503,7 +504,7 @@ struct tvcard bttv_tvcards[] = {
503 .gpiomux = { 0x20001,0x10001, 0, 0 }, 504 .gpiomux = { 0x20001,0x10001, 0, 0 },
504 .gpiomute = 10, 505 .gpiomute = 10,
505 .needs_tvaudio = 1, 506 .needs_tvaudio = 1,
506 .tuner_type = -1, 507 .tuner_type = UNSET,
507 .tuner_addr = ADDR_UNSET, 508 .tuner_addr = ADDR_UNSET,
508 .radio_addr = ADDR_UNSET, 509 .radio_addr = ADDR_UNSET,
509 }, 510 },
@@ -519,7 +520,7 @@ struct tvcard bttv_tvcards[] = {
519 .muxsel = { 2, 3, 1, 1 }, 520 .muxsel = { 2, 3, 1, 1 },
520 .gpiomux = { 13, 14, 11, 7 }, 521 .gpiomux = { 13, 14, 11, 7 },
521 .needs_tvaudio = 1, 522 .needs_tvaudio = 1,
522 .tuner_type = -1, 523 .tuner_type = UNSET,
523 .tuner_addr = ADDR_UNSET, 524 .tuner_addr = ADDR_UNSET,
524 .radio_addr = ADDR_UNSET, 525 .radio_addr = ADDR_UNSET,
525 }, 526 },
@@ -553,7 +554,7 @@ struct tvcard bttv_tvcards[] = {
553 .gpiomute = 4, 554 .gpiomute = 4,
554 .needs_tvaudio = 1, 555 .needs_tvaudio = 1,
555 .pll = PLL_28, 556 .pll = PLL_28,
556 .tuner_type = -1, 557 .tuner_type = UNSET,
557 .tuner_addr = ADDR_UNSET, 558 .tuner_addr = ADDR_UNSET,
558 .radio_addr = ADDR_UNSET, 559 .radio_addr = ADDR_UNSET,
559 }, 560 },
@@ -568,7 +569,7 @@ struct tvcard bttv_tvcards[] = {
568 .gpiomux = { 0, 0, 1, 0 }, 569 .gpiomux = { 0, 0, 1, 0 },
569 .gpiomute = 10, 570 .gpiomute = 10,
570 .needs_tvaudio = 1, 571 .needs_tvaudio = 1,
571 .tuner_type = -1, 572 .tuner_type = UNSET,
572 .tuner_addr = ADDR_UNSET, 573 .tuner_addr = ADDR_UNSET,
573 .radio_addr = ADDR_UNSET, 574 .radio_addr = ADDR_UNSET,
574 }, 575 },
@@ -587,7 +588,7 @@ struct tvcard bttv_tvcards[] = {
587 .gpiomute = 0x002000, 588 .gpiomute = 0x002000,
588 .needs_tvaudio = 1, 589 .needs_tvaudio = 1,
589 .pll = PLL_28, 590 .pll = PLL_28,
590 .tuner_type = -1, 591 .tuner_type = UNSET,
591 }, 592 },
592 [BTTV_BOARD_WINVIEW_601] = { 593 [BTTV_BOARD_WINVIEW_601] = {
593 .name = "Leadtek WinView 601", 594 .name = "Leadtek WinView 601",
@@ -600,7 +601,7 @@ struct tvcard bttv_tvcards[] = {
600 .gpiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 }, 601 .gpiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 },
601 .gpiomute = 0xcfa007, 602 .gpiomute = 0xcfa007,
602 .needs_tvaudio = 1, 603 .needs_tvaudio = 1,
603 .tuner_type = -1, 604 .tuner_type = UNSET,
604 .tuner_addr = ADDR_UNSET, 605 .tuner_addr = ADDR_UNSET,
605 .radio_addr = ADDR_UNSET, 606 .radio_addr = ADDR_UNSET,
606 .audio_hook = winview_audio, 607 .audio_hook = winview_audio,
@@ -616,7 +617,7 @@ struct tvcard bttv_tvcards[] = {
616 .muxsel = { 2, 3, 1, 1 }, 617 .muxsel = { 2, 3, 1, 1 },
617 .gpiomux = { 1, 0, 0, 0 }, 618 .gpiomux = { 1, 0, 0, 0 },
618 .needs_tvaudio = 1, 619 .needs_tvaudio = 1,
619 .tuner_type = -1, 620 .tuner_type = UNSET,
620 .tuner_addr = ADDR_UNSET, 621 .tuner_addr = ADDR_UNSET,
621 .radio_addr = ADDR_UNSET, 622 .radio_addr = ADDR_UNSET,
622 }, 623 },
@@ -624,13 +625,13 @@ struct tvcard bttv_tvcards[] = {
624 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", 625 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
625 .video_inputs = 4, 626 .video_inputs = 4,
626 .audio_inputs = 1, 627 .audio_inputs = 1,
627 .tuner = -1, 628 .tuner = UNSET,
628 .svhs = -1, 629 .svhs = UNSET,
629 .gpiomask = 0x8dff00, 630 .gpiomask = 0x8dff00,
630 .muxsel = { 2, 3, 1, 1 }, 631 .muxsel = { 2, 3, 1, 1 },
631 .gpiomux = { 0 }, 632 .gpiomux = { 0 },
632 .no_msp34xx = 1, 633 .no_msp34xx = 1,
633 .tuner_type = -1, 634 .tuner_type = UNSET,
634 .tuner_addr = ADDR_UNSET, 635 .tuner_addr = ADDR_UNSET,
635 .radio_addr = ADDR_UNSET, 636 .radio_addr = ADDR_UNSET,
636 }, 637 },
@@ -643,7 +644,7 @@ struct tvcard bttv_tvcards[] = {
643 .tuner = 0, 644 .tuner = 0,
644 .svhs = 2, 645 .svhs = 2,
645 .muxsel = { 2, 3, 1, 1 }, 646 .muxsel = { 2, 3, 1, 1 },
646 .tuner_type = -1, 647 .tuner_type = UNSET,
647 .tuner_addr = ADDR_UNSET, 648 .tuner_addr = ADDR_UNSET,
648 .radio_addr = ADDR_UNSET, 649 .radio_addr = ADDR_UNSET,
649 }, 650 },
@@ -674,7 +675,7 @@ struct tvcard bttv_tvcards[] = {
674 .gpiomute = 0xc00, 675 .gpiomute = 0xc00,
675 .needs_tvaudio = 1, 676 .needs_tvaudio = 1,
676 .pll = PLL_28, 677 .pll = PLL_28,
677 .tuner_type = -1, 678 .tuner_type = UNSET,
678 .tuner_addr = ADDR_UNSET, 679 .tuner_addr = ADDR_UNSET,
679 .radio_addr = ADDR_UNSET, 680 .radio_addr = ADDR_UNSET,
680 }, 681 },
@@ -683,7 +684,7 @@ struct tvcard bttv_tvcards[] = {
683 .video_inputs = 3, 684 .video_inputs = 3,
684 .audio_inputs = 1, 685 .audio_inputs = 1,
685 .tuner = 0, 686 .tuner = 0,
686 .svhs = -1, 687 .svhs = UNSET,
687 .gpiomask = 7, 688 .gpiomask = 7,
688 .muxsel = { 2, 3, -1 }, 689 .muxsel = { 2, 3, -1 },
689 .digital_mode = DIGITAL_MODE_CAMERA, 690 .digital_mode = DIGITAL_MODE_CAMERA,
@@ -708,7 +709,7 @@ struct tvcard bttv_tvcards[] = {
708 .gpiomute = 0xc00, 709 .gpiomute = 0xc00,
709 .needs_tvaudio = 1, 710 .needs_tvaudio = 1,
710 .pll = PLL_28, 711 .pll = PLL_28,
711 .tuner_type = -1, 712 .tuner_type = UNSET,
712 .tuner_addr = ADDR_UNSET, 713 .tuner_addr = ADDR_UNSET,
713 .radio_addr = ADDR_UNSET, 714 .radio_addr = ADDR_UNSET,
714 .has_remote = 1, 715 .has_remote = 1,
@@ -740,7 +741,7 @@ struct tvcard bttv_tvcards[] = {
740 .gpiomux = { 0, 1, 2, 3 }, 741 .gpiomux = { 0, 1, 2, 3 },
741 .gpiomute = 4, 742 .gpiomute = 4,
742 .needs_tvaudio = 1, 743 .needs_tvaudio = 1,
743 .tuner_type = -1, 744 .tuner_type = UNSET,
744 .tuner_addr = ADDR_UNSET, 745 .tuner_addr = ADDR_UNSET,
745 .radio_addr = ADDR_UNSET, 746 .radio_addr = ADDR_UNSET,
746 }, 747 },
@@ -813,13 +814,13 @@ struct tvcard bttv_tvcards[] = {
813 .name = "Imagenation PXC200", 814 .name = "Imagenation PXC200",
814 .video_inputs = 5, 815 .video_inputs = 5,
815 .audio_inputs = 1, 816 .audio_inputs = 1,
816 .tuner = -1, 817 .tuner = UNSET,
817 .svhs = 1, /* was: 4 */ 818 .svhs = 1, /* was: 4 */
818 .gpiomask = 0, 819 .gpiomask = 0,
819 .muxsel = { 2, 3, 1, 0, 0}, 820 .muxsel = { 2, 3, 1, 0, 0},
820 .gpiomux = { 0 }, 821 .gpiomux = { 0 },
821 .needs_tvaudio = 1, 822 .needs_tvaudio = 1,
822 .tuner_type = -1, 823 .tuner_type = UNSET,
823 .tuner_addr = ADDR_UNSET, 824 .tuner_addr = ADDR_UNSET,
824 .radio_addr = ADDR_UNSET, 825 .radio_addr = ADDR_UNSET,
825 .muxsel_hook = PXC200_muxsel, 826 .muxsel_hook = PXC200_muxsel,
@@ -836,7 +837,7 @@ struct tvcard bttv_tvcards[] = {
836 .gpiomux = { 0, 0x0800, 0x1000, 0x1000 }, 837 .gpiomux = { 0, 0x0800, 0x1000, 0x1000 },
837 .gpiomute = 0x1800, 838 .gpiomute = 0x1800,
838 .pll = PLL_28, 839 .pll = PLL_28,
839 .tuner_type = -1, 840 .tuner_type = UNSET,
840 .tuner_addr = ADDR_UNSET, 841 .tuner_addr = ADDR_UNSET,
841 .radio_addr = ADDR_UNSET, 842 .radio_addr = ADDR_UNSET,
842 }, 843 },
@@ -860,13 +861,13 @@ struct tvcard bttv_tvcards[] = {
860 .name = "Intel Create and Share PCI/ Smart Video Recorder III", 861 .name = "Intel Create and Share PCI/ Smart Video Recorder III",
861 .video_inputs = 4, 862 .video_inputs = 4,
862 .audio_inputs = 0, 863 .audio_inputs = 0,
863 .tuner = -1, 864 .tuner = UNSET,
864 .svhs = 2, 865 .svhs = 2,
865 .gpiomask = 0, 866 .gpiomask = 0,
866 .muxsel = { 2, 3, 1, 1 }, 867 .muxsel = { 2, 3, 1, 1 },
867 .gpiomux = { 0 }, 868 .gpiomux = { 0 },
868 .needs_tvaudio = 0, 869 .needs_tvaudio = 0,
869 .tuner_type = 4, 870 .tuner_type = TUNER_ABSENT,
870 .tuner_addr = ADDR_UNSET, 871 .tuner_addr = ADDR_UNSET,
871 .radio_addr = ADDR_UNSET, 872 .radio_addr = ADDR_UNSET,
872 }, 873 },
@@ -911,7 +912,7 @@ struct tvcard bttv_tvcards[] = {
911 .needs_tvaudio = 0, 912 .needs_tvaudio = 0,
912 .pll = PLL_28, 913 .pll = PLL_28,
913 .has_radio = 1, 914 .has_radio = 1,
914 .tuner_type = 5, /* default for now, gpio reads BFFF06 for Pal bg+dk */ 915 .tuner_type = TUNER_PHILIPS_PAL, /* default for now, gpio reads BFFF06 for Pal bg+dk */
915 .tuner_addr = ADDR_UNSET, 916 .tuner_addr = ADDR_UNSET,
916 .radio_addr = ADDR_UNSET, 917 .radio_addr = ADDR_UNSET,
917 .audio_hook = winfast2000_audio, 918 .audio_hook = winfast2000_audio,
@@ -928,7 +929,7 @@ struct tvcard bttv_tvcards[] = {
928 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 929 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
929 .gpiomute = 0x1800, 930 .gpiomute = 0x1800,
930 .pll = PLL_28, 931 .pll = PLL_28,
931 .tuner_type = -1, 932 .tuner_type = UNSET,
932 .tuner_addr = ADDR_UNSET, 933 .tuner_addr = ADDR_UNSET,
933 .radio_addr = ADDR_UNSET, 934 .radio_addr = ADDR_UNSET,
934 }, 935 },
@@ -945,7 +946,7 @@ struct tvcard bttv_tvcards[] = {
945 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 946 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
946 .gpiomute = 0x1800, 947 .gpiomute = 0x1800,
947 .pll = PLL_28, 948 .pll = PLL_28,
948 .tuner_type = -1, 949 .tuner_type = UNSET,
949 .tuner_addr = ADDR_UNSET, 950 .tuner_addr = ADDR_UNSET,
950 .radio_addr = ADDR_UNSET, 951 .radio_addr = ADDR_UNSET,
951 .has_radio = 1, 952 .has_radio = 1,
@@ -962,7 +963,7 @@ struct tvcard bttv_tvcards[] = {
962 .gpiomute = 0x29, 963 .gpiomute = 0x29,
963 .no_msp34xx = 1, 964 .no_msp34xx = 1,
964 .pll = PLL_28, 965 .pll = PLL_28,
965 .tuner_type = -1, 966 .tuner_type = UNSET,
966 .tuner_addr = ADDR_UNSET, 967 .tuner_addr = ADDR_UNSET,
967 .radio_addr = ADDR_UNSET, 968 .radio_addr = ADDR_UNSET,
968 }, 969 },
@@ -978,7 +979,7 @@ struct tvcard bttv_tvcards[] = {
978 .gpiomute = 0x551c00, 979 .gpiomute = 0x551c00,
979 .needs_tvaudio = 1, 980 .needs_tvaudio = 1,
980 .pll = PLL_28, 981 .pll = PLL_28,
981 .tuner_type = 1, 982 .tuner_type = TUNER_PHILIPS_PAL_I,
982 .tuner_addr = ADDR_UNSET, 983 .tuner_addr = ADDR_UNSET,
983 .radio_addr = ADDR_UNSET, 984 .radio_addr = ADDR_UNSET,
984 .has_remote = 1, 985 .has_remote = 1,
@@ -995,7 +996,7 @@ struct tvcard bttv_tvcards[] = {
995 .gpiomute = 1, 996 .gpiomute = 1,
996 .needs_tvaudio = 0, 997 .needs_tvaudio = 0,
997 .pll = PLL_28, 998 .pll = PLL_28,
998 .tuner_type = -1, 999 .tuner_type = UNSET,
999 .tuner_addr = ADDR_UNSET, 1000 .tuner_addr = ADDR_UNSET,
1000 .radio_addr = ADDR_UNSET, 1001 .radio_addr = ADDR_UNSET,
1001 }, 1002 },
@@ -1030,7 +1031,7 @@ struct tvcard bttv_tvcards[] = {
1030 .gpiomux = { 13, 4, 11, 7 }, 1031 .gpiomux = { 13, 4, 11, 7 },
1031 .needs_tvaudio = 1, 1032 .needs_tvaudio = 1,
1032 .pll = PLL_28, 1033 .pll = PLL_28,
1033 .tuner_type = -1, 1034 .tuner_type = UNSET,
1034 .tuner_addr = ADDR_UNSET, 1035 .tuner_addr = ADDR_UNSET,
1035 .radio_addr = ADDR_UNSET, 1036 .radio_addr = ADDR_UNSET,
1036 .has_radio = 1, 1037 .has_radio = 1,
@@ -1048,7 +1049,7 @@ struct tvcard bttv_tvcards[] = {
1048 .needs_tvaudio = 1, 1049 .needs_tvaudio = 1,
1049 .no_msp34xx = 1, 1050 .no_msp34xx = 1,
1050 .pll = PLL_28, 1051 .pll = PLL_28,
1051 .tuner_type = 1, 1052 .tuner_type = TUNER_PHILIPS_PAL_I,
1052 .tuner_addr = ADDR_UNSET, 1053 .tuner_addr = ADDR_UNSET,
1053 .radio_addr = ADDR_UNSET, 1054 .radio_addr = ADDR_UNSET,
1054 }, 1055 },
@@ -1063,7 +1064,7 @@ struct tvcard bttv_tvcards[] = {
1063 .gpiomux = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 }, 1064 .gpiomux = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 },
1064 .gpiomute = 0xff3ffc, 1065 .gpiomute = 0xff3ffc,
1065 .no_msp34xx = 1, 1066 .no_msp34xx = 1,
1066 .tuner_type = -1, 1067 .tuner_type = UNSET,
1067 .tuner_addr = ADDR_UNSET, 1068 .tuner_addr = ADDR_UNSET,
1068 .radio_addr = ADDR_UNSET, 1069 .radio_addr = ADDR_UNSET,
1069 }, 1070 },
@@ -1074,14 +1075,14 @@ struct tvcard bttv_tvcards[] = {
1074 .video_inputs = 2, 1075 .video_inputs = 2,
1075 .audio_inputs = 1, 1076 .audio_inputs = 1,
1076 .tuner = 0, 1077 .tuner = 0,
1077 .svhs = -1, 1078 .svhs = UNSET,
1078 .gpiomask = 3, 1079 .gpiomask = 3,
1079 .muxsel = { 2, 3, 1, 1 }, 1080 .muxsel = { 2, 3, 1, 1 },
1080 .gpiomux = { 1, 1, 0, 2 }, 1081 .gpiomux = { 1, 1, 0, 2 },
1081 .gpiomute = 3, 1082 .gpiomute = 3,
1082 .no_msp34xx = 1, 1083 .no_msp34xx = 1,
1083 .pll = PLL_NONE, 1084 .pll = PLL_NONE,
1084 .tuner_type = -1, 1085 .tuner_type = UNSET,
1085 .tuner_addr = ADDR_UNSET, 1086 .tuner_addr = ADDR_UNSET,
1086 .radio_addr = ADDR_UNSET, 1087 .radio_addr = ADDR_UNSET,
1087 }, 1088 },
@@ -1089,14 +1090,14 @@ struct tvcard bttv_tvcards[] = {
1089 .name = "MATRIX-Vision MV-Delta 2", 1090 .name = "MATRIX-Vision MV-Delta 2",
1090 .video_inputs = 5, 1091 .video_inputs = 5,
1091 .audio_inputs = 1, 1092 .audio_inputs = 1,
1092 .tuner = -1, 1093 .tuner = UNSET,
1093 .svhs = 3, 1094 .svhs = 3,
1094 .gpiomask = 0, 1095 .gpiomask = 0,
1095 .muxsel = { 2, 3, 1, 0, 0 }, 1096 .muxsel = { 2, 3, 1, 0, 0 },
1096 .gpiomux = { 0 }, 1097 .gpiomux = { 0 },
1097 .no_msp34xx = 1, 1098 .no_msp34xx = 1,
1098 .pll = PLL_28, 1099 .pll = PLL_28,
1099 .tuner_type = -1, 1100 .tuner_type = UNSET,
1100 .tuner_addr = ADDR_UNSET, 1101 .tuner_addr = ADDR_UNSET,
1101 .radio_addr = ADDR_UNSET, 1102 .radio_addr = ADDR_UNSET,
1102 }, 1103 },
@@ -1112,7 +1113,7 @@ struct tvcard bttv_tvcards[] = {
1112 .gpiomute = 0xbcb03f, 1113 .gpiomute = 0xbcb03f,
1113 .no_msp34xx = 1, 1114 .no_msp34xx = 1,
1114 .pll = PLL_28, 1115 .pll = PLL_28,
1115 .tuner_type = 21, 1116 .tuner_type = TUNER_TEMIC_4039FR5_NTSC,
1116 .tuner_addr = ADDR_UNSET, 1117 .tuner_addr = ADDR_UNSET,
1117 .radio_addr = ADDR_UNSET, 1118 .radio_addr = ADDR_UNSET,
1118 }, 1119 },
@@ -1129,7 +1130,7 @@ struct tvcard bttv_tvcards[] = {
1129 .needs_tvaudio = 1, 1130 .needs_tvaudio = 1,
1130 .no_msp34xx = 1, 1131 .no_msp34xx = 1,
1131 .pll = PLL_35, 1132 .pll = PLL_35,
1132 .tuner_type = 1, 1133 .tuner_type = TUNER_PHILIPS_PAL_I,
1133 .tuner_addr = ADDR_UNSET, 1134 .tuner_addr = ADDR_UNSET,
1134 .radio_addr = ADDR_UNSET, 1135 .radio_addr = ADDR_UNSET,
1135 .has_radio = 1, 1136 .has_radio = 1,
@@ -1148,7 +1149,7 @@ struct tvcard bttv_tvcards[] = {
1148 .gpiomute = 1, 1149 .gpiomute = 1,
1149 .needs_tvaudio = 1, 1150 .needs_tvaudio = 1,
1150 .pll = PLL_28, 1151 .pll = PLL_28,
1151 .tuner_type = -1, 1152 .tuner_type = UNSET,
1152 .tuner_addr = ADDR_UNSET, 1153 .tuner_addr = ADDR_UNSET,
1153 .radio_addr = ADDR_UNSET, 1154 .radio_addr = ADDR_UNSET,
1154 }, 1155 },
@@ -1206,7 +1207,7 @@ struct tvcard bttv_tvcards[] = {
1206 .gpiomux = { 0, 1, 2, 3 }, 1207 .gpiomux = { 0, 1, 2, 3 },
1207 .gpiomute = 4, 1208 .gpiomute = 4,
1208 .pll = PLL_28, 1209 .pll = PLL_28,
1209 .tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */, 1210 .tuner_type = UNSET /* TUNER_ALPS_TMDH2_NTSC */,
1210 .tuner_addr = ADDR_UNSET, 1211 .tuner_addr = ADDR_UNSET,
1211 .radio_addr = ADDR_UNSET, 1212 .radio_addr = ADDR_UNSET,
1212 }, 1213 },
@@ -1234,7 +1235,7 @@ struct tvcard bttv_tvcards[] = {
1234 1= FM stereo Radio from Tuner */ 1235 1= FM stereo Radio from Tuner */
1235 .needs_tvaudio = 0, 1236 .needs_tvaudio = 0,
1236 .pll = PLL_28, 1237 .pll = PLL_28,
1237 .tuner_type = -1, 1238 .tuner_type = UNSET,
1238 .tuner_addr = ADDR_UNSET, 1239 .tuner_addr = ADDR_UNSET,
1239 .radio_addr = ADDR_UNSET, 1240 .radio_addr = ADDR_UNSET,
1240 }, 1241 },
@@ -1277,7 +1278,7 @@ struct tvcard bttv_tvcards[] = {
1277 0x0080: Tuner A2 SAP (second audio program = Zweikanalton) 1278 0x0080: Tuner A2 SAP (second audio program = Zweikanalton)
1278 0x0880: Tuner A2 stereo */ 1279 0x0880: Tuner A2 stereo */
1279 .pll = PLL_28, 1280 .pll = PLL_28,
1280 .tuner_type = -1, 1281 .tuner_type = UNSET,
1281 .tuner_addr = ADDR_UNSET, 1282 .tuner_addr = ADDR_UNSET,
1282 .radio_addr = ADDR_UNSET, 1283 .radio_addr = ADDR_UNSET,
1283 }, 1284 },
@@ -1313,7 +1314,7 @@ struct tvcard bttv_tvcards[] = {
1313 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 1314 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
1314 .gpiomute = 0x1800, 1315 .gpiomute = 0x1800,
1315 .pll = PLL_28, 1316 .pll = PLL_28,
1316 .tuner_type = 5, 1317 .tuner_type = TUNER_PHILIPS_PAL,
1317 .tuner_addr = ADDR_UNSET, 1318 .tuner_addr = ADDR_UNSET,
1318 .radio_addr = ADDR_UNSET, 1319 .radio_addr = ADDR_UNSET,
1319 }, 1320 },
@@ -1324,7 +1325,7 @@ struct tvcard bttv_tvcards[] = {
1324 .name = "GrandTec 'Grand Video Capture' (Bt848)", 1325 .name = "GrandTec 'Grand Video Capture' (Bt848)",
1325 .video_inputs = 2, 1326 .video_inputs = 2,
1326 .audio_inputs = 0, 1327 .audio_inputs = 0,
1327 .tuner = -1, 1328 .tuner = UNSET,
1328 .svhs = 1, 1329 .svhs = 1,
1329 .gpiomask = 0, 1330 .gpiomask = 0,
1330 .muxsel = { 3, 1 }, 1331 .muxsel = { 3, 1 },
@@ -1332,7 +1333,7 @@ struct tvcard bttv_tvcards[] = {
1332 .needs_tvaudio = 0, 1333 .needs_tvaudio = 0,
1333 .no_msp34xx = 1, 1334 .no_msp34xx = 1,
1334 .pll = PLL_35, 1335 .pll = PLL_35,
1335 .tuner_type = -1, 1336 .tuner_type = UNSET,
1336 .tuner_addr = ADDR_UNSET, 1337 .tuner_addr = ADDR_UNSET,
1337 .radio_addr = ADDR_UNSET, 1338 .radio_addr = ADDR_UNSET,
1338 }, 1339 },
@@ -1365,7 +1366,7 @@ struct tvcard bttv_tvcards[] = {
1365 .gpiomux = { 2, 0, 0, 0 }, 1366 .gpiomux = { 2, 0, 0, 0 },
1366 .gpiomute = 1, 1367 .gpiomute = 1,
1367 .pll = PLL_28, 1368 .pll = PLL_28,
1368 .tuner_type = 0, 1369 .tuner_type = TUNER_TEMIC_PAL,
1369 .tuner_addr = ADDR_UNSET, 1370 .tuner_addr = ADDR_UNSET,
1370 .radio_addr = ADDR_UNSET, 1371 .radio_addr = ADDR_UNSET,
1371 }, 1372 },
@@ -1377,7 +1378,7 @@ struct tvcard bttv_tvcards[] = {
1377 .video_inputs = 2, 1378 .video_inputs = 2,
1378 .audio_inputs = 2, 1379 .audio_inputs = 2,
1379 .tuner = 0, 1380 .tuner = 0,
1380 .svhs = -1, 1381 .svhs = UNSET,
1381 .gpiomask = 11, 1382 .gpiomask = 11,
1382 .muxsel = { 2, 3, 1, 1 }, 1383 .muxsel = { 2, 3, 1, 1 },
1383 .gpiomux = { 2, 0, 0, 1 }, 1384 .gpiomux = { 2, 0, 0, 1 },
@@ -1392,7 +1393,7 @@ struct tvcard bttv_tvcards[] = {
1392 .name = "AG Electronics GMV1", 1393 .name = "AG Electronics GMV1",
1393 .video_inputs = 2, 1394 .video_inputs = 2,
1394 .audio_inputs = 0, 1395 .audio_inputs = 0,
1395 .tuner = -1, 1396 .tuner = UNSET,
1396 .svhs = 1, 1397 .svhs = 1,
1397 .gpiomask = 0xF, 1398 .gpiomask = 0xF,
1398 .muxsel = { 2, 2 }, 1399 .muxsel = { 2, 2 },
@@ -1400,7 +1401,7 @@ struct tvcard bttv_tvcards[] = {
1400 .no_msp34xx = 1, 1401 .no_msp34xx = 1,
1401 .needs_tvaudio = 0, 1402 .needs_tvaudio = 0,
1402 .pll = PLL_28, 1403 .pll = PLL_28,
1403 .tuner_type = -1, 1404 .tuner_type = UNSET,
1404 .tuner_addr = ADDR_UNSET, 1405 .tuner_addr = ADDR_UNSET,
1405 .radio_addr = ADDR_UNSET, 1406 .radio_addr = ADDR_UNSET,
1406 }, 1407 },
@@ -1447,7 +1448,7 @@ struct tvcard bttv_tvcards[] = {
1447 .video_inputs = 2, 1448 .video_inputs = 2,
1448 .audio_inputs = 1, 1449 .audio_inputs = 1,
1449 .tuner = 0, 1450 .tuner = 0,
1450 .svhs = -1, 1451 .svhs = UNSET,
1451 .gpiomask = 1, 1452 .gpiomask = 1,
1452 .muxsel = { 2, 3, 0, 1 }, 1453 .muxsel = { 2, 3, 0, 1 },
1453 .gpiomux = { 0, 0, 1, 0 }, 1454 .gpiomux = { 0, 0, 1, 0 },
@@ -1476,7 +1477,7 @@ struct tvcard bttv_tvcards[] = {
1476 .no_tda9875 = 1, 1477 .no_tda9875 = 1,
1477 .needs_tvaudio = 1, 1478 .needs_tvaudio = 1,
1478 .pll = PLL_28, 1479 .pll = PLL_28,
1479 .tuner_type = 5, 1480 .tuner_type = TUNER_PHILIPS_PAL,
1480 .tuner_addr = ADDR_UNSET, 1481 .tuner_addr = ADDR_UNSET,
1481 .radio_addr = ADDR_UNSET, 1482 .radio_addr = ADDR_UNSET,
1482 }, 1483 },
@@ -1517,13 +1518,35 @@ struct tvcard bttv_tvcards[] = {
1517 1518
1518 /* ---- card 0x44 ---------------------------------- */ 1519 /* ---- card 0x44 ---------------------------------- */
1519 [BTTV_BOARD_VOODOOTV_FM] = { 1520 [BTTV_BOARD_VOODOOTV_FM] = {
1520 .name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)", 1521 .name = "3Dfx VoodooTV FM (Euro)",
1522 /* try "insmod msp3400 simple=0" if you have
1523 * sound problems with this card. */
1524 .video_inputs = 4,
1525 .audio_inputs = 1,
1526 .tuner = 0,
1527 .svhs = UNSET,
1528 .gpiomask = 0x4f8a00,
1529 /* 0x100000: 1=MSP enabled (0=disable again)
1530 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
1531 .gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
1532 .gpiomute = 0x947fff,
1533 /* tvtuner, radio, external,internal, mute, stereo
1534 * tuner, Composit, SVid, Composit-on-Svid-adapter */
1535 .muxsel = { 2, 3 ,0 ,1 },
1536 .tuner_type = TUNER_MT2032,
1537 .tuner_addr = ADDR_UNSET,
1538 .radio_addr = ADDR_UNSET,
1539 .pll = PLL_28,
1540 .has_radio = 1,
1541 },
1542 [BTTV_BOARD_VOODOOTV_200] = {
1543 .name = "VoodooTV 200 (USA)",
1521 /* try "insmod msp3400 simple=0" if you have 1544 /* try "insmod msp3400 simple=0" if you have
1522 * sound problems with this card. */ 1545 * sound problems with this card. */
1523 .video_inputs = 4, 1546 .video_inputs = 4,
1524 .audio_inputs = 1, 1547 .audio_inputs = 1,
1525 .tuner = 0, 1548 .tuner = 0,
1526 .svhs = -1, 1549 .svhs = UNSET,
1527 .gpiomask = 0x4f8a00, 1550 .gpiomask = 0x4f8a00,
1528 /* 0x100000: 1=MSP enabled (0=disable again) 1551 /* 0x100000: 1=MSP enabled (0=disable again)
1529 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */ 1552 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
@@ -1543,8 +1566,8 @@ struct tvcard bttv_tvcards[] = {
1543 .name = "Active Imaging AIMMS", 1566 .name = "Active Imaging AIMMS",
1544 .video_inputs = 1, 1567 .video_inputs = 1,
1545 .audio_inputs = 0, 1568 .audio_inputs = 0,
1546 .tuner = -1, 1569 .tuner = UNSET,
1547 .tuner_type = -1, 1570 .tuner_type = UNSET,
1548 .tuner_addr = ADDR_UNSET, 1571 .tuner_addr = ADDR_UNSET,
1549 .radio_addr = ADDR_UNSET, 1572 .radio_addr = ADDR_UNSET,
1550 .pll = PLL_28, 1573 .pll = PLL_28,
@@ -1564,7 +1587,7 @@ struct tvcard bttv_tvcards[] = {
1564 .gpiomute = 13, 1587 .gpiomute = 13,
1565 .needs_tvaudio = 1, 1588 .needs_tvaudio = 1,
1566 .pll = PLL_28, 1589 .pll = PLL_28,
1567 .tuner_type = 25, 1590 .tuner_type = TUNER_LG_PAL_I_FM,
1568 .tuner_addr = ADDR_UNSET, 1591 .tuner_addr = ADDR_UNSET,
1569 .radio_addr = ADDR_UNSET, 1592 .radio_addr = ADDR_UNSET,
1570 .has_remote = 1, 1593 .has_remote = 1,
@@ -1580,7 +1603,7 @@ struct tvcard bttv_tvcards[] = {
1580 .name = "Lifeview FlyVideo 98EZ (capture only) LR51", 1603 .name = "Lifeview FlyVideo 98EZ (capture only) LR51",
1581 .video_inputs = 4, 1604 .video_inputs = 4,
1582 .audio_inputs = 0, 1605 .audio_inputs = 0,
1583 .tuner = -1, 1606 .tuner = UNSET,
1584 .svhs = 2, 1607 .svhs = 2,
1585 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */ 1608 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */
1586 .pll = PLL_28, 1609 .pll = PLL_28,
@@ -1606,7 +1629,7 @@ struct tvcard bttv_tvcards[] = {
1606 .no_msp34xx = 1, 1629 .no_msp34xx = 1,
1607 .no_tda9875 = 1, 1630 .no_tda9875 = 1,
1608 .pll = PLL_28, 1631 .pll = PLL_28,
1609 .tuner_type = 5, 1632 .tuner_type = TUNER_PHILIPS_PAL,
1610 .tuner_addr = ADDR_UNSET, 1633 .tuner_addr = ADDR_UNSET,
1611 .radio_addr = ADDR_UNSET, 1634 .radio_addr = ADDR_UNSET,
1612 .audio_hook = pvbt878p9b_audio, /* Note: not all cards have stereo */ 1635 .audio_hook = pvbt878p9b_audio, /* Note: not all cards have stereo */
@@ -1626,13 +1649,13 @@ struct tvcard bttv_tvcards[] = {
1626 .name = "Sensoray 311", 1649 .name = "Sensoray 311",
1627 .video_inputs = 5, 1650 .video_inputs = 5,
1628 .audio_inputs = 0, 1651 .audio_inputs = 0,
1629 .tuner = -1, 1652 .tuner = UNSET,
1630 .svhs = 4, 1653 .svhs = 4,
1631 .gpiomask = 0, 1654 .gpiomask = 0,
1632 .muxsel = { 2, 3, 1, 0, 0 }, 1655 .muxsel = { 2, 3, 1, 0, 0 },
1633 .gpiomux = { 0 }, 1656 .gpiomux = { 0 },
1634 .needs_tvaudio = 0, 1657 .needs_tvaudio = 0,
1635 .tuner_type = -1, 1658 .tuner_type = UNSET,
1636 .tuner_addr = ADDR_UNSET, 1659 .tuner_addr = ADDR_UNSET,
1637 .radio_addr = ADDR_UNSET, 1660 .radio_addr = ADDR_UNSET,
1638 }, 1661 },
@@ -1641,15 +1664,15 @@ struct tvcard bttv_tvcards[] = {
1641 .name = "RemoteVision MX (RV605)", 1664 .name = "RemoteVision MX (RV605)",
1642 .video_inputs = 16, 1665 .video_inputs = 16,
1643 .audio_inputs = 0, 1666 .audio_inputs = 0,
1644 .tuner = -1, 1667 .tuner = UNSET,
1645 .svhs = -1, 1668 .svhs = UNSET,
1646 .gpiomask = 0x00, 1669 .gpiomask = 0x00,
1647 .gpiomask2 = 0x07ff, 1670 .gpiomask2 = 0x07ff,
1648 .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03, 1671 .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03,
1649 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 }, 1672 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 },
1650 .no_msp34xx = 1, 1673 .no_msp34xx = 1,
1651 .no_tda9875 = 1, 1674 .no_tda9875 = 1,
1652 .tuner_type = -1, 1675 .tuner_type = UNSET,
1653 .tuner_addr = ADDR_UNSET, 1676 .tuner_addr = ADDR_UNSET,
1654 .radio_addr = ADDR_UNSET, 1677 .radio_addr = ADDR_UNSET,
1655 .muxsel_hook = rv605_muxsel, 1678 .muxsel_hook = rv605_muxsel,
@@ -1693,15 +1716,15 @@ struct tvcard bttv_tvcards[] = {
1693 .name = "GrandTec Multi Capture Card (Bt878)", 1716 .name = "GrandTec Multi Capture Card (Bt878)",
1694 .video_inputs = 4, 1717 .video_inputs = 4,
1695 .audio_inputs = 0, 1718 .audio_inputs = 0,
1696 .tuner = -1, 1719 .tuner = UNSET,
1697 .svhs = -1, 1720 .svhs = UNSET,
1698 .gpiomask = 0, 1721 .gpiomask = 0,
1699 .muxsel = { 2, 3, 1, 0 }, 1722 .muxsel = { 2, 3, 1, 0 },
1700 .gpiomux = { 0 }, 1723 .gpiomux = { 0 },
1701 .needs_tvaudio = 0, 1724 .needs_tvaudio = 0,
1702 .no_msp34xx = 1, 1725 .no_msp34xx = 1,
1703 .pll = PLL_28, 1726 .pll = PLL_28,
1704 .tuner_type = -1, 1727 .tuner_type = UNSET,
1705 .tuner_addr = ADDR_UNSET, 1728 .tuner_addr = ADDR_UNSET,
1706 .radio_addr = ADDR_UNSET, 1729 .radio_addr = ADDR_UNSET,
1707 }, 1730 },
@@ -1724,7 +1747,7 @@ struct tvcard bttv_tvcards[] = {
1724 .needs_tvaudio = 0, 1747 .needs_tvaudio = 0,
1725 .no_msp34xx = 1, 1748 .no_msp34xx = 1,
1726 .pll = PLL_28, 1749 .pll = PLL_28,
1727 .tuner_type = 5, 1750 .tuner_type = TUNER_PHILIPS_PAL,
1728 .tuner_addr = ADDR_UNSET, 1751 .tuner_addr = ADDR_UNSET,
1729 .radio_addr = ADDR_UNSET, 1752 .radio_addr = ADDR_UNSET,
1730 /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and 1753 /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
@@ -1744,10 +1767,10 @@ struct tvcard bttv_tvcards[] = {
1744 /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */ 1767 /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */
1745 .name = "DSP Design TCVIDEO", 1768 .name = "DSP Design TCVIDEO",
1746 .video_inputs = 4, 1769 .video_inputs = 4,
1747 .svhs = -1, 1770 .svhs = UNSET,
1748 .muxsel = { 2, 3, 1, 0 }, 1771 .muxsel = { 2, 3, 1, 0 },
1749 .pll = PLL_28, 1772 .pll = PLL_28,
1750 .tuner_type = -1, 1773 .tuner_type = UNSET,
1751 .tuner_addr = ADDR_UNSET, 1774 .tuner_addr = ADDR_UNSET,
1752 .radio_addr = ADDR_UNSET, 1775 .radio_addr = ADDR_UNSET,
1753 }, 1776 },
@@ -1762,7 +1785,7 @@ struct tvcard bttv_tvcards[] = {
1762 .muxsel = { 2, 0, 1, 1 }, 1785 .muxsel = { 2, 0, 1, 1 },
1763 .needs_tvaudio = 1, 1786 .needs_tvaudio = 1,
1764 .pll = PLL_28, 1787 .pll = PLL_28,
1765 .tuner_type = -1, 1788 .tuner_type = UNSET,
1766 .tuner_addr = ADDR_UNSET, 1789 .tuner_addr = ADDR_UNSET,
1767 .radio_addr = ADDR_UNSET, 1790 .radio_addr = ADDR_UNSET,
1768 1791
@@ -1791,11 +1814,11 @@ struct tvcard bttv_tvcards[] = {
1791 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */ 1814 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
1792 .video_inputs = 4, /* id-inputs-clock */ 1815 .video_inputs = 4, /* id-inputs-clock */
1793 .audio_inputs = 0, 1816 .audio_inputs = 0,
1794 .tuner = -1, 1817 .tuner = UNSET,
1795 .svhs = 3, 1818 .svhs = 3,
1796 .muxsel = { 3, 2, 0, 1 }, 1819 .muxsel = { 3, 2, 0, 1 },
1797 .pll = PLL_28, 1820 .pll = PLL_28,
1798 .tuner_type = -1, 1821 .tuner_type = UNSET,
1799 .tuner_addr = ADDR_UNSET, 1822 .tuner_addr = ADDR_UNSET,
1800 .radio_addr = ADDR_UNSET, 1823 .radio_addr = ADDR_UNSET,
1801 .no_msp34xx = 1, 1824 .no_msp34xx = 1,
@@ -1806,11 +1829,11 @@ struct tvcard bttv_tvcards[] = {
1806 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */ 1829 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
1807 .video_inputs = 3, 1830 .video_inputs = 3,
1808 .audio_inputs = 0, 1831 .audio_inputs = 0,
1809 .tuner = -1, 1832 .tuner = UNSET,
1810 .svhs = 2, 1833 .svhs = 2,
1811 .muxsel = { 2, 3, 1 }, 1834 .muxsel = { 2, 3, 1 },
1812 .pll = PLL_28, 1835 .pll = PLL_28,
1813 .tuner_type = -1, 1836 .tuner_type = UNSET,
1814 .tuner_addr = ADDR_UNSET, 1837 .tuner_addr = ADDR_UNSET,
1815 .radio_addr = ADDR_UNSET, 1838 .radio_addr = ADDR_UNSET,
1816 .no_msp34xx = 1, 1839 .no_msp34xx = 1,
@@ -1823,11 +1846,11 @@ struct tvcard bttv_tvcards[] = {
1823 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */ 1846 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */
1824 .video_inputs = 2, 1847 .video_inputs = 2,
1825 .audio_inputs = 0, 1848 .audio_inputs = 0,
1826 .tuner = -1, 1849 .tuner = UNSET,
1827 .svhs = 1, 1850 .svhs = 1,
1828 .muxsel = { 3, 1 }, 1851 .muxsel = { 3, 1 },
1829 .pll = PLL_28, 1852 .pll = PLL_28,
1830 .tuner_type = -1, 1853 .tuner_type = UNSET,
1831 .tuner_addr = ADDR_UNSET, 1854 .tuner_addr = ADDR_UNSET,
1832 .radio_addr = ADDR_UNSET, 1855 .radio_addr = ADDR_UNSET,
1833 .no_msp34xx = 1, 1856 .no_msp34xx = 1,
@@ -1838,11 +1861,11 @@ struct tvcard bttv_tvcards[] = {
1838 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */ 1861 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
1839 .video_inputs = 1, 1862 .video_inputs = 1,
1840 .audio_inputs = 0, 1863 .audio_inputs = 0,
1841 .tuner = -1, 1864 .tuner = UNSET,
1842 .svhs = -1, 1865 .svhs = UNSET,
1843 .muxsel = { 0 }, 1866 .muxsel = { 0 },
1844 .pll = PLL_28, 1867 .pll = PLL_28,
1845 .tuner_type = -1, 1868 .tuner_type = UNSET,
1846 .tuner_addr = ADDR_UNSET, 1869 .tuner_addr = ADDR_UNSET,
1847 .radio_addr = ADDR_UNSET, 1870 .radio_addr = ADDR_UNSET,
1848 .no_msp34xx = 1, 1871 .no_msp34xx = 1,
@@ -1853,11 +1876,11 @@ struct tvcard bttv_tvcards[] = {
1853 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */ 1876 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
1854 .video_inputs = 2, 1877 .video_inputs = 2,
1855 .audio_inputs = 0, 1878 .audio_inputs = 0,
1856 .tuner = -1, 1879 .tuner = UNSET,
1857 .svhs = 1, 1880 .svhs = 1,
1858 .muxsel = { 0, 1 }, 1881 .muxsel = { 0, 1 },
1859 .pll = PLL_28, 1882 .pll = PLL_28,
1860 .tuner_type = -1, 1883 .tuner_type = UNSET,
1861 .tuner_addr = ADDR_UNSET, 1884 .tuner_addr = ADDR_UNSET,
1862 .radio_addr = ADDR_UNSET, 1885 .radio_addr = ADDR_UNSET,
1863 .no_msp34xx = 1, 1886 .no_msp34xx = 1,
@@ -1868,8 +1891,8 @@ struct tvcard bttv_tvcards[] = {
1868 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */ 1891 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
1869 .video_inputs = 1, 1892 .video_inputs = 1,
1870 .audio_inputs = 1, 1893 .audio_inputs = 1,
1871 .tuner = -1, 1894 .tuner = UNSET,
1872 .svhs = -1, 1895 .svhs = UNSET,
1873 .muxsel = { 0 }, 1896 .muxsel = { 0 },
1874 .pll = PLL_28, 1897 .pll = PLL_28,
1875 .tuner_type = UNSET, 1898 .tuner_type = UNSET,
@@ -1885,7 +1908,7 @@ struct tvcard bttv_tvcards[] = {
1885 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */ 1908 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
1886 .video_inputs = 2, 1909 .video_inputs = 2,
1887 .audio_inputs = 1, 1910 .audio_inputs = 1,
1888 .tuner = -1, 1911 .tuner = UNSET,
1889 .svhs = 1, 1912 .svhs = 1,
1890 .muxsel = { 0, 1 }, 1913 .muxsel = { 0, 1 },
1891 .pll = PLL_28, 1914 .pll = PLL_28,
@@ -1900,7 +1923,7 @@ struct tvcard bttv_tvcards[] = {
1900 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */ 1923 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */
1901 .video_inputs = 2, 1924 .video_inputs = 2,
1902 .audio_inputs = 1, 1925 .audio_inputs = 1,
1903 .tuner = -1, 1926 .tuner = UNSET,
1904 .svhs = 1, 1927 .svhs = 1,
1905 .muxsel = { 2, 3 }, 1928 .muxsel = { 2, 3 },
1906 .pll = PLL_28, 1929 .pll = PLL_28,
@@ -1915,11 +1938,11 @@ struct tvcard bttv_tvcards[] = {
1915 .name = "Osprey 500", /* 500 */ 1938 .name = "Osprey 500", /* 500 */
1916 .video_inputs = 2, 1939 .video_inputs = 2,
1917 .audio_inputs = 1, 1940 .audio_inputs = 1,
1918 .tuner = -1, 1941 .tuner = UNSET,
1919 .svhs = 1, 1942 .svhs = 1,
1920 .muxsel = { 2, 3 }, 1943 .muxsel = { 2, 3 },
1921 .pll = PLL_28, 1944 .pll = PLL_28,
1922 .tuner_type = -1, 1945 .tuner_type = UNSET,
1923 .tuner_addr = ADDR_UNSET, 1946 .tuner_addr = ADDR_UNSET,
1924 .radio_addr = ADDR_UNSET, 1947 .radio_addr = ADDR_UNSET,
1925 .no_msp34xx = 1, 1948 .no_msp34xx = 1,
@@ -1930,9 +1953,9 @@ struct tvcard bttv_tvcards[] = {
1930 .name = "Osprey 540", /* 540 */ 1953 .name = "Osprey 540", /* 540 */
1931 .video_inputs = 4, 1954 .video_inputs = 4,
1932 .audio_inputs = 1, 1955 .audio_inputs = 1,
1933 .tuner = -1, 1956 .tuner = UNSET,
1934 .pll = PLL_28, 1957 .pll = PLL_28,
1935 .tuner_type = -1, 1958 .tuner_type = UNSET,
1936 .tuner_addr = ADDR_UNSET, 1959 .tuner_addr = ADDR_UNSET,
1937 .radio_addr = ADDR_UNSET, 1960 .radio_addr = ADDR_UNSET,
1938 .no_msp34xx = 1, 1961 .no_msp34xx = 1,
@@ -1945,7 +1968,7 @@ struct tvcard bttv_tvcards[] = {
1945 .name = "Osprey 2000", /* 2000 */ 1968 .name = "Osprey 2000", /* 2000 */
1946 .video_inputs = 2, 1969 .video_inputs = 2,
1947 .audio_inputs = 1, 1970 .audio_inputs = 1,
1948 .tuner = -1, 1971 .tuner = UNSET,
1949 .svhs = 1, 1972 .svhs = 1,
1950 .muxsel = { 2, 3 }, 1973 .muxsel = { 2, 3 },
1951 .pll = PLL_28, 1974 .pll = PLL_28,
@@ -1961,11 +1984,11 @@ struct tvcard bttv_tvcards[] = {
1961 .name = "IDS Eagle", 1984 .name = "IDS Eagle",
1962 .video_inputs = 4, 1985 .video_inputs = 4,
1963 .audio_inputs = 0, 1986 .audio_inputs = 0,
1964 .tuner = -1, 1987 .tuner = UNSET,
1965 .tuner_type = -1, 1988 .tuner_type = UNSET,
1966 .tuner_addr = ADDR_UNSET, 1989 .tuner_addr = ADDR_UNSET,
1967 .radio_addr = ADDR_UNSET, 1990 .radio_addr = ADDR_UNSET,
1968 .svhs = -1, 1991 .svhs = UNSET,
1969 .gpiomask = 0, 1992 .gpiomask = 0,
1970 .muxsel = { 0, 1, 2, 3 }, 1993 .muxsel = { 0, 1, 2, 3 },
1971 .muxsel_hook = eagle_muxsel, 1994 .muxsel_hook = eagle_muxsel,
@@ -1978,8 +2001,8 @@ struct tvcard bttv_tvcards[] = {
1978 .video_inputs = 2, 2001 .video_inputs = 2,
1979 .audio_inputs = 0, 2002 .audio_inputs = 0,
1980 .svhs = 1, 2003 .svhs = 1,
1981 .tuner = -1, 2004 .tuner = UNSET,
1982 .tuner_type = -1, 2005 .tuner_type = UNSET,
1983 .tuner_addr = ADDR_UNSET, 2006 .tuner_addr = ADDR_UNSET,
1984 .radio_addr = ADDR_UNSET, 2007 .radio_addr = ADDR_UNSET,
1985 .no_msp34xx = 1, 2008 .no_msp34xx = 1,
@@ -2020,13 +2043,13 @@ struct tvcard bttv_tvcards[] = {
2020 .video_inputs = 3, 2043 .video_inputs = 3,
2021 .audio_inputs = 1, 2044 .audio_inputs = 1,
2022 .tuner = 0, 2045 .tuner = 0,
2023 .svhs = -1, 2046 .svhs = UNSET,
2024 .gpiomask = 7, 2047 .gpiomask = 7,
2025 .muxsel = { 2, 3, 1, 1}, 2048 .muxsel = { 2, 3, 1, 1},
2026 .gpiomux = { 0, 1, 2, 3}, 2049 .gpiomux = { 0, 1, 2, 3},
2027 .gpiomute = 4, 2050 .gpiomute = 4,
2028 .needs_tvaudio = 1, 2051 .needs_tvaudio = 1,
2029 .tuner_type = 5, 2052 .tuner_type = TUNER_PHILIPS_PAL,
2030 .tuner_addr = ADDR_UNSET, 2053 .tuner_addr = ADDR_UNSET,
2031 .radio_addr = ADDR_UNSET, 2054 .radio_addr = ADDR_UNSET,
2032 .pll = PLL_28, 2055 .pll = PLL_28,
@@ -2035,7 +2058,7 @@ struct tvcard bttv_tvcards[] = {
2035 .name = "Euresys Picolo", 2058 .name = "Euresys Picolo",
2036 .video_inputs = 3, 2059 .video_inputs = 3,
2037 .audio_inputs = 0, 2060 .audio_inputs = 0,
2038 .tuner = -1, 2061 .tuner = UNSET,
2039 .svhs = 2, 2062 .svhs = 2,
2040 .gpiomask = 0, 2063 .gpiomask = 0,
2041 .no_msp34xx = 1, 2064 .no_msp34xx = 1,
@@ -2052,8 +2075,8 @@ struct tvcard bttv_tvcards[] = {
2052 .name = "ProVideo PV150", /* 0x4f */ 2075 .name = "ProVideo PV150", /* 0x4f */
2053 .video_inputs = 2, 2076 .video_inputs = 2,
2054 .audio_inputs = 0, 2077 .audio_inputs = 0,
2055 .tuner = -1, 2078 .tuner = UNSET,
2056 .svhs = -1, 2079 .svhs = UNSET,
2057 .gpiomask = 0, 2080 .gpiomask = 0,
2058 .muxsel = { 2, 3 }, 2081 .muxsel = { 2, 3 },
2059 .gpiomux = { 0 }, 2082 .gpiomux = { 0 },
@@ -2080,7 +2103,7 @@ struct tvcard bttv_tvcards[] = {
2080 .needs_tvaudio = 0, 2103 .needs_tvaudio = 0,
2081 .no_msp34xx = 1, 2104 .no_msp34xx = 1,
2082 .pll = PLL_28, 2105 .pll = PLL_28,
2083 .tuner_type = 2, 2106 .tuner_type = TUNER_PHILIPS_NTSC,
2084 .tuner_addr = ADDR_UNSET, 2107 .tuner_addr = ADDR_UNSET,
2085 .radio_addr = ADDR_UNSET, 2108 .radio_addr = ADDR_UNSET,
2086 .audio_hook = adtvk503_audio, 2109 .audio_hook = adtvk503_audio,
@@ -2098,7 +2121,7 @@ struct tvcard bttv_tvcards[] = {
2098 .needs_tvaudio = 1, 2121 .needs_tvaudio = 1,
2099 .no_msp34xx = 1, 2122 .no_msp34xx = 1,
2100 .pll = PLL_28, 2123 .pll = PLL_28,
2101 .tuner_type = 5, 2124 .tuner_type = TUNER_PHILIPS_PAL,
2102 .tuner_addr = ADDR_UNSET, 2125 .tuner_addr = ADDR_UNSET,
2103 .radio_addr = ADDR_UNSET, 2126 .radio_addr = ADDR_UNSET,
2104 /* Notes: 2127 /* Notes:
@@ -2121,7 +2144,7 @@ struct tvcard bttv_tvcards[] = {
2121 .gpiomask = 0, 2144 .gpiomask = 0,
2122 .no_tda9875 = 1, 2145 .no_tda9875 = 1,
2123 .no_tda7432 = 1, 2146 .no_tda7432 = 1,
2124 .tuner_type = 1, 2147 .tuner_type = TUNER_PHILIPS_PAL_I,
2125 .tuner_addr = ADDR_UNSET, 2148 .tuner_addr = ADDR_UNSET,
2126 .radio_addr = ADDR_UNSET, 2149 .radio_addr = ADDR_UNSET,
2127 .has_radio = 1, 2150 .has_radio = 1,
@@ -2138,11 +2161,11 @@ struct tvcard bttv_tvcards[] = {
2138 .name = "IVC-200", 2161 .name = "IVC-200",
2139 .video_inputs = 1, 2162 .video_inputs = 1,
2140 .audio_inputs = 0, 2163 .audio_inputs = 0,
2141 .tuner = -1, 2164 .tuner = UNSET,
2142 .tuner_type = -1, 2165 .tuner_type = UNSET,
2143 .tuner_addr = ADDR_UNSET, 2166 .tuner_addr = ADDR_UNSET,
2144 .radio_addr = ADDR_UNSET, 2167 .radio_addr = ADDR_UNSET,
2145 .svhs = -1, 2168 .svhs = UNSET,
2146 .gpiomask = 0xdf, 2169 .gpiomask = 0xdf,
2147 .muxsel = { 2 }, 2170 .muxsel = { 2 },
2148 .pll = PLL_28, 2171 .pll = PLL_28,
@@ -2151,9 +2174,9 @@ struct tvcard bttv_tvcards[] = {
2151 .name = "Grand X-Guard / Trust 814PCI", 2174 .name = "Grand X-Guard / Trust 814PCI",
2152 .video_inputs = 16, 2175 .video_inputs = 16,
2153 .audio_inputs = 0, 2176 .audio_inputs = 0,
2154 .tuner = -1, 2177 .tuner = UNSET,
2155 .svhs = -1, 2178 .svhs = UNSET,
2156 .tuner_type = 4, 2179 .tuner_type = TUNER_ABSENT,
2157 .tuner_addr = ADDR_UNSET, 2180 .tuner_addr = ADDR_UNSET,
2158 .radio_addr = ADDR_UNSET, 2181 .radio_addr = ADDR_UNSET,
2159 .gpiomask2 = 0xff, 2182 .gpiomask2 = 0xff,
@@ -2169,14 +2192,14 @@ struct tvcard bttv_tvcards[] = {
2169 [BTTV_BOARD_NEBULA_DIGITV] = { 2192 [BTTV_BOARD_NEBULA_DIGITV] = {
2170 .name = "Nebula Electronics DigiTV", 2193 .name = "Nebula Electronics DigiTV",
2171 .video_inputs = 1, 2194 .video_inputs = 1,
2172 .tuner = -1, 2195 .tuner = UNSET,
2173 .svhs = -1, 2196 .svhs = UNSET,
2174 .muxsel = { 2, 3, 1, 0 }, 2197 .muxsel = { 2, 3, 1, 0 },
2175 .no_msp34xx = 1, 2198 .no_msp34xx = 1,
2176 .no_tda9875 = 1, 2199 .no_tda9875 = 1,
2177 .no_tda7432 = 1, 2200 .no_tda7432 = 1,
2178 .pll = PLL_28, 2201 .pll = PLL_28,
2179 .tuner_type = -1, 2202 .tuner_type = UNSET,
2180 .tuner_addr = ADDR_UNSET, 2203 .tuner_addr = ADDR_UNSET,
2181 .radio_addr = ADDR_UNSET, 2204 .radio_addr = ADDR_UNSET,
2182 .has_dvb = 1, 2205 .has_dvb = 1,
@@ -2189,15 +2212,15 @@ struct tvcard bttv_tvcards[] = {
2189 .name = "ProVideo PV143", 2212 .name = "ProVideo PV143",
2190 .video_inputs = 4, 2213 .video_inputs = 4,
2191 .audio_inputs = 0, 2214 .audio_inputs = 0,
2192 .tuner = -1, 2215 .tuner = UNSET,
2193 .svhs = -1, 2216 .svhs = UNSET,
2194 .gpiomask = 0, 2217 .gpiomask = 0,
2195 .muxsel = { 2, 3, 1, 0 }, 2218 .muxsel = { 2, 3, 1, 0 },
2196 .gpiomux = { 0 }, 2219 .gpiomux = { 0 },
2197 .needs_tvaudio = 0, 2220 .needs_tvaudio = 0,
2198 .no_msp34xx = 1, 2221 .no_msp34xx = 1,
2199 .pll = PLL_28, 2222 .pll = PLL_28,
2200 .tuner_type = -1, 2223 .tuner_type = UNSET,
2201 .tuner_addr = ADDR_UNSET, 2224 .tuner_addr = ADDR_UNSET,
2202 .radio_addr = ADDR_UNSET, 2225 .radio_addr = ADDR_UNSET,
2203 }, 2226 },
@@ -2206,14 +2229,14 @@ struct tvcard bttv_tvcards[] = {
2206 .name = "PHYTEC VD-009-X1 MiniDIN (bt878)", 2229 .name = "PHYTEC VD-009-X1 MiniDIN (bt878)",
2207 .video_inputs = 4, 2230 .video_inputs = 4,
2208 .audio_inputs = 0, 2231 .audio_inputs = 0,
2209 .tuner = -1, /* card has no tuner */ 2232 .tuner = UNSET, /* card has no tuner */
2210 .svhs = 3, 2233 .svhs = 3,
2211 .gpiomask = 0x00, 2234 .gpiomask = 0x00,
2212 .muxsel = { 2, 3, 1, 0 }, 2235 .muxsel = { 2, 3, 1, 0 },
2213 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2236 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2214 .needs_tvaudio = 1, 2237 .needs_tvaudio = 1,
2215 .pll = PLL_28, 2238 .pll = PLL_28,
2216 .tuner_type = -1, 2239 .tuner_type = UNSET,
2217 .tuner_addr = ADDR_UNSET, 2240 .tuner_addr = ADDR_UNSET,
2218 .radio_addr = ADDR_UNSET, 2241 .radio_addr = ADDR_UNSET,
2219 }, 2242 },
@@ -2221,14 +2244,14 @@ struct tvcard bttv_tvcards[] = {
2221 .name = "PHYTEC VD-009-X1 Combi (bt878)", 2244 .name = "PHYTEC VD-009-X1 Combi (bt878)",
2222 .video_inputs = 4, 2245 .video_inputs = 4,
2223 .audio_inputs = 0, 2246 .audio_inputs = 0,
2224 .tuner = -1, /* card has no tuner */ 2247 .tuner = UNSET, /* card has no tuner */
2225 .svhs = 3, 2248 .svhs = 3,
2226 .gpiomask = 0x00, 2249 .gpiomask = 0x00,
2227 .muxsel = { 2, 3, 1, 1 }, 2250 .muxsel = { 2, 3, 1, 1 },
2228 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2251 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2229 .needs_tvaudio = 1, 2252 .needs_tvaudio = 1,
2230 .pll = PLL_28, 2253 .pll = PLL_28,
2231 .tuner_type = -1, 2254 .tuner_type = UNSET,
2232 .tuner_addr = ADDR_UNSET, 2255 .tuner_addr = ADDR_UNSET,
2233 .radio_addr = ADDR_UNSET, 2256 .radio_addr = ADDR_UNSET,
2234 }, 2257 },
@@ -2238,7 +2261,7 @@ struct tvcard bttv_tvcards[] = {
2238 .name = "PHYTEC VD-009 MiniDIN (bt878)", 2261 .name = "PHYTEC VD-009 MiniDIN (bt878)",
2239 .video_inputs = 10, 2262 .video_inputs = 10,
2240 .audio_inputs = 0, 2263 .audio_inputs = 0,
2241 .tuner = -1, /* card has no tuner */ 2264 .tuner = UNSET, /* card has no tuner */
2242 .svhs = 9, 2265 .svhs = 9,
2243 .gpiomask = 0x00, 2266 .gpiomask = 0x00,
2244 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio 2267 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2248,7 +2271,7 @@ struct tvcard bttv_tvcards[] = {
2248 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2271 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2249 .needs_tvaudio = 1, 2272 .needs_tvaudio = 1,
2250 .pll = PLL_28, 2273 .pll = PLL_28,
2251 .tuner_type = -1, 2274 .tuner_type = UNSET,
2252 .tuner_addr = ADDR_UNSET, 2275 .tuner_addr = ADDR_UNSET,
2253 .radio_addr = ADDR_UNSET, 2276 .radio_addr = ADDR_UNSET,
2254 }, 2277 },
@@ -2256,7 +2279,7 @@ struct tvcard bttv_tvcards[] = {
2256 .name = "PHYTEC VD-009 Combi (bt878)", 2279 .name = "PHYTEC VD-009 Combi (bt878)",
2257 .video_inputs = 10, 2280 .video_inputs = 10,
2258 .audio_inputs = 0, 2281 .audio_inputs = 0,
2259 .tuner = -1, /* card has no tuner */ 2282 .tuner = UNSET, /* card has no tuner */
2260 .svhs = 9, 2283 .svhs = 9,
2261 .gpiomask = 0x00, 2284 .gpiomask = 0x00,
2262 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio 2285 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2266,7 +2289,7 @@ struct tvcard bttv_tvcards[] = {
2266 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2289 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2267 .needs_tvaudio = 1, 2290 .needs_tvaudio = 1,
2268 .pll = PLL_28, 2291 .pll = PLL_28,
2269 .tuner_type = -1, 2292 .tuner_type = UNSET,
2270 .tuner_addr = ADDR_UNSET, 2293 .tuner_addr = ADDR_UNSET,
2271 .radio_addr = ADDR_UNSET, 2294 .radio_addr = ADDR_UNSET,
2272 }, 2295 },
@@ -2274,11 +2297,11 @@ struct tvcard bttv_tvcards[] = {
2274 .name = "IVC-100", 2297 .name = "IVC-100",
2275 .video_inputs = 4, 2298 .video_inputs = 4,
2276 .audio_inputs = 0, 2299 .audio_inputs = 0,
2277 .tuner = -1, 2300 .tuner = UNSET,
2278 .tuner_type = -1, 2301 .tuner_type = UNSET,
2279 .tuner_addr = ADDR_UNSET, 2302 .tuner_addr = ADDR_UNSET,
2280 .radio_addr = ADDR_UNSET, 2303 .radio_addr = ADDR_UNSET,
2281 .svhs = -1, 2304 .svhs = UNSET,
2282 .gpiomask = 0xdf, 2305 .gpiomask = 0xdf,
2283 .muxsel = { 2, 3, 1, 0 }, 2306 .muxsel = { 2, 3, 1, 0 },
2284 .pll = PLL_28, 2307 .pll = PLL_28,
@@ -2288,11 +2311,11 @@ struct tvcard bttv_tvcards[] = {
2288 .name = "IVC-120G", 2311 .name = "IVC-120G",
2289 .video_inputs = 16, 2312 .video_inputs = 16,
2290 .audio_inputs = 0, /* card has no audio */ 2313 .audio_inputs = 0, /* card has no audio */
2291 .tuner = -1, /* card has no tuner */ 2314 .tuner = UNSET, /* card has no tuner */
2292 .tuner_type = -1, 2315 .tuner_type = UNSET,
2293 .tuner_addr = ADDR_UNSET, 2316 .tuner_addr = ADDR_UNSET,
2294 .radio_addr = ADDR_UNSET, 2317 .radio_addr = ADDR_UNSET,
2295 .svhs = -1, /* card has no svhs */ 2318 .svhs = UNSET, /* card has no svhs */
2296 .needs_tvaudio = 0, 2319 .needs_tvaudio = 0,
2297 .no_msp34xx = 1, 2320 .no_msp34xx = 1,
2298 .no_tda9875 = 1, 2321 .no_tda9875 = 1,
@@ -2333,7 +2356,7 @@ struct tvcard bttv_tvcards[] = {
2333 .video_inputs = 3, 2356 .video_inputs = 3,
2334 .audio_inputs = 0, 2357 .audio_inputs = 0,
2335 .svhs = 1, 2358 .svhs = 1,
2336 .tuner = -1, 2359 .tuner = UNSET,
2337 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */ 2360 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */
2338 .no_msp34xx = 1, 2361 .no_msp34xx = 1,
2339 .no_tda9875 = 1, 2362 .no_tda9875 = 1,
@@ -2364,9 +2387,9 @@ struct tvcard bttv_tvcards[] = {
2364 .name = "SIMUS GVC1100", 2387 .name = "SIMUS GVC1100",
2365 .video_inputs = 4, 2388 .video_inputs = 4,
2366 .audio_inputs = 0, 2389 .audio_inputs = 0,
2367 .tuner = -1, 2390 .tuner = UNSET,
2368 .svhs = -1, 2391 .svhs = UNSET,
2369 .tuner_type = -1, 2392 .tuner_type = UNSET,
2370 .tuner_addr = ADDR_UNSET, 2393 .tuner_addr = ADDR_UNSET,
2371 .radio_addr = ADDR_UNSET, 2394 .radio_addr = ADDR_UNSET,
2372 .pll = PLL_28, 2395 .pll = PLL_28,
@@ -2395,14 +2418,14 @@ struct tvcard bttv_tvcards[] = {
2395 .name = "LMLBT4", 2418 .name = "LMLBT4",
2396 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */ 2419 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */
2397 .audio_inputs = 0, 2420 .audio_inputs = 0,
2398 .tuner = -1, 2421 .tuner = UNSET,
2399 .svhs = -1, 2422 .svhs = UNSET,
2400 .muxsel = { 2, 3, 1, 0 }, 2423 .muxsel = { 2, 3, 1, 0 },
2401 .no_msp34xx = 1, 2424 .no_msp34xx = 1,
2402 .no_tda9875 = 1, 2425 .no_tda9875 = 1,
2403 .no_tda7432 = 1, 2426 .no_tda7432 = 1,
2404 .needs_tvaudio = 0, 2427 .needs_tvaudio = 0,
2405 .tuner_type = -1, 2428 .tuner_type = UNSET,
2406 .tuner_addr = ADDR_UNSET, 2429 .tuner_addr = ADDR_UNSET,
2407 .radio_addr = ADDR_UNSET, 2430 .radio_addr = ADDR_UNSET,
2408 }, 2431 },
@@ -2452,8 +2475,8 @@ struct tvcard bttv_tvcards[] = {
2452 .name = "Euresys Picolo Tetra", 2475 .name = "Euresys Picolo Tetra",
2453 .video_inputs = 4, 2476 .video_inputs = 4,
2454 .audio_inputs = 0, 2477 .audio_inputs = 0,
2455 .tuner = -1, 2478 .tuner = UNSET,
2456 .svhs = -1, 2479 .svhs = UNSET,
2457 .gpiomask = 0, 2480 .gpiomask = 0,
2458 .gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/ 2481 .gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/
2459 .no_msp34xx = 1, 2482 .no_msp34xx = 1,
@@ -2464,7 +2487,7 @@ struct tvcard bttv_tvcards[] = {
2464 .pll = PLL_28, 2487 .pll = PLL_28,
2465 .needs_tvaudio = 0, 2488 .needs_tvaudio = 0,
2466 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ 2489 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
2467 .tuner_type = -1, 2490 .tuner_type = UNSET,
2468 .tuner_addr = ADDR_UNSET, 2491 .tuner_addr = ADDR_UNSET,
2469 .radio_addr = ADDR_UNSET, 2492 .radio_addr = ADDR_UNSET,
2470 }, 2493 },
@@ -2490,7 +2513,7 @@ struct tvcard bttv_tvcards[] = {
2490 .name = "AVerMedia AVerTV DVB-T 771", 2513 .name = "AVerMedia AVerTV DVB-T 771",
2491 .video_inputs = 2, 2514 .video_inputs = 2,
2492 .svhs = 1, 2515 .svhs = 1,
2493 .tuner = -1, 2516 .tuner = UNSET,
2494 .tuner_type = TUNER_ABSENT, 2517 .tuner_type = TUNER_ABSENT,
2495 .tuner_addr = ADDR_UNSET, 2518 .tuner_addr = ADDR_UNSET,
2496 .radio_addr = ADDR_UNSET, 2519 .radio_addr = ADDR_UNSET,
@@ -2509,14 +2532,14 @@ struct tvcard bttv_tvcards[] = {
2509 /* Based on the Nebula card data - added remote and new card number - BTTV_BOARD_AVDVBT_761, see also ir-kbd-gpio.c */ 2532 /* Based on the Nebula card data - added remote and new card number - BTTV_BOARD_AVDVBT_761, see also ir-kbd-gpio.c */
2510 .name = "AverMedia AverTV DVB-T 761", 2533 .name = "AverMedia AverTV DVB-T 761",
2511 .video_inputs = 2, 2534 .video_inputs = 2,
2512 .tuner = -1, 2535 .tuner = UNSET,
2513 .svhs = 1, 2536 .svhs = 1,
2514 .muxsel = { 3, 1, 2, 0 }, /* Comp0, S-Video, ?, ? */ 2537 .muxsel = { 3, 1, 2, 0 }, /* Comp0, S-Video, ?, ? */
2515 .no_msp34xx = 1, 2538 .no_msp34xx = 1,
2516 .no_tda9875 = 1, 2539 .no_tda9875 = 1,
2517 .no_tda7432 = 1, 2540 .no_tda7432 = 1,
2518 .pll = PLL_28, 2541 .pll = PLL_28,
2519 .tuner_type = -1, 2542 .tuner_type = UNSET,
2520 .tuner_addr = ADDR_UNSET, 2543 .tuner_addr = ADDR_UNSET,
2521 .radio_addr = ADDR_UNSET, 2544 .radio_addr = ADDR_UNSET,
2522 .has_dvb = 1, 2545 .has_dvb = 1,
@@ -2528,8 +2551,8 @@ struct tvcard bttv_tvcards[] = {
2528 .name = "MATRIX Vision Sigma-SQ", 2551 .name = "MATRIX Vision Sigma-SQ",
2529 .video_inputs = 16, 2552 .video_inputs = 16,
2530 .audio_inputs = 0, 2553 .audio_inputs = 0,
2531 .tuner = -1, 2554 .tuner = UNSET,
2532 .svhs = -1, 2555 .svhs = UNSET,
2533 .gpiomask = 0x0, 2556 .gpiomask = 0x0,
2534 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2557 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2,
2535 3, 3, 3, 3, 3, 3, 3, 3 }, 2558 3, 3, 3, 3, 3, 3, 3, 3 },
@@ -2537,7 +2560,7 @@ struct tvcard bttv_tvcards[] = {
2537 .gpiomux = { 0 }, 2560 .gpiomux = { 0 },
2538 .no_msp34xx = 1, 2561 .no_msp34xx = 1,
2539 .pll = PLL_28, 2562 .pll = PLL_28,
2540 .tuner_type = -1, 2563 .tuner_type = UNSET,
2541 .tuner_addr = ADDR_UNSET, 2564 .tuner_addr = ADDR_UNSET,
2542 .radio_addr = ADDR_UNSET, 2565 .radio_addr = ADDR_UNSET,
2543 }, 2566 },
@@ -2546,15 +2569,15 @@ struct tvcard bttv_tvcards[] = {
2546 .name = "MATRIX Vision Sigma-SLC", 2569 .name = "MATRIX Vision Sigma-SLC",
2547 .video_inputs = 4, 2570 .video_inputs = 4,
2548 .audio_inputs = 0, 2571 .audio_inputs = 0,
2549 .tuner = -1, 2572 .tuner = UNSET,
2550 .svhs = -1, 2573 .svhs = UNSET,
2551 .gpiomask = 0x0, 2574 .gpiomask = 0x0,
2552 .muxsel = { 2, 2, 2, 2 }, 2575 .muxsel = { 2, 2, 2, 2 },
2553 .muxsel_hook = sigmaSLC_muxsel, 2576 .muxsel_hook = sigmaSLC_muxsel,
2554 .gpiomux = { 0 }, 2577 .gpiomux = { 0 },
2555 .no_msp34xx = 1, 2578 .no_msp34xx = 1,
2556 .pll = PLL_28, 2579 .pll = PLL_28,
2557 .tuner_type = -1, 2580 .tuner_type = UNSET,
2558 .tuner_addr = ADDR_UNSET, 2581 .tuner_addr = ADDR_UNSET,
2559 .radio_addr = ADDR_UNSET, 2582 .radio_addr = ADDR_UNSET,
2560 }, 2583 },
@@ -2566,7 +2589,7 @@ struct tvcard bttv_tvcards[] = {
2566 .video_inputs = 2, 2589 .video_inputs = 2,
2567 .audio_inputs = 1, 2590 .audio_inputs = 1,
2568 .tuner = 0, 2591 .tuner = 0,
2569 .svhs = -1, 2592 .svhs = UNSET,
2570 .gpiomask = 0xFF, 2593 .gpiomask = 0xFF,
2571 .muxsel = { 2, 3, 1, 1 }, 2594 .muxsel = { 2, 3, 1, 1 },
2572 .gpiomux = { 2, 0, 0, 0 }, 2595 .gpiomux = { 2, 0, 0, 0 },
@@ -2584,14 +2607,14 @@ struct tvcard bttv_tvcards[] = {
2584 [BTTV_BOARD_DVICO_DVBT_LITE] = { 2607 [BTTV_BOARD_DVICO_DVBT_LITE] = {
2585 /* Chris Pascoe <c.pascoe@itee.uq.edu.au> */ 2608 /* Chris Pascoe <c.pascoe@itee.uq.edu.au> */
2586 .name = "DViCO FusionHDTV DVB-T Lite", 2609 .name = "DViCO FusionHDTV DVB-T Lite",
2587 .tuner = -1, 2610 .tuner = UNSET,
2588 .no_msp34xx = 1, 2611 .no_msp34xx = 1,
2589 .no_tda9875 = 1, 2612 .no_tda9875 = 1,
2590 .no_tda7432 = 1, 2613 .no_tda7432 = 1,
2591 .pll = PLL_28, 2614 .pll = PLL_28,
2592 .no_video = 1, 2615 .no_video = 1,
2593 .has_dvb = 1, 2616 .has_dvb = 1,
2594 .tuner_type = -1, 2617 .tuner_type = UNSET,
2595 .tuner_addr = ADDR_UNSET, 2618 .tuner_addr = ADDR_UNSET,
2596 .radio_addr = ADDR_UNSET, 2619 .radio_addr = ADDR_UNSET,
2597 }, 2620 },
@@ -2634,14 +2657,14 @@ struct tvcard bttv_tvcards[] = {
2634 .name = "Tibet Systems 'Progress DVR' CS16", 2657 .name = "Tibet Systems 'Progress DVR' CS16",
2635 .video_inputs = 16, 2658 .video_inputs = 16,
2636 .audio_inputs = 0, 2659 .audio_inputs = 0,
2637 .tuner = -1, 2660 .tuner = UNSET,
2638 .svhs = -1, 2661 .svhs = UNSET,
2639 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, 2662 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
2640 .pll = PLL_28, 2663 .pll = PLL_28,
2641 .no_msp34xx = 1, 2664 .no_msp34xx = 1,
2642 .no_tda9875 = 1, 2665 .no_tda9875 = 1,
2643 .no_tda7432 = 1, 2666 .no_tda7432 = 1,
2644 .tuner_type = -1, 2667 .tuner_type = UNSET,
2645 .tuner_addr = ADDR_UNSET, 2668 .tuner_addr = ADDR_UNSET,
2646 .radio_addr = ADDR_UNSET, 2669 .radio_addr = ADDR_UNSET,
2647 .muxsel_hook = tibetCS16_muxsel, 2670 .muxsel_hook = tibetCS16_muxsel,
@@ -2661,11 +2684,11 @@ struct tvcard bttv_tvcards[] = {
2661 .name = "Kodicom 4400R (master)", 2684 .name = "Kodicom 4400R (master)",
2662 .video_inputs = 16, 2685 .video_inputs = 16,
2663 .audio_inputs = 0, 2686 .audio_inputs = 0,
2664 .tuner = -1, 2687 .tuner = UNSET,
2665 .tuner_type = -1, 2688 .tuner_type = UNSET,
2666 .tuner_addr = ADDR_UNSET, 2689 .tuner_addr = ADDR_UNSET,
2667 .radio_addr = ADDR_UNSET, 2690 .radio_addr = ADDR_UNSET,
2668 .svhs = -1, 2691 .svhs = UNSET,
2669 /* GPIO bits 0-9 used for analog switch: 2692 /* GPIO bits 0-9 used for analog switch:
2670 * 00 - 03: camera selector 2693 * 00 - 03: camera selector
2671 * 04 - 06: channel (controller) selector 2694 * 04 - 06: channel (controller) selector
@@ -2693,11 +2716,11 @@ struct tvcard bttv_tvcards[] = {
2693 .name = "Kodicom 4400R (slave)", 2716 .name = "Kodicom 4400R (slave)",
2694 .video_inputs = 16, 2717 .video_inputs = 16,
2695 .audio_inputs = 0, 2718 .audio_inputs = 0,
2696 .tuner = -1, 2719 .tuner = UNSET,
2697 .tuner_type = -1, 2720 .tuner_type = UNSET,
2698 .tuner_addr = ADDR_UNSET, 2721 .tuner_addr = ADDR_UNSET,
2699 .radio_addr = ADDR_UNSET, 2722 .radio_addr = ADDR_UNSET,
2700 .svhs = -1, 2723 .svhs = UNSET,
2701 .gpiomask = 0x010000, 2724 .gpiomask = 0x010000,
2702 .no_gpioirq = 1, 2725 .no_gpioirq = 1,
2703 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 2726 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
@@ -2717,7 +2740,7 @@ struct tvcard bttv_tvcards[] = {
2717 .tuner = 0, 2740 .tuner = 0,
2718 .svhs = 2, 2741 .svhs = 2,
2719 .muxsel = { 2, 3, 1, 0 }, 2742 .muxsel = { 2, 3, 1, 0 },
2720 .tuner_type = -1, 2743 .tuner_type = UNSET,
2721 .tuner_addr = ADDR_UNSET, 2744 .tuner_addr = ADDR_UNSET,
2722 .radio_addr = ADDR_UNSET, 2745 .radio_addr = ADDR_UNSET,
2723 .pll = PLL_28, 2746 .pll = PLL_28,
@@ -2824,7 +2847,7 @@ struct tvcard bttv_tvcards[] = {
2824 .name = "Osprey 440", 2847 .name = "Osprey 440",
2825 .video_inputs = 1, 2848 .video_inputs = 1,
2826 .audio_inputs = 1, 2849 .audio_inputs = 1,
2827 .tuner = -1, 2850 .tuner = UNSET,
2828 .svhs = 1, 2851 .svhs = 1,
2829 .muxsel = { 2 }, 2852 .muxsel = { 2 },
2830 .pll = PLL_28, 2853 .pll = PLL_28,
@@ -2848,7 +2871,7 @@ struct tvcard bttv_tvcards[] = {
2848 .gpiomute = 1, 2871 .gpiomute = 1,
2849 .needs_tvaudio = 1, 2872 .needs_tvaudio = 1,
2850 .pll = PLL_28, 2873 .pll = PLL_28,
2851 .tuner_type = 2, 2874 .tuner_type = TUNER_PHILIPS_NTSC,
2852 .tuner_addr = ADDR_UNSET, 2875 .tuner_addr = ADDR_UNSET,
2853 .radio_addr = ADDR_UNSET, 2876 .radio_addr = ADDR_UNSET,
2854 }, 2877 },
@@ -2875,14 +2898,14 @@ struct tvcard bttv_tvcards[] = {
2875 .name = "Hauppauge ImpactVCB (bt878)", 2898 .name = "Hauppauge ImpactVCB (bt878)",
2876 .video_inputs = 4, 2899 .video_inputs = 4,
2877 .audio_inputs = 0, 2900 .audio_inputs = 0,
2878 .tuner = -1, 2901 .tuner = UNSET,
2879 .svhs = -1, 2902 .svhs = UNSET,
2880 .gpiomask = 0x0f, /* old: 7 */ 2903 .gpiomask = 0x0f, /* old: 7 */
2881 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */ 2904 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */
2882 .no_msp34xx = 1, 2905 .no_msp34xx = 1,
2883 .no_tda9875 = 1, 2906 .no_tda9875 = 1,
2884 .no_tda7432 = 1, 2907 .no_tda7432 = 1,
2885 .tuner_type = -1, 2908 .tuner_type = UNSET,
2886 .tuner_addr = ADDR_UNSET, 2909 .tuner_addr = ADDR_UNSET,
2887 .radio_addr = ADDR_UNSET, 2910 .radio_addr = ADDR_UNSET,
2888 }, 2911 },
@@ -2914,10 +2937,10 @@ struct tvcard bttv_tvcards[] = {
2914 .name = "SSAI Security Video Interface", 2937 .name = "SSAI Security Video Interface",
2915 .video_inputs = 4, 2938 .video_inputs = 4,
2916 .audio_inputs = 0, 2939 .audio_inputs = 0,
2917 .tuner = -1, 2940 .tuner = UNSET,
2918 .svhs = -1, 2941 .svhs = UNSET,
2919 .muxsel = { 0, 1, 2, 3 }, 2942 .muxsel = { 0, 1, 2, 3 },
2920 .tuner_type = -1, 2943 .tuner_type = UNSET,
2921 .tuner_addr = ADDR_UNSET, 2944 .tuner_addr = ADDR_UNSET,
2922 .radio_addr = ADDR_UNSET, 2945 .radio_addr = ADDR_UNSET,
2923 }, 2946 },
@@ -2925,13 +2948,31 @@ struct tvcard bttv_tvcards[] = {
2925 .name = "SSAI Ultrasound Video Interface", 2948 .name = "SSAI Ultrasound Video Interface",
2926 .video_inputs = 2, 2949 .video_inputs = 2,
2927 .audio_inputs = 0, 2950 .audio_inputs = 0,
2928 .tuner = -1, 2951 .tuner = UNSET,
2929 .svhs = 1, 2952 .svhs = 1,
2930 .muxsel = { 2, 0, 1, 3 }, 2953 .muxsel = { 2, 0, 1, 3 },
2931 .tuner_type = -1, 2954 .tuner_type = UNSET,
2932 .tuner_addr = ADDR_UNSET, 2955 .tuner_addr = ADDR_UNSET,
2933 .radio_addr = ADDR_UNSET, 2956 .radio_addr = ADDR_UNSET,
2934 }, 2957 },
2958 /* ---- card 0x94---------------------------------- */
2959 [BTTV_BOARD_DVICO_FUSIONHDTV_2] = {
2960 .name = "DViCO FusionHDTV 2",
2961 .tuner = 0,
2962 .tuner_type = TUNER_PHILIPS_ATSC, /* FCV1236D */
2963 .tuner_addr = ADDR_UNSET,
2964 .radio_addr = ADDR_UNSET,
2965 .video_inputs = 3,
2966 .audio_inputs = 1,
2967 .svhs = 2,
2968 .muxsel = { 2, 3, 1 },
2969 .gpiomask = 0x00e00007,
2970 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2971 .gpiomute = 0x00c00007,
2972 .no_msp34xx = 1,
2973 .no_tda9875 = 1,
2974 .no_tda7432 = 1,
2975 },
2935}; 2976};
2936 2977
2937static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); 2978static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
@@ -3040,7 +3081,7 @@ static void identify_by_eeprom(struct bttv *btv, unsigned char eeprom_data[256])
3040static void flyvideo_gpio(struct bttv *btv) 3081static void flyvideo_gpio(struct bttv *btv)
3041{ 3082{
3042 int gpio,has_remote,has_radio,is_capture_only,is_lr90,has_tda9820_tda9821; 3083 int gpio,has_remote,has_radio,is_capture_only,is_lr90,has_tda9820_tda9821;
3043 int tuner=-1,ttype; 3084 int tuner=UNSET,ttype;
3044 3085
3045 gpio_inout(0xffffff, 0); 3086 gpio_inout(0xffffff, 0);
3046 udelay(8); /* without this we would see the 0x1800 mask */ 3087 udelay(8); /* without this we would see the 0x1800 mask */
@@ -3085,7 +3126,7 @@ static void flyvideo_gpio(struct bttv *btv)
3085 * gpio & 0x001000 output bit for audio routing */ 3126 * gpio & 0x001000 output bit for audio routing */
3086 3127
3087 if(is_capture_only) 3128 if(is_capture_only)
3088 tuner=4; /* No tuner present */ 3129 tuner = TUNER_ABSENT; /* No tuner present */
3089 3130
3090 printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", 3131 printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n",
3091 btv->c.nr, has_radio? "yes":"no ", has_remote? "yes":"no ", tuner, gpio); 3132 btv->c.nr, has_radio? "yes":"no ", has_remote? "yes":"no ", tuner, gpio);
@@ -3093,7 +3134,7 @@ static void flyvideo_gpio(struct bttv *btv)
3093 btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ", 3134 btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ",
3094 is_capture_only?"yes":"no "); 3135 is_capture_only?"yes":"no ");
3095 3136
3096 if(tuner!= -1) /* only set if known tuner autodetected, else let insmod option through */ 3137 if (tuner != UNSET) /* only set if known tuner autodetected, else let insmod option through */
3097 btv->tuner_type = tuner; 3138 btv->tuner_type = tuner;
3098 btv->has_radio = has_radio; 3139 btv->has_radio = has_radio;
3099 3140
@@ -3302,6 +3343,7 @@ void __devinit bttv_init_card1(struct bttv *btv)
3302 case BTTV_BOARD_HAUPPAUGE878: 3343 case BTTV_BOARD_HAUPPAUGE878:
3303 boot_msp34xx(btv,5); 3344 boot_msp34xx(btv,5);
3304 break; 3345 break;
3346 case BTTV_BOARD_VOODOOTV_200:
3305 case BTTV_BOARD_VOODOOTV_FM: 3347 case BTTV_BOARD_VOODOOTV_FM:
3306 boot_msp34xx(btv,20); 3348 boot_msp34xx(btv,20);
3307 break; 3349 break;
@@ -3328,10 +3370,9 @@ void __devinit bttv_init_card1(struct bttv *btv)
3328/* initialization part two -- after registering i2c bus */ 3370/* initialization part two -- after registering i2c bus */
3329void __devinit bttv_init_card2(struct bttv *btv) 3371void __devinit bttv_init_card2(struct bttv *btv)
3330{ 3372{
3331 int tda9887;
3332 int addr=ADDR_UNSET; 3373 int addr=ADDR_UNSET;
3333 3374
3334 btv->tuner_type = -1; 3375 btv->tuner_type = UNSET;
3335 3376
3336 if (BTTV_BOARD_UNKNOWN == btv->c.type) { 3377 if (BTTV_BOARD_UNKNOWN == btv->c.type) {
3337 bttv_readee(btv,eeprom_data,0xa0); 3378 bttv_readee(btv,eeprom_data,0xa0);
@@ -3479,7 +3520,15 @@ void __devinit bttv_init_card2(struct bttv *btv)
3479 btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; 3520 btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type;
3480 if (UNSET != tuner[btv->c.nr]) 3521 if (UNSET != tuner[btv->c.nr])
3481 btv->tuner_type = tuner[btv->c.nr]; 3522 btv->tuner_type = tuner[btv->c.nr];
3482 printk("bttv%d: using tuner=%d\n",btv->c.nr,btv->tuner_type); 3523
3524 if (btv->tuner_type == TUNER_ABSENT ||
3525 bttv_tvcards[btv->c.type].tuner == UNSET)
3526 printk(KERN_INFO "bttv%d: tuner absent\n", btv->c.nr);
3527 else if(btv->tuner_type == UNSET)
3528 printk(KERN_WARNING "bttv%d: tuner type unset\n", btv->c.nr);
3529 else
3530 printk(KERN_INFO "bttv%d: tuner type=%d\n", btv->c.nr,
3531 btv->tuner_type);
3483 3532
3484 if (btv->tuner_type != UNSET) { 3533 if (btv->tuner_type != UNSET) {
3485 struct tuner_setup tun_setup; 3534 struct tuner_setup tun_setup;
@@ -3521,6 +3570,9 @@ void __devinit bttv_init_card2(struct bttv *btv)
3521 if (!autoload) 3570 if (!autoload)
3522 return; 3571 return;
3523 3572
3573 if (bttv_tvcards[btv->c.type].tuner == UNSET)
3574 return; /* no tuner or related drivers to load */
3575
3524 /* try to detect audio/fader chips */ 3576 /* try to detect audio/fader chips */
3525 if (!bttv_tvcards[btv->c.type].no_msp34xx && 3577 if (!bttv_tvcards[btv->c.type].no_msp34xx &&
3526 bttv_I2CRead(btv, I2C_ADDR_MSP3400, "MSP34xx") >=0) 3578 bttv_I2CRead(btv, I2C_ADDR_MSP3400, "MSP34xx") >=0)
@@ -3541,17 +3593,7 @@ void __devinit bttv_init_card2(struct bttv *btv)
3541 if (bttv_tvcards[btv->c.type].needs_tvaudio) 3593 if (bttv_tvcards[btv->c.type].needs_tvaudio)
3542 request_module("tvaudio"); 3594 request_module("tvaudio");
3543 3595
3544 /* tuner modules */ 3596 if (btv->tuner_type != UNSET && btv->tuner_type != TUNER_ABSENT)
3545 tda9887 = 0;
3546 if (btv->tda9887_conf)
3547 tda9887 = 1;
3548 if (0 == tda9887 && 0 == bttv_tvcards[btv->c.type].has_dvb &&
3549 bttv_I2CRead(btv, I2C_ADDR_TDA9887, "TDA9887") >=0)
3550 tda9887 = 1;
3551 /* Hybrid DVB card, DOES have a tda9887 */
3552 if (btv->c.type == BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE)
3553 tda9887 = 1;
3554 if (btv->tuner_type != UNSET)
3555 request_module("tuner"); 3597 request_module("tuner");
3556} 3598}
3557 3599
@@ -3865,11 +3907,15 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm)
3865 if(norm==VIDEO_MODE_NTSC) { 3907 if(norm==VIDEO_MODE_NTSC) {
3866 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff; 3908 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
3867 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff; 3909 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff;
3910 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
3911 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomute=0x957fff;
3868 dprintk("bttv_tda9880_setnorm to NTSC\n"); 3912 dprintk("bttv_tda9880_setnorm to NTSC\n");
3869 } 3913 }
3870 else { 3914 else {
3871 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff; 3915 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
3872 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff; 3916 bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff;
3917 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
3918 bttv_tvcards[BTTV_BOARD_VOODOOTV_200].gpiomute=0x947fff;
3873 dprintk("bttv_tda9880_setnorm to PAL\n"); 3919 dprintk("bttv_tda9880_setnorm to PAL\n");
3874 } 3920 }
3875 /* set GPIO according */ 3921 /* set GPIO according */
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index b1fedb0f6431..cb555f2c40f9 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -1218,7 +1218,14 @@ audio_mux(struct bttv *btv, int input, int mute)
1218 break; 1218 break;
1219 case TVAUDIO_INPUT_TUNER: 1219 case TVAUDIO_INPUT_TUNER:
1220 default: 1220 default:
1221 route.input = MSP_INPUT_DEFAULT; 1221 /* This is the only card that uses TUNER2, and afaik,
1222 is the only difference between the VOODOOTV_FM
1223 and VOODOOTV_200 */
1224 if (btv->c.type == BTTV_BOARD_VOODOOTV_200)
1225 route.input = MSP_INPUT(MSP_IN_SCART1, MSP_IN_TUNER2, \
1226 MSP_DSP_IN_TUNER, MSP_DSP_IN_TUNER);
1227 else
1228 route.input = MSP_INPUT_DEFAULT;
1222 break; 1229 break;
1223 } 1230 }
1224 route.output = MSP_OUTPUT_DEFAULT; 1231 route.output = MSP_OUTPUT_DEFAULT;
@@ -1253,7 +1260,7 @@ i2c_vidiocschan(struct bttv *btv)
1253 v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id; 1260 v4l2_std_id std = bttv_tvnorms[btv->tvnorm].v4l2_id;
1254 1261
1255 bttv_call_i2c_clients(btv, VIDIOC_S_STD, &std); 1262 bttv_call_i2c_clients(btv, VIDIOC_S_STD, &std);
1256 if (btv->c.type == BTTV_BOARD_VOODOOTV_FM) 1263 if (btv->c.type == BTTV_BOARD_VOODOOTV_FM || btv->c.type == BTTV_BOARD_VOODOOTV_200)
1257 bttv_tda9880_setnorm(btv,btv->tvnorm); 1264 bttv_tda9880_setnorm(btv,btv->tvnorm);
1258} 1265}
1259 1266
@@ -1323,6 +1330,7 @@ set_tvnorm(struct bttv *btv, unsigned int norm)
1323 1330
1324 switch (btv->c.type) { 1331 switch (btv->c.type) {
1325 case BTTV_BOARD_VOODOOTV_FM: 1332 case BTTV_BOARD_VOODOOTV_FM:
1333 case BTTV_BOARD_VOODOOTV_200:
1326 bttv_tda9880_setnorm(btv,norm); 1334 bttv_tda9880_setnorm(btv,norm);
1327 break; 1335 break;
1328 } 1336 }
@@ -2251,6 +2259,24 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg)
2251 printk(KERN_INFO "bttv%d: ================== END STATUS CARD #%d ==================\n", btv->c.nr, btv->c.nr); 2259 printk(KERN_INFO "bttv%d: ================== END STATUS CARD #%d ==================\n", btv->c.nr, btv->c.nr);
2252 return 0; 2260 return 0;
2253 } 2261 }
2262#ifdef CONFIG_VIDEO_ADV_DEBUG
2263 case VIDIOC_DBG_G_REGISTER:
2264 case VIDIOC_DBG_S_REGISTER:
2265 {
2266 struct v4l2_register *reg = arg;
2267 if (!capable(CAP_SYS_ADMIN))
2268 return -EPERM;
2269 if (!v4l2_chip_match_host(reg->match_type, reg->match_chip))
2270 return -EINVAL;
2271 /* bt848 has a 12-bit register space */
2272 reg->reg &= 0xfff;
2273 if (cmd == VIDIOC_DBG_G_REGISTER)
2274 reg->val = btread(reg->reg);
2275 else
2276 btwrite(reg->val, reg->reg);
2277 return 0;
2278 }
2279#endif
2254 2280
2255 default: 2281 default:
2256 return -ENOIOCTLCMD; 2282 return -ENOIOCTLCMD;
@@ -3561,6 +3587,8 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
3561 case VIDIOC_G_FREQUENCY: 3587 case VIDIOC_G_FREQUENCY:
3562 case VIDIOC_S_FREQUENCY: 3588 case VIDIOC_S_FREQUENCY:
3563 case VIDIOC_LOG_STATUS: 3589 case VIDIOC_LOG_STATUS:
3590 case VIDIOC_DBG_G_REGISTER:
3591 case VIDIOC_DBG_S_REGISTER:
3564 return bttv_common_ioctls(btv,cmd,arg); 3592 return bttv_common_ioctls(btv,cmd,arg);
3565 3593
3566 default: 3594 default:
@@ -3943,6 +3971,8 @@ static int radio_do_ioctl(struct inode *inode, struct file *file,
3943 case VIDIOCGAUDIO: 3971 case VIDIOCGAUDIO:
3944 case VIDIOCSAUDIO: 3972 case VIDIOCSAUDIO:
3945 case VIDIOC_LOG_STATUS: 3973 case VIDIOC_LOG_STATUS:
3974 case VIDIOC_DBG_G_REGISTER:
3975 case VIDIOC_DBG_S_REGISTER:
3946 return bttv_common_ioctls(btv,cmd,arg); 3976 return bttv_common_ioctls(btv,cmd,arg);
3947 3977
3948 default: 3978 default:
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c
index 6f74c8042bc3..94a13d0ee614 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -313,7 +313,7 @@ int bttv_input_init(struct bttv *btv)
313 input_dev->id.vendor = btv->c.pci->vendor; 313 input_dev->id.vendor = btv->c.pci->vendor;
314 input_dev->id.product = btv->c.pci->device; 314 input_dev->id.product = btv->c.pci->device;
315 } 315 }
316 input_dev->cdev.dev = &btv->c.pci->dev; 316 input_dev->dev.parent = &btv->c.pci->dev;
317 317
318 btv->remote = ir; 318 btv->remote = ir;
319 bttv_ir_start(btv, ir); 319 bttv_ir_start(btv, ir);
diff --git a/drivers/media/video/bt8xx/bttv.h b/drivers/media/video/bt8xx/bttv.h
index f821ba69db99..dcc847dc2486 100644
--- a/drivers/media/video/bt8xx/bttv.h
+++ b/drivers/media/video/bt8xx/bttv.h
@@ -170,6 +170,8 @@
170#define BTTV_BOARD_MACHTV_MAGICTV 0x90 170#define BTTV_BOARD_MACHTV_MAGICTV 0x90
171#define BTTV_BOARD_SSAI_SECURITY 0x91 171#define BTTV_BOARD_SSAI_SECURITY 0x91
172#define BTTV_BOARD_SSAI_ULTRASOUND 0x92 172#define BTTV_BOARD_SSAI_ULTRASOUND 0x92
173#define BTTV_BOARD_VOODOOTV_200 0x93
174#define BTTV_BOARD_DVICO_FUSIONHDTV_2 0x94
173 175
174/* more card-specific defines */ 176/* more card-specific defines */
175#define PT2254_L_CHANNEL 0x10 177#define PT2254_L_CHANNEL 0x10
diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h
index 8f44f02029be..bd85f6d0fbe3 100644
--- a/drivers/media/video/bt8xx/bttvp.h
+++ b/drivers/media/video/bt8xx/bttvp.h
@@ -33,12 +33,12 @@
33#include <linux/i2c.h> 33#include <linux/i2c.h>
34#include <linux/i2c-algo-bit.h> 34#include <linux/i2c-algo-bit.h>
35#include <linux/videodev.h> 35#include <linux/videodev.h>
36#include <media/v4l2-common.h>
37#include <linux/pci.h> 36#include <linux/pci.h>
38#include <linux/input.h> 37#include <linux/input.h>
39#include <linux/mutex.h> 38#include <linux/mutex.h>
40#include <asm/scatterlist.h> 39#include <asm/scatterlist.h>
41#include <asm/io.h> 40#include <asm/io.h>
41#include <media/v4l2-common.h>
42 42
43#include <linux/device.h> 43#include <linux/device.h>
44#include <media/video-buf.h> 44#include <media/video-buf.h>