aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@brturbo.com.br>2005-11-09 00:36:56 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-09 10:56:13 -0500
commit10c2c8b18a9cd29fc3f5faa5ad8e825dcc8b58e6 (patch)
treeae37a863159f37bd2f1321f4e5a6d6492bea07b4 /drivers/media
parent90a7ed47a37297bee1f4ce11484190ccac29ae7c (diff)
[PATCH] v4l: 703: added new card prolink pixelview playtv mpeg2 pv m4900
- Added new card: Prolink PixelView PlayTV MPEG2 PV-M4900 Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/bttv-cards.c198
-rw-r--r--drivers/media/video/bttv.h2
2 files changed, 184 insertions, 16 deletions
diff --git a/drivers/media/video/bttv-cards.c b/drivers/media/video/bttv-cards.c
index 1553d4a1c20b..adccbbf63dc0 100644
--- a/drivers/media/video/bttv-cards.c
+++ b/drivers/media/video/bttv-cards.c
@@ -319,6 +319,7 @@ struct tvcard bttv_tvcards[] = {
319 .muxsel = { 2, 3, 1, 0}, 319 .muxsel = { 2, 3, 1, 0},
320 .tuner_type = -1, 320 .tuner_type = -1,
321 .tuner_addr = ADDR_UNSET, 321 .tuner_addr = ADDR_UNSET,
322 .radio_addr = ADDR_UNSET,
322 }, 323 },
323 [BTTV_BOARD_MIRO] = { 324 [BTTV_BOARD_MIRO] = {
324 .name = "MIRO PCTV", 325 .name = "MIRO PCTV",
@@ -332,6 +333,7 @@ struct tvcard bttv_tvcards[] = {
332 .needs_tvaudio = 1, 333 .needs_tvaudio = 1,
333 .tuner_type = -1, 334 .tuner_type = -1,
334 .tuner_addr = ADDR_UNSET, 335 .tuner_addr = ADDR_UNSET,
336 .radio_addr = ADDR_UNSET,
335 }, 337 },
336 [BTTV_BOARD_HAUPPAUGE] = { 338 [BTTV_BOARD_HAUPPAUGE] = {
337 .name = "Hauppauge (bt848)", 339 .name = "Hauppauge (bt848)",
@@ -345,6 +347,7 @@ struct tvcard bttv_tvcards[] = {
345 .needs_tvaudio = 1, 347 .needs_tvaudio = 1,
346 .tuner_type = -1, 348 .tuner_type = -1,
347 .tuner_addr = ADDR_UNSET, 349 .tuner_addr = ADDR_UNSET,
350 .radio_addr = ADDR_UNSET,
348 }, 351 },
349 [BTTV_BOARD_STB] = { 352 [BTTV_BOARD_STB] = {
350 .name = "STB, Gateway P/N 6000699 (bt848)", 353 .name = "STB, Gateway P/N 6000699 (bt848)",
@@ -359,6 +362,7 @@ struct tvcard bttv_tvcards[] = {
359 .needs_tvaudio = 1, 362 .needs_tvaudio = 1,
360 .tuner_type = TUNER_PHILIPS_NTSC, 363 .tuner_type = TUNER_PHILIPS_NTSC,
361 .tuner_addr = ADDR_UNSET, 364 .tuner_addr = ADDR_UNSET,
365 .radio_addr = ADDR_UNSET,
362 .pll = PLL_28, 366 .pll = PLL_28,
363 .has_radio = 1, 367 .has_radio = 1,
364 }, 368 },
@@ -376,6 +380,7 @@ struct tvcard bttv_tvcards[] = {
376 .needs_tvaudio = 0, 380 .needs_tvaudio = 0,
377 .tuner_type = 4, 381 .tuner_type = 4,
378 .tuner_addr = ADDR_UNSET, 382 .tuner_addr = ADDR_UNSET,
383 .radio_addr = ADDR_UNSET,
379 }, 384 },
380 [BTTV_BOARD_DIAMOND] = { 385 [BTTV_BOARD_DIAMOND] = {
381 .name = "Diamond DTV2000", 386 .name = "Diamond DTV2000",
@@ -389,6 +394,7 @@ struct tvcard bttv_tvcards[] = {
389 .needs_tvaudio = 1, 394 .needs_tvaudio = 1,
390 .tuner_type = -1, 395 .tuner_type = -1,
391 .tuner_addr = ADDR_UNSET, 396 .tuner_addr = ADDR_UNSET,
397 .radio_addr = ADDR_UNSET,
392 }, 398 },
393 [BTTV_BOARD_AVERMEDIA] = { 399 [BTTV_BOARD_AVERMEDIA] = {
394 .name = "AVerMedia TVPhone", 400 .name = "AVerMedia TVPhone",
@@ -403,6 +409,7 @@ struct tvcard bttv_tvcards[] = {
403 .needs_tvaudio = 1, 409 .needs_tvaudio = 1,
404 .tuner_type = -1, 410 .tuner_type = -1,
405 .tuner_addr = ADDR_UNSET, 411 .tuner_addr = ADDR_UNSET,
412 .radio_addr = ADDR_UNSET,
406 .audio_hook = avermedia_tvphone_audio, 413 .audio_hook = avermedia_tvphone_audio,
407 .has_remote = 1, 414 .has_remote = 1,
408 }, 415 },
@@ -418,6 +425,7 @@ struct tvcard bttv_tvcards[] = {
418 .needs_tvaudio = 1, 425 .needs_tvaudio = 1,
419 .tuner_type = -1, 426 .tuner_type = -1,
420 .tuner_addr = ADDR_UNSET, 427 .tuner_addr = ADDR_UNSET,
428 .radio_addr = ADDR_UNSET,
421 }, 429 },
422 430
423 /* ---- card 0x08 ---------------------------------- */ 431 /* ---- card 0x08 ---------------------------------- */
@@ -434,6 +442,7 @@ struct tvcard bttv_tvcards[] = {
434 .pll = PLL_28, 442 .pll = PLL_28,
435 .tuner_type = -1, 443 .tuner_type = -1,
436 .tuner_addr = ADDR_UNSET, 444 .tuner_addr = ADDR_UNSET,
445 .radio_addr = ADDR_UNSET,
437 }, 446 },
438 [BTTV_BOARD_TURBOTV] = { 447 [BTTV_BOARD_TURBOTV] = {
439 .name = "IMS/IXmicro TurboTV", 448 .name = "IMS/IXmicro TurboTV",
@@ -448,6 +457,7 @@ struct tvcard bttv_tvcards[] = {
448 .pll = PLL_28, 457 .pll = PLL_28,
449 .tuner_type = TUNER_TEMIC_PAL, 458 .tuner_type = TUNER_TEMIC_PAL,
450 .tuner_addr = ADDR_UNSET, 459 .tuner_addr = ADDR_UNSET,
460 .radio_addr = ADDR_UNSET,
451 }, 461 },
452 [BTTV_BOARD_HAUPPAUGE878] = { 462 [BTTV_BOARD_HAUPPAUGE878] = {
453 .name = "Hauppauge (bt878)", 463 .name = "Hauppauge (bt878)",
@@ -462,6 +472,7 @@ struct tvcard bttv_tvcards[] = {
462 .pll = PLL_28, 472 .pll = PLL_28,
463 .tuner_type = -1, 473 .tuner_type = -1,
464 .tuner_addr = ADDR_UNSET, 474 .tuner_addr = ADDR_UNSET,
475 .radio_addr = ADDR_UNSET,
465 }, 476 },
466 [BTTV_BOARD_MIROPRO] = { 477 [BTTV_BOARD_MIROPRO] = {
467 .name = "MIRO PCTV pro", 478 .name = "MIRO PCTV pro",
@@ -475,6 +486,7 @@ struct tvcard bttv_tvcards[] = {
475 .needs_tvaudio = 1, 486 .needs_tvaudio = 1,
476 .tuner_type = -1, 487 .tuner_type = -1,
477 .tuner_addr = ADDR_UNSET, 488 .tuner_addr = ADDR_UNSET,
489 .radio_addr = ADDR_UNSET,
478 }, 490 },
479 491
480 /* ---- card 0x0c ---------------------------------- */ 492 /* ---- card 0x0c ---------------------------------- */
@@ -490,6 +502,7 @@ struct tvcard bttv_tvcards[] = {
490 .needs_tvaudio = 1, 502 .needs_tvaudio = 1,
491 .tuner_type = -1, 503 .tuner_type = -1,
492 .tuner_addr = ADDR_UNSET, 504 .tuner_addr = ADDR_UNSET,
505 .radio_addr = ADDR_UNSET,
493 }, 506 },
494 [BTTV_BOARD_AVERMEDIA98] = { 507 [BTTV_BOARD_AVERMEDIA98] = {
495 .name = "AVerMedia TVCapture 98", 508 .name = "AVerMedia TVCapture 98",
@@ -505,6 +518,7 @@ struct tvcard bttv_tvcards[] = {
505 .pll = PLL_28, 518 .pll = PLL_28,
506 .tuner_type = TUNER_PHILIPS_PAL, 519 .tuner_type = TUNER_PHILIPS_PAL,
507 .tuner_addr = ADDR_UNSET, 520 .tuner_addr = ADDR_UNSET,
521 .radio_addr = ADDR_UNSET,
508 .audio_hook = avermedia_tv_stereo_audio, 522 .audio_hook = avermedia_tv_stereo_audio,
509 }, 523 },
510 [BTTV_BOARD_VHX] = { 524 [BTTV_BOARD_VHX] = {
@@ -520,6 +534,7 @@ struct tvcard bttv_tvcards[] = {
520 .pll = PLL_28, 534 .pll = PLL_28,
521 .tuner_type = -1, 535 .tuner_type = -1,
522 .tuner_addr = ADDR_UNSET, 536 .tuner_addr = ADDR_UNSET,
537 .radio_addr = ADDR_UNSET,
523 }, 538 },
524 [BTTV_BOARD_ZOLTRIX] = { 539 [BTTV_BOARD_ZOLTRIX] = {
525 .name = "Zoltrix TV-Max", 540 .name = "Zoltrix TV-Max",
@@ -533,6 +548,7 @@ struct tvcard bttv_tvcards[] = {
533 .needs_tvaudio = 1, 548 .needs_tvaudio = 1,
534 .tuner_type = -1, 549 .tuner_type = -1,
535 .tuner_addr = ADDR_UNSET, 550 .tuner_addr = ADDR_UNSET,
551 .radio_addr = ADDR_UNSET,
536 }, 552 },
537 553
538 /* ---- card 0x10 ---------------------------------- */ 554 /* ---- card 0x10 ---------------------------------- */
@@ -567,6 +583,7 @@ struct tvcard bttv_tvcards[] = {
567 .needs_tvaudio = 1, 583 .needs_tvaudio = 1,
568 .tuner_type = -1, 584 .tuner_type = -1,
569 .tuner_addr = ADDR_UNSET, 585 .tuner_addr = ADDR_UNSET,
586 .radio_addr = ADDR_UNSET,
570 .audio_hook = winview_audio, 587 .audio_hook = winview_audio,
571 .has_radio = 1, 588 .has_radio = 1,
572 }, 589 },
@@ -582,6 +599,7 @@ struct tvcard bttv_tvcards[] = {
582 .needs_tvaudio = 1, 599 .needs_tvaudio = 1,
583 .tuner_type = -1, 600 .tuner_type = -1,
584 .tuner_addr = ADDR_UNSET, 601 .tuner_addr = ADDR_UNSET,
602 .radio_addr = ADDR_UNSET,
585 }, 603 },
586 [BTTV_BOARD_LIFE_FLYKIT] = { 604 [BTTV_BOARD_LIFE_FLYKIT] = {
587 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", 605 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
@@ -595,6 +613,7 @@ struct tvcard bttv_tvcards[] = {
595 .no_msp34xx = 1, 613 .no_msp34xx = 1,
596 .tuner_type = -1, 614 .tuner_type = -1,
597 .tuner_addr = ADDR_UNSET, 615 .tuner_addr = ADDR_UNSET,
616 .radio_addr = ADDR_UNSET,
598 }, 617 },
599 618
600 /* ---- card 0x14 ---------------------------------- */ 619 /* ---- card 0x14 ---------------------------------- */
@@ -607,6 +626,7 @@ struct tvcard bttv_tvcards[] = {
607 .muxsel = {2, 3, 1, 1}, 626 .muxsel = {2, 3, 1, 1},
608 .tuner_type = -1, 627 .tuner_type = -1,
609 .tuner_addr = ADDR_UNSET, 628 .tuner_addr = ADDR_UNSET,
629 .radio_addr = ADDR_UNSET,
610 }, 630 },
611 [BTTV_BOARD_CONFERENCETV] = { 631 [BTTV_BOARD_CONFERENCETV] = {
612 .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50", 632 .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
@@ -620,6 +640,7 @@ struct tvcard bttv_tvcards[] = {
620 .pll = PLL_28, 640 .pll = PLL_28,
621 .tuner_type = TUNER_PHILIPS_PAL_I, 641 .tuner_type = TUNER_PHILIPS_PAL_I,
622 .tuner_addr = ADDR_UNSET, 642 .tuner_addr = ADDR_UNSET,
643 .radio_addr = ADDR_UNSET,
623 }, 644 },
624 [BTTV_BOARD_PHOEBE_TVMAS] = { 645 [BTTV_BOARD_PHOEBE_TVMAS] = {
625 .name = "Askey CPH050/ Phoebe Tv Master + FM", 646 .name = "Askey CPH050/ Phoebe Tv Master + FM",
@@ -634,6 +655,7 @@ struct tvcard bttv_tvcards[] = {
634 .pll = PLL_28, 655 .pll = PLL_28,
635 .tuner_type = -1, 656 .tuner_type = -1,
636 .tuner_addr = ADDR_UNSET, 657 .tuner_addr = ADDR_UNSET,
658 .radio_addr = ADDR_UNSET,
637 }, 659 },
638 [BTTV_BOARD_MODTEC_205] = { 660 [BTTV_BOARD_MODTEC_205] = {
639 .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878", 661 .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878",
@@ -649,6 +671,7 @@ struct tvcard bttv_tvcards[] = {
649 .pll = PLL_28, 671 .pll = PLL_28,
650 .tuner_type = TUNER_ALPS_TSBB5_PAL_I, 672 .tuner_type = TUNER_ALPS_TSBB5_PAL_I,
651 .tuner_addr = ADDR_UNSET, 673 .tuner_addr = ADDR_UNSET,
674 .radio_addr = ADDR_UNSET,
652 }, 675 },
653 676
654 /* ---- card 0x18 ---------------------------------- */ 677 /* ---- card 0x18 ---------------------------------- */
@@ -665,6 +688,7 @@ struct tvcard bttv_tvcards[] = {
665 .pll = PLL_28, 688 .pll = PLL_28,
666 .tuner_type = -1, 689 .tuner_type = -1,
667 .tuner_addr = ADDR_UNSET, 690 .tuner_addr = ADDR_UNSET,
691 .radio_addr = ADDR_UNSET,
668 .has_remote = 1, 692 .has_remote = 1,
669 }, 693 },
670 [BTTV_BOARD_VOBIS_BOOSTAR] = { 694 [BTTV_BOARD_VOBIS_BOOSTAR] = {
@@ -679,6 +703,7 @@ struct tvcard bttv_tvcards[] = {
679 .needs_tvaudio = 0, 703 .needs_tvaudio = 0,
680 .tuner_type = TUNER_PHILIPS_PAL, 704 .tuner_type = TUNER_PHILIPS_PAL,
681 .tuner_addr = ADDR_UNSET, 705 .tuner_addr = ADDR_UNSET,
706 .radio_addr = ADDR_UNSET,
682 .audio_hook = terratv_audio, 707 .audio_hook = terratv_audio,
683 }, 708 },
684 [BTTV_BOARD_HAUPPAUG_WCAM] = { 709 [BTTV_BOARD_HAUPPAUG_WCAM] = {
@@ -693,6 +718,7 @@ struct tvcard bttv_tvcards[] = {
693 .needs_tvaudio = 1, 718 .needs_tvaudio = 1,
694 .tuner_type = -1, 719 .tuner_type = -1,
695 .tuner_addr = ADDR_UNSET, 720 .tuner_addr = ADDR_UNSET,
721 .radio_addr = ADDR_UNSET,
696 }, 722 },
697 [BTTV_BOARD_MAXI] = { 723 [BTTV_BOARD_MAXI] = {
698 .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50", 724 .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
@@ -706,6 +732,7 @@ struct tvcard bttv_tvcards[] = {
706 .pll = PLL_28, 732 .pll = PLL_28,
707 .tuner_type = TUNER_PHILIPS_SECAM, 733 .tuner_type = TUNER_PHILIPS_SECAM,
708 .tuner_addr = ADDR_UNSET, 734 .tuner_addr = ADDR_UNSET,
735 .radio_addr = ADDR_UNSET,
709 }, 736 },
710 737
711 /* ---- card 0x1c ---------------------------------- */ 738 /* ---- card 0x1c ---------------------------------- */
@@ -721,6 +748,7 @@ struct tvcard bttv_tvcards[] = {
721 .needs_tvaudio = 0, 748 .needs_tvaudio = 0,
722 .tuner_type = TUNER_PHILIPS_PAL, 749 .tuner_type = TUNER_PHILIPS_PAL,
723 .tuner_addr = ADDR_UNSET, 750 .tuner_addr = ADDR_UNSET,
751 .radio_addr = ADDR_UNSET,
724 .audio_hook = terratv_audio, 752 .audio_hook = terratv_audio,
725 /* GPIO wiring: 753 /* GPIO wiring:
726 External 20 pin connector (for Active Radio Upgrade board) 754 External 20 pin connector (for Active Radio Upgrade board)
@@ -767,6 +795,7 @@ struct tvcard bttv_tvcards[] = {
767 .needs_tvaudio = 1, 795 .needs_tvaudio = 1,
768 .tuner_type = -1, 796 .tuner_type = -1,
769 .tuner_addr = ADDR_UNSET, 797 .tuner_addr = ADDR_UNSET,
798 .radio_addr = ADDR_UNSET,
770 .muxsel_hook = PXC200_muxsel, 799 .muxsel_hook = PXC200_muxsel,
771 800
772 }, 801 },
@@ -782,6 +811,7 @@ struct tvcard bttv_tvcards[] = {
782 .pll = PLL_28, 811 .pll = PLL_28,
783 .tuner_type = -1, 812 .tuner_type = -1,
784 .tuner_addr = ADDR_UNSET, 813 .tuner_addr = ADDR_UNSET,
814 .radio_addr = ADDR_UNSET,
785 }, 815 },
786 [BTTV_BOARD_IPROTV] = { 816 [BTTV_BOARD_IPROTV] = {
787 .name = "Formac iProTV, Formac ProTV I (bt848)", 817 .name = "Formac iProTV, Formac ProTV I (bt848)",
@@ -795,6 +825,7 @@ struct tvcard bttv_tvcards[] = {
795 .pll = PLL_28, 825 .pll = PLL_28,
796 .tuner_type = TUNER_PHILIPS_PAL, 826 .tuner_type = TUNER_PHILIPS_PAL,
797 .tuner_addr = ADDR_UNSET, 827 .tuner_addr = ADDR_UNSET,
828 .radio_addr = ADDR_UNSET,
798 }, 829 },
799 830
800 /* ---- card 0x20 ---------------------------------- */ 831 /* ---- card 0x20 ---------------------------------- */
@@ -810,6 +841,7 @@ struct tvcard bttv_tvcards[] = {
810 .needs_tvaudio = 0, 841 .needs_tvaudio = 0,
811 .tuner_type = 4, 842 .tuner_type = 4,
812 .tuner_addr = ADDR_UNSET, 843 .tuner_addr = ADDR_UNSET,
844 .radio_addr = ADDR_UNSET,
813 }, 845 },
814 [BTTV_BOARD_TERRATVALUE] = { 846 [BTTV_BOARD_TERRATVALUE] = {
815 .name = "Terratec TerraTValue Version Bt878", 847 .name = "Terratec TerraTValue Version Bt878",
@@ -824,6 +856,7 @@ struct tvcard bttv_tvcards[] = {
824 .pll = PLL_28, 856 .pll = PLL_28,
825 .tuner_type = TUNER_PHILIPS_PAL, 857 .tuner_type = TUNER_PHILIPS_PAL,
826 .tuner_addr = ADDR_UNSET, 858 .tuner_addr = ADDR_UNSET,
859 .radio_addr = ADDR_UNSET,
827 }, 860 },
828 [BTTV_BOARD_WINFAST2000] = { 861 [BTTV_BOARD_WINFAST2000] = {
829 .name = "Leadtek WinFast 2000/ WinFast 2000 XP", 862 .name = "Leadtek WinFast 2000/ WinFast 2000 XP",
@@ -856,6 +889,7 @@ struct tvcard bttv_tvcards[] = {
856 .has_radio = 1, 889 .has_radio = 1,
857 .tuner_type = 5, /* default for now, gpio reads BFFF06 for Pal bg+dk */ 890 .tuner_type = 5, /* default for now, gpio reads BFFF06 for Pal bg+dk */
858 .tuner_addr = ADDR_UNSET, 891 .tuner_addr = ADDR_UNSET,
892 .radio_addr = ADDR_UNSET,
859 .audio_hook = winfast2000_audio, 893 .audio_hook = winfast2000_audio,
860 .has_remote = 1, 894 .has_remote = 1,
861 }, 895 },
@@ -871,6 +905,7 @@ struct tvcard bttv_tvcards[] = {
871 .pll = PLL_28, 905 .pll = PLL_28,
872 .tuner_type = -1, 906 .tuner_type = -1,
873 .tuner_addr = ADDR_UNSET, 907 .tuner_addr = ADDR_UNSET,
908 .radio_addr = ADDR_UNSET,
874 }, 909 },
875 910
876 /* ---- card 0x24 ---------------------------------- */ 911 /* ---- card 0x24 ---------------------------------- */
@@ -886,6 +921,7 @@ struct tvcard bttv_tvcards[] = {
886 .pll = PLL_28, 921 .pll = PLL_28,
887 .tuner_type = -1, 922 .tuner_type = -1,
888 .tuner_addr = ADDR_UNSET, 923 .tuner_addr = ADDR_UNSET,
924 .radio_addr = ADDR_UNSET,
889 .has_radio = 1, 925 .has_radio = 1,
890 }, 926 },
891 [BTTV_BOARD_PXELVWPLTVPRO] = { 927 [BTTV_BOARD_PXELVWPLTVPRO] = {
@@ -901,6 +937,7 @@ struct tvcard bttv_tvcards[] = {
901 .pll = PLL_28, 937 .pll = PLL_28,
902 .tuner_type = -1, 938 .tuner_type = -1,
903 .tuner_addr = ADDR_UNSET, 939 .tuner_addr = ADDR_UNSET,
940 .radio_addr = ADDR_UNSET,
904 }, 941 },
905 [BTTV_BOARD_MAGICTVIEW063] = { 942 [BTTV_BOARD_MAGICTVIEW063] = {
906 .name = "Askey CPH06X TView99", 943 .name = "Askey CPH06X TView99",
@@ -915,6 +952,7 @@ struct tvcard bttv_tvcards[] = {
915 .pll = PLL_28, 952 .pll = PLL_28,
916 .tuner_type = 1, 953 .tuner_type = 1,
917 .tuner_addr = ADDR_UNSET, 954 .tuner_addr = ADDR_UNSET,
955 .radio_addr = ADDR_UNSET,
918 .has_remote = 1, 956 .has_remote = 1,
919 }, 957 },
920 [BTTV_BOARD_PINNACLE] = { 958 [BTTV_BOARD_PINNACLE] = {
@@ -930,6 +968,7 @@ struct tvcard bttv_tvcards[] = {
930 .pll = PLL_28, 968 .pll = PLL_28,
931 .tuner_type = -1, 969 .tuner_type = -1,
932 .tuner_addr = ADDR_UNSET, 970 .tuner_addr = ADDR_UNSET,
971 .radio_addr = ADDR_UNSET,
933 }, 972 },
934 973
935 /* ---- card 0x28 ---------------------------------- */ 974 /* ---- card 0x28 ---------------------------------- */
@@ -946,6 +985,7 @@ struct tvcard bttv_tvcards[] = {
946 .needs_tvaudio = 1, 985 .needs_tvaudio = 1,
947 .tuner_type = TUNER_PHILIPS_NTSC, 986 .tuner_type = TUNER_PHILIPS_NTSC,
948 .tuner_addr = ADDR_UNSET, 987 .tuner_addr = ADDR_UNSET,
988 .radio_addr = ADDR_UNSET,
949 .pll = PLL_28, 989 .pll = PLL_28,
950 .has_radio = 1, 990 .has_radio = 1,
951 }, 991 },
@@ -962,6 +1002,7 @@ struct tvcard bttv_tvcards[] = {
962 .pll = PLL_28, 1002 .pll = PLL_28,
963 .tuner_type = -1, 1003 .tuner_type = -1,
964 .tuner_addr = ADDR_UNSET, 1004 .tuner_addr = ADDR_UNSET,
1005 .radio_addr = ADDR_UNSET,
965 .has_radio = 1, 1006 .has_radio = 1,
966 .audio_hook = avermedia_tvphone_audio, 1007 .audio_hook = avermedia_tvphone_audio,
967 }, 1008 },
@@ -979,6 +1020,7 @@ struct tvcard bttv_tvcards[] = {
979 .pll = PLL_28, 1020 .pll = PLL_28,
980 .tuner_type = 1, 1021 .tuner_type = 1,
981 .tuner_addr = ADDR_UNSET, 1022 .tuner_addr = ADDR_UNSET,
1023 .radio_addr = ADDR_UNSET,
982 }, 1024 },
983 [BTTV_BOARD_ONAIR_TV] = { 1025 [BTTV_BOARD_ONAIR_TV] = {
984 .name = "Little OnAir TV", 1026 .name = "Little OnAir TV",
@@ -992,6 +1034,7 @@ struct tvcard bttv_tvcards[] = {
992 .no_msp34xx = 1, 1034 .no_msp34xx = 1,
993 .tuner_type = -1, 1035 .tuner_type = -1,
994 .tuner_addr = ADDR_UNSET, 1036 .tuner_addr = ADDR_UNSET,
1037 .radio_addr = ADDR_UNSET,
995 }, 1038 },
996 1039
997 /* ---- card 0x2c ---------------------------------- */ 1040 /* ---- card 0x2c ---------------------------------- */
@@ -1008,6 +1051,7 @@ struct tvcard bttv_tvcards[] = {
1008 .pll = PLL_NONE, 1051 .pll = PLL_NONE,
1009 .tuner_type = -1, 1052 .tuner_type = -1,
1010 .tuner_addr = ADDR_UNSET, 1053 .tuner_addr = ADDR_UNSET,
1054 .radio_addr = ADDR_UNSET,
1011 }, 1055 },
1012 [BTTV_BOARD_MATRIX_VISION2] = { 1056 [BTTV_BOARD_MATRIX_VISION2] = {
1013 .name = "MATRIX-Vision MV-Delta 2", 1057 .name = "MATRIX-Vision MV-Delta 2",
@@ -1022,6 +1066,7 @@ struct tvcard bttv_tvcards[] = {
1022 .pll = PLL_28, 1066 .pll = PLL_28,
1023 .tuner_type = -1, 1067 .tuner_type = -1,
1024 .tuner_addr = ADDR_UNSET, 1068 .tuner_addr = ADDR_UNSET,
1069 .radio_addr = ADDR_UNSET,
1025 }, 1070 },
1026 [BTTV_BOARD_ZOLTRIX_GENIE] = { 1071 [BTTV_BOARD_ZOLTRIX_GENIE] = {
1027 .name = "Zoltrix Genie TV/FM", 1072 .name = "Zoltrix Genie TV/FM",
@@ -1036,6 +1081,7 @@ struct tvcard bttv_tvcards[] = {
1036 .pll = PLL_28, 1081 .pll = PLL_28,
1037 .tuner_type = 21, 1082 .tuner_type = 21,
1038 .tuner_addr = ADDR_UNSET, 1083 .tuner_addr = ADDR_UNSET,
1084 .radio_addr = ADDR_UNSET,
1039 }, 1085 },
1040 [BTTV_BOARD_TERRATVRADIO] = { 1086 [BTTV_BOARD_TERRATVRADIO] = {
1041 .name = "Terratec TV/Radio+", 1087 .name = "Terratec TV/Radio+",
@@ -1051,6 +1097,7 @@ struct tvcard bttv_tvcards[] = {
1051 .pll = PLL_35, 1097 .pll = PLL_35,
1052 .tuner_type = 1, 1098 .tuner_type = 1,
1053 .tuner_addr = ADDR_UNSET, 1099 .tuner_addr = ADDR_UNSET,
1100 .radio_addr = ADDR_UNSET,
1054 .has_radio = 1, 1101 .has_radio = 1,
1055 }, 1102 },
1056 1103
@@ -1068,6 +1115,7 @@ struct tvcard bttv_tvcards[] = {
1068 .pll = PLL_28, 1115 .pll = PLL_28,
1069 .tuner_type = -1, 1116 .tuner_type = -1,
1070 .tuner_addr = ADDR_UNSET, 1117 .tuner_addr = ADDR_UNSET,
1118 .radio_addr = ADDR_UNSET,
1071 }, 1119 },
1072 [BTTV_BOARD_GVBCTV3PCI] = { 1120 [BTTV_BOARD_GVBCTV3PCI] = {
1073 .name = "IODATA GV-BCTV3/PCI", 1121 .name = "IODATA GV-BCTV3/PCI",
@@ -1082,6 +1130,7 @@ struct tvcard bttv_tvcards[] = {
1082 .pll = PLL_28, 1130 .pll = PLL_28,
1083 .tuner_type = TUNER_ALPS_TSHC6_NTSC, 1131 .tuner_type = TUNER_ALPS_TSHC6_NTSC,
1084 .tuner_addr = ADDR_UNSET, 1132 .tuner_addr = ADDR_UNSET,
1133 .radio_addr = ADDR_UNSET,
1085 .audio_hook = gvbctv3pci_audio, 1134 .audio_hook = gvbctv3pci_audio,
1086 }, 1135 },
1087 [BTTV_BOARD_PXELVWPLTVPAK] = { 1136 [BTTV_BOARD_PXELVWPLTVPAK] = {
@@ -1098,6 +1147,7 @@ struct tvcard bttv_tvcards[] = {
1098 .pll = PLL_28, 1147 .pll = PLL_28,
1099 .tuner_type = TUNER_PHILIPS_PAL_I, 1148 .tuner_type = TUNER_PHILIPS_PAL_I,
1100 .tuner_addr = ADDR_UNSET, 1149 .tuner_addr = ADDR_UNSET,
1150 .radio_addr = ADDR_UNSET,
1101 .has_remote = 1, 1151 .has_remote = 1,
1102 /* GPIO wiring: (different from Rev.4C !) 1152 /* GPIO wiring: (different from Rev.4C !)
1103 GPIO17: U4.A0 (first hef4052bt) 1153 GPIO17: U4.A0 (first hef4052bt)
@@ -1121,6 +1171,7 @@ struct tvcard bttv_tvcards[] = {
1121 .pll = PLL_28, 1171 .pll = PLL_28,
1122 .tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */, 1172 .tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */,
1123 .tuner_addr = ADDR_UNSET, 1173 .tuner_addr = ADDR_UNSET,
1174 .radio_addr = ADDR_UNSET,
1124 }, 1175 },
1125 1176
1126 /* ---- card 0x34 ---------------------------------- */ 1177 /* ---- card 0x34 ---------------------------------- */
@@ -1147,6 +1198,7 @@ struct tvcard bttv_tvcards[] = {
1147 .pll = PLL_28, 1198 .pll = PLL_28,
1148 .tuner_type = -1, 1199 .tuner_type = -1,
1149 .tuner_addr = ADDR_UNSET, 1200 .tuner_addr = ADDR_UNSET,
1201 .radio_addr = ADDR_UNSET,
1150 }, 1202 },
1151 [BTTV_BOARD_TVIEW_RDS_FM] = { 1203 [BTTV_BOARD_TVIEW_RDS_FM] = {
1152 /* Claas Langbehn <claas@bigfoot.com>, 1204 /* Claas Langbehn <claas@bigfoot.com>,
@@ -1163,6 +1215,7 @@ struct tvcard bttv_tvcards[] = {
1163 .pll = PLL_28, 1215 .pll = PLL_28,
1164 .tuner_type = TUNER_PHILIPS_PAL, 1216 .tuner_type = TUNER_PHILIPS_PAL,
1165 .tuner_addr = ADDR_UNSET, 1217 .tuner_addr = ADDR_UNSET,
1218 .radio_addr = ADDR_UNSET,
1166 .has_radio = 1, 1219 .has_radio = 1,
1167 }, 1220 },
1168 [BTTV_BOARD_LIFETEC_9415] = { 1221 [BTTV_BOARD_LIFETEC_9415] = {
@@ -1186,6 +1239,7 @@ struct tvcard bttv_tvcards[] = {
1186 .pll = PLL_28, 1239 .pll = PLL_28,
1187 .tuner_type = -1, 1240 .tuner_type = -1,
1188 .tuner_addr = ADDR_UNSET, 1241 .tuner_addr = ADDR_UNSET,
1242 .radio_addr = ADDR_UNSET,
1189 }, 1243 },
1190 [BTTV_BOARD_BESTBUY_EASYTV] = { 1244 [BTTV_BOARD_BESTBUY_EASYTV] = {
1191 /* Miguel Angel Alvarez <maacruz@navegalia.com> 1245 /* Miguel Angel Alvarez <maacruz@navegalia.com>
@@ -1202,6 +1256,7 @@ struct tvcard bttv_tvcards[] = {
1202 .pll = PLL_28, 1256 .pll = PLL_28,
1203 .tuner_type = TUNER_TEMIC_PAL, 1257 .tuner_type = TUNER_TEMIC_PAL,
1204 .tuner_addr = ADDR_UNSET, 1258 .tuner_addr = ADDR_UNSET,
1259 .radio_addr = ADDR_UNSET,
1205 }, 1260 },
1206 1261
1207 /* ---- card 0x38 ---------------------------------- */ 1262 /* ---- card 0x38 ---------------------------------- */
@@ -1218,6 +1273,7 @@ struct tvcard bttv_tvcards[] = {
1218 .pll = PLL_28, 1273 .pll = PLL_28,
1219 .tuner_type = 5, 1274 .tuner_type = 5,
1220 .tuner_addr = ADDR_UNSET, 1275 .tuner_addr = ADDR_UNSET,
1276 .radio_addr = ADDR_UNSET,
1221 }, 1277 },
1222 /* This is the ultimate cheapo capture card 1278 /* This is the ultimate cheapo capture card
1223 * just a BT848A on a small PCB! 1279 * just a BT848A on a small PCB!
@@ -1236,6 +1292,7 @@ struct tvcard bttv_tvcards[] = {
1236 .pll = PLL_35, 1292 .pll = PLL_35,
1237 .tuner_type = -1, 1293 .tuner_type = -1,
1238 .tuner_addr = ADDR_UNSET, 1294 .tuner_addr = ADDR_UNSET,
1295 .radio_addr = ADDR_UNSET,
1239 }, 1296 },
1240 [BTTV_BOARD_ASKEY_CPH060] = { 1297 [BTTV_BOARD_ASKEY_CPH060] = {
1241 /* Daniel Herrington <daniel.herrington@home.com> */ 1298 /* Daniel Herrington <daniel.herrington@home.com> */
@@ -1251,6 +1308,7 @@ struct tvcard bttv_tvcards[] = {
1251 .pll = PLL_28, 1308 .pll = PLL_28,
1252 .tuner_type = TUNER_TEMIC_4036FY5_NTSC, 1309 .tuner_type = TUNER_TEMIC_4036FY5_NTSC,
1253 .tuner_addr = ADDR_UNSET, 1310 .tuner_addr = ADDR_UNSET,
1311 .radio_addr = ADDR_UNSET,
1254 }, 1312 },
1255 [BTTV_BOARD_ASKEY_CPH03X] = { 1313 [BTTV_BOARD_ASKEY_CPH03X] = {
1256 /* Matti Mottus <mottus@physic.ut.ee> */ 1314 /* Matti Mottus <mottus@physic.ut.ee> */
@@ -1265,6 +1323,7 @@ struct tvcard bttv_tvcards[] = {
1265 .pll = PLL_28, 1323 .pll = PLL_28,
1266 .tuner_type = 0, 1324 .tuner_type = 0,
1267 .tuner_addr = ADDR_UNSET, 1325 .tuner_addr = ADDR_UNSET,
1326 .radio_addr = ADDR_UNSET,
1268 }, 1327 },
1269 1328
1270 /* ---- card 0x3c ---------------------------------- */ 1329 /* ---- card 0x3c ---------------------------------- */
@@ -1281,6 +1340,7 @@ struct tvcard bttv_tvcards[] = {
1281 .pll = PLL_35, 1340 .pll = PLL_35,
1282 .tuner_type = TUNER_TEMIC_PAL, 1341 .tuner_type = TUNER_TEMIC_PAL,
1283 .tuner_addr = ADDR_UNSET, 1342 .tuner_addr = ADDR_UNSET,
1343 .radio_addr = ADDR_UNSET,
1284 }, 1344 },
1285 [BTTV_BOARD_GMV1] = { 1345 [BTTV_BOARD_GMV1] = {
1286 /* Adrian Cox <adrian@humboldt.co.uk */ 1346 /* Adrian Cox <adrian@humboldt.co.uk */
@@ -1297,6 +1357,7 @@ struct tvcard bttv_tvcards[] = {
1297 .pll = PLL_28, 1357 .pll = PLL_28,
1298 .tuner_type = -1, 1358 .tuner_type = -1,
1299 .tuner_addr = ADDR_UNSET, 1359 .tuner_addr = ADDR_UNSET,
1360 .radio_addr = ADDR_UNSET,
1300 }, 1361 },
1301 [BTTV_BOARD_BESTBUY_EASYTV2] = { 1362 [BTTV_BOARD_BESTBUY_EASYTV2] = {
1302 /* Miguel Angel Alvarez <maacruz@navegalia.com> 1363 /* Miguel Angel Alvarez <maacruz@navegalia.com>
@@ -1314,6 +1375,7 @@ struct tvcard bttv_tvcards[] = {
1314 .pll = PLL_28, 1375 .pll = PLL_28,
1315 .tuner_type = TUNER_PHILIPS_PAL, 1376 .tuner_type = TUNER_PHILIPS_PAL,
1316 .tuner_addr = ADDR_UNSET, 1377 .tuner_addr = ADDR_UNSET,
1378 .radio_addr = ADDR_UNSET,
1317 }, 1379 },
1318 [BTTV_BOARD_ATI_TVWONDER] = { 1380 [BTTV_BOARD_ATI_TVWONDER] = {
1319 /* Lukas Gebauer <geby@volny.cz> */ 1381 /* Lukas Gebauer <geby@volny.cz> */
@@ -1328,6 +1390,7 @@ struct tvcard bttv_tvcards[] = {
1328 .pll = PLL_28, 1390 .pll = PLL_28,
1329 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, 1391 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
1330 .tuner_addr = ADDR_UNSET, 1392 .tuner_addr = ADDR_UNSET,
1393 .radio_addr = ADDR_UNSET,
1331 }, 1394 },
1332 1395
1333 /* ---- card 0x40 ---------------------------------- */ 1396 /* ---- card 0x40 ---------------------------------- */
@@ -1345,6 +1408,7 @@ struct tvcard bttv_tvcards[] = {
1345 .pll = PLL_28, 1408 .pll = PLL_28,
1346 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, 1409 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
1347 .tuner_addr = ADDR_UNSET, 1410 .tuner_addr = ADDR_UNSET,
1411 .radio_addr = ADDR_UNSET,
1348 }, 1412 },
1349 [BTTV_BOARD_FLYVIDEO2000] = { 1413 [BTTV_BOARD_FLYVIDEO2000] = {
1350 /* DeeJay <deejay@westel900.net (2000S) */ 1414 /* DeeJay <deejay@westel900.net (2000S) */
@@ -1366,6 +1430,7 @@ struct tvcard bttv_tvcards[] = {
1366 .pll = PLL_28, 1430 .pll = PLL_28,
1367 .tuner_type = 5, 1431 .tuner_type = 5,
1368 .tuner_addr = ADDR_UNSET, 1432 .tuner_addr = ADDR_UNSET,
1433 .radio_addr = ADDR_UNSET,
1369 }, 1434 },
1370 [BTTV_BOARD_TERRATVALUER] = { 1435 [BTTV_BOARD_TERRATVALUER] = {
1371 .name = "Terratec TValueRadio", 1436 .name = "Terratec TValueRadio",
@@ -1380,6 +1445,7 @@ struct tvcard bttv_tvcards[] = {
1380 .pll = PLL_28, 1445 .pll = PLL_28,
1381 .tuner_type = TUNER_PHILIPS_PAL, 1446 .tuner_type = TUNER_PHILIPS_PAL,
1382 .tuner_addr = ADDR_UNSET, 1447 .tuner_addr = ADDR_UNSET,
1448 .radio_addr = ADDR_UNSET,
1383 .has_radio = 1, 1449 .has_radio = 1,
1384 }, 1450 },
1385 [BTTV_BOARD_GVBCTV4PCI] = { 1451 [BTTV_BOARD_GVBCTV4PCI] = {
@@ -1396,6 +1462,7 @@ struct tvcard bttv_tvcards[] = {
1396 .pll = PLL_28, 1462 .pll = PLL_28,
1397 .tuner_type = TUNER_SHARP_2U5JF5540_NTSC, 1463 .tuner_type = TUNER_SHARP_2U5JF5540_NTSC,
1398 .tuner_addr = ADDR_UNSET, 1464 .tuner_addr = ADDR_UNSET,
1465 .radio_addr = ADDR_UNSET,
1399 .audio_hook = gvbctv3pci_audio, 1466 .audio_hook = gvbctv3pci_audio,
1400 }, 1467 },
1401 1468
@@ -1417,6 +1484,7 @@ struct tvcard bttv_tvcards[] = {
1417 .muxsel = { 2, 3 ,0 ,1}, 1484 .muxsel = { 2, 3 ,0 ,1},
1418 .tuner_type = TUNER_MT2032, 1485 .tuner_type = TUNER_MT2032,
1419 .tuner_addr = ADDR_UNSET, 1486 .tuner_addr = ADDR_UNSET,
1487 .radio_addr = ADDR_UNSET,
1420 .pll = PLL_28, 1488 .pll = PLL_28,
1421 .has_radio = 1, 1489 .has_radio = 1,
1422 }, 1490 },
@@ -1428,6 +1496,7 @@ struct tvcard bttv_tvcards[] = {
1428 .tuner = -1, 1496 .tuner = -1,
1429 .tuner_type = -1, 1497 .tuner_type = -1,
1430 .tuner_addr = ADDR_UNSET, 1498 .tuner_addr = ADDR_UNSET,
1499 .radio_addr = ADDR_UNSET,
1431 .pll = PLL_28, 1500 .pll = PLL_28,
1432 .muxsel = { 2 }, 1501 .muxsel = { 2 },
1433 .gpiomask = 0 1502 .gpiomask = 0
@@ -1446,6 +1515,7 @@ struct tvcard bttv_tvcards[] = {
1446 .pll = PLL_28, 1515 .pll = PLL_28,
1447 .tuner_type = 25, 1516 .tuner_type = 25,
1448 .tuner_addr = ADDR_UNSET, 1517 .tuner_addr = ADDR_UNSET,
1518 .radio_addr = ADDR_UNSET,
1449 .has_remote = 1, 1519 .has_remote = 1,
1450 /* GPIO wiring: 1520 /* GPIO wiring:
1451 GPIO0: U4.A0 (hef4052bt) 1521 GPIO0: U4.A0 (hef4052bt)
@@ -1466,6 +1536,7 @@ struct tvcard bttv_tvcards[] = {
1466 .no_msp34xx = 1, 1536 .no_msp34xx = 1,
1467 .tuner_type = UNSET, 1537 .tuner_type = UNSET,
1468 .tuner_addr = ADDR_UNSET, 1538 .tuner_addr = ADDR_UNSET,
1539 .radio_addr = ADDR_UNSET,
1469 }, 1540 },
1470 1541
1471 /* ---- card 0x48 ---------------------------------- */ 1542 /* ---- card 0x48 ---------------------------------- */
@@ -1485,6 +1556,7 @@ struct tvcard bttv_tvcards[] = {
1485 .pll = PLL_28, 1556 .pll = PLL_28,
1486 .tuner_type = 5, 1557 .tuner_type = 5,
1487 .tuner_addr = ADDR_UNSET, 1558 .tuner_addr = ADDR_UNSET,
1559 .radio_addr = ADDR_UNSET,
1488 .audio_hook = pvbt878p9b_audio, /* Note: not all cards have stereo */ 1560 .audio_hook = pvbt878p9b_audio, /* Note: not all cards have stereo */
1489 .has_radio = 1, /* Note: not all cards have radio */ 1561 .has_radio = 1, /* Note: not all cards have radio */
1490 .has_remote = 1, 1562 .has_remote = 1,
@@ -1510,6 +1582,7 @@ struct tvcard bttv_tvcards[] = {
1510 .needs_tvaudio = 0, 1582 .needs_tvaudio = 0,
1511 .tuner_type = -1, 1583 .tuner_type = -1,
1512 .tuner_addr = ADDR_UNSET, 1584 .tuner_addr = ADDR_UNSET,
1585 .radio_addr = ADDR_UNSET,
1513 }, 1586 },
1514 [BTTV_BOARD_RV605] = { 1587 [BTTV_BOARD_RV605] = {
1515 /* Miguel Freitas <miguel@cetuc.puc-rio.br> */ 1588 /* Miguel Freitas <miguel@cetuc.puc-rio.br> */
@@ -1526,6 +1599,7 @@ struct tvcard bttv_tvcards[] = {
1526 .no_tda9875 = 1, 1599 .no_tda9875 = 1,
1527 .tuner_type = -1, 1600 .tuner_type = -1,
1528 .tuner_addr = ADDR_UNSET, 1601 .tuner_addr = ADDR_UNSET,
1602 .radio_addr = ADDR_UNSET,
1529 .muxsel_hook = rv605_muxsel, 1603 .muxsel_hook = rv605_muxsel,
1530 }, 1604 },
1531 [BTTV_BOARD_POWERCLR_MTV878] = { 1605 [BTTV_BOARD_POWERCLR_MTV878] = {
@@ -1540,6 +1614,7 @@ struct tvcard bttv_tvcards[] = {
1540 .needs_tvaudio = 0, 1614 .needs_tvaudio = 0,
1541 .tuner_type = TUNER_PHILIPS_PAL, 1615 .tuner_type = TUNER_PHILIPS_PAL,
1542 .tuner_addr = ADDR_UNSET, 1616 .tuner_addr = ADDR_UNSET,
1617 .radio_addr = ADDR_UNSET,
1543 .pll = PLL_28, 1618 .pll = PLL_28,
1544 .has_radio = 1, 1619 .has_radio = 1,
1545 }, 1620 },
@@ -1557,6 +1632,7 @@ struct tvcard bttv_tvcards[] = {
1557 .audiomux = { 0, 1, 2, 3, 4, 0 }, 1632 .audiomux = { 0, 1, 2, 3, 4, 0 },
1558 .tuner_type = TUNER_PHILIPS_NTSC, 1633 .tuner_type = TUNER_PHILIPS_NTSC,
1559 .tuner_addr = ADDR_UNSET, 1634 .tuner_addr = ADDR_UNSET,
1635 .radio_addr = ADDR_UNSET,
1560 .audio_hook = windvr_audio, 1636 .audio_hook = windvr_audio,
1561 }, 1637 },
1562 [BTTV_BOARD_GRANDTEC_MULTI] = { 1638 [BTTV_BOARD_GRANDTEC_MULTI] = {
@@ -1573,6 +1649,7 @@ struct tvcard bttv_tvcards[] = {
1573 .pll = PLL_28, 1649 .pll = PLL_28,
1574 .tuner_type = -1, 1650 .tuner_type = -1,
1575 .tuner_addr = ADDR_UNSET, 1651 .tuner_addr = ADDR_UNSET,
1652 .radio_addr = ADDR_UNSET,
1576 }, 1653 },
1577 [BTTV_BOARD_KWORLD] = { 1654 [BTTV_BOARD_KWORLD] = {
1578 .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF", 1655 .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
@@ -1594,6 +1671,7 @@ struct tvcard bttv_tvcards[] = {
1594 .pll = PLL_28, 1671 .pll = PLL_28,
1595 .tuner_type = 5, 1672 .tuner_type = 5,
1596 .tuner_addr = ADDR_UNSET, 1673 .tuner_addr = ADDR_UNSET,
1674 .radio_addr = ADDR_UNSET,
1597 /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and 1675 /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
1598 radio signal strength indicators work fine. */ 1676 radio signal strength indicators work fine. */
1599 .has_radio = 1, 1677 .has_radio = 1,
@@ -1616,6 +1694,7 @@ struct tvcard bttv_tvcards[] = {
1616 .pll = PLL_28, 1694 .pll = PLL_28,
1617 .tuner_type = -1, 1695 .tuner_type = -1,
1618 .tuner_addr = ADDR_UNSET, 1696 .tuner_addr = ADDR_UNSET,
1697 .radio_addr = ADDR_UNSET,
1619 }, 1698 },
1620 1699
1621 /* ---- card 0x50 ---------------------------------- */ 1700 /* ---- card 0x50 ---------------------------------- */
@@ -1630,6 +1709,7 @@ struct tvcard bttv_tvcards[] = {
1630 .pll = PLL_28, 1709 .pll = PLL_28,
1631 .tuner_type = -1, 1710 .tuner_type = -1,
1632 .tuner_addr = ADDR_UNSET, 1711 .tuner_addr = ADDR_UNSET,
1712 .radio_addr = ADDR_UNSET,
1633 1713
1634 .gpiomask = 7, 1714 .gpiomask = 7,
1635 .audiomux = {7}, 1715 .audiomux = {7},
@@ -1647,6 +1727,7 @@ struct tvcard bttv_tvcards[] = {
1647 .pll = PLL_28, 1727 .pll = PLL_28,
1648 .tuner_type = TUNER_PHILIPS_NTSC_M, 1728 .tuner_type = TUNER_PHILIPS_NTSC_M,
1649 .tuner_addr = ADDR_UNSET, 1729 .tuner_addr = ADDR_UNSET,
1730 .radio_addr = ADDR_UNSET,
1650 .audio_hook = gvbctv5pci_audio, 1731 .audio_hook = gvbctv5pci_audio,
1651 .has_radio = 1, 1732 .has_radio = 1,
1652 }, 1733 },
@@ -1660,6 +1741,7 @@ struct tvcard bttv_tvcards[] = {
1660 .pll = PLL_28, 1741 .pll = PLL_28,
1661 .tuner_type = -1, 1742 .tuner_type = -1,
1662 .tuner_addr = ADDR_UNSET, 1743 .tuner_addr = ADDR_UNSET,
1744 .radio_addr = ADDR_UNSET,
1663 .no_msp34xx = 1, 1745 .no_msp34xx = 1,
1664 .no_tda9875 = 1, 1746 .no_tda9875 = 1,
1665 .no_tda7432 = 1, 1747 .no_tda7432 = 1,
@@ -1674,6 +1756,7 @@ struct tvcard bttv_tvcards[] = {
1674 .pll = PLL_28, 1756 .pll = PLL_28,
1675 .tuner_type = -1, 1757 .tuner_type = -1,
1676 .tuner_addr = ADDR_UNSET, 1758 .tuner_addr = ADDR_UNSET,
1759 .radio_addr = ADDR_UNSET,
1677 .no_msp34xx = 1, 1760 .no_msp34xx = 1,
1678 .no_tda9875 = 1, 1761 .no_tda9875 = 1,
1679 .no_tda7432 = 1, 1762 .no_tda7432 = 1,
@@ -1690,6 +1773,7 @@ struct tvcard bttv_tvcards[] = {
1690 .pll = PLL_28, 1773 .pll = PLL_28,
1691 .tuner_type = -1, 1774 .tuner_type = -1,
1692 .tuner_addr = ADDR_UNSET, 1775 .tuner_addr = ADDR_UNSET,
1776 .radio_addr = ADDR_UNSET,
1693 .no_msp34xx = 1, 1777 .no_msp34xx = 1,
1694 .no_tda9875 = 1, 1778 .no_tda9875 = 1,
1695 .no_tda7432 = 1, 1779 .no_tda7432 = 1,
@@ -1704,6 +1788,7 @@ struct tvcard bttv_tvcards[] = {
1704 .pll = PLL_28, 1788 .pll = PLL_28,
1705 .tuner_type = -1, 1789 .tuner_type = -1,
1706 .tuner_addr = ADDR_UNSET, 1790 .tuner_addr = ADDR_UNSET,
1791 .radio_addr = ADDR_UNSET,
1707 .no_msp34xx = 1, 1792 .no_msp34xx = 1,
1708 .no_tda9875 = 1, 1793 .no_tda9875 = 1,
1709 .no_tda7432 = 1, 1794 .no_tda7432 = 1,
@@ -1718,6 +1803,7 @@ struct tvcard bttv_tvcards[] = {
1718 .pll = PLL_28, 1803 .pll = PLL_28,
1719 .tuner_type = -1, 1804 .tuner_type = -1,
1720 .tuner_addr = ADDR_UNSET, 1805 .tuner_addr = ADDR_UNSET,
1806 .radio_addr = ADDR_UNSET,
1721 .no_msp34xx = 1, 1807 .no_msp34xx = 1,
1722 .no_tda9875 = 1, 1808 .no_tda9875 = 1,
1723 .no_tda7432 = 1, 1809 .no_tda7432 = 1,
@@ -1732,6 +1818,7 @@ struct tvcard bttv_tvcards[] = {
1732 .pll = PLL_28, 1818 .pll = PLL_28,
1733 .tuner_type = UNSET, 1819 .tuner_type = UNSET,
1734 .tuner_addr = ADDR_UNSET, 1820 .tuner_addr = ADDR_UNSET,
1821 .radio_addr = ADDR_UNSET,
1735 .no_msp34xx = 1, 1822 .no_msp34xx = 1,
1736 .no_tda9875 = 1, 1823 .no_tda9875 = 1,
1737 .no_tda7432 = 1, 1824 .no_tda7432 = 1,
@@ -1748,6 +1835,7 @@ struct tvcard bttv_tvcards[] = {
1748 .pll = PLL_28, 1835 .pll = PLL_28,
1749 .tuner_type = UNSET, 1836 .tuner_type = UNSET,
1750 .tuner_addr = ADDR_UNSET, 1837 .tuner_addr = ADDR_UNSET,
1838 .radio_addr = ADDR_UNSET,
1751 .no_msp34xx = 1, 1839 .no_msp34xx = 1,
1752 .no_tda9875 = 1, 1840 .no_tda9875 = 1,
1753 .no_tda7432 = 1, 1841 .no_tda7432 = 1,
@@ -1762,6 +1850,7 @@ struct tvcard bttv_tvcards[] = {
1762 .pll = PLL_28, 1850 .pll = PLL_28,
1763 .tuner_type = UNSET, 1851 .tuner_type = UNSET,
1764 .tuner_addr = ADDR_UNSET, 1852 .tuner_addr = ADDR_UNSET,
1853 .radio_addr = ADDR_UNSET,
1765 .no_msp34xx = 1, 1854 .no_msp34xx = 1,
1766 .no_tda9875 = 1, 1855 .no_tda9875 = 1,
1767 .no_tda7432 = 1, 1856 .no_tda7432 = 1,
@@ -1776,6 +1865,7 @@ struct tvcard bttv_tvcards[] = {
1776 .pll = PLL_28, 1865 .pll = PLL_28,
1777 .tuner_type = -1, 1866 .tuner_type = -1,
1778 .tuner_addr = ADDR_UNSET, 1867 .tuner_addr = ADDR_UNSET,
1868 .radio_addr = ADDR_UNSET,
1779 .no_msp34xx = 1, 1869 .no_msp34xx = 1,
1780 .no_tda9875 = 1, 1870 .no_tda9875 = 1,
1781 .no_tda7432 = 1, 1871 .no_tda7432 = 1,
@@ -1793,6 +1883,7 @@ struct tvcard bttv_tvcards[] = {
1793 .pll = PLL_28, 1883 .pll = PLL_28,
1794 .tuner_type = -1, 1884 .tuner_type = -1,
1795 .tuner_addr = ADDR_UNSET, 1885 .tuner_addr = ADDR_UNSET,
1886 .radio_addr = ADDR_UNSET,
1796 .no_msp34xx = 1, 1887 .no_msp34xx = 1,
1797 .no_tda9875 = 1, 1888 .no_tda9875 = 1,
1798 .no_tda7432 = 1, 1889 .no_tda7432 = 1,
@@ -1813,6 +1904,7 @@ struct tvcard bttv_tvcards[] = {
1813 .pll = PLL_28, 1904 .pll = PLL_28,
1814 .tuner_type = UNSET, 1905 .tuner_type = UNSET,
1815 .tuner_addr = ADDR_UNSET, 1906 .tuner_addr = ADDR_UNSET,
1907 .radio_addr = ADDR_UNSET,
1816 .no_msp34xx = 1, 1908 .no_msp34xx = 1,
1817 .no_tda9875 = 1, 1909 .no_tda9875 = 1,
1818 .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */ 1910 .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */
@@ -1825,6 +1917,7 @@ struct tvcard bttv_tvcards[] = {
1825 .tuner = -1, 1917 .tuner = -1,
1826 .tuner_type = -1, 1918 .tuner_type = -1,
1827 .tuner_addr = ADDR_UNSET, 1919 .tuner_addr = ADDR_UNSET,
1920 .radio_addr = ADDR_UNSET,
1828 .svhs = -1, 1921 .svhs = -1,
1829 .gpiomask = 0, 1922 .gpiomask = 0,
1830 .muxsel = { 0, 1, 2, 3 }, 1923 .muxsel = { 0, 1, 2, 3 },
@@ -1841,6 +1934,7 @@ struct tvcard bttv_tvcards[] = {
1841 .tuner = -1, 1934 .tuner = -1,
1842 .tuner_type = -1, 1935 .tuner_type = -1,
1843 .tuner_addr = ADDR_UNSET, 1936 .tuner_addr = ADDR_UNSET,
1937 .radio_addr = ADDR_UNSET,
1844 .no_msp34xx = 1, 1938 .no_msp34xx = 1,
1845 .no_tda9875 = 1, 1939 .no_tda9875 = 1,
1846 .no_tda7432 = 1, 1940 .no_tda7432 = 1,
@@ -1863,6 +1957,7 @@ struct tvcard bttv_tvcards[] = {
1863 .has_radio = 1, 1957 .has_radio = 1,
1864 .tuner_type = TUNER_PHILIPS_PAL, 1958 .tuner_type = TUNER_PHILIPS_PAL,
1865 .tuner_addr = ADDR_UNSET, 1959 .tuner_addr = ADDR_UNSET,
1960 .radio_addr = ADDR_UNSET,
1866 /* sound routing: 1961 /* sound routing:
1867 GPIO=0x00,0x01,0x03: mute (?) 1962 GPIO=0x00,0x01,0x03: mute (?)
1868 0x02: both TV and radio (tuner: FM1216/I) 1963 0x02: both TV and radio (tuner: FM1216/I)
@@ -1885,6 +1980,7 @@ struct tvcard bttv_tvcards[] = {
1885 .needs_tvaudio = 1, 1980 .needs_tvaudio = 1,
1886 .tuner_type = 5, 1981 .tuner_type = 5,
1887 .tuner_addr = ADDR_UNSET, 1982 .tuner_addr = ADDR_UNSET,
1983 .radio_addr = ADDR_UNSET,
1888 .pll = 1, 1984 .pll = 1,
1889 }, 1985 },
1890 [BTTV_BOARD_EURESYS_PICOLO] = { 1986 [BTTV_BOARD_EURESYS_PICOLO] = {
@@ -1901,6 +1997,7 @@ struct tvcard bttv_tvcards[] = {
1901 .pll = PLL_28, 1997 .pll = PLL_28,
1902 .tuner_type = UNSET, 1998 .tuner_type = UNSET,
1903 .tuner_addr = ADDR_UNSET, 1999 .tuner_addr = ADDR_UNSET,
2000 .radio_addr = ADDR_UNSET,
1904 }, 2001 },
1905 [BTTV_BOARD_PV150] = { 2002 [BTTV_BOARD_PV150] = {
1906 /* Luc Van Hoeylandt <luc@e-magic.be> */ 2003 /* Luc Van Hoeylandt <luc@e-magic.be> */
@@ -1917,6 +2014,7 @@ struct tvcard bttv_tvcards[] = {
1917 .pll = PLL_28, 2014 .pll = PLL_28,
1918 .tuner_type = UNSET, 2015 .tuner_type = UNSET,
1919 .tuner_addr = ADDR_UNSET, 2016 .tuner_addr = ADDR_UNSET,
2017 .radio_addr = ADDR_UNSET,
1920 }, 2018 },
1921 [BTTV_BOARD_AD_TVK503] = { 2019 [BTTV_BOARD_AD_TVK503] = {
1922 /* Hiroshi Takekawa <sian@big.or.jp> */ 2020 /* Hiroshi Takekawa <sian@big.or.jp> */
@@ -1935,6 +2033,7 @@ struct tvcard bttv_tvcards[] = {
1935 .pll = PLL_28, 2033 .pll = PLL_28,
1936 .tuner_type = 2, 2034 .tuner_type = 2,
1937 .tuner_addr = ADDR_UNSET, 2035 .tuner_addr = ADDR_UNSET,
2036 .radio_addr = ADDR_UNSET,
1938 .audio_hook = adtvk503_audio, 2037 .audio_hook = adtvk503_audio,
1939 }, 2038 },
1940 2039
@@ -1952,6 +2051,7 @@ struct tvcard bttv_tvcards[] = {
1952 .pll = PLL_28, 2051 .pll = PLL_28,
1953 .tuner_type = 5, 2052 .tuner_type = 5,
1954 .tuner_addr = ADDR_UNSET, 2053 .tuner_addr = ADDR_UNSET,
2054 .radio_addr = ADDR_UNSET,
1955 /* Notes: 2055 /* Notes:
1956 - card lacks subsystem ID 2056 - card lacks subsystem ID
1957 - stereo variant w/ daughter board with tda9874a @0xb0 2057 - stereo variant w/ daughter board with tda9874a @0xb0
@@ -1974,6 +2074,7 @@ struct tvcard bttv_tvcards[] = {
1974 .no_tda7432 = 1, 2074 .no_tda7432 = 1,
1975 .tuner_type = 1, 2075 .tuner_type = 1,
1976 .tuner_addr = ADDR_UNSET, 2076 .tuner_addr = ADDR_UNSET,
2077 .radio_addr = ADDR_UNSET,
1977 .has_radio = 1, 2078 .has_radio = 1,
1978 .pll = PLL_28, 2079 .pll = PLL_28,
1979 /* Bt878, Bt832, FI1246 tuner; no pci subsystem id 2080 /* Bt878, Bt832, FI1246 tuner; no pci subsystem id
@@ -1991,6 +2092,7 @@ struct tvcard bttv_tvcards[] = {
1991 .tuner = -1, 2092 .tuner = -1,
1992 .tuner_type = -1, 2093 .tuner_type = -1,
1993 .tuner_addr = ADDR_UNSET, 2094 .tuner_addr = ADDR_UNSET,
2095 .radio_addr = ADDR_UNSET,
1994 .svhs = -1, 2096 .svhs = -1,
1995 .gpiomask = 0xdf, 2097 .gpiomask = 0xdf,
1996 .muxsel = { 2 }, 2098 .muxsel = { 2 },
@@ -2004,6 +2106,7 @@ struct tvcard bttv_tvcards[] = {
2004 .svhs = -1, 2106 .svhs = -1,
2005 .tuner_type = 4, 2107 .tuner_type = 4,
2006 .tuner_addr = ADDR_UNSET, 2108 .tuner_addr = ADDR_UNSET,
2109 .radio_addr = ADDR_UNSET,
2007 .gpiomask2 = 0xff, 2110 .gpiomask2 = 0xff,
2008 .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 }, 2111 .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 },
2009 .muxsel_hook = xguard_muxsel, 2112 .muxsel_hook = xguard_muxsel,
@@ -2026,6 +2129,7 @@ struct tvcard bttv_tvcards[] = {
2026 .pll = PLL_28, 2129 .pll = PLL_28,
2027 .tuner_type = -1, 2130 .tuner_type = -1,
2028 .tuner_addr = ADDR_UNSET, 2131 .tuner_addr = ADDR_UNSET,
2132 .radio_addr = ADDR_UNSET,
2029 .has_dvb = 1, 2133 .has_dvb = 1,
2030 .no_gpioirq = 1, 2134 .no_gpioirq = 1,
2031 }, 2135 },
@@ -2044,6 +2148,7 @@ struct tvcard bttv_tvcards[] = {
2044 .pll = PLL_28, 2148 .pll = PLL_28,
2045 .tuner_type = -1, 2149 .tuner_type = -1,
2046 .tuner_addr = ADDR_UNSET, 2150 .tuner_addr = ADDR_UNSET,
2151 .radio_addr = ADDR_UNSET,
2047 }, 2152 },
2048 [BTTV_BOARD_VD009X1_MINIDIN] = { 2153 [BTTV_BOARD_VD009X1_MINIDIN] = {
2049 /* M.Klahr@phytec.de */ 2154 /* M.Klahr@phytec.de */
@@ -2059,6 +2164,7 @@ struct tvcard bttv_tvcards[] = {
2059 .pll = PLL_28, 2164 .pll = PLL_28,
2060 .tuner_type = -1, 2165 .tuner_type = -1,
2061 .tuner_addr = ADDR_UNSET, 2166 .tuner_addr = ADDR_UNSET,
2167 .radio_addr = ADDR_UNSET,
2062 }, 2168 },
2063 [BTTV_BOARD_VD009X1_COMBI] = { 2169 [BTTV_BOARD_VD009X1_COMBI] = {
2064 .name = "PHYTEC VD-009-X1 Combi (bt878)", 2170 .name = "PHYTEC VD-009-X1 Combi (bt878)",
@@ -2073,6 +2179,7 @@ struct tvcard bttv_tvcards[] = {
2073 .pll = PLL_28, 2179 .pll = PLL_28,
2074 .tuner_type = -1, 2180 .tuner_type = -1,
2075 .tuner_addr = ADDR_UNSET, 2181 .tuner_addr = ADDR_UNSET,
2182 .radio_addr = ADDR_UNSET,
2076 }, 2183 },
2077 2184
2078 /* ---- card 0x6c ---------------------------------- */ 2185 /* ---- card 0x6c ---------------------------------- */
@@ -2092,6 +2199,7 @@ struct tvcard bttv_tvcards[] = {
2092 .pll = PLL_28, 2199 .pll = PLL_28,
2093 .tuner_type = -1, 2200 .tuner_type = -1,
2094 .tuner_addr = ADDR_UNSET, 2201 .tuner_addr = ADDR_UNSET,
2202 .radio_addr = ADDR_UNSET,
2095 }, 2203 },
2096 [BTTV_BOARD_VD009_COMBI] = { 2204 [BTTV_BOARD_VD009_COMBI] = {
2097 .name = "PHYTEC VD-009 Combi (bt878)", 2205 .name = "PHYTEC VD-009 Combi (bt878)",
@@ -2109,6 +2217,7 @@ struct tvcard bttv_tvcards[] = {
2109 .pll = PLL_28, 2217 .pll = PLL_28,
2110 .tuner_type = -1, 2218 .tuner_type = -1,
2111 .tuner_addr = ADDR_UNSET, 2219 .tuner_addr = ADDR_UNSET,
2220 .radio_addr = ADDR_UNSET,
2112 }, 2221 },
2113 [BTTV_BOARD_IVC100] = { 2222 [BTTV_BOARD_IVC100] = {
2114 .name = "IVC-100", 2223 .name = "IVC-100",
@@ -2117,6 +2226,7 @@ struct tvcard bttv_tvcards[] = {
2117 .tuner = -1, 2226 .tuner = -1,
2118 .tuner_type = -1, 2227 .tuner_type = -1,
2119 .tuner_addr = ADDR_UNSET, 2228 .tuner_addr = ADDR_UNSET,
2229 .radio_addr = ADDR_UNSET,
2120 .svhs = -1, 2230 .svhs = -1,
2121 .gpiomask = 0xdf, 2231 .gpiomask = 0xdf,
2122 .muxsel = { 2, 3, 1, 0 }, 2232 .muxsel = { 2, 3, 1, 0 },
@@ -2130,6 +2240,7 @@ struct tvcard bttv_tvcards[] = {
2130 .tuner = -1, /* card has no tuner */ 2240 .tuner = -1, /* card has no tuner */
2131 .tuner_type = -1, 2241 .tuner_type = -1,
2132 .tuner_addr = ADDR_UNSET, 2242 .tuner_addr = ADDR_UNSET,
2243 .radio_addr = ADDR_UNSET,
2133 .svhs = -1, /* card has no svhs */ 2244 .svhs = -1, /* card has no svhs */
2134 .needs_tvaudio = 0, 2245 .needs_tvaudio = 0,
2135 .no_msp34xx = 1, 2246 .no_msp34xx = 1,
@@ -2152,6 +2263,7 @@ struct tvcard bttv_tvcards[] = {
2152 .muxsel = { 2, 3, 1, 0}, 2263 .muxsel = { 2, 3, 1, 0},
2153 .tuner_type = TUNER_PHILIPS_ATSC, 2264 .tuner_type = TUNER_PHILIPS_ATSC,
2154 .tuner_addr = ADDR_UNSET, 2265 .tuner_addr = ADDR_UNSET,
2266 .radio_addr = ADDR_UNSET,
2155 .has_dvb = 1, 2267 .has_dvb = 1,
2156 }, 2268 },
2157 [BTTV_BOARD_TWINHAN_DST] = { 2269 [BTTV_BOARD_TWINHAN_DST] = {
@@ -2161,6 +2273,7 @@ struct tvcard bttv_tvcards[] = {
2161 .no_tda7432 = 1, 2273 .no_tda7432 = 1,
2162 .tuner_type = TUNER_ABSENT, 2274 .tuner_type = TUNER_ABSENT,
2163 .tuner_addr = ADDR_UNSET, 2275 .tuner_addr = ADDR_UNSET,
2276 .radio_addr = ADDR_UNSET,
2164 .no_video = 1, 2277 .no_video = 1,
2165 .has_dvb = 1, 2278 .has_dvb = 1,
2166 }, 2279 },
@@ -2176,6 +2289,7 @@ struct tvcard bttv_tvcards[] = {
2176 .no_tda7432 = 1, 2289 .no_tda7432 = 1,
2177 .tuner_type = TUNER_ABSENT, 2290 .tuner_type = TUNER_ABSENT,
2178 .tuner_addr = ADDR_UNSET, 2291 .tuner_addr = ADDR_UNSET,
2292 .radio_addr = ADDR_UNSET,
2179 .pll = PLL_28, 2293 .pll = PLL_28,
2180 }, 2294 },
2181 [BTTV_BOARD_TEV560] = { 2295 [BTTV_BOARD_TEV560] = {
@@ -2190,6 +2304,7 @@ struct tvcard bttv_tvcards[] = {
2190 .needs_tvaudio = 1, 2304 .needs_tvaudio = 1,
2191 .tuner_type = TUNER_PHILIPS_PAL, 2305 .tuner_type = TUNER_PHILIPS_PAL,
2192 .tuner_addr = ADDR_UNSET, 2306 .tuner_addr = ADDR_UNSET,
2307 .radio_addr = ADDR_UNSET,
2193 .pll = PLL_35, 2308 .pll = PLL_35,
2194 }, 2309 },
2195 2310
@@ -2202,6 +2317,7 @@ struct tvcard bttv_tvcards[] = {
2202 .svhs = -1, 2317 .svhs = -1,
2203 .tuner_type = -1, 2318 .tuner_type = -1,
2204 .tuner_addr = ADDR_UNSET, 2319 .tuner_addr = ADDR_UNSET,
2320 .radio_addr = ADDR_UNSET,
2205 .pll = PLL_28, 2321 .pll = PLL_28,
2206 .muxsel = { 2, 2, 2, 2}, 2322 .muxsel = { 2, 2, 2, 2},
2207 .gpiomask = 0x3F, 2323 .gpiomask = 0x3F,
@@ -2219,6 +2335,7 @@ struct tvcard bttv_tvcards[] = {
2219 .pll = PLL_28, 2335 .pll = PLL_28,
2220 .tuner_type = TUNER_PHILIPS_PAL, 2336 .tuner_type = TUNER_PHILIPS_PAL,
2221 .tuner_addr = ADDR_UNSET, 2337 .tuner_addr = ADDR_UNSET,
2338 .radio_addr = ADDR_UNSET,
2222 .has_remote = 1, 2339 .has_remote = 1,
2223 }, 2340 },
2224 [BTTV_BOARD_LMLBT4] = { 2341 [BTTV_BOARD_LMLBT4] = {
@@ -2235,6 +2352,7 @@ struct tvcard bttv_tvcards[] = {
2235 .needs_tvaudio = 0, 2352 .needs_tvaudio = 0,
2236 .tuner_type = -1, 2353 .tuner_type = -1,
2237 .tuner_addr = ADDR_UNSET, 2354 .tuner_addr = ADDR_UNSET,
2355 .radio_addr = ADDR_UNSET,
2238 }, 2356 },
2239 [BTTV_BOARD_TEKRAM_M205] = { 2357 [BTTV_BOARD_TEKRAM_M205] = {
2240 /* Helmroos Harri <harri.helmroos@pp.inet.fi> */ 2358 /* Helmroos Harri <harri.helmroos@pp.inet.fi> */
@@ -2244,6 +2362,7 @@ struct tvcard bttv_tvcards[] = {
2244 .tuner = 0, 2362 .tuner = 0,
2245 .tuner_type = TUNER_PHILIPS_PAL, 2363 .tuner_type = TUNER_PHILIPS_PAL,
2246 .tuner_addr = ADDR_UNSET, 2364 .tuner_addr = ADDR_UNSET,
2365 .radio_addr = ADDR_UNSET,
2247 .svhs = 2, 2366 .svhs = 2,
2248 .needs_tvaudio = 0, 2367 .needs_tvaudio = 0,
2249 .gpiomask = 0x68, 2368 .gpiomask = 0x68,
@@ -2268,6 +2387,7 @@ struct tvcard bttv_tvcards[] = {
2268 .pll = PLL_28, 2387 .pll = PLL_28,
2269 .tuner_type = TUNER_PHILIPS_PAL, 2388 .tuner_type = TUNER_PHILIPS_PAL,
2270 .tuner_addr = ADDR_UNSET, 2389 .tuner_addr = ADDR_UNSET,
2390 .radio_addr = ADDR_UNSET,
2271 .has_remote = 1, 2391 .has_remote = 1,
2272 .has_radio = 1, 2392 .has_radio = 1,
2273 }, 2393 },
@@ -2293,6 +2413,7 @@ struct tvcard bttv_tvcards[] = {
2293 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ 2413 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
2294 .tuner_type = -1, 2414 .tuner_type = -1,
2295 .tuner_addr = ADDR_UNSET, 2415 .tuner_addr = ADDR_UNSET,
2416 .radio_addr = ADDR_UNSET,
2296 }, 2417 },
2297 [BTTV_BOARD_SPIRIT_TV] = { 2418 [BTTV_BOARD_SPIRIT_TV] = {
2298 /* Spirit TV Tuner from http://spiritmodems.com.au */ 2419 /* Spirit TV Tuner from http://spiritmodems.com.au */
@@ -2307,6 +2428,7 @@ struct tvcard bttv_tvcards[] = {
2307 .audiomux = { 0x02, 0x00, 0x00, 0x00, 0x00}, 2428 .audiomux = { 0x02, 0x00, 0x00, 0x00, 0x00},
2308 .tuner_type = TUNER_TEMIC_PAL, 2429 .tuner_type = TUNER_TEMIC_PAL,
2309 .tuner_addr = ADDR_UNSET, 2430 .tuner_addr = ADDR_UNSET,
2431 .radio_addr = ADDR_UNSET,
2310 .no_msp34xx = 1, 2432 .no_msp34xx = 1,
2311 .no_tda9875 = 1, 2433 .no_tda9875 = 1,
2312 }, 2434 },
@@ -2318,6 +2440,7 @@ struct tvcard bttv_tvcards[] = {
2318 .tuner = -1, 2440 .tuner = -1,
2319 .tuner_type = TUNER_ABSENT, 2441 .tuner_type = TUNER_ABSENT,
2320 .tuner_addr = ADDR_UNSET, 2442 .tuner_addr = ADDR_UNSET,
2443 .radio_addr = ADDR_UNSET,
2321 .muxsel = { 3 , 3 }, 2444 .muxsel = { 3 , 3 },
2322 .no_msp34xx = 1, 2445 .no_msp34xx = 1,
2323 .no_tda9875 = 1, 2446 .no_tda9875 = 1,
@@ -2342,6 +2465,7 @@ struct tvcard bttv_tvcards[] = {
2342 .pll = PLL_28, 2465 .pll = PLL_28,
2343 .tuner_type = -1, 2466 .tuner_type = -1,
2344 .tuner_addr = ADDR_UNSET, 2467 .tuner_addr = ADDR_UNSET,
2468 .radio_addr = ADDR_UNSET,
2345 .has_dvb = 1, 2469 .has_dvb = 1,
2346 .no_gpioirq = 1, 2470 .no_gpioirq = 1,
2347 .has_remote = 1, 2471 .has_remote = 1,
@@ -2362,6 +2486,7 @@ struct tvcard bttv_tvcards[] = {
2362 .pll = PLL_28, 2486 .pll = PLL_28,
2363 .tuner_type = -1, 2487 .tuner_type = -1,
2364 .tuner_addr = ADDR_UNSET, 2488 .tuner_addr = ADDR_UNSET,
2489 .radio_addr = ADDR_UNSET,
2365 }, 2490 },
2366 [BTTV_BOARD_MATRIX_VISIONSLC] = { 2491 [BTTV_BOARD_MATRIX_VISIONSLC] = {
2367 /* andre.schwarz@matrix-vision.de */ 2492 /* andre.schwarz@matrix-vision.de */
@@ -2378,6 +2503,7 @@ struct tvcard bttv_tvcards[] = {
2378 .pll = PLL_28, 2503 .pll = PLL_28,
2379 .tuner_type = -1, 2504 .tuner_type = -1,
2380 .tuner_addr = ADDR_UNSET, 2505 .tuner_addr = ADDR_UNSET,
2506 .radio_addr = ADDR_UNSET,
2381 }, 2507 },
2382 /* BTTV_BOARD_APAC_VIEWCOMP */ 2508 /* BTTV_BOARD_APAC_VIEWCOMP */
2383 [BTTV_BOARD_APAC_VIEWCOMP] = { 2509 [BTTV_BOARD_APAC_VIEWCOMP] = {
@@ -2395,6 +2521,7 @@ struct tvcard bttv_tvcards[] = {
2395 .pll = PLL_28, 2521 .pll = PLL_28,
2396 .tuner_type = TUNER_PHILIPS_PAL, 2522 .tuner_type = TUNER_PHILIPS_PAL,
2397 .tuner_addr = ADDR_UNSET, 2523 .tuner_addr = ADDR_UNSET,
2524 .radio_addr = ADDR_UNSET,
2398 .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */ 2525 .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */
2399 .has_radio = 1, /* not every card has radio */ 2526 .has_radio = 1, /* not every card has radio */
2400 }, 2527 },
@@ -2412,6 +2539,7 @@ struct tvcard bttv_tvcards[] = {
2412 .has_dvb = 1, 2539 .has_dvb = 1,
2413 .tuner_type = -1, 2540 .tuner_type = -1,
2414 .tuner_addr = ADDR_UNSET, 2541 .tuner_addr = ADDR_UNSET,
2542 .radio_addr = ADDR_UNSET,
2415 }, 2543 },
2416 [BTTV_BOARD_VGEAR_MYVCD] = { 2544 [BTTV_BOARD_VGEAR_MYVCD] = {
2417 /* Steven <photon38@pchome.com.tw> */ 2545 /* Steven <photon38@pchome.com.tw> */
@@ -2427,6 +2555,7 @@ struct tvcard bttv_tvcards[] = {
2427 .pll = PLL_28, 2555 .pll = PLL_28,
2428 .tuner_type = TUNER_PHILIPS_NTSC_M, 2556 .tuner_type = TUNER_PHILIPS_NTSC_M,
2429 .tuner_addr = ADDR_UNSET, 2557 .tuner_addr = ADDR_UNSET,
2558 .radio_addr = ADDR_UNSET,
2430 .has_radio = 0, 2559 .has_radio = 0,
2431 #if 0 2560 #if 0
2432 .has_remote = 1, 2561 .has_remote = 1,
@@ -2442,6 +2571,7 @@ struct tvcard bttv_tvcards[] = {
2442 .muxsel = { 2, 3, 1, 0}, 2571 .muxsel = { 2, 3, 1, 0},
2443 .tuner_type = TUNER_PHILIPS_NTSC, 2572 .tuner_type = TUNER_PHILIPS_NTSC,
2444 .tuner_addr = ADDR_UNSET, 2573 .tuner_addr = ADDR_UNSET,
2574 .radio_addr = ADDR_UNSET,
2445 .gpiomask = 0x008007, 2575 .gpiomask = 0x008007,
2446 .audiomux = { 0, 0x000001,0,0, 0}, 2576 .audiomux = { 0, 0x000001,0,0, 0},
2447 .needs_tvaudio = 1, 2577 .needs_tvaudio = 1,
@@ -2461,6 +2591,7 @@ struct tvcard bttv_tvcards[] = {
2461 .no_tda7432 = 1, 2591 .no_tda7432 = 1,
2462 .tuner_type = -1, 2592 .tuner_type = -1,
2463 .tuner_addr = ADDR_UNSET, 2593 .tuner_addr = ADDR_UNSET,
2594 .radio_addr = ADDR_UNSET,
2464 .muxsel_hook = tibetCS16_muxsel, 2595 .muxsel_hook = tibetCS16_muxsel,
2465 }, 2596 },
2466 [BTTV_BOARD_KODICOM_4400R] = { 2597 [BTTV_BOARD_KODICOM_4400R] = {
@@ -2481,6 +2612,7 @@ struct tvcard bttv_tvcards[] = {
2481 .tuner = -1, 2612 .tuner = -1,
2482 .tuner_type = -1, 2613 .tuner_type = -1,
2483 .tuner_addr = ADDR_UNSET, 2614 .tuner_addr = ADDR_UNSET,
2615 .radio_addr = ADDR_UNSET,
2484 .svhs = -1, 2616 .svhs = -1,
2485 /* GPIO bits 0-9 used for analog switch: 2617 /* GPIO bits 0-9 used for analog switch:
2486 * 00 - 03: camera selector 2618 * 00 - 03: camera selector
@@ -2512,6 +2644,7 @@ struct tvcard bttv_tvcards[] = {
2512 .tuner = -1, 2644 .tuner = -1,
2513 .tuner_type = -1, 2645 .tuner_type = -1,
2514 .tuner_addr = ADDR_UNSET, 2646 .tuner_addr = ADDR_UNSET,
2647 .radio_addr = ADDR_UNSET,
2515 .svhs = -1, 2648 .svhs = -1,
2516 .gpiomask = 0x010000, 2649 .gpiomask = 0x010000,
2517 .no_gpioirq = 1, 2650 .no_gpioirq = 1,
@@ -2534,6 +2667,7 @@ struct tvcard bttv_tvcards[] = {
2534 .muxsel = { 2, 3, 1, 0}, 2667 .muxsel = { 2, 3, 1, 0},
2535 .tuner_type = -1, 2668 .tuner_type = -1,
2536 .tuner_addr = ADDR_UNSET, 2669 .tuner_addr = ADDR_UNSET,
2670 .radio_addr = ADDR_UNSET,
2537 .pll = PLL_28, 2671 .pll = PLL_28,
2538 }, 2672 },
2539 /* ---- card 0x87---------------------------------- */ 2673 /* ---- card 0x87---------------------------------- */
@@ -2543,6 +2677,7 @@ struct tvcard bttv_tvcards[] = {
2543 .tuner = 0, 2677 .tuner = 0,
2544 .tuner_type = TUNER_LG_TDVS_H062F, 2678 .tuner_type = TUNER_LG_TDVS_H062F,
2545 .tuner_addr = ADDR_UNSET, 2679 .tuner_addr = ADDR_UNSET,
2680 .radio_addr = ADDR_UNSET,
2546 .video_inputs = 2, 2681 .video_inputs = 2,
2547 .audio_inputs = 1, 2682 .audio_inputs = 1,
2548 .svhs = 2, 2683 .svhs = 2,
@@ -2569,6 +2704,7 @@ struct tvcard bttv_tvcards[] = {
2569 .pll = PLL_28, 2704 .pll = PLL_28,
2570 .tuner_type = TUNER_YMEC_TVF66T5_B_DFF, 2705 .tuner_type = TUNER_YMEC_TVF66T5_B_DFF,
2571 .tuner_addr = 0xc1 >>1, 2706 .tuner_addr = 0xc1 >>1,
2707 .radio_addr = 0xc1 >>1,
2572 .has_radio = 1, 2708 .has_radio = 1,
2573 }, 2709 },
2574 /* ---- card 0x89 ---------------------------------- */ 2710 /* ---- card 0x89 ---------------------------------- */
@@ -2585,26 +2721,50 @@ struct tvcard bttv_tvcards[] = {
2585 .pll = PLL_28, 2721 .pll = PLL_28,
2586 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 2722 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
2587 .tuner_addr = ADDR_UNSET, 2723 .tuner_addr = ADDR_UNSET,
2724 .radio_addr = ADDR_UNSET,
2588 .has_remote = 1, 2725 .has_remote = 1,
2589 #if 0 2726 #if 0
2590 .has_radio = 1, 2727 .has_radio = 1,
2591 #endif 2728 #endif
2592 }, 2729 },
2730 /* ---- card 0x8a ---------------------------------- */
2593 [BTTV_BOARD_PV_BT878P_2E] = { 2731 [BTTV_BOARD_PV_BT878P_2E] = {
2594 .name = "Prolink Pixelview PV-BT878P+ (Rev.2E)", 2732 .name = "Prolink Pixelview PV-BT878P+ (Rev.2E)",
2595 .video_inputs = 5, 2733 .video_inputs = 5,
2596 .audio_inputs = 1, 2734 .audio_inputs = 1,
2597 .tuner = 0, 2735 .tuner = 0,
2598 .svhs = 3, 2736 .svhs = 3,
2599 .gpiomask = 0x01fe00, 2737 .gpiomask = 0x01fe00,
2600 .muxsel = { 2,3,1,1,-1 }, 2738 .muxsel = { 2,3,1,1,-1 },
2601 .digital_mode = DIGITAL_MODE_CAMERA, 2739 .digital_mode = DIGITAL_MODE_CAMERA,
2602 .audiomux = { 0x00400, 0x10400, 0x04400, 0x80000, 0x12400, 0x46000 }, 2740 .audiomux = { 0x00400, 0x10400, 0x04400, 0x80000, 0x12400, 0x46000 },
2603 .no_msp34xx = 1, 2741 .no_msp34xx = 1,
2604 .pll = PLL_28, 2742 .pll = PLL_28,
2605 .tuner_type = TUNER_LG_PAL_FM, 2743 .tuner_type = TUNER_LG_PAL_FM,
2606 .has_remote = 1, 2744 .tuner_addr = ADDR_UNSET,
2607}}; 2745 .radio_addr = ADDR_UNSET,
2746 .has_remote = 1,
2747 },
2748 /* ---- card 0x8b ---------------------------------- */
2749 [BTTV_BOARD_PV_M4900] = {
2750 /* Sérgio Fortier <sergiofortier@yahoo.com.br> */
2751 .name = "Prolink PixelView PlayTV MPEG2 PV-M4900",
2752 .video_inputs = 3,
2753 .audio_inputs = 1,
2754 .tuner = 0,
2755 .svhs = 2,
2756 .gpiomask = 0x3f,
2757 .muxsel = { 2, 3, 1, 1 },
2758 .audiomux = { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
2759 .no_msp34xx = 1,
2760 .pll = PLL_28,
2761 .tuner_type = TUNER_YMEC_TVF_5533MF,
2762 .tuner_addr = ADDR_UNSET,
2763 .radio_addr = ADDR_UNSET,
2764 .has_radio = 1,
2765 .has_remote = 1,
2766 }
2767};
2608 2768
2609static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); 2769static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
2610 2770
@@ -2995,7 +3155,7 @@ void __devinit bttv_init_card1(struct bttv *btv)
2995void __devinit bttv_init_card2(struct bttv *btv) 3155void __devinit bttv_init_card2(struct bttv *btv)
2996{ 3156{
2997 int tda9887; 3157 int tda9887;
2998 int addr=ADDR_UNSET; 3158 int addr=ADDR_UNSET, radio_addr=ADDR_UNSET;
2999 3159
3000 btv->tuner_type = -1; 3160 btv->tuner_type = -1;
3001 3161
@@ -3140,6 +3300,9 @@ void __devinit bttv_init_card2(struct bttv *btv)
3140 if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr) 3300 if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr)
3141 addr = bttv_tvcards[btv->c.type].tuner_addr; 3301 addr = bttv_tvcards[btv->c.type].tuner_addr;
3142 3302
3303 if (ADDR_UNSET != bttv_tvcards[btv->c.type].radio_addr)
3304 radio_addr = bttv_tvcards[btv->c.type].radio_addr;
3305
3143 if (UNSET != bttv_tvcards[btv->c.type].tuner_type) 3306 if (UNSET != bttv_tvcards[btv->c.type].tuner_type)
3144 if(UNSET == btv->tuner_type) 3307 if(UNSET == btv->tuner_type)
3145 btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; 3308 btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type;
@@ -3152,10 +3315,13 @@ void __devinit bttv_init_card2(struct bttv *btv)
3152 if (btv->tuner_type != UNSET) { 3315 if (btv->tuner_type != UNSET) {
3153 struct tuner_setup tun_setup; 3316 struct tuner_setup tun_setup;
3154 3317
3155 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; 3318 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
3156 tun_setup.type = btv->tuner_type; 3319 tun_setup.type = btv->tuner_type;
3157 tun_setup.addr = addr; 3320 tun_setup.addr = addr;
3158 3321
3322 if (addr == radio_addr)
3323 tun_setup.mode_mask = T_RADIO;
3324
3159 bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup); 3325 bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup);
3160 } 3326 }
3161 3327
diff --git a/drivers/media/video/bttv.h b/drivers/media/video/bttv.h
index 2005ca9383df..a4194e1ea905 100644
--- a/drivers/media/video/bttv.h
+++ b/drivers/media/video/bttv.h
@@ -159,6 +159,7 @@
159#define BTTV_BOARD_ACORP_Y878F 0x88 159#define BTTV_BOARD_ACORP_Y878F 0x88
160#define BTTV_BOARD_CONCEPTRONIC_CTVFMI2 0x89 160#define BTTV_BOARD_CONCEPTRONIC_CTVFMI2 0x89
161#define BTTV_BOARD_PV_BT878P_2E 0x8a 161#define BTTV_BOARD_PV_BT878P_2E 0x8a
162#define BTTV_BOARD_PV_M4900 0x8b
162 163
163/* i2c address list */ 164/* i2c address list */
164#define I2C_TSA5522 0xc2 165#define I2C_TSA5522 0xc2
@@ -240,6 +241,7 @@ struct tvcard
240 241
241 unsigned int tuner_type; 242 unsigned int tuner_type;
242 unsigned int tuner_addr; 243 unsigned int tuner_addr;
244 unsigned int radio_addr;
243 245
244 unsigned int has_radio; 246 unsigned int has_radio;
245 void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set); 247 void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set);