aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/bt8xx/bttv-cards.c
diff options
context:
space:
mode:
authorTrent Piepho <xyzzy@speakeasy.org>2009-01-28 19:32:59 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 11:42:46 -0400
commitabb0362f49c361f71b5aa6d244d4847145ed53c1 (patch)
treed59799fe09af041a4f630d8e4f49e8eb3b32968b /drivers/media/video/bt8xx/bttv-cards.c
parent72134a6d5199c3f5c8efe914e49072bde95948b3 (diff)
V4L/DVB (10560): bttv: make tuner card info more consistent
The bttv card database structure had a "tuner" field that was the input number of the tuner input or UNSET for no tuner. However, the only values it could ever be are 0 and UNSET. Having a tuner on an input other than 0 didn't work and was never used. There is also a "tuner_type" field that can be set to TUNER_ABSENT to indicate no tuner, which makes "tuner = UNSET" redundant. In many cases, tuner_type was set to UNSET when there was no tuner, which isn't quite correct. tuner_type == UNSET is supposed to mean the tuner type isn't yet known. So, I changed cards where "tuner == UNSET" to always have tuner_type of TUNER_ABSENT. At this point the tuner field is redundant, so I deleted it. I have the card setup code set the card's tuner_type (not the card type's tuner_type!) to TUNER_ABSENT if it hasn't yet been set at the end of the setup code. Various places that check if the card has a tuner will now look for this instead of checking the card type's "tuner" field. Also autoload the tuner module before issuing the TUNER_SET_TYPE_ADDR I2C client call instead of after issuing it. Overall, on ia32 this decreases compiled code size by about 24 bytes and reduces the data size by 640 bytes. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/bt8xx/bttv-cards.c')
-rw-r--r--drivers/media/video/bt8xx/bttv-cards.c285
1 files changed, 68 insertions, 217 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index 5c558e48e423..edf8d2505f0b 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -321,7 +321,6 @@ struct tvcard bttv_tvcards[] = {
321 .name = " *** UNKNOWN/GENERIC *** ", 321 .name = " *** UNKNOWN/GENERIC *** ",
322 .video_inputs = 4, 322 .video_inputs = 4,
323 .audio_inputs = 1, 323 .audio_inputs = 1,
324 .tuner = 0,
325 .svhs = 2, 324 .svhs = 2,
326 .muxsel = { 2, 3, 1, 0 }, 325 .muxsel = { 2, 3, 1, 0 },
327 .tuner_type = UNSET, 326 .tuner_type = UNSET,
@@ -332,7 +331,6 @@ struct tvcard bttv_tvcards[] = {
332 .name = "MIRO PCTV", 331 .name = "MIRO PCTV",
333 .video_inputs = 4, 332 .video_inputs = 4,
334 .audio_inputs = 1, 333 .audio_inputs = 1,
335 .tuner = 0,
336 .svhs = 2, 334 .svhs = 2,
337 .gpiomask = 15, 335 .gpiomask = 15,
338 .muxsel = { 2, 3, 1, 1 }, 336 .muxsel = { 2, 3, 1, 1 },
@@ -347,7 +345,6 @@ struct tvcard bttv_tvcards[] = {
347 .name = "Hauppauge (bt848)", 345 .name = "Hauppauge (bt848)",
348 .video_inputs = 4, 346 .video_inputs = 4,
349 .audio_inputs = 1, 347 .audio_inputs = 1,
350 .tuner = 0,
351 .svhs = 2, 348 .svhs = 2,
352 .gpiomask = 7, 349 .gpiomask = 7,
353 .muxsel = { 2, 3, 1, 1 }, 350 .muxsel = { 2, 3, 1, 1 },
@@ -362,7 +359,6 @@ struct tvcard bttv_tvcards[] = {
362 .name = "STB, Gateway P/N 6000699 (bt848)", 359 .name = "STB, Gateway P/N 6000699 (bt848)",
363 .video_inputs = 3, 360 .video_inputs = 3,
364 .audio_inputs = 1, 361 .audio_inputs = 1,
365 .tuner = 0,
366 .svhs = 2, 362 .svhs = 2,
367 .gpiomask = 7, 363 .gpiomask = 7,
368 .muxsel = { 2, 3, 1, 1 }, 364 .muxsel = { 2, 3, 1, 1 },
@@ -382,7 +378,6 @@ struct tvcard bttv_tvcards[] = {
382 .name = "Intel Create and Share PCI/ Smart Video Recorder III", 378 .name = "Intel Create and Share PCI/ Smart Video Recorder III",
383 .video_inputs = 4, 379 .video_inputs = 4,
384 .audio_inputs = 0, 380 .audio_inputs = 0,
385 .tuner = UNSET,
386 .svhs = 2, 381 .svhs = 2,
387 .gpiomask = 0, 382 .gpiomask = 0,
388 .muxsel = { 2, 3, 1, 1 }, 383 .muxsel = { 2, 3, 1, 1 },
@@ -396,7 +391,6 @@ struct tvcard bttv_tvcards[] = {
396 .name = "Diamond DTV2000", 391 .name = "Diamond DTV2000",
397 .video_inputs = 4, 392 .video_inputs = 4,
398 .audio_inputs = 1, 393 .audio_inputs = 1,
399 .tuner = 0,
400 .svhs = 2, 394 .svhs = 2,
401 .gpiomask = 3, 395 .gpiomask = 3,
402 .muxsel = { 2, 3, 1, 0 }, 396 .muxsel = { 2, 3, 1, 0 },
@@ -411,7 +405,6 @@ struct tvcard bttv_tvcards[] = {
411 .name = "AVerMedia TVPhone", 405 .name = "AVerMedia TVPhone",
412 .video_inputs = 3, 406 .video_inputs = 3,
413 .audio_inputs = 1, 407 .audio_inputs = 1,
414 .tuner = 0,
415 .svhs = 3, 408 .svhs = 3,
416 .muxsel = { 2, 3, 1, 1 }, 409 .muxsel = { 2, 3, 1, 1 },
417 .gpiomask = 0x0f, 410 .gpiomask = 0x0f,
@@ -428,13 +421,12 @@ struct tvcard bttv_tvcards[] = {
428 .name = "MATRIX-Vision MV-Delta", 421 .name = "MATRIX-Vision MV-Delta",
429 .video_inputs = 5, 422 .video_inputs = 5,
430 .audio_inputs = 1, 423 .audio_inputs = 1,
431 .tuner = UNSET,
432 .svhs = 3, 424 .svhs = 3,
433 .gpiomask = 0, 425 .gpiomask = 0,
434 .muxsel = { 2, 3, 1, 0, 0 }, 426 .muxsel = { 2, 3, 1, 0, 0 },
435 .gpiomux = { 0 }, 427 .gpiomux = { 0 },
436 .needs_tvaudio = 1, 428 .needs_tvaudio = 1,
437 .tuner_type = UNSET, 429 .tuner_type = TUNER_ABSENT,
438 .tuner_addr = ADDR_UNSET, 430 .tuner_addr = ADDR_UNSET,
439 .radio_addr = ADDR_UNSET, 431 .radio_addr = ADDR_UNSET,
440 }, 432 },
@@ -444,7 +436,6 @@ struct tvcard bttv_tvcards[] = {
444 .name = "Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26", 436 .name = "Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26",
445 .video_inputs = 4, 437 .video_inputs = 4,
446 .audio_inputs = 1, 438 .audio_inputs = 1,
447 .tuner = 0,
448 .svhs = 2, 439 .svhs = 2,
449 .gpiomask = 0xc00, 440 .gpiomask = 0xc00,
450 .muxsel = { 2, 3, 1, 1 }, 441 .muxsel = { 2, 3, 1, 1 },
@@ -460,7 +451,6 @@ struct tvcard bttv_tvcards[] = {
460 .name = "IMS/IXmicro TurboTV", 451 .name = "IMS/IXmicro TurboTV",
461 .video_inputs = 3, 452 .video_inputs = 3,
462 .audio_inputs = 1, 453 .audio_inputs = 1,
463 .tuner = 0,
464 .svhs = 2, 454 .svhs = 2,
465 .gpiomask = 3, 455 .gpiomask = 3,
466 .muxsel = { 2, 3, 1, 1 }, 456 .muxsel = { 2, 3, 1, 1 },
@@ -475,7 +465,6 @@ struct tvcard bttv_tvcards[] = {
475 .name = "Hauppauge (bt878)", 465 .name = "Hauppauge (bt878)",
476 .video_inputs = 4, 466 .video_inputs = 4,
477 .audio_inputs = 1, 467 .audio_inputs = 1,
478 .tuner = 0,
479 .svhs = 2, 468 .svhs = 2,
480 .gpiomask = 0x0f, /* old: 7 */ 469 .gpiomask = 0x0f, /* old: 7 */
481 .muxsel = { 2, 0, 1, 1 }, 470 .muxsel = { 2, 0, 1, 1 },
@@ -491,7 +480,6 @@ struct tvcard bttv_tvcards[] = {
491 .name = "MIRO PCTV pro", 480 .name = "MIRO PCTV pro",
492 .video_inputs = 3, 481 .video_inputs = 3,
493 .audio_inputs = 1, 482 .audio_inputs = 1,
494 .tuner = 0,
495 .svhs = 2, 483 .svhs = 2,
496 .gpiomask = 0x3014f, 484 .gpiomask = 0x3014f,
497 .muxsel = { 2, 3, 1, 1 }, 485 .muxsel = { 2, 3, 1, 1 },
@@ -508,7 +496,6 @@ struct tvcard bttv_tvcards[] = {
508 .name = "ADS Technologies Channel Surfer TV (bt848)", 496 .name = "ADS Technologies Channel Surfer TV (bt848)",
509 .video_inputs = 3, 497 .video_inputs = 3,
510 .audio_inputs = 1, 498 .audio_inputs = 1,
511 .tuner = 0,
512 .svhs = 2, 499 .svhs = 2,
513 .gpiomask = 15, 500 .gpiomask = 15,
514 .muxsel = { 2, 3, 1, 1 }, 501 .muxsel = { 2, 3, 1, 1 },
@@ -522,7 +509,6 @@ struct tvcard bttv_tvcards[] = {
522 .name = "AVerMedia TVCapture 98", 509 .name = "AVerMedia TVCapture 98",
523 .video_inputs = 3, 510 .video_inputs = 3,
524 .audio_inputs = 4, 511 .audio_inputs = 4,
525 .tuner = 0,
526 .svhs = 2, 512 .svhs = 2,
527 .gpiomask = 15, 513 .gpiomask = 15,
528 .muxsel = { 2, 3, 1, 1 }, 514 .muxsel = { 2, 3, 1, 1 },
@@ -540,7 +526,6 @@ struct tvcard bttv_tvcards[] = {
540 .name = "Aimslab Video Highway Xtreme (VHX)", 526 .name = "Aimslab Video Highway Xtreme (VHX)",
541 .video_inputs = 3, 527 .video_inputs = 3,
542 .audio_inputs = 1, 528 .audio_inputs = 1,
543 .tuner = 0,
544 .svhs = 2, 529 .svhs = 2,
545 .gpiomask = 7, 530 .gpiomask = 7,
546 .muxsel = { 2, 3, 1, 1 }, 531 .muxsel = { 2, 3, 1, 1 },
@@ -556,7 +541,6 @@ struct tvcard bttv_tvcards[] = {
556 .name = "Zoltrix TV-Max", 541 .name = "Zoltrix TV-Max",
557 .video_inputs = 3, 542 .video_inputs = 3,
558 .audio_inputs = 1, 543 .audio_inputs = 1,
559 .tuner = 0,
560 .svhs = 2, 544 .svhs = 2,
561 .gpiomask = 15, 545 .gpiomask = 15,
562 .muxsel = { 2, 3, 1, 1 }, 546 .muxsel = { 2, 3, 1, 1 },
@@ -573,7 +557,6 @@ struct tvcard bttv_tvcards[] = {
573 .name = "Prolink Pixelview PlayTV (bt878)", 557 .name = "Prolink Pixelview PlayTV (bt878)",
574 .video_inputs = 3, 558 .video_inputs = 3,
575 .audio_inputs = 1, 559 .audio_inputs = 1,
576 .tuner = 0,
577 .svhs = 2, 560 .svhs = 2,
578 .gpiomask = 0x01fe00, 561 .gpiomask = 0x01fe00,
579 .muxsel = { 2, 3, 1, 1 }, 562 .muxsel = { 2, 3, 1, 1 },
@@ -590,7 +573,6 @@ struct tvcard bttv_tvcards[] = {
590 .name = "Leadtek WinView 601", 573 .name = "Leadtek WinView 601",
591 .video_inputs = 3, 574 .video_inputs = 3,
592 .audio_inputs = 1, 575 .audio_inputs = 1,
593 .tuner = 0,
594 .svhs = 2, 576 .svhs = 2,
595 .gpiomask = 0x8300f8, 577 .gpiomask = 0x8300f8,
596 .muxsel = { 2, 3, 1, 1,0 }, 578 .muxsel = { 2, 3, 1, 1,0 },
@@ -607,7 +589,6 @@ struct tvcard bttv_tvcards[] = {
607 .name = "AVEC Intercapture", 589 .name = "AVEC Intercapture",
608 .video_inputs = 3, 590 .video_inputs = 3,
609 .audio_inputs = 2, 591 .audio_inputs = 2,
610 .tuner = 0,
611 .svhs = 2, 592 .svhs = 2,
612 .gpiomask = 0, 593 .gpiomask = 0,
613 .muxsel = { 2, 3, 1, 1 }, 594 .muxsel = { 2, 3, 1, 1 },
@@ -621,13 +602,12 @@ struct tvcard bttv_tvcards[] = {
621 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", 602 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
622 .video_inputs = 4, 603 .video_inputs = 4,
623 .audio_inputs = 1, 604 .audio_inputs = 1,
624 .tuner = UNSET,
625 .svhs = UNSET, 605 .svhs = UNSET,
626 .gpiomask = 0x8dff00, 606 .gpiomask = 0x8dff00,
627 .muxsel = { 2, 3, 1, 1 }, 607 .muxsel = { 2, 3, 1, 1 },
628 .gpiomux = { 0 }, 608 .gpiomux = { 0 },
629 .no_msp34xx = 1, 609 .no_msp34xx = 1,
630 .tuner_type = UNSET, 610 .tuner_type = TUNER_ABSENT,
631 .tuner_addr = ADDR_UNSET, 611 .tuner_addr = ADDR_UNSET,
632 .radio_addr = ADDR_UNSET, 612 .radio_addr = ADDR_UNSET,
633 }, 613 },
@@ -637,7 +617,6 @@ struct tvcard bttv_tvcards[] = {
637 .name = "CEI Raffles Card", 617 .name = "CEI Raffles Card",
638 .video_inputs = 3, 618 .video_inputs = 3,
639 .audio_inputs = 3, 619 .audio_inputs = 3,
640 .tuner = 0,
641 .svhs = 2, 620 .svhs = 2,
642 .muxsel = { 2, 3, 1, 1 }, 621 .muxsel = { 2, 3, 1, 1 },
643 .tuner_type = UNSET, 622 .tuner_type = UNSET,
@@ -648,7 +627,6 @@ struct tvcard bttv_tvcards[] = {
648 .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50", 627 .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
649 .video_inputs = 4, 628 .video_inputs = 4,
650 .audio_inputs = 2, /* tuner, line in */ 629 .audio_inputs = 2, /* tuner, line in */
651 .tuner = 0,
652 .svhs = 2, 630 .svhs = 2,
653 .gpiomask = 0x1800, 631 .gpiomask = 0x1800,
654 .muxsel = { 2, 3, 1, 1 }, 632 .muxsel = { 2, 3, 1, 1 },
@@ -663,7 +641,6 @@ struct tvcard bttv_tvcards[] = {
663 .name = "Askey CPH050/ Phoebe Tv Master + FM", 641 .name = "Askey CPH050/ Phoebe Tv Master + FM",
664 .video_inputs = 3, 642 .video_inputs = 3,
665 .audio_inputs = 1, 643 .audio_inputs = 1,
666 .tuner = 0,
667 .svhs = 2, 644 .svhs = 2,
668 .gpiomask = 0xc00, 645 .gpiomask = 0xc00,
669 .muxsel = { 2, 3, 1, 1 }, 646 .muxsel = { 2, 3, 1, 1 },
@@ -679,7 +656,6 @@ struct tvcard bttv_tvcards[] = {
679 .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878", 656 .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878",
680 .video_inputs = 3, 657 .video_inputs = 3,
681 .audio_inputs = 1, 658 .audio_inputs = 1,
682 .tuner = 0,
683 .svhs = UNSET, 659 .svhs = UNSET,
684 .gpiomask = 7, 660 .gpiomask = 7,
685 .muxsel = { 2, 3, -1 }, 661 .muxsel = { 2, 3, -1 },
@@ -697,7 +673,6 @@ struct tvcard bttv_tvcards[] = {
697 .name = "Askey CPH05X/06X (bt878) [many vendors]", 673 .name = "Askey CPH05X/06X (bt878) [many vendors]",
698 .video_inputs = 3, 674 .video_inputs = 3,
699 .audio_inputs = 1, 675 .audio_inputs = 1,
700 .tuner = 0,
701 .svhs = 2, 676 .svhs = 2,
702 .gpiomask = 0xe00, 677 .gpiomask = 0xe00,
703 .muxsel = { 2, 3, 1, 1 }, 678 .muxsel = { 2, 3, 1, 1 },
@@ -714,7 +689,6 @@ struct tvcard bttv_tvcards[] = {
714 .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar", 689 .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
715 .video_inputs = 3, 690 .video_inputs = 3,
716 .audio_inputs = 1, 691 .audio_inputs = 1,
717 .tuner = 0,
718 .svhs = 2, 692 .svhs = 2,
719 .gpiomask = 0x1f0fff, 693 .gpiomask = 0x1f0fff,
720 .muxsel = { 2, 3, 1, 1 }, 694 .muxsel = { 2, 3, 1, 1 },
@@ -730,7 +704,6 @@ struct tvcard bttv_tvcards[] = {
730 .name = "Hauppauge WinCam newer (bt878)", 704 .name = "Hauppauge WinCam newer (bt878)",
731 .video_inputs = 4, 705 .video_inputs = 4,
732 .audio_inputs = 1, 706 .audio_inputs = 1,
733 .tuner = 0,
734 .svhs = 3, 707 .svhs = 3,
735 .gpiomask = 7, 708 .gpiomask = 7,
736 .muxsel = { 2, 0, 1, 1 }, 709 .muxsel = { 2, 0, 1, 1 },
@@ -745,7 +718,6 @@ struct tvcard bttv_tvcards[] = {
745 .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50", 718 .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
746 .video_inputs = 4, 719 .video_inputs = 4,
747 .audio_inputs = 2, 720 .audio_inputs = 2,
748 .tuner = 0,
749 .svhs = 2, 721 .svhs = 2,
750 .gpiomask = 0x1800, 722 .gpiomask = 0x1800,
751 .muxsel = { 2, 3, 1, 1 }, 723 .muxsel = { 2, 3, 1, 1 },
@@ -762,7 +734,6 @@ struct tvcard bttv_tvcards[] = {
762 .name = "Terratec TerraTV+ Version 1.1 (bt878)", 734 .name = "Terratec TerraTV+ Version 1.1 (bt878)",
763 .video_inputs = 3, 735 .video_inputs = 3,
764 .audio_inputs = 1, 736 .audio_inputs = 1,
765 .tuner = 0,
766 .svhs = 2, 737 .svhs = 2,
767 .gpiomask = 0x1f0fff, 738 .gpiomask = 0x1f0fff,
768 .muxsel = { 2, 3, 1, 1 }, 739 .muxsel = { 2, 3, 1, 1 },
@@ -810,13 +781,12 @@ struct tvcard bttv_tvcards[] = {
810 .name = "Imagenation PXC200", 781 .name = "Imagenation PXC200",
811 .video_inputs = 5, 782 .video_inputs = 5,
812 .audio_inputs = 1, 783 .audio_inputs = 1,
813 .tuner = UNSET,
814 .svhs = 1, /* was: 4 */ 784 .svhs = 1, /* was: 4 */
815 .gpiomask = 0, 785 .gpiomask = 0,
816 .muxsel = { 2, 3, 1, 0, 0}, 786 .muxsel = { 2, 3, 1, 0, 0},
817 .gpiomux = { 0 }, 787 .gpiomux = { 0 },
818 .needs_tvaudio = 1, 788 .needs_tvaudio = 1,
819 .tuner_type = UNSET, 789 .tuner_type = TUNER_ABSENT,
820 .tuner_addr = ADDR_UNSET, 790 .tuner_addr = ADDR_UNSET,
821 .radio_addr = ADDR_UNSET, 791 .radio_addr = ADDR_UNSET,
822 .muxsel_hook = PXC200_muxsel, 792 .muxsel_hook = PXC200_muxsel,
@@ -826,7 +796,6 @@ struct tvcard bttv_tvcards[] = {
826 .name = "Lifeview FlyVideo 98 LR50", 796 .name = "Lifeview FlyVideo 98 LR50",
827 .video_inputs = 4, 797 .video_inputs = 4,
828 .audio_inputs = 1, 798 .audio_inputs = 1,
829 .tuner = 0,
830 .svhs = 2, 799 .svhs = 2,
831 .gpiomask = 0x1800, /* 0x8dfe00 */ 800 .gpiomask = 0x1800, /* 0x8dfe00 */
832 .muxsel = { 2, 3, 1, 1 }, 801 .muxsel = { 2, 3, 1, 1 },
@@ -841,7 +810,6 @@ struct tvcard bttv_tvcards[] = {
841 .name = "Formac iProTV, Formac ProTV I (bt848)", 810 .name = "Formac iProTV, Formac ProTV I (bt848)",
842 .video_inputs = 4, 811 .video_inputs = 4,
843 .audio_inputs = 1, 812 .audio_inputs = 1,
844 .tuner = 0,
845 .svhs = 3, 813 .svhs = 3,
846 .gpiomask = 1, 814 .gpiomask = 1,
847 .muxsel = { 2, 3, 1, 1 }, 815 .muxsel = { 2, 3, 1, 1 },
@@ -857,7 +825,6 @@ struct tvcard bttv_tvcards[] = {
857 .name = "Intel Create and Share PCI/ Smart Video Recorder III", 825 .name = "Intel Create and Share PCI/ Smart Video Recorder III",
858 .video_inputs = 4, 826 .video_inputs = 4,
859 .audio_inputs = 0, 827 .audio_inputs = 0,
860 .tuner = UNSET,
861 .svhs = 2, 828 .svhs = 2,
862 .gpiomask = 0, 829 .gpiomask = 0,
863 .muxsel = { 2, 3, 1, 1 }, 830 .muxsel = { 2, 3, 1, 1 },
@@ -871,7 +838,6 @@ struct tvcard bttv_tvcards[] = {
871 .name = "Terratec TerraTValue Version Bt878", 838 .name = "Terratec TerraTValue Version Bt878",
872 .video_inputs = 3, 839 .video_inputs = 3,
873 .audio_inputs = 1, 840 .audio_inputs = 1,
874 .tuner = 0,
875 .svhs = 2, 841 .svhs = 2,
876 .gpiomask = 0xffff00, 842 .gpiomask = 0xffff00,
877 .muxsel = { 2, 3, 1, 1 }, 843 .muxsel = { 2, 3, 1, 1 },
@@ -887,7 +853,6 @@ struct tvcard bttv_tvcards[] = {
887 .name = "Leadtek WinFast 2000/ WinFast 2000 XP", 853 .name = "Leadtek WinFast 2000/ WinFast 2000 XP",
888 .video_inputs = 4, 854 .video_inputs = 4,
889 .audio_inputs = 1, 855 .audio_inputs = 1,
890 .tuner = 0,
891 .svhs = 2, 856 .svhs = 2,
892 .muxsel = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */ 857 .muxsel = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */
893 /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */ 858 /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
@@ -918,7 +883,6 @@ struct tvcard bttv_tvcards[] = {
918 .name = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II", 883 .name = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II",
919 .video_inputs = 4, 884 .video_inputs = 4,
920 .audio_inputs = 3, 885 .audio_inputs = 3,
921 .tuner = 0,
922 .svhs = 2, 886 .svhs = 2,
923 .gpiomask = 0x1800, 887 .gpiomask = 0x1800,
924 .muxsel = { 2, 3, 1, 1 }, 888 .muxsel = { 2, 3, 1, 1 },
@@ -935,7 +899,6 @@ struct tvcard bttv_tvcards[] = {
935 .name = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner", 899 .name = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner",
936 .video_inputs = 4, 900 .video_inputs = 4,
937 .audio_inputs = 3, 901 .audio_inputs = 3,
938 .tuner = 0,
939 .svhs = 2, 902 .svhs = 2,
940 .gpiomask = 0x1800, 903 .gpiomask = 0x1800,
941 .muxsel = { 2, 3, 1, 1 }, 904 .muxsel = { 2, 3, 1, 1 },
@@ -951,7 +914,6 @@ struct tvcard bttv_tvcards[] = {
951 .name = "Prolink PixelView PlayTV pro", 914 .name = "Prolink PixelView PlayTV pro",
952 .video_inputs = 3, 915 .video_inputs = 3,
953 .audio_inputs = 1, 916 .audio_inputs = 1,
954 .tuner = 0,
955 .svhs = 2, 917 .svhs = 2,
956 .gpiomask = 0xff, 918 .gpiomask = 0xff,
957 .muxsel = { 2, 3, 1, 1 }, 919 .muxsel = { 2, 3, 1, 1 },
@@ -967,7 +929,6 @@ struct tvcard bttv_tvcards[] = {
967 .name = "Askey CPH06X TView99", 929 .name = "Askey CPH06X TView99",
968 .video_inputs = 4, 930 .video_inputs = 4,
969 .audio_inputs = 1, 931 .audio_inputs = 1,
970 .tuner = 0,
971 .svhs = 2, 932 .svhs = 2,
972 .gpiomask = 0x551e00, 933 .gpiomask = 0x551e00,
973 .muxsel = { 2, 3, 1, 0 }, 934 .muxsel = { 2, 3, 1, 0 },
@@ -984,7 +945,6 @@ struct tvcard bttv_tvcards[] = {
984 .name = "Pinnacle PCTV Studio/Rave", 945 .name = "Pinnacle PCTV Studio/Rave",
985 .video_inputs = 3, 946 .video_inputs = 3,
986 .audio_inputs = 1, 947 .audio_inputs = 1,
987 .tuner = 0,
988 .svhs = 2, 948 .svhs = 2,
989 .gpiomask = 0x03000F, 949 .gpiomask = 0x03000F,
990 .muxsel = { 2, 3, 1, 1 }, 950 .muxsel = { 2, 3, 1, 1 },
@@ -1002,7 +962,6 @@ struct tvcard bttv_tvcards[] = {
1002 .name = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100", 962 .name = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
1003 .video_inputs = 3, 963 .video_inputs = 3,
1004 .audio_inputs = 1, 964 .audio_inputs = 1,
1005 .tuner = 0,
1006 .svhs = 2, 965 .svhs = 2,
1007 .gpiomask = 7, 966 .gpiomask = 7,
1008 .muxsel = { 2, 3, 1, 1 }, 967 .muxsel = { 2, 3, 1, 1 },
@@ -1020,7 +979,6 @@ struct tvcard bttv_tvcards[] = {
1020 .name = "AVerMedia TVPhone 98", 979 .name = "AVerMedia TVPhone 98",
1021 .video_inputs = 3, 980 .video_inputs = 3,
1022 .audio_inputs = 4, 981 .audio_inputs = 4,
1023 .tuner = 0,
1024 .svhs = 2, 982 .svhs = 2,
1025 .gpiomask = 15, 983 .gpiomask = 15,
1026 .muxsel = { 2, 3, 1, 1 }, 984 .muxsel = { 2, 3, 1, 1 },
@@ -1037,7 +995,6 @@ struct tvcard bttv_tvcards[] = {
1037 .name = "ProVideo PV951", /* pic16c54 */ 995 .name = "ProVideo PV951", /* pic16c54 */
1038 .video_inputs = 3, 996 .video_inputs = 3,
1039 .audio_inputs = 1, 997 .audio_inputs = 1,
1040 .tuner = 0,
1041 .svhs = 2, 998 .svhs = 2,
1042 .gpiomask = 0, 999 .gpiomask = 0,
1043 .muxsel = { 2, 3, 1, 1}, 1000 .muxsel = { 2, 3, 1, 1},
@@ -1053,7 +1010,6 @@ struct tvcard bttv_tvcards[] = {
1053 .name = "Little OnAir TV", 1010 .name = "Little OnAir TV",
1054 .video_inputs = 3, 1011 .video_inputs = 3,
1055 .audio_inputs = 1, 1012 .audio_inputs = 1,
1056 .tuner = 0,
1057 .svhs = 2, 1013 .svhs = 2,
1058 .gpiomask = 0xe00b, 1014 .gpiomask = 0xe00b,
1059 .muxsel = { 2, 3, 1, 1 }, 1015 .muxsel = { 2, 3, 1, 1 },
@@ -1070,7 +1026,6 @@ struct tvcard bttv_tvcards[] = {
1070 .name = "Sigma TVII-FM", 1026 .name = "Sigma TVII-FM",
1071 .video_inputs = 2, 1027 .video_inputs = 2,
1072 .audio_inputs = 1, 1028 .audio_inputs = 1,
1073 .tuner = 0,
1074 .svhs = UNSET, 1029 .svhs = UNSET,
1075 .gpiomask = 3, 1030 .gpiomask = 3,
1076 .muxsel = { 2, 3, 1, 1 }, 1031 .muxsel = { 2, 3, 1, 1 },
@@ -1086,14 +1041,13 @@ struct tvcard bttv_tvcards[] = {
1086 .name = "MATRIX-Vision MV-Delta 2", 1041 .name = "MATRIX-Vision MV-Delta 2",
1087 .video_inputs = 5, 1042 .video_inputs = 5,
1088 .audio_inputs = 1, 1043 .audio_inputs = 1,
1089 .tuner = UNSET,
1090 .svhs = 3, 1044 .svhs = 3,
1091 .gpiomask = 0, 1045 .gpiomask = 0,
1092 .muxsel = { 2, 3, 1, 0, 0 }, 1046 .muxsel = { 2, 3, 1, 0, 0 },
1093 .gpiomux = { 0 }, 1047 .gpiomux = { 0 },
1094 .no_msp34xx = 1, 1048 .no_msp34xx = 1,
1095 .pll = PLL_28, 1049 .pll = PLL_28,
1096 .tuner_type = UNSET, 1050 .tuner_type = TUNER_ABSENT,
1097 .tuner_addr = ADDR_UNSET, 1051 .tuner_addr = ADDR_UNSET,
1098 .radio_addr = ADDR_UNSET, 1052 .radio_addr = ADDR_UNSET,
1099 }, 1053 },
@@ -1101,7 +1055,6 @@ struct tvcard bttv_tvcards[] = {
1101 .name = "Zoltrix Genie TV/FM", 1055 .name = "Zoltrix Genie TV/FM",
1102 .video_inputs = 3, 1056 .video_inputs = 3,
1103 .audio_inputs = 1, 1057 .audio_inputs = 1,
1104 .tuner = 0,
1105 .svhs = 2, 1058 .svhs = 2,
1106 .gpiomask = 0xbcf03f, 1059 .gpiomask = 0xbcf03f,
1107 .muxsel = { 2, 3, 1, 1 }, 1060 .muxsel = { 2, 3, 1, 1 },
@@ -1117,7 +1070,6 @@ struct tvcard bttv_tvcards[] = {
1117 .name = "Terratec TV/Radio+", 1070 .name = "Terratec TV/Radio+",
1118 .video_inputs = 3, 1071 .video_inputs = 3,
1119 .audio_inputs = 1, 1072 .audio_inputs = 1,
1120 .tuner = 0,
1121 .svhs = 2, 1073 .svhs = 2,
1122 .gpiomask = 0x70000, 1074 .gpiomask = 0x70000,
1123 .muxsel = { 2, 3, 1, 1 }, 1075 .muxsel = { 2, 3, 1, 1 },
@@ -1137,7 +1089,6 @@ struct tvcard bttv_tvcards[] = {
1137 .name = "Askey CPH03x/ Dynalink Magic TView", 1089 .name = "Askey CPH03x/ Dynalink Magic TView",
1138 .video_inputs = 3, 1090 .video_inputs = 3,
1139 .audio_inputs = 1, 1091 .audio_inputs = 1,
1140 .tuner = 0,
1141 .svhs = 2, 1092 .svhs = 2,
1142 .gpiomask = 15, 1093 .gpiomask = 15,
1143 .muxsel = { 2, 3, 1, 1 }, 1094 .muxsel = { 2, 3, 1, 1 },
@@ -1153,7 +1104,6 @@ struct tvcard bttv_tvcards[] = {
1153 .name = "IODATA GV-BCTV3/PCI", 1104 .name = "IODATA GV-BCTV3/PCI",
1154 .video_inputs = 3, 1105 .video_inputs = 3,
1155 .audio_inputs = 1, 1106 .audio_inputs = 1,
1156 .tuner = 0,
1157 .svhs = 2, 1107 .svhs = 2,
1158 .gpiomask = 0x010f00, 1108 .gpiomask = 0x010f00,
1159 .muxsel = {2, 3, 0, 0 }, 1109 .muxsel = {2, 3, 0, 0 },
@@ -1169,7 +1119,6 @@ struct tvcard bttv_tvcards[] = {
1169 .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP", 1119 .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
1170 .video_inputs = 5, 1120 .video_inputs = 5,
1171 .audio_inputs = 1, 1121 .audio_inputs = 1,
1172 .tuner = 0,
1173 .svhs = 3, 1122 .svhs = 3,
1174 .gpiomask = 0xAA0000, 1123 .gpiomask = 0xAA0000,
1175 .muxsel = { 2,3,1,1,-1 }, 1124 .muxsel = { 2,3,1,1,-1 },
@@ -1196,7 +1145,6 @@ struct tvcard bttv_tvcards[] = {
1196 .name = "Eagle Wireless Capricorn2 (bt878A)", 1145 .name = "Eagle Wireless Capricorn2 (bt878A)",
1197 .video_inputs = 4, 1146 .video_inputs = 4,
1198 .audio_inputs = 1, 1147 .audio_inputs = 1,
1199 .tuner = 0,
1200 .svhs = 2, 1148 .svhs = 2,
1201 .gpiomask = 7, 1149 .gpiomask = 7,
1202 .muxsel = { 2, 0, 1, 1 }, 1150 .muxsel = { 2, 0, 1, 1 },
@@ -1214,7 +1162,6 @@ struct tvcard bttv_tvcards[] = {
1214 .name = "Pinnacle PCTV Studio Pro", 1162 .name = "Pinnacle PCTV Studio Pro",
1215 .video_inputs = 4, 1163 .video_inputs = 4,
1216 .audio_inputs = 1, 1164 .audio_inputs = 1,
1217 .tuner = 0,
1218 .svhs = 3, 1165 .svhs = 3,
1219 .gpiomask = 0x03000F, 1166 .gpiomask = 0x03000F,
1220 .muxsel = { 2, 3, 1, 1 }, 1167 .muxsel = { 2, 3, 1, 1 },
@@ -1241,7 +1188,6 @@ struct tvcard bttv_tvcards[] = {
1241 .name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS", 1188 .name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS",
1242 .video_inputs = 4, 1189 .video_inputs = 4,
1243 .audio_inputs = 3, 1190 .audio_inputs = 3,
1244 .tuner = 0,
1245 .svhs = 2, 1191 .svhs = 2,
1246 .gpiomask = 0x1c, 1192 .gpiomask = 0x1c,
1247 .muxsel = { 2, 3, 1, 1 }, 1193 .muxsel = { 2, 3, 1, 1 },
@@ -1263,7 +1209,6 @@ struct tvcard bttv_tvcards[] = {
1263 .name = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]", 1209 .name = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
1264 .video_inputs = 4, 1210 .video_inputs = 4,
1265 .audio_inputs = 1, 1211 .audio_inputs = 1,
1266 .tuner = 0,
1267 .svhs = 2, 1212 .svhs = 2,
1268 .gpiomask = 0x18e0, 1213 .gpiomask = 0x18e0,
1269 .muxsel = { 2, 3, 1, 1 }, 1214 .muxsel = { 2, 3, 1, 1 },
@@ -1284,7 +1229,6 @@ struct tvcard bttv_tvcards[] = {
1284 .name = "Askey CPH031/ BESTBUY Easy TV", 1229 .name = "Askey CPH031/ BESTBUY Easy TV",
1285 .video_inputs = 4, 1230 .video_inputs = 4,
1286 .audio_inputs = 1, 1231 .audio_inputs = 1,
1287 .tuner = 0,
1288 .svhs = 2, 1232 .svhs = 2,
1289 .gpiomask = 0xF, 1233 .gpiomask = 0xF,
1290 .muxsel = { 2, 3, 1, 0 }, 1234 .muxsel = { 2, 3, 1, 0 },
@@ -1303,7 +1247,6 @@ struct tvcard bttv_tvcards[] = {
1303 .name = "Lifeview FlyVideo 98FM LR50", 1247 .name = "Lifeview FlyVideo 98FM LR50",
1304 .video_inputs = 4, 1248 .video_inputs = 4,
1305 .audio_inputs = 3, 1249 .audio_inputs = 3,
1306 .tuner = 0,
1307 .svhs = 2, 1250 .svhs = 2,
1308 .gpiomask = 0x1800, 1251 .gpiomask = 0x1800,
1309 .muxsel = { 2, 3, 1, 1 }, 1252 .muxsel = { 2, 3, 1, 1 },
@@ -1321,7 +1264,6 @@ struct tvcard bttv_tvcards[] = {
1321 .name = "GrandTec 'Grand Video Capture' (Bt848)", 1264 .name = "GrandTec 'Grand Video Capture' (Bt848)",
1322 .video_inputs = 2, 1265 .video_inputs = 2,
1323 .audio_inputs = 0, 1266 .audio_inputs = 0,
1324 .tuner = UNSET,
1325 .svhs = 1, 1267 .svhs = 1,
1326 .gpiomask = 0, 1268 .gpiomask = 0,
1327 .muxsel = { 3, 1 }, 1269 .muxsel = { 3, 1 },
@@ -1329,7 +1271,7 @@ struct tvcard bttv_tvcards[] = {
1329 .needs_tvaudio = 0, 1271 .needs_tvaudio = 0,
1330 .no_msp34xx = 1, 1272 .no_msp34xx = 1,
1331 .pll = PLL_35, 1273 .pll = PLL_35,
1332 .tuner_type = UNSET, 1274 .tuner_type = TUNER_ABSENT,
1333 .tuner_addr = ADDR_UNSET, 1275 .tuner_addr = ADDR_UNSET,
1334 .radio_addr = ADDR_UNSET, 1276 .radio_addr = ADDR_UNSET,
1335 }, 1277 },
@@ -1338,7 +1280,6 @@ struct tvcard bttv_tvcards[] = {
1338 .name = "Askey CPH060/ Phoebe TV Master Only (No FM)", 1280 .name = "Askey CPH060/ Phoebe TV Master Only (No FM)",
1339 .video_inputs = 3, 1281 .video_inputs = 3,
1340 .audio_inputs = 1, 1282 .audio_inputs = 1,
1341 .tuner = 0,
1342 .svhs = 2, 1283 .svhs = 2,
1343 .gpiomask = 0xe00, 1284 .gpiomask = 0xe00,
1344 .muxsel = { 2, 3, 1, 1}, 1285 .muxsel = { 2, 3, 1, 1},
@@ -1355,7 +1296,6 @@ struct tvcard bttv_tvcards[] = {
1355 .name = "Askey CPH03x TV Capturer", 1296 .name = "Askey CPH03x TV Capturer",
1356 .video_inputs = 4, 1297 .video_inputs = 4,
1357 .audio_inputs = 1, 1298 .audio_inputs = 1,
1358 .tuner = 0,
1359 .svhs = 2, 1299 .svhs = 2,
1360 .gpiomask = 0x03000F, 1300 .gpiomask = 0x03000F,
1361 .muxsel = { 2, 3, 1, 0 }, 1301 .muxsel = { 2, 3, 1, 0 },
@@ -1373,7 +1313,6 @@ struct tvcard bttv_tvcards[] = {
1373 .name = "Modular Technology MM100PCTV", 1313 .name = "Modular Technology MM100PCTV",
1374 .video_inputs = 2, 1314 .video_inputs = 2,
1375 .audio_inputs = 2, 1315 .audio_inputs = 2,
1376 .tuner = 0,
1377 .svhs = UNSET, 1316 .svhs = UNSET,
1378 .gpiomask = 11, 1317 .gpiomask = 11,
1379 .muxsel = { 2, 3, 1, 1 }, 1318 .muxsel = { 2, 3, 1, 1 },
@@ -1389,7 +1328,6 @@ struct tvcard bttv_tvcards[] = {
1389 .name = "AG Electronics GMV1", 1328 .name = "AG Electronics GMV1",
1390 .video_inputs = 2, 1329 .video_inputs = 2,
1391 .audio_inputs = 0, 1330 .audio_inputs = 0,
1392 .tuner = UNSET,
1393 .svhs = 1, 1331 .svhs = 1,
1394 .gpiomask = 0xF, 1332 .gpiomask = 0xF,
1395 .muxsel = { 2, 2 }, 1333 .muxsel = { 2, 2 },
@@ -1397,7 +1335,7 @@ struct tvcard bttv_tvcards[] = {
1397 .no_msp34xx = 1, 1335 .no_msp34xx = 1,
1398 .needs_tvaudio = 0, 1336 .needs_tvaudio = 0,
1399 .pll = PLL_28, 1337 .pll = PLL_28,
1400 .tuner_type = UNSET, 1338 .tuner_type = TUNER_ABSENT,
1401 .tuner_addr = ADDR_UNSET, 1339 .tuner_addr = ADDR_UNSET,
1402 .radio_addr = ADDR_UNSET, 1340 .radio_addr = ADDR_UNSET,
1403 }, 1341 },
@@ -1408,7 +1346,6 @@ struct tvcard bttv_tvcards[] = {
1408 .name = "Askey CPH061/ BESTBUY Easy TV (bt878)", 1346 .name = "Askey CPH061/ BESTBUY Easy TV (bt878)",
1409 .video_inputs = 3, 1347 .video_inputs = 3,
1410 .audio_inputs = 2, 1348 .audio_inputs = 2,
1411 .tuner = 0,
1412 .svhs = 2, 1349 .svhs = 2,
1413 .gpiomask = 0xFF, 1350 .gpiomask = 0xFF,
1414 .muxsel = { 2, 3, 1, 0 }, 1351 .muxsel = { 2, 3, 1, 0 },
@@ -1425,7 +1362,6 @@ struct tvcard bttv_tvcards[] = {
1425 .name = "ATI TV-Wonder", 1362 .name = "ATI TV-Wonder",
1426 .video_inputs = 3, 1363 .video_inputs = 3,
1427 .audio_inputs = 1, 1364 .audio_inputs = 1,
1428 .tuner = 0,
1429 .svhs = 2, 1365 .svhs = 2,
1430 .gpiomask = 0xf03f, 1366 .gpiomask = 0xf03f,
1431 .muxsel = { 2, 3, 1, 0 }, 1367 .muxsel = { 2, 3, 1, 0 },
@@ -1443,7 +1379,6 @@ struct tvcard bttv_tvcards[] = {
1443 .name = "ATI TV-Wonder VE", 1379 .name = "ATI TV-Wonder VE",
1444 .video_inputs = 2, 1380 .video_inputs = 2,
1445 .audio_inputs = 1, 1381 .audio_inputs = 1,
1446 .tuner = 0,
1447 .svhs = UNSET, 1382 .svhs = UNSET,
1448 .gpiomask = 1, 1383 .gpiomask = 1,
1449 .muxsel = { 2, 3, 0, 1 }, 1384 .muxsel = { 2, 3, 0, 1 },
@@ -1459,7 +1394,6 @@ struct tvcard bttv_tvcards[] = {
1459 .name = "Lifeview FlyVideo 2000S LR90", 1394 .name = "Lifeview FlyVideo 2000S LR90",
1460 .video_inputs = 3, 1395 .video_inputs = 3,
1461 .audio_inputs = 3, 1396 .audio_inputs = 3,
1462 .tuner = 0,
1463 .svhs = 2, 1397 .svhs = 2,
1464 .gpiomask = 0x18e0, 1398 .gpiomask = 0x18e0,
1465 .muxsel = { 2, 3, 0, 1 }, 1399 .muxsel = { 2, 3, 0, 1 },
@@ -1481,7 +1415,6 @@ struct tvcard bttv_tvcards[] = {
1481 .name = "Terratec TValueRadio", 1415 .name = "Terratec TValueRadio",
1482 .video_inputs = 3, 1416 .video_inputs = 3,
1483 .audio_inputs = 1, 1417 .audio_inputs = 1,
1484 .tuner = 0,
1485 .svhs = 2, 1418 .svhs = 2,
1486 .gpiomask = 0xffff00, 1419 .gpiomask = 0xffff00,
1487 .muxsel = { 2, 3, 1, 1 }, 1420 .muxsel = { 2, 3, 1, 1 },
@@ -1499,7 +1432,6 @@ struct tvcard bttv_tvcards[] = {
1499 .name = "IODATA GV-BCTV4/PCI", 1432 .name = "IODATA GV-BCTV4/PCI",
1500 .video_inputs = 3, 1433 .video_inputs = 3,
1501 .audio_inputs = 1, 1434 .audio_inputs = 1,
1502 .tuner = 0,
1503 .svhs = 2, 1435 .svhs = 2,
1504 .gpiomask = 0x010f00, 1436 .gpiomask = 0x010f00,
1505 .muxsel = {2, 3, 0, 0 }, 1437 .muxsel = {2, 3, 0, 0 },
@@ -1519,7 +1451,6 @@ struct tvcard bttv_tvcards[] = {
1519 * sound problems with this card. */ 1451 * sound problems with this card. */
1520 .video_inputs = 4, 1452 .video_inputs = 4,
1521 .audio_inputs = 1, 1453 .audio_inputs = 1,
1522 .tuner = 0,
1523 .svhs = UNSET, 1454 .svhs = UNSET,
1524 .gpiomask = 0x4f8a00, 1455 .gpiomask = 0x4f8a00,
1525 /* 0x100000: 1=MSP enabled (0=disable again) 1456 /* 0x100000: 1=MSP enabled (0=disable again)
@@ -1541,7 +1472,6 @@ struct tvcard bttv_tvcards[] = {
1541 * sound problems with this card. */ 1472 * sound problems with this card. */
1542 .video_inputs = 4, 1473 .video_inputs = 4,
1543 .audio_inputs = 1, 1474 .audio_inputs = 1,
1544 .tuner = 0,
1545 .svhs = UNSET, 1475 .svhs = UNSET,
1546 .gpiomask = 0x4f8a00, 1476 .gpiomask = 0x4f8a00,
1547 /* 0x100000: 1=MSP enabled (0=disable again) 1477 /* 0x100000: 1=MSP enabled (0=disable again)
@@ -1562,8 +1492,7 @@ struct tvcard bttv_tvcards[] = {
1562 .name = "Active Imaging AIMMS", 1492 .name = "Active Imaging AIMMS",
1563 .video_inputs = 1, 1493 .video_inputs = 1,
1564 .audio_inputs = 0, 1494 .audio_inputs = 0,
1565 .tuner = UNSET, 1495 .tuner_type = TUNER_ABSENT,
1566 .tuner_type = UNSET,
1567 .tuner_addr = ADDR_UNSET, 1496 .tuner_addr = ADDR_UNSET,
1568 .radio_addr = ADDR_UNSET, 1497 .radio_addr = ADDR_UNSET,
1569 .pll = PLL_28, 1498 .pll = PLL_28,
@@ -1575,7 +1504,6 @@ struct tvcard bttv_tvcards[] = {
1575 .name = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)", 1504 .name = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)",
1576 .video_inputs = 3, 1505 .video_inputs = 3,
1577 .audio_inputs = 4, 1506 .audio_inputs = 4,
1578 .tuner = 0,
1579 .svhs = 2, 1507 .svhs = 2,
1580 .gpiomask = 15, 1508 .gpiomask = 15,
1581 .muxsel = { 2, 3, 1, 1 }, 1509 .muxsel = { 2, 3, 1, 1 },
@@ -1599,12 +1527,11 @@ struct tvcard bttv_tvcards[] = {
1599 .name = "Lifeview FlyVideo 98EZ (capture only) LR51", 1527 .name = "Lifeview FlyVideo 98EZ (capture only) LR51",
1600 .video_inputs = 4, 1528 .video_inputs = 4,
1601 .audio_inputs = 0, 1529 .audio_inputs = 0,
1602 .tuner = UNSET,
1603 .svhs = 2, 1530 .svhs = 2,
1604 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */ 1531 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */
1605 .pll = PLL_28, 1532 .pll = PLL_28,
1606 .no_msp34xx = 1, 1533 .no_msp34xx = 1,
1607 .tuner_type = UNSET, 1534 .tuner_type = TUNER_ABSENT,
1608 .tuner_addr = ADDR_UNSET, 1535 .tuner_addr = ADDR_UNSET,
1609 .radio_addr = ADDR_UNSET, 1536 .radio_addr = ADDR_UNSET,
1610 }, 1537 },
@@ -1615,7 +1542,6 @@ struct tvcard bttv_tvcards[] = {
1615 .name = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)", 1542 .name = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)",
1616 .video_inputs = 4, 1543 .video_inputs = 4,
1617 .audio_inputs = 1, 1544 .audio_inputs = 1,
1618 .tuner = 0,
1619 .svhs = 2, 1545 .svhs = 2,
1620 .gpiomask = 0x3f, 1546 .gpiomask = 0x3f,
1621 .muxsel = { 2, 3, 1, 1 }, 1547 .muxsel = { 2, 3, 1, 1 },
@@ -1645,13 +1571,12 @@ struct tvcard bttv_tvcards[] = {
1645 .name = "Sensoray 311", 1571 .name = "Sensoray 311",
1646 .video_inputs = 5, 1572 .video_inputs = 5,
1647 .audio_inputs = 0, 1573 .audio_inputs = 0,
1648 .tuner = UNSET,
1649 .svhs = 4, 1574 .svhs = 4,
1650 .gpiomask = 0, 1575 .gpiomask = 0,
1651 .muxsel = { 2, 3, 1, 0, 0 }, 1576 .muxsel = { 2, 3, 1, 0, 0 },
1652 .gpiomux = { 0 }, 1577 .gpiomux = { 0 },
1653 .needs_tvaudio = 0, 1578 .needs_tvaudio = 0,
1654 .tuner_type = UNSET, 1579 .tuner_type = TUNER_ABSENT,
1655 .tuner_addr = ADDR_UNSET, 1580 .tuner_addr = ADDR_UNSET,
1656 .radio_addr = ADDR_UNSET, 1581 .radio_addr = ADDR_UNSET,
1657 }, 1582 },
@@ -1660,7 +1585,6 @@ struct tvcard bttv_tvcards[] = {
1660 .name = "RemoteVision MX (RV605)", 1585 .name = "RemoteVision MX (RV605)",
1661 .video_inputs = 16, 1586 .video_inputs = 16,
1662 .audio_inputs = 0, 1587 .audio_inputs = 0,
1663 .tuner = UNSET,
1664 .svhs = UNSET, 1588 .svhs = UNSET,
1665 .gpiomask = 0x00, 1589 .gpiomask = 0x00,
1666 .gpiomask2 = 0x07ff, 1590 .gpiomask2 = 0x07ff,
@@ -1668,7 +1592,7 @@ struct tvcard bttv_tvcards[] = {
1668 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 }, 1592 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 },
1669 .no_msp34xx = 1, 1593 .no_msp34xx = 1,
1670 .no_tda9875 = 1, 1594 .no_tda9875 = 1,
1671 .tuner_type = UNSET, 1595 .tuner_type = TUNER_ABSENT,
1672 .tuner_addr = ADDR_UNSET, 1596 .tuner_addr = ADDR_UNSET,
1673 .radio_addr = ADDR_UNSET, 1597 .radio_addr = ADDR_UNSET,
1674 .muxsel_hook = rv605_muxsel, 1598 .muxsel_hook = rv605_muxsel,
@@ -1677,7 +1601,6 @@ struct tvcard bttv_tvcards[] = {
1677 .name = "Powercolor MTV878/ MTV878R/ MTV878F", 1601 .name = "Powercolor MTV878/ MTV878R/ MTV878F",
1678 .video_inputs = 3, 1602 .video_inputs = 3,
1679 .audio_inputs = 2, 1603 .audio_inputs = 2,
1680 .tuner = 0,
1681 .svhs = 2, 1604 .svhs = 2,
1682 .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */ 1605 .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
1683 .muxsel = { 2, 1, 1, }, 1606 .muxsel = { 2, 1, 1, },
@@ -1697,7 +1620,6 @@ struct tvcard bttv_tvcards[] = {
1697 .name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)", 1620 .name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)",
1698 .video_inputs = 3, 1621 .video_inputs = 3,
1699 .audio_inputs = 1, 1622 .audio_inputs = 1,
1700 .tuner = 0,
1701 .svhs = 2, 1623 .svhs = 2,
1702 .gpiomask = 0x140007, 1624 .gpiomask = 0x140007,
1703 .muxsel = { 2, 3, 1, 1 }, 1625 .muxsel = { 2, 3, 1, 1 },
@@ -1712,7 +1634,6 @@ struct tvcard bttv_tvcards[] = {
1712 .name = "GrandTec Multi Capture Card (Bt878)", 1634 .name = "GrandTec Multi Capture Card (Bt878)",
1713 .video_inputs = 4, 1635 .video_inputs = 4,
1714 .audio_inputs = 0, 1636 .audio_inputs = 0,
1715 .tuner = UNSET,
1716 .svhs = UNSET, 1637 .svhs = UNSET,
1717 .gpiomask = 0, 1638 .gpiomask = 0,
1718 .muxsel = { 2, 3, 1, 0 }, 1639 .muxsel = { 2, 3, 1, 0 },
@@ -1720,7 +1641,7 @@ struct tvcard bttv_tvcards[] = {
1720 .needs_tvaudio = 0, 1641 .needs_tvaudio = 0,
1721 .no_msp34xx = 1, 1642 .no_msp34xx = 1,
1722 .pll = PLL_28, 1643 .pll = PLL_28,
1723 .tuner_type = UNSET, 1644 .tuner_type = TUNER_ABSENT,
1724 .tuner_addr = ADDR_UNSET, 1645 .tuner_addr = ADDR_UNSET,
1725 .radio_addr = ADDR_UNSET, 1646 .radio_addr = ADDR_UNSET,
1726 }, 1647 },
@@ -1728,7 +1649,6 @@ struct tvcard bttv_tvcards[] = {
1728 .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF", 1649 .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
1729 .video_inputs = 4, 1650 .video_inputs = 4,
1730 .audio_inputs = 3, 1651 .audio_inputs = 3,
1731 .tuner = 0,
1732 .svhs = 2, 1652 .svhs = 2,
1733 .gpiomask = 7, 1653 .gpiomask = 7,
1734 .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */ 1654 .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */
@@ -1776,7 +1696,6 @@ struct tvcard bttv_tvcards[] = {
1776 .name = "Hauppauge WinTV PVR", 1696 .name = "Hauppauge WinTV PVR",
1777 .video_inputs = 4, 1697 .video_inputs = 4,
1778 .audio_inputs = 1, 1698 .audio_inputs = 1,
1779 .tuner = 0,
1780 .svhs = 2, 1699 .svhs = 2,
1781 .muxsel = { 2, 0, 1, 1 }, 1700 .muxsel = { 2, 0, 1, 1 },
1782 .needs_tvaudio = 1, 1701 .needs_tvaudio = 1,
@@ -1792,7 +1711,6 @@ struct tvcard bttv_tvcards[] = {
1792 .name = "IODATA GV-BCTV5/PCI", 1711 .name = "IODATA GV-BCTV5/PCI",
1793 .video_inputs = 3, 1712 .video_inputs = 3,
1794 .audio_inputs = 1, 1713 .audio_inputs = 1,
1795 .tuner = 0,
1796 .svhs = 2, 1714 .svhs = 2,
1797 .gpiomask = 0x0f0f80, 1715 .gpiomask = 0x0f0f80,
1798 .muxsel = {2, 3, 1, 0 }, 1716 .muxsel = {2, 3, 1, 0 },
@@ -1810,11 +1728,10 @@ struct tvcard bttv_tvcards[] = {
1810 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */ 1728 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
1811 .video_inputs = 4, /* id-inputs-clock */ 1729 .video_inputs = 4, /* id-inputs-clock */
1812 .audio_inputs = 0, 1730 .audio_inputs = 0,
1813 .tuner = UNSET,
1814 .svhs = 3, 1731 .svhs = 3,
1815 .muxsel = { 3, 2, 0, 1 }, 1732 .muxsel = { 3, 2, 0, 1 },
1816 .pll = PLL_28, 1733 .pll = PLL_28,
1817 .tuner_type = UNSET, 1734 .tuner_type = TUNER_ABSENT,
1818 .tuner_addr = ADDR_UNSET, 1735 .tuner_addr = ADDR_UNSET,
1819 .radio_addr = ADDR_UNSET, 1736 .radio_addr = ADDR_UNSET,
1820 .no_msp34xx = 1, 1737 .no_msp34xx = 1,
@@ -1825,11 +1742,10 @@ struct tvcard bttv_tvcards[] = {
1825 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */ 1742 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
1826 .video_inputs = 3, 1743 .video_inputs = 3,
1827 .audio_inputs = 0, 1744 .audio_inputs = 0,
1828 .tuner = UNSET,
1829 .svhs = 2, 1745 .svhs = 2,
1830 .muxsel = { 2, 3, 1 }, 1746 .muxsel = { 2, 3, 1 },
1831 .pll = PLL_28, 1747 .pll = PLL_28,
1832 .tuner_type = UNSET, 1748 .tuner_type = TUNER_ABSENT,
1833 .tuner_addr = ADDR_UNSET, 1749 .tuner_addr = ADDR_UNSET,
1834 .radio_addr = ADDR_UNSET, 1750 .radio_addr = ADDR_UNSET,
1835 .no_msp34xx = 1, 1751 .no_msp34xx = 1,
@@ -1842,11 +1758,10 @@ struct tvcard bttv_tvcards[] = {
1842 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */ 1758 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */
1843 .video_inputs = 2, 1759 .video_inputs = 2,
1844 .audio_inputs = 0, 1760 .audio_inputs = 0,
1845 .tuner = UNSET,
1846 .svhs = 1, 1761 .svhs = 1,
1847 .muxsel = { 3, 1 }, 1762 .muxsel = { 3, 1 },
1848 .pll = PLL_28, 1763 .pll = PLL_28,
1849 .tuner_type = UNSET, 1764 .tuner_type = TUNER_ABSENT,
1850 .tuner_addr = ADDR_UNSET, 1765 .tuner_addr = ADDR_UNSET,
1851 .radio_addr = ADDR_UNSET, 1766 .radio_addr = ADDR_UNSET,
1852 .no_msp34xx = 1, 1767 .no_msp34xx = 1,
@@ -1857,11 +1772,10 @@ struct tvcard bttv_tvcards[] = {
1857 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */ 1772 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
1858 .video_inputs = 1, 1773 .video_inputs = 1,
1859 .audio_inputs = 0, 1774 .audio_inputs = 0,
1860 .tuner = UNSET,
1861 .svhs = UNSET, 1775 .svhs = UNSET,
1862 .muxsel = { 0 }, 1776 .muxsel = { 0 },
1863 .pll = PLL_28, 1777 .pll = PLL_28,
1864 .tuner_type = UNSET, 1778 .tuner_type = TUNER_ABSENT,
1865 .tuner_addr = ADDR_UNSET, 1779 .tuner_addr = ADDR_UNSET,
1866 .radio_addr = ADDR_UNSET, 1780 .radio_addr = ADDR_UNSET,
1867 .no_msp34xx = 1, 1781 .no_msp34xx = 1,
@@ -1872,11 +1786,10 @@ struct tvcard bttv_tvcards[] = {
1872 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */ 1786 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
1873 .video_inputs = 2, 1787 .video_inputs = 2,
1874 .audio_inputs = 0, 1788 .audio_inputs = 0,
1875 .tuner = UNSET,
1876 .svhs = 1, 1789 .svhs = 1,
1877 .muxsel = { 0, 1 }, 1790 .muxsel = { 0, 1 },
1878 .pll = PLL_28, 1791 .pll = PLL_28,
1879 .tuner_type = UNSET, 1792 .tuner_type = TUNER_ABSENT,
1880 .tuner_addr = ADDR_UNSET, 1793 .tuner_addr = ADDR_UNSET,
1881 .radio_addr = ADDR_UNSET, 1794 .radio_addr = ADDR_UNSET,
1882 .no_msp34xx = 1, 1795 .no_msp34xx = 1,
@@ -1887,11 +1800,10 @@ struct tvcard bttv_tvcards[] = {
1887 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */ 1800 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
1888 .video_inputs = 1, 1801 .video_inputs = 1,
1889 .audio_inputs = 1, 1802 .audio_inputs = 1,
1890 .tuner = UNSET,
1891 .svhs = UNSET, 1803 .svhs = UNSET,
1892 .muxsel = { 0 }, 1804 .muxsel = { 0 },
1893 .pll = PLL_28, 1805 .pll = PLL_28,
1894 .tuner_type = UNSET, 1806 .tuner_type = TUNER_ABSENT,
1895 .tuner_addr = ADDR_UNSET, 1807 .tuner_addr = ADDR_UNSET,
1896 .radio_addr = ADDR_UNSET, 1808 .radio_addr = ADDR_UNSET,
1897 .no_msp34xx = 1, 1809 .no_msp34xx = 1,
@@ -1904,11 +1816,10 @@ struct tvcard bttv_tvcards[] = {
1904 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */ 1816 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
1905 .video_inputs = 2, 1817 .video_inputs = 2,
1906 .audio_inputs = 1, 1818 .audio_inputs = 1,
1907 .tuner = UNSET,
1908 .svhs = 1, 1819 .svhs = 1,
1909 .muxsel = { 0, 1 }, 1820 .muxsel = { 0, 1 },
1910 .pll = PLL_28, 1821 .pll = PLL_28,
1911 .tuner_type = UNSET, 1822 .tuner_type = TUNER_ABSENT,
1912 .tuner_addr = ADDR_UNSET, 1823 .tuner_addr = ADDR_UNSET,
1913 .radio_addr = ADDR_UNSET, 1824 .radio_addr = ADDR_UNSET,
1914 .no_msp34xx = 1, 1825 .no_msp34xx = 1,
@@ -1919,11 +1830,10 @@ struct tvcard bttv_tvcards[] = {
1919 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */ 1830 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */
1920 .video_inputs = 2, 1831 .video_inputs = 2,
1921 .audio_inputs = 1, 1832 .audio_inputs = 1,
1922 .tuner = UNSET,
1923 .svhs = 1, 1833 .svhs = 1,
1924 .muxsel = { 2, 3 }, 1834 .muxsel = { 2, 3 },
1925 .pll = PLL_28, 1835 .pll = PLL_28,
1926 .tuner_type = UNSET, 1836 .tuner_type = TUNER_ABSENT,
1927 .tuner_addr = ADDR_UNSET, 1837 .tuner_addr = ADDR_UNSET,
1928 .radio_addr = ADDR_UNSET, 1838 .radio_addr = ADDR_UNSET,
1929 .no_msp34xx = 1, 1839 .no_msp34xx = 1,
@@ -1934,11 +1844,10 @@ struct tvcard bttv_tvcards[] = {
1934 .name = "Osprey 500", /* 500 */ 1844 .name = "Osprey 500", /* 500 */
1935 .video_inputs = 2, 1845 .video_inputs = 2,
1936 .audio_inputs = 1, 1846 .audio_inputs = 1,
1937 .tuner = UNSET,
1938 .svhs = 1, 1847 .svhs = 1,
1939 .muxsel = { 2, 3 }, 1848 .muxsel = { 2, 3 },
1940 .pll = PLL_28, 1849 .pll = PLL_28,
1941 .tuner_type = UNSET, 1850 .tuner_type = TUNER_ABSENT,
1942 .tuner_addr = ADDR_UNSET, 1851 .tuner_addr = ADDR_UNSET,
1943 .radio_addr = ADDR_UNSET, 1852 .radio_addr = ADDR_UNSET,
1944 .no_msp34xx = 1, 1853 .no_msp34xx = 1,
@@ -1949,9 +1858,8 @@ struct tvcard bttv_tvcards[] = {
1949 .name = "Osprey 540", /* 540 */ 1858 .name = "Osprey 540", /* 540 */
1950 .video_inputs = 4, 1859 .video_inputs = 4,
1951 .audio_inputs = 1, 1860 .audio_inputs = 1,
1952 .tuner = UNSET,
1953 .pll = PLL_28, 1861 .pll = PLL_28,
1954 .tuner_type = UNSET, 1862 .tuner_type = TUNER_ABSENT,
1955 .tuner_addr = ADDR_UNSET, 1863 .tuner_addr = ADDR_UNSET,
1956 .radio_addr = ADDR_UNSET, 1864 .radio_addr = ADDR_UNSET,
1957 .no_msp34xx = 1, 1865 .no_msp34xx = 1,
@@ -1964,11 +1872,10 @@ struct tvcard bttv_tvcards[] = {
1964 .name = "Osprey 2000", /* 2000 */ 1872 .name = "Osprey 2000", /* 2000 */
1965 .video_inputs = 2, 1873 .video_inputs = 2,
1966 .audio_inputs = 1, 1874 .audio_inputs = 1,
1967 .tuner = UNSET,
1968 .svhs = 1, 1875 .svhs = 1,
1969 .muxsel = { 2, 3 }, 1876 .muxsel = { 2, 3 },
1970 .pll = PLL_28, 1877 .pll = PLL_28,
1971 .tuner_type = UNSET, 1878 .tuner_type = TUNER_ABSENT,
1972 .tuner_addr = ADDR_UNSET, 1879 .tuner_addr = ADDR_UNSET,
1973 .radio_addr = ADDR_UNSET, 1880 .radio_addr = ADDR_UNSET,
1974 .no_msp34xx = 1, 1881 .no_msp34xx = 1,
@@ -1980,8 +1887,7 @@ struct tvcard bttv_tvcards[] = {
1980 .name = "IDS Eagle", 1887 .name = "IDS Eagle",
1981 .video_inputs = 4, 1888 .video_inputs = 4,
1982 .audio_inputs = 0, 1889 .audio_inputs = 0,
1983 .tuner = UNSET, 1890 .tuner_type = TUNER_ABSENT,
1984 .tuner_type = UNSET,
1985 .tuner_addr = ADDR_UNSET, 1891 .tuner_addr = ADDR_UNSET,
1986 .radio_addr = ADDR_UNSET, 1892 .radio_addr = ADDR_UNSET,
1987 .svhs = UNSET, 1893 .svhs = UNSET,
@@ -1997,8 +1903,7 @@ struct tvcard bttv_tvcards[] = {
1997 .video_inputs = 2, 1903 .video_inputs = 2,
1998 .audio_inputs = 0, 1904 .audio_inputs = 0,
1999 .svhs = 1, 1905 .svhs = 1,
2000 .tuner = UNSET, 1906 .tuner_type = TUNER_ABSENT,
2001 .tuner_type = UNSET,
2002 .tuner_addr = ADDR_UNSET, 1907 .tuner_addr = ADDR_UNSET,
2003 .radio_addr = ADDR_UNSET, 1908 .radio_addr = ADDR_UNSET,
2004 .no_msp34xx = 1, 1909 .no_msp34xx = 1,
@@ -2013,7 +1918,6 @@ struct tvcard bttv_tvcards[] = {
2013 .name = "Formac ProTV II (bt878)", 1918 .name = "Formac ProTV II (bt878)",
2014 .video_inputs = 4, 1919 .video_inputs = 4,
2015 .audio_inputs = 1, 1920 .audio_inputs = 1,
2016 .tuner = 0,
2017 .svhs = 3, 1921 .svhs = 3,
2018 .gpiomask = 2, 1922 .gpiomask = 2,
2019 /* TV, Comp1, Composite over SVID con, SVID */ 1923 /* TV, Comp1, Composite over SVID con, SVID */
@@ -2038,7 +1942,6 @@ struct tvcard bttv_tvcards[] = {
2038 .name = "MachTV", 1942 .name = "MachTV",
2039 .video_inputs = 3, 1943 .video_inputs = 3,
2040 .audio_inputs = 1, 1944 .audio_inputs = 1,
2041 .tuner = 0,
2042 .svhs = UNSET, 1945 .svhs = UNSET,
2043 .gpiomask = 7, 1946 .gpiomask = 7,
2044 .muxsel = { 2, 3, 1, 1}, 1947 .muxsel = { 2, 3, 1, 1},
@@ -2054,7 +1957,6 @@ struct tvcard bttv_tvcards[] = {
2054 .name = "Euresys Picolo", 1957 .name = "Euresys Picolo",
2055 .video_inputs = 3, 1958 .video_inputs = 3,
2056 .audio_inputs = 0, 1959 .audio_inputs = 0,
2057 .tuner = UNSET,
2058 .svhs = 2, 1960 .svhs = 2,
2059 .gpiomask = 0, 1961 .gpiomask = 0,
2060 .no_msp34xx = 1, 1962 .no_msp34xx = 1,
@@ -2062,7 +1964,7 @@ struct tvcard bttv_tvcards[] = {
2062 .no_tda7432 = 1, 1964 .no_tda7432 = 1,
2063 .muxsel = { 2, 0, 1}, 1965 .muxsel = { 2, 0, 1},
2064 .pll = PLL_28, 1966 .pll = PLL_28,
2065 .tuner_type = UNSET, 1967 .tuner_type = TUNER_ABSENT,
2066 .tuner_addr = ADDR_UNSET, 1968 .tuner_addr = ADDR_UNSET,
2067 .radio_addr = ADDR_UNSET, 1969 .radio_addr = ADDR_UNSET,
2068 }, 1970 },
@@ -2071,7 +1973,6 @@ struct tvcard bttv_tvcards[] = {
2071 .name = "ProVideo PV150", /* 0x4f */ 1973 .name = "ProVideo PV150", /* 0x4f */
2072 .video_inputs = 2, 1974 .video_inputs = 2,
2073 .audio_inputs = 0, 1975 .audio_inputs = 0,
2074 .tuner = UNSET,
2075 .svhs = UNSET, 1976 .svhs = UNSET,
2076 .gpiomask = 0, 1977 .gpiomask = 0,
2077 .muxsel = { 2, 3 }, 1978 .muxsel = { 2, 3 },
@@ -2079,7 +1980,7 @@ struct tvcard bttv_tvcards[] = {
2079 .needs_tvaudio = 0, 1980 .needs_tvaudio = 0,
2080 .no_msp34xx = 1, 1981 .no_msp34xx = 1,
2081 .pll = PLL_28, 1982 .pll = PLL_28,
2082 .tuner_type = UNSET, 1983 .tuner_type = TUNER_ABSENT,
2083 .tuner_addr = ADDR_UNSET, 1984 .tuner_addr = ADDR_UNSET,
2084 .radio_addr = ADDR_UNSET, 1985 .radio_addr = ADDR_UNSET,
2085 }, 1986 },
@@ -2089,7 +1990,6 @@ struct tvcard bttv_tvcards[] = {
2089 .name = "AD-TVK503", /* 0x63 */ 1990 .name = "AD-TVK503", /* 0x63 */
2090 .video_inputs = 4, 1991 .video_inputs = 4,
2091 .audio_inputs = 1, 1992 .audio_inputs = 1,
2092 .tuner = 0,
2093 .svhs = 2, 1993 .svhs = 2,
2094 .gpiomask = 0x001e8007, 1994 .gpiomask = 0x001e8007,
2095 .muxsel = { 2, 3, 1, 0 }, 1995 .muxsel = { 2, 3, 1, 0 },
@@ -2110,7 +2010,6 @@ struct tvcard bttv_tvcards[] = {
2110 .name = "Hercules Smart TV Stereo", 2010 .name = "Hercules Smart TV Stereo",
2111 .video_inputs = 4, 2011 .video_inputs = 4,
2112 .audio_inputs = 1, 2012 .audio_inputs = 1,
2113 .tuner = 0,
2114 .svhs = 2, 2013 .svhs = 2,
2115 .gpiomask = 0x00, 2014 .gpiomask = 0x00,
2116 .muxsel = { 2, 3, 1, 1 }, 2015 .muxsel = { 2, 3, 1, 1 },
@@ -2134,7 +2033,6 @@ struct tvcard bttv_tvcards[] = {
2134 .name = "Pace TV & Radio Card", 2033 .name = "Pace TV & Radio Card",
2135 .video_inputs = 4, 2034 .video_inputs = 4,
2136 .audio_inputs = 1, 2035 .audio_inputs = 1,
2137 .tuner = 0,
2138 .svhs = 2, 2036 .svhs = 2,
2139 .muxsel = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */ 2037 .muxsel = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */
2140 .gpiomask = 0, 2038 .gpiomask = 0,
@@ -2157,8 +2055,7 @@ struct tvcard bttv_tvcards[] = {
2157 .name = "IVC-200", 2055 .name = "IVC-200",
2158 .video_inputs = 1, 2056 .video_inputs = 1,
2159 .audio_inputs = 0, 2057 .audio_inputs = 0,
2160 .tuner = UNSET, 2058 .tuner_type = TUNER_ABSENT,
2161 .tuner_type = UNSET,
2162 .tuner_addr = ADDR_UNSET, 2059 .tuner_addr = ADDR_UNSET,
2163 .radio_addr = ADDR_UNSET, 2060 .radio_addr = ADDR_UNSET,
2164 .svhs = UNSET, 2061 .svhs = UNSET,
@@ -2170,8 +2067,7 @@ struct tvcard bttv_tvcards[] = {
2170 .name = "IVCE-8784", 2067 .name = "IVCE-8784",
2171 .video_inputs = 1, 2068 .video_inputs = 1,
2172 .audio_inputs = 0, 2069 .audio_inputs = 0,
2173 .tuner = UNSET, 2070 .tuner_type = TUNER_ABSENT,
2174 .tuner_type = UNSET,
2175 .tuner_addr = ADDR_UNSET, 2071 .tuner_addr = ADDR_UNSET,
2176 .radio_addr = ADDR_UNSET, 2072 .radio_addr = ADDR_UNSET,
2177 .svhs = UNSET, 2073 .svhs = UNSET,
@@ -2183,7 +2079,6 @@ struct tvcard bttv_tvcards[] = {
2183 .name = "Grand X-Guard / Trust 814PCI", 2079 .name = "Grand X-Guard / Trust 814PCI",
2184 .video_inputs = 16, 2080 .video_inputs = 16,
2185 .audio_inputs = 0, 2081 .audio_inputs = 0,
2186 .tuner = UNSET,
2187 .svhs = UNSET, 2082 .svhs = UNSET,
2188 .tuner_type = TUNER_ABSENT, 2083 .tuner_type = TUNER_ABSENT,
2189 .tuner_addr = ADDR_UNSET, 2084 .tuner_addr = ADDR_UNSET,
@@ -2201,14 +2096,13 @@ struct tvcard bttv_tvcards[] = {
2201 [BTTV_BOARD_NEBULA_DIGITV] = { 2096 [BTTV_BOARD_NEBULA_DIGITV] = {
2202 .name = "Nebula Electronics DigiTV", 2097 .name = "Nebula Electronics DigiTV",
2203 .video_inputs = 1, 2098 .video_inputs = 1,
2204 .tuner = UNSET,
2205 .svhs = UNSET, 2099 .svhs = UNSET,
2206 .muxsel = { 2, 3, 1, 0 }, 2100 .muxsel = { 2, 3, 1, 0 },
2207 .no_msp34xx = 1, 2101 .no_msp34xx = 1,
2208 .no_tda9875 = 1, 2102 .no_tda9875 = 1,
2209 .no_tda7432 = 1, 2103 .no_tda7432 = 1,
2210 .pll = PLL_28, 2104 .pll = PLL_28,
2211 .tuner_type = UNSET, 2105 .tuner_type = TUNER_ABSENT,
2212 .tuner_addr = ADDR_UNSET, 2106 .tuner_addr = ADDR_UNSET,
2213 .radio_addr = ADDR_UNSET, 2107 .radio_addr = ADDR_UNSET,
2214 .has_dvb = 1, 2108 .has_dvb = 1,
@@ -2221,7 +2115,6 @@ struct tvcard bttv_tvcards[] = {
2221 .name = "ProVideo PV143", 2115 .name = "ProVideo PV143",
2222 .video_inputs = 4, 2116 .video_inputs = 4,
2223 .audio_inputs = 0, 2117 .audio_inputs = 0,
2224 .tuner = UNSET,
2225 .svhs = UNSET, 2118 .svhs = UNSET,
2226 .gpiomask = 0, 2119 .gpiomask = 0,
2227 .muxsel = { 2, 3, 1, 0 }, 2120 .muxsel = { 2, 3, 1, 0 },
@@ -2229,7 +2122,7 @@ struct tvcard bttv_tvcards[] = {
2229 .needs_tvaudio = 0, 2122 .needs_tvaudio = 0,
2230 .no_msp34xx = 1, 2123 .no_msp34xx = 1,
2231 .pll = PLL_28, 2124 .pll = PLL_28,
2232 .tuner_type = UNSET, 2125 .tuner_type = TUNER_ABSENT,
2233 .tuner_addr = ADDR_UNSET, 2126 .tuner_addr = ADDR_UNSET,
2234 .radio_addr = ADDR_UNSET, 2127 .radio_addr = ADDR_UNSET,
2235 }, 2128 },
@@ -2238,14 +2131,13 @@ struct tvcard bttv_tvcards[] = {
2238 .name = "PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)", 2131 .name = "PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)",
2239 .video_inputs = 4, 2132 .video_inputs = 4,
2240 .audio_inputs = 0, 2133 .audio_inputs = 0,
2241 .tuner = UNSET, /* card has no tuner */
2242 .svhs = 3, 2134 .svhs = 3,
2243 .gpiomask = 0x00, 2135 .gpiomask = 0x00,
2244 .muxsel = { 2, 3, 1, 0 }, 2136 .muxsel = { 2, 3, 1, 0 },
2245 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2137 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2246 .needs_tvaudio = 0, 2138 .needs_tvaudio = 0,
2247 .pll = PLL_28, 2139 .pll = PLL_28,
2248 .tuner_type = UNSET, 2140 .tuner_type = TUNER_ABSENT,
2249 .tuner_addr = ADDR_UNSET, 2141 .tuner_addr = ADDR_UNSET,
2250 .radio_addr = ADDR_UNSET, 2142 .radio_addr = ADDR_UNSET,
2251 }, 2143 },
@@ -2253,14 +2145,13 @@ struct tvcard bttv_tvcards[] = {
2253 .name = "PHYTEC VD-009-X1 VD-011 Combi (bt878)", 2145 .name = "PHYTEC VD-009-X1 VD-011 Combi (bt878)",
2254 .video_inputs = 4, 2146 .video_inputs = 4,
2255 .audio_inputs = 0, 2147 .audio_inputs = 0,
2256 .tuner = UNSET, /* card has no tuner */
2257 .svhs = 3, 2148 .svhs = 3,
2258 .gpiomask = 0x00, 2149 .gpiomask = 0x00,
2259 .muxsel = { 2, 3, 1, 1 }, 2150 .muxsel = { 2, 3, 1, 1 },
2260 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2151 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2261 .needs_tvaudio = 0, 2152 .needs_tvaudio = 0,
2262 .pll = PLL_28, 2153 .pll = PLL_28,
2263 .tuner_type = UNSET, 2154 .tuner_type = TUNER_ABSENT,
2264 .tuner_addr = ADDR_UNSET, 2155 .tuner_addr = ADDR_UNSET,
2265 .radio_addr = ADDR_UNSET, 2156 .radio_addr = ADDR_UNSET,
2266 }, 2157 },
@@ -2270,7 +2161,6 @@ struct tvcard bttv_tvcards[] = {
2270 .name = "PHYTEC VD-009 MiniDIN (bt878)", 2161 .name = "PHYTEC VD-009 MiniDIN (bt878)",
2271 .video_inputs = 10, 2162 .video_inputs = 10,
2272 .audio_inputs = 0, 2163 .audio_inputs = 0,
2273 .tuner = UNSET, /* card has no tuner */
2274 .svhs = 9, 2164 .svhs = 9,
2275 .gpiomask = 0x00, 2165 .gpiomask = 0x00,
2276 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio 2166 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2280,7 +2170,7 @@ struct tvcard bttv_tvcards[] = {
2280 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2170 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2281 .needs_tvaudio = 1, 2171 .needs_tvaudio = 1,
2282 .pll = PLL_28, 2172 .pll = PLL_28,
2283 .tuner_type = UNSET, 2173 .tuner_type = TUNER_ABSENT,
2284 .tuner_addr = ADDR_UNSET, 2174 .tuner_addr = ADDR_UNSET,
2285 .radio_addr = ADDR_UNSET, 2175 .radio_addr = ADDR_UNSET,
2286 }, 2176 },
@@ -2288,7 +2178,6 @@ struct tvcard bttv_tvcards[] = {
2288 .name = "PHYTEC VD-009 Combi (bt878)", 2178 .name = "PHYTEC VD-009 Combi (bt878)",
2289 .video_inputs = 10, 2179 .video_inputs = 10,
2290 .audio_inputs = 0, 2180 .audio_inputs = 0,
2291 .tuner = UNSET, /* card has no tuner */
2292 .svhs = 9, 2181 .svhs = 9,
2293 .gpiomask = 0x00, 2182 .gpiomask = 0x00,
2294 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio 2183 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2298,7 +2187,7 @@ struct tvcard bttv_tvcards[] = {
2298 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2187 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2299 .needs_tvaudio = 1, 2188 .needs_tvaudio = 1,
2300 .pll = PLL_28, 2189 .pll = PLL_28,
2301 .tuner_type = UNSET, 2190 .tuner_type = TUNER_ABSENT,
2302 .tuner_addr = ADDR_UNSET, 2191 .tuner_addr = ADDR_UNSET,
2303 .radio_addr = ADDR_UNSET, 2192 .radio_addr = ADDR_UNSET,
2304 }, 2193 },
@@ -2306,8 +2195,7 @@ struct tvcard bttv_tvcards[] = {
2306 .name = "IVC-100", 2195 .name = "IVC-100",
2307 .video_inputs = 4, 2196 .video_inputs = 4,
2308 .audio_inputs = 0, 2197 .audio_inputs = 0,
2309 .tuner = UNSET, 2198 .tuner_type = TUNER_ABSENT,
2310 .tuner_type = UNSET,
2311 .tuner_addr = ADDR_UNSET, 2199 .tuner_addr = ADDR_UNSET,
2312 .radio_addr = ADDR_UNSET, 2200 .radio_addr = ADDR_UNSET,
2313 .svhs = UNSET, 2201 .svhs = UNSET,
@@ -2320,8 +2208,7 @@ struct tvcard bttv_tvcards[] = {
2320 .name = "IVC-120G", 2208 .name = "IVC-120G",
2321 .video_inputs = 16, 2209 .video_inputs = 16,
2322 .audio_inputs = 0, /* card has no audio */ 2210 .audio_inputs = 0, /* card has no audio */
2323 .tuner = UNSET, /* card has no tuner */ 2211 .tuner_type = TUNER_ABSENT,
2324 .tuner_type = UNSET,
2325 .tuner_addr = ADDR_UNSET, 2212 .tuner_addr = ADDR_UNSET,
2326 .radio_addr = ADDR_UNSET, 2213 .radio_addr = ADDR_UNSET,
2327 .svhs = UNSET, /* card has no svhs */ 2214 .svhs = UNSET, /* card has no svhs */
@@ -2341,7 +2228,6 @@ struct tvcard bttv_tvcards[] = {
2341 .name = "pcHDTV HD-2000 TV", 2228 .name = "pcHDTV HD-2000 TV",
2342 .video_inputs = 4, 2229 .video_inputs = 4,
2343 .audio_inputs = 1, 2230 .audio_inputs = 1,
2344 .tuner = 0,
2345 .svhs = 2, 2231 .svhs = 2,
2346 .muxsel = { 2, 3, 1, 0 }, 2232 .muxsel = { 2, 3, 1, 0 },
2347 .tuner_type = TUNER_PHILIPS_FCV1236D, 2233 .tuner_type = TUNER_PHILIPS_FCV1236D,
@@ -2365,7 +2251,6 @@ struct tvcard bttv_tvcards[] = {
2365 .video_inputs = 3, 2251 .video_inputs = 3,
2366 .audio_inputs = 0, 2252 .audio_inputs = 0,
2367 .svhs = 1, 2253 .svhs = 1,
2368 .tuner = UNSET,
2369 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */ 2254 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */
2370 .no_msp34xx = 1, 2255 .no_msp34xx = 1,
2371 .no_tda9875 = 1, 2256 .no_tda9875 = 1,
@@ -2379,7 +2264,6 @@ struct tvcard bttv_tvcards[] = {
2379 .name = "Teppro TEV-560/InterVision IV-560", 2264 .name = "Teppro TEV-560/InterVision IV-560",
2380 .video_inputs = 3, 2265 .video_inputs = 3,
2381 .audio_inputs = 1, 2266 .audio_inputs = 1,
2382 .tuner = 0,
2383 .svhs = 2, 2267 .svhs = 2,
2384 .gpiomask = 3, 2268 .gpiomask = 3,
2385 .muxsel = { 2, 3, 1, 1 }, 2269 .muxsel = { 2, 3, 1, 1 },
@@ -2396,9 +2280,8 @@ struct tvcard bttv_tvcards[] = {
2396 .name = "SIMUS GVC1100", 2280 .name = "SIMUS GVC1100",
2397 .video_inputs = 4, 2281 .video_inputs = 4,
2398 .audio_inputs = 0, 2282 .audio_inputs = 0,
2399 .tuner = UNSET,
2400 .svhs = UNSET, 2283 .svhs = UNSET,
2401 .tuner_type = UNSET, 2284 .tuner_type = TUNER_ABSENT,
2402 .tuner_addr = ADDR_UNSET, 2285 .tuner_addr = ADDR_UNSET,
2403 .radio_addr = ADDR_UNSET, 2286 .radio_addr = ADDR_UNSET,
2404 .pll = PLL_28, 2287 .pll = PLL_28,
@@ -2410,7 +2293,6 @@ struct tvcard bttv_tvcards[] = {
2410 /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */ 2293 /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */
2411 .name = "NGS NGSTV+", 2294 .name = "NGS NGSTV+",
2412 .video_inputs = 3, 2295 .video_inputs = 3,
2413 .tuner = 0,
2414 .svhs = 2, 2296 .svhs = 2,
2415 .gpiomask = 0x008007, 2297 .gpiomask = 0x008007,
2416 .muxsel = { 2, 3, 0, 0 }, 2298 .muxsel = { 2, 3, 0, 0 },
@@ -2427,14 +2309,13 @@ struct tvcard bttv_tvcards[] = {
2427 .name = "LMLBT4", 2309 .name = "LMLBT4",
2428 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */ 2310 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */
2429 .audio_inputs = 0, 2311 .audio_inputs = 0,
2430 .tuner = UNSET,
2431 .svhs = UNSET, 2312 .svhs = UNSET,
2432 .muxsel = { 2, 3, 1, 0 }, 2313 .muxsel = { 2, 3, 1, 0 },
2433 .no_msp34xx = 1, 2314 .no_msp34xx = 1,
2434 .no_tda9875 = 1, 2315 .no_tda9875 = 1,
2435 .no_tda7432 = 1, 2316 .no_tda7432 = 1,
2436 .needs_tvaudio = 0, 2317 .needs_tvaudio = 0,
2437 .tuner_type = UNSET, 2318 .tuner_type = TUNER_ABSENT,
2438 .tuner_addr = ADDR_UNSET, 2319 .tuner_addr = ADDR_UNSET,
2439 .radio_addr = ADDR_UNSET, 2320 .radio_addr = ADDR_UNSET,
2440 }, 2321 },
@@ -2443,7 +2324,6 @@ struct tvcard bttv_tvcards[] = {
2443 .name = "Tekram M205 PRO", 2324 .name = "Tekram M205 PRO",
2444 .video_inputs = 3, 2325 .video_inputs = 3,
2445 .audio_inputs = 1, 2326 .audio_inputs = 1,
2446 .tuner = 0,
2447 .tuner_type = TUNER_PHILIPS_PAL, 2327 .tuner_type = TUNER_PHILIPS_PAL,
2448 .tuner_addr = ADDR_UNSET, 2328 .tuner_addr = ADDR_UNSET,
2449 .radio_addr = ADDR_UNSET, 2329 .radio_addr = ADDR_UNSET,
@@ -2462,7 +2342,6 @@ struct tvcard bttv_tvcards[] = {
2462 .name = "Conceptronic CONTVFMi", 2342 .name = "Conceptronic CONTVFMi",
2463 .video_inputs = 3, 2343 .video_inputs = 3,
2464 .audio_inputs = 1, 2344 .audio_inputs = 1,
2465 .tuner = 0,
2466 .svhs = 2, 2345 .svhs = 2,
2467 .gpiomask = 0x008007, 2346 .gpiomask = 0x008007,
2468 .muxsel = { 2, 3, 1, 1 }, 2347 .muxsel = { 2, 3, 1, 1 },
@@ -2484,7 +2363,6 @@ struct tvcard bttv_tvcards[] = {
2484 .name = "Euresys Picolo Tetra", 2363 .name = "Euresys Picolo Tetra",
2485 .video_inputs = 4, 2364 .video_inputs = 4,
2486 .audio_inputs = 0, 2365 .audio_inputs = 0,
2487 .tuner = UNSET,
2488 .svhs = UNSET, 2366 .svhs = UNSET,
2489 .gpiomask = 0, 2367 .gpiomask = 0,
2490 .gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/ 2368 .gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/
@@ -2496,7 +2374,7 @@ struct tvcard bttv_tvcards[] = {
2496 .pll = PLL_28, 2374 .pll = PLL_28,
2497 .needs_tvaudio = 0, 2375 .needs_tvaudio = 0,
2498 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ 2376 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
2499 .tuner_type = UNSET, 2377 .tuner_type = TUNER_ABSENT,
2500 .tuner_addr = ADDR_UNSET, 2378 .tuner_addr = ADDR_UNSET,
2501 .radio_addr = ADDR_UNSET, 2379 .radio_addr = ADDR_UNSET,
2502 }, 2380 },
@@ -2506,7 +2384,6 @@ struct tvcard bttv_tvcards[] = {
2506 .name = "Spirit TV Tuner", 2384 .name = "Spirit TV Tuner",
2507 .video_inputs = 3, 2385 .video_inputs = 3,
2508 .audio_inputs = 1, 2386 .audio_inputs = 1,
2509 .tuner = 0,
2510 .svhs = 2, 2387 .svhs = 2,
2511 .gpiomask = 0x0000000f, 2388 .gpiomask = 0x0000000f,
2512 .muxsel = { 2, 1, 1 }, 2389 .muxsel = { 2, 1, 1 },
@@ -2522,7 +2399,6 @@ struct tvcard bttv_tvcards[] = {
2522 .name = "AVerMedia AVerTV DVB-T 771", 2399 .name = "AVerMedia AVerTV DVB-T 771",
2523 .video_inputs = 2, 2400 .video_inputs = 2,
2524 .svhs = 1, 2401 .svhs = 1,
2525 .tuner = UNSET,
2526 .tuner_type = TUNER_ABSENT, 2402 .tuner_type = TUNER_ABSENT,
2527 .tuner_addr = ADDR_UNSET, 2403 .tuner_addr = ADDR_UNSET,
2528 .radio_addr = ADDR_UNSET, 2404 .radio_addr = ADDR_UNSET,
@@ -2541,14 +2417,13 @@ struct tvcard bttv_tvcards[] = {
2541 /* Based on the Nebula card data - added remote and new card number - BTTV_BOARD_AVDVBT_761, see also ir-kbd-gpio.c */ 2417 /* Based on the Nebula card data - added remote and new card number - BTTV_BOARD_AVDVBT_761, see also ir-kbd-gpio.c */
2542 .name = "AverMedia AverTV DVB-T 761", 2418 .name = "AverMedia AverTV DVB-T 761",
2543 .video_inputs = 2, 2419 .video_inputs = 2,
2544 .tuner = UNSET,
2545 .svhs = 1, 2420 .svhs = 1,
2546 .muxsel = { 3, 1, 2, 0 }, /* Comp0, S-Video, ?, ? */ 2421 .muxsel = { 3, 1, 2, 0 }, /* Comp0, S-Video, ?, ? */
2547 .no_msp34xx = 1, 2422 .no_msp34xx = 1,
2548 .no_tda9875 = 1, 2423 .no_tda9875 = 1,
2549 .no_tda7432 = 1, 2424 .no_tda7432 = 1,
2550 .pll = PLL_28, 2425 .pll = PLL_28,
2551 .tuner_type = UNSET, 2426 .tuner_type = TUNER_ABSENT,
2552 .tuner_addr = ADDR_UNSET, 2427 .tuner_addr = ADDR_UNSET,
2553 .radio_addr = ADDR_UNSET, 2428 .radio_addr = ADDR_UNSET,
2554 .has_dvb = 1, 2429 .has_dvb = 1,
@@ -2560,7 +2435,6 @@ struct tvcard bttv_tvcards[] = {
2560 .name = "MATRIX Vision Sigma-SQ", 2435 .name = "MATRIX Vision Sigma-SQ",
2561 .video_inputs = 16, 2436 .video_inputs = 16,
2562 .audio_inputs = 0, 2437 .audio_inputs = 0,
2563 .tuner = UNSET,
2564 .svhs = UNSET, 2438 .svhs = UNSET,
2565 .gpiomask = 0x0, 2439 .gpiomask = 0x0,
2566 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2440 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2569,7 +2443,7 @@ struct tvcard bttv_tvcards[] = {
2569 .gpiomux = { 0 }, 2443 .gpiomux = { 0 },
2570 .no_msp34xx = 1, 2444 .no_msp34xx = 1,
2571 .pll = PLL_28, 2445 .pll = PLL_28,
2572 .tuner_type = UNSET, 2446 .tuner_type = TUNER_ABSENT,
2573 .tuner_addr = ADDR_UNSET, 2447 .tuner_addr = ADDR_UNSET,
2574 .radio_addr = ADDR_UNSET, 2448 .radio_addr = ADDR_UNSET,
2575 }, 2449 },
@@ -2578,7 +2452,6 @@ struct tvcard bttv_tvcards[] = {
2578 .name = "MATRIX Vision Sigma-SLC", 2452 .name = "MATRIX Vision Sigma-SLC",
2579 .video_inputs = 4, 2453 .video_inputs = 4,
2580 .audio_inputs = 0, 2454 .audio_inputs = 0,
2581 .tuner = UNSET,
2582 .svhs = UNSET, 2455 .svhs = UNSET,
2583 .gpiomask = 0x0, 2456 .gpiomask = 0x0,
2584 .muxsel = { 2, 2, 2, 2 }, 2457 .muxsel = { 2, 2, 2, 2 },
@@ -2586,7 +2459,7 @@ struct tvcard bttv_tvcards[] = {
2586 .gpiomux = { 0 }, 2459 .gpiomux = { 0 },
2587 .no_msp34xx = 1, 2460 .no_msp34xx = 1,
2588 .pll = PLL_28, 2461 .pll = PLL_28,
2589 .tuner_type = UNSET, 2462 .tuner_type = TUNER_ABSENT,
2590 .tuner_addr = ADDR_UNSET, 2463 .tuner_addr = ADDR_UNSET,
2591 .radio_addr = ADDR_UNSET, 2464 .radio_addr = ADDR_UNSET,
2592 }, 2465 },
@@ -2597,7 +2470,6 @@ struct tvcard bttv_tvcards[] = {
2597 .name = "APAC Viewcomp 878(AMAX)", 2470 .name = "APAC Viewcomp 878(AMAX)",
2598 .video_inputs = 2, 2471 .video_inputs = 2,
2599 .audio_inputs = 1, 2472 .audio_inputs = 1,
2600 .tuner = 0,
2601 .svhs = UNSET, 2473 .svhs = UNSET,
2602 .gpiomask = 0xFF, 2474 .gpiomask = 0xFF,
2603 .muxsel = { 2, 3, 1, 1 }, 2475 .muxsel = { 2, 3, 1, 1 },
@@ -2616,14 +2488,13 @@ struct tvcard bttv_tvcards[] = {
2616 [BTTV_BOARD_DVICO_DVBT_LITE] = { 2488 [BTTV_BOARD_DVICO_DVBT_LITE] = {
2617 /* Chris Pascoe <c.pascoe@itee.uq.edu.au> */ 2489 /* Chris Pascoe <c.pascoe@itee.uq.edu.au> */
2618 .name = "DViCO FusionHDTV DVB-T Lite", 2490 .name = "DViCO FusionHDTV DVB-T Lite",
2619 .tuner = UNSET,
2620 .no_msp34xx = 1, 2491 .no_msp34xx = 1,
2621 .no_tda9875 = 1, 2492 .no_tda9875 = 1,
2622 .no_tda7432 = 1, 2493 .no_tda7432 = 1,
2623 .pll = PLL_28, 2494 .pll = PLL_28,
2624 .no_video = 1, 2495 .no_video = 1,
2625 .has_dvb = 1, 2496 .has_dvb = 1,
2626 .tuner_type = UNSET, 2497 .tuner_type = TUNER_ABSENT,
2627 .tuner_addr = ADDR_UNSET, 2498 .tuner_addr = ADDR_UNSET,
2628 .radio_addr = ADDR_UNSET, 2499 .radio_addr = ADDR_UNSET,
2629 }, 2500 },
@@ -2632,7 +2503,6 @@ struct tvcard bttv_tvcards[] = {
2632 .name = "V-Gear MyVCD", 2503 .name = "V-Gear MyVCD",
2633 .video_inputs = 3, 2504 .video_inputs = 3,
2634 .audio_inputs = 1, 2505 .audio_inputs = 1,
2635 .tuner = 0,
2636 .svhs = 2, 2506 .svhs = 2,
2637 .gpiomask = 0x3f, 2507 .gpiomask = 0x3f,
2638 .muxsel = {2, 3, 1, 0 }, 2508 .muxsel = {2, 3, 1, 0 },
@@ -2650,7 +2520,6 @@ struct tvcard bttv_tvcards[] = {
2650 .name = "Super TV Tuner", 2520 .name = "Super TV Tuner",
2651 .video_inputs = 4, 2521 .video_inputs = 4,
2652 .audio_inputs = 1, 2522 .audio_inputs = 1,
2653 .tuner = 0,
2654 .svhs = 2, 2523 .svhs = 2,
2655 .muxsel = { 2, 3, 1, 0 }, 2524 .muxsel = { 2, 3, 1, 0 },
2656 .tuner_type = TUNER_PHILIPS_NTSC, 2525 .tuner_type = TUNER_PHILIPS_NTSC,
@@ -2666,14 +2535,13 @@ struct tvcard bttv_tvcards[] = {
2666 .name = "Tibet Systems 'Progress DVR' CS16", 2535 .name = "Tibet Systems 'Progress DVR' CS16",
2667 .video_inputs = 16, 2536 .video_inputs = 16,
2668 .audio_inputs = 0, 2537 .audio_inputs = 0,
2669 .tuner = UNSET,
2670 .svhs = UNSET, 2538 .svhs = UNSET,
2671 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, 2539 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
2672 .pll = PLL_28, 2540 .pll = PLL_28,
2673 .no_msp34xx = 1, 2541 .no_msp34xx = 1,
2674 .no_tda9875 = 1, 2542 .no_tda9875 = 1,
2675 .no_tda7432 = 1, 2543 .no_tda7432 = 1,
2676 .tuner_type = UNSET, 2544 .tuner_type = TUNER_ABSENT,
2677 .tuner_addr = ADDR_UNSET, 2545 .tuner_addr = ADDR_UNSET,
2678 .radio_addr = ADDR_UNSET, 2546 .radio_addr = ADDR_UNSET,
2679 .muxsel_hook = tibetCS16_muxsel, 2547 .muxsel_hook = tibetCS16_muxsel,
@@ -2693,8 +2561,7 @@ struct tvcard bttv_tvcards[] = {
2693 .name = "Kodicom 4400R (master)", 2561 .name = "Kodicom 4400R (master)",
2694 .video_inputs = 16, 2562 .video_inputs = 16,
2695 .audio_inputs = 0, 2563 .audio_inputs = 0,
2696 .tuner = UNSET, 2564 .tuner_type = TUNER_ABSENT,
2697 .tuner_type = UNSET,
2698 .tuner_addr = ADDR_UNSET, 2565 .tuner_addr = ADDR_UNSET,
2699 .radio_addr = ADDR_UNSET, 2566 .radio_addr = ADDR_UNSET,
2700 .svhs = UNSET, 2567 .svhs = UNSET,
@@ -2725,8 +2592,7 @@ struct tvcard bttv_tvcards[] = {
2725 .name = "Kodicom 4400R (slave)", 2592 .name = "Kodicom 4400R (slave)",
2726 .video_inputs = 16, 2593 .video_inputs = 16,
2727 .audio_inputs = 0, 2594 .audio_inputs = 0,
2728 .tuner = UNSET, 2595 .tuner_type = TUNER_ABSENT,
2729 .tuner_type = UNSET,
2730 .tuner_addr = ADDR_UNSET, 2596 .tuner_addr = ADDR_UNSET,
2731 .radio_addr = ADDR_UNSET, 2597 .radio_addr = ADDR_UNSET,
2732 .svhs = UNSET, 2598 .svhs = UNSET,
@@ -2746,7 +2612,6 @@ struct tvcard bttv_tvcards[] = {
2746 .name = "Adlink RTV24", 2612 .name = "Adlink RTV24",
2747 .video_inputs = 4, 2613 .video_inputs = 4,
2748 .audio_inputs = 1, 2614 .audio_inputs = 1,
2749 .tuner = 0,
2750 .svhs = 2, 2615 .svhs = 2,
2751 .muxsel = { 2, 3, 1, 0 }, 2616 .muxsel = { 2, 3, 1, 0 },
2752 .tuner_type = UNSET, 2617 .tuner_type = UNSET,
@@ -2758,7 +2623,6 @@ struct tvcard bttv_tvcards[] = {
2758 [BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE] = { 2623 [BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE] = {
2759 /* Michael Krufky <mkrufky@m1k.net> */ 2624 /* Michael Krufky <mkrufky@m1k.net> */
2760 .name = "DViCO FusionHDTV 5 Lite", 2625 .name = "DViCO FusionHDTV 5 Lite",
2761 .tuner = 0,
2762 .tuner_type = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */ 2626 .tuner_type = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */
2763 .tuner_addr = ADDR_UNSET, 2627 .tuner_addr = ADDR_UNSET,
2764 .radio_addr = ADDR_UNSET, 2628 .radio_addr = ADDR_UNSET,
@@ -2780,7 +2644,6 @@ struct tvcard bttv_tvcards[] = {
2780 .name = "Acorp Y878F", 2644 .name = "Acorp Y878F",
2781 .video_inputs = 3, 2645 .video_inputs = 3,
2782 .audio_inputs = 1, 2646 .audio_inputs = 1,
2783 .tuner = 0,
2784 .svhs = 2, 2647 .svhs = 2,
2785 .gpiomask = 0x01fe00, 2648 .gpiomask = 0x01fe00,
2786 .muxsel = { 2, 3, 1, 1 }, 2649 .muxsel = { 2, 3, 1, 1 },
@@ -2798,7 +2661,6 @@ struct tvcard bttv_tvcards[] = {
2798 .name = "Conceptronic CTVFMi v2", 2661 .name = "Conceptronic CTVFMi v2",
2799 .video_inputs = 3, 2662 .video_inputs = 3,
2800 .audio_inputs = 1, 2663 .audio_inputs = 1,
2801 .tuner = 0,
2802 .svhs = 2, 2664 .svhs = 2,
2803 .gpiomask = 0x001c0007, 2665 .gpiomask = 0x001c0007,
2804 .muxsel = { 2, 3, 1, 1 }, 2666 .muxsel = { 2, 3, 1, 1 },
@@ -2817,7 +2679,6 @@ struct tvcard bttv_tvcards[] = {
2817 .name = "Prolink Pixelview PV-BT878P+ (Rev.2E)", 2679 .name = "Prolink Pixelview PV-BT878P+ (Rev.2E)",
2818 .video_inputs = 5, 2680 .video_inputs = 5,
2819 .audio_inputs = 1, 2681 .audio_inputs = 1,
2820 .tuner = 0,
2821 .svhs = 3, 2682 .svhs = 3,
2822 .gpiomask = 0x01fe00, 2683 .gpiomask = 0x01fe00,
2823 .muxsel = { 2,3,1,1,-1 }, 2684 .muxsel = { 2,3,1,1,-1 },
@@ -2837,7 +2698,6 @@ struct tvcard bttv_tvcards[] = {
2837 .name = "Prolink PixelView PlayTV MPEG2 PV-M4900", 2698 .name = "Prolink PixelView PlayTV MPEG2 PV-M4900",
2838 .video_inputs = 3, 2699 .video_inputs = 3,
2839 .audio_inputs = 1, 2700 .audio_inputs = 1,
2840 .tuner = 0,
2841 .svhs = 2, 2701 .svhs = 2,
2842 .gpiomask = 0x3f, 2702 .gpiomask = 0x3f,
2843 .muxsel = { 2, 3, 1, 1 }, 2703 .muxsel = { 2, 3, 1, 1 },
@@ -2868,14 +2728,13 @@ struct tvcard bttv_tvcards[] = {
2868 .name = "Osprey 440", 2728 .name = "Osprey 440",
2869 .video_inputs = 4, 2729 .video_inputs = 4,
2870 .audio_inputs = 2, /* this is meaningless */ 2730 .audio_inputs = 2, /* this is meaningless */
2871 .tuner = UNSET,
2872 .svhs = UNSET, 2731 .svhs = UNSET,
2873 .muxsel = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */ 2732 .muxsel = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */
2874 .gpiomask = 0x303, 2733 .gpiomask = 0x303,
2875 .gpiomute = 0x000, /* int + 32kHz */ 2734 .gpiomute = 0x000, /* int + 32kHz */
2876 .gpiomux = { 0, 0, 0x000, 0x100}, 2735 .gpiomux = { 0, 0, 0x000, 0x100},
2877 .pll = PLL_28, 2736 .pll = PLL_28,
2878 .tuner_type = UNSET, 2737 .tuner_type = TUNER_ABSENT,
2879 .tuner_addr = ADDR_UNSET, 2738 .tuner_addr = ADDR_UNSET,
2880 .radio_addr = ADDR_UNSET, 2739 .radio_addr = ADDR_UNSET,
2881 .no_msp34xx = 1, 2740 .no_msp34xx = 1,
@@ -2887,7 +2746,6 @@ struct tvcard bttv_tvcards[] = {
2887 .name = "Asound Skyeye PCTV", 2746 .name = "Asound Skyeye PCTV",
2888 .video_inputs = 3, 2747 .video_inputs = 3,
2889 .audio_inputs = 1, 2748 .audio_inputs = 1,
2890 .tuner = 0,
2891 .svhs = 2, 2749 .svhs = 2,
2892 .gpiomask = 15, 2750 .gpiomask = 15,
2893 .muxsel = { 2, 3, 1, 1 }, 2751 .muxsel = { 2, 3, 1, 1 },
@@ -2904,7 +2762,6 @@ struct tvcard bttv_tvcards[] = {
2904 .name = "Sabrent TV-FM (bttv version)", 2762 .name = "Sabrent TV-FM (bttv version)",
2905 .video_inputs = 3, 2763 .video_inputs = 3,
2906 .audio_inputs = 1, 2764 .audio_inputs = 1,
2907 .tuner = 0,
2908 .svhs = 2, 2765 .svhs = 2,
2909 .gpiomask = 0x108007, 2766 .gpiomask = 0x108007,
2910 .muxsel = { 2, 3, 1, 1 }, 2767 .muxsel = { 2, 3, 1, 1 },
@@ -2922,14 +2779,13 @@ struct tvcard bttv_tvcards[] = {
2922 .name = "Hauppauge ImpactVCB (bt878)", 2779 .name = "Hauppauge ImpactVCB (bt878)",
2923 .video_inputs = 4, 2780 .video_inputs = 4,
2924 .audio_inputs = 0, 2781 .audio_inputs = 0,
2925 .tuner = UNSET,
2926 .svhs = UNSET, 2782 .svhs = UNSET,
2927 .gpiomask = 0x0f, /* old: 7 */ 2783 .gpiomask = 0x0f, /* old: 7 */
2928 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */ 2784 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */
2929 .no_msp34xx = 1, 2785 .no_msp34xx = 1,
2930 .no_tda9875 = 1, 2786 .no_tda9875 = 1,
2931 .no_tda7432 = 1, 2787 .no_tda7432 = 1,
2932 .tuner_type = UNSET, 2788 .tuner_type = TUNER_ABSENT,
2933 .tuner_addr = ADDR_UNSET, 2789 .tuner_addr = ADDR_UNSET,
2934 .radio_addr = ADDR_UNSET, 2790 .radio_addr = ADDR_UNSET,
2935 }, 2791 },
@@ -2944,7 +2800,6 @@ struct tvcard bttv_tvcards[] = {
2944 .name = "MagicTV", /* rebranded MachTV */ 2800 .name = "MagicTV", /* rebranded MachTV */
2945 .video_inputs = 3, 2801 .video_inputs = 3,
2946 .audio_inputs = 1, 2802 .audio_inputs = 1,
2947 .tuner = 0,
2948 .svhs = 2, 2803 .svhs = 2,
2949 .gpiomask = 7, 2804 .gpiomask = 7,
2950 .muxsel = { 2, 3, 1, 1 }, 2805 .muxsel = { 2, 3, 1, 1 },
@@ -2961,10 +2816,9 @@ struct tvcard bttv_tvcards[] = {
2961 .name = "SSAI Security Video Interface", 2816 .name = "SSAI Security Video Interface",
2962 .video_inputs = 4, 2817 .video_inputs = 4,
2963 .audio_inputs = 0, 2818 .audio_inputs = 0,
2964 .tuner = UNSET,
2965 .svhs = UNSET, 2819 .svhs = UNSET,
2966 .muxsel = { 0, 1, 2, 3 }, 2820 .muxsel = { 0, 1, 2, 3 },
2967 .tuner_type = UNSET, 2821 .tuner_type = TUNER_ABSENT,
2968 .tuner_addr = ADDR_UNSET, 2822 .tuner_addr = ADDR_UNSET,
2969 .radio_addr = ADDR_UNSET, 2823 .radio_addr = ADDR_UNSET,
2970 }, 2824 },
@@ -2972,17 +2826,15 @@ struct tvcard bttv_tvcards[] = {
2972 .name = "SSAI Ultrasound Video Interface", 2826 .name = "SSAI Ultrasound Video Interface",
2973 .video_inputs = 2, 2827 .video_inputs = 2,
2974 .audio_inputs = 0, 2828 .audio_inputs = 0,
2975 .tuner = UNSET,
2976 .svhs = 1, 2829 .svhs = 1,
2977 .muxsel = { 2, 0, 1, 3 }, 2830 .muxsel = { 2, 0, 1, 3 },
2978 .tuner_type = UNSET, 2831 .tuner_type = TUNER_ABSENT,
2979 .tuner_addr = ADDR_UNSET, 2832 .tuner_addr = ADDR_UNSET,
2980 .radio_addr = ADDR_UNSET, 2833 .radio_addr = ADDR_UNSET,
2981 }, 2834 },
2982 /* ---- card 0x94---------------------------------- */ 2835 /* ---- card 0x94---------------------------------- */
2983 [BTTV_BOARD_DVICO_FUSIONHDTV_2] = { 2836 [BTTV_BOARD_DVICO_FUSIONHDTV_2] = {
2984 .name = "DViCO FusionHDTV 2", 2837 .name = "DViCO FusionHDTV 2",
2985 .tuner = 0,
2986 .tuner_type = TUNER_PHILIPS_FCV1236D, 2838 .tuner_type = TUNER_PHILIPS_FCV1236D,
2987 .tuner_addr = ADDR_UNSET, 2839 .tuner_addr = ADDR_UNSET,
2988 .radio_addr = ADDR_UNSET, 2840 .radio_addr = ADDR_UNSET,
@@ -3002,7 +2854,6 @@ struct tvcard bttv_tvcards[] = {
3002 .name = "Typhoon TV-Tuner PCI (50684)", 2854 .name = "Typhoon TV-Tuner PCI (50684)",
3003 .video_inputs = 3, 2855 .video_inputs = 3,
3004 .audio_inputs = 1, 2856 .audio_inputs = 1,
3005 .tuner = 0,
3006 .svhs = 2, 2857 .svhs = 2,
3007 .gpiomask = 0x3014f, 2858 .gpiomask = 0x3014f,
3008 .muxsel = { 2, 3, 1, 1 }, 2859 .muxsel = { 2, 3, 1, 1 },
@@ -3019,7 +2870,6 @@ struct tvcard bttv_tvcards[] = {
3019 .name = "Geovision GV-600", 2870 .name = "Geovision GV-600",
3020 .video_inputs = 16, 2871 .video_inputs = 16,
3021 .audio_inputs = 0, 2872 .audio_inputs = 0,
3022 .tuner = UNSET,
3023 .svhs = UNSET, 2873 .svhs = UNSET,
3024 .gpiomask = 0x0, 2874 .gpiomask = 0x0,
3025 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2875 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2,
@@ -3028,7 +2878,7 @@ struct tvcard bttv_tvcards[] = {
3028 .gpiomux = { 0 }, 2878 .gpiomux = { 0 },
3029 .no_msp34xx = 1, 2879 .no_msp34xx = 1,
3030 .pll = PLL_28, 2880 .pll = PLL_28,
3031 .tuner_type = UNSET, 2881 .tuner_type = TUNER_ABSENT,
3032 .tuner_addr = ADDR_UNSET, 2882 .tuner_addr = ADDR_UNSET,
3033 .radio_addr = ADDR_UNSET, 2883 .radio_addr = ADDR_UNSET,
3034 }, 2884 },
@@ -3039,7 +2889,6 @@ struct tvcard bttv_tvcards[] = {
3039 .name = "Kozumi KTV-01C", 2889 .name = "Kozumi KTV-01C",
3040 .video_inputs = 3, 2890 .video_inputs = 3,
3041 .audio_inputs = 1, 2891 .audio_inputs = 1,
3042 .tuner = 0,
3043 .svhs = 2, 2892 .svhs = 2,
3044 .gpiomask = 0x008007, 2893 .gpiomask = 0x008007,
3045 .muxsel = { 2, 3, 1, 1 }, 2894 .muxsel = { 2, 3, 1, 1 },
@@ -3059,7 +2908,6 @@ struct tvcard bttv_tvcards[] = {
3059 .name = "Encore ENL TV-FM-2", 2908 .name = "Encore ENL TV-FM-2",
3060 .video_inputs = 3, 2909 .video_inputs = 3,
3061 .audio_inputs = 1, 2910 .audio_inputs = 1,
3062 .tuner = 0,
3063 .svhs = 2, 2911 .svhs = 2,
3064 /* bit 6 -> IR disabled 2912 /* bit 6 -> IR disabled
3065 bit 18/17 = 00 -> mute 2913 bit 18/17 = 00 -> mute
@@ -3083,14 +2931,13 @@ struct tvcard bttv_tvcards[] = {
3083 .name = "PHYTEC VD-012 (bt878)", 2931 .name = "PHYTEC VD-012 (bt878)",
3084 .video_inputs = 4, 2932 .video_inputs = 4,
3085 .audio_inputs = 0, 2933 .audio_inputs = 0,
3086 .tuner = UNSET, /* card has no tuner */
3087 .svhs = UNSET, /* card has no s-video */ 2934 .svhs = UNSET, /* card has no s-video */
3088 .gpiomask = 0x00, 2935 .gpiomask = 0x00,
3089 .muxsel = { 0, 2, 3, 1 }, 2936 .muxsel = { 0, 2, 3, 1 },
3090 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2937 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
3091 .needs_tvaudio = 0, 2938 .needs_tvaudio = 0,
3092 .pll = PLL_28, 2939 .pll = PLL_28,
3093 .tuner_type = UNSET, 2940 .tuner_type = TUNER_ABSENT,
3094 .tuner_addr = ADDR_UNSET, 2941 .tuner_addr = ADDR_UNSET,
3095 .radio_addr = ADDR_UNSET, 2942 .radio_addr = ADDR_UNSET,
3096 }, 2943 },
@@ -3099,14 +2946,13 @@ struct tvcard bttv_tvcards[] = {
3099 .name = "PHYTEC VD-012-X1 (bt878)", 2946 .name = "PHYTEC VD-012-X1 (bt878)",
3100 .video_inputs = 4, 2947 .video_inputs = 4,
3101 .audio_inputs = 0, 2948 .audio_inputs = 0,
3102 .tuner = UNSET, /* card has no tuner */
3103 .svhs = 3, 2949 .svhs = 3,
3104 .gpiomask = 0x00, 2950 .gpiomask = 0x00,
3105 .muxsel = { 2, 3, 1 }, 2951 .muxsel = { 2, 3, 1 },
3106 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2952 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
3107 .needs_tvaudio = 0, 2953 .needs_tvaudio = 0,
3108 .pll = PLL_28, 2954 .pll = PLL_28,
3109 .tuner_type = UNSET, 2955 .tuner_type = TUNER_ABSENT,
3110 .tuner_addr = ADDR_UNSET, 2956 .tuner_addr = ADDR_UNSET,
3111 .radio_addr = ADDR_UNSET, 2957 .radio_addr = ADDR_UNSET,
3112 }, 2958 },
@@ -3115,14 +2961,13 @@ struct tvcard bttv_tvcards[] = {
3115 .name = "PHYTEC VD-012-X2 (bt878)", 2961 .name = "PHYTEC VD-012-X2 (bt878)",
3116 .video_inputs = 4, 2962 .video_inputs = 4,
3117 .audio_inputs = 0, 2963 .audio_inputs = 0,
3118 .tuner = UNSET, /* card has no tuner */
3119 .svhs = 3, 2964 .svhs = 3,
3120 .gpiomask = 0x00, 2965 .gpiomask = 0x00,
3121 .muxsel = { 3, 2, 1 }, 2966 .muxsel = { 3, 2, 1 },
3122 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2967 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
3123 .needs_tvaudio = 0, 2968 .needs_tvaudio = 0,
3124 .pll = PLL_28, 2969 .pll = PLL_28,
3125 .tuner_type = UNSET, 2970 .tuner_type = TUNER_ABSENT,
3126 .tuner_addr = ADDR_UNSET, 2971 .tuner_addr = ADDR_UNSET,
3127 .radio_addr = ADDR_UNSET, 2972 .radio_addr = ADDR_UNSET,
3128 } 2973 }
@@ -3687,13 +3532,12 @@ void __devinit bttv_init_card2(struct bttv *btv)
3687 addr = bttv_tvcards[btv->c.type].tuner_addr; 3532 addr = bttv_tvcards[btv->c.type].tuner_addr;
3688 3533
3689 if (UNSET != bttv_tvcards[btv->c.type].tuner_type) 3534 if (UNSET != bttv_tvcards[btv->c.type].tuner_type)
3690 if(UNSET == btv->tuner_type) 3535 if (UNSET == btv->tuner_type)
3691 btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; 3536 btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type;
3692 if (UNSET != tuner[btv->c.nr]) 3537 if (UNSET != tuner[btv->c.nr])
3693 btv->tuner_type = tuner[btv->c.nr]; 3538 btv->tuner_type = tuner[btv->c.nr];
3694 3539
3695 if (btv->tuner_type == TUNER_ABSENT || 3540 if (btv->tuner_type == TUNER_ABSENT)
3696 bttv_tvcards[btv->c.type].tuner == UNSET)
3697 printk(KERN_INFO "bttv%d: tuner absent\n", btv->c.nr); 3541 printk(KERN_INFO "bttv%d: tuner absent\n", btv->c.nr);
3698 else if(btv->tuner_type == UNSET) 3542 else if(btv->tuner_type == UNSET)
3699 printk(KERN_WARNING "bttv%d: tuner type unset\n", btv->c.nr); 3543 printk(KERN_WARNING "bttv%d: tuner type unset\n", btv->c.nr);
@@ -3701,13 +3545,23 @@ void __devinit bttv_init_card2(struct bttv *btv)
3701 printk(KERN_INFO "bttv%d: tuner type=%d\n", btv->c.nr, 3545 printk(KERN_INFO "bttv%d: tuner type=%d\n", btv->c.nr,
3702 btv->tuner_type); 3546 btv->tuner_type);
3703 3547
3704 if (btv->tuner_type != UNSET) { 3548 if (UNSET == btv->tuner_type)
3549 btv->tuner_type = TUNER_ABSENT;
3550
3551 if (btv->tuner_type != TUNER_ABSENT) {
3705 struct tuner_setup tun_setup; 3552 struct tuner_setup tun_setup;
3706 3553
3554 /* Load tuner module before issuing tuner config call! */
3555 if (autoload)
3556 request_module("tuner");
3557
3707 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; 3558 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
3708 tun_setup.type = btv->tuner_type; 3559 tun_setup.type = btv->tuner_type;
3709 tun_setup.addr = addr; 3560 tun_setup.addr = addr;
3710 3561
3562 if (bttv_tvcards[btv->c.type].has_radio)
3563 tun_setup.mode_mask |= T_RADIO;
3564
3711 bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup); 3565 bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup);
3712 } 3566 }
3713 3567
@@ -3740,7 +3594,7 @@ void __devinit bttv_init_card2(struct bttv *btv)
3740 if (!autoload) 3594 if (!autoload)
3741 return; 3595 return;
3742 3596
3743 if (bttv_tvcards[btv->c.type].tuner == UNSET) 3597 if (btv->tuner_type == TUNER_ABSENT)
3744 return; /* no tuner or related drivers to load */ 3598 return; /* no tuner or related drivers to load */
3745 3599
3746 /* try to detect audio/fader chips */ 3600 /* try to detect audio/fader chips */
@@ -3762,9 +3616,6 @@ void __devinit bttv_init_card2(struct bttv *btv)
3762 3616
3763 if (bttv_tvcards[btv->c.type].needs_tvaudio) 3617 if (bttv_tvcards[btv->c.type].needs_tvaudio)
3764 request_module("tvaudio"); 3618 request_module("tvaudio");
3765
3766 if (btv->tuner_type != UNSET && btv->tuner_type != TUNER_ABSENT)
3767 request_module("tuner");
3768} 3619}
3769 3620
3770 3621