diff options
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-cards.c')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-cards.c | 507 |
1 files changed, 479 insertions, 28 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 6f5744286e8c..98375955a84b 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -22,11 +22,15 @@ | |||
22 | 22 | ||
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/i2c.h> | ||
26 | #include <linux/i2c-algo-bit.h> | ||
25 | 27 | ||
26 | #include "saa7134-reg.h" | 28 | #include "saa7134-reg.h" |
27 | #include "saa7134.h" | 29 | #include "saa7134.h" |
30 | #include "tuner-xc2028.h" | ||
28 | #include <media/v4l2-common.h> | 31 | #include <media/v4l2-common.h> |
29 | #include <media/tveeprom.h> | 32 | #include <media/tveeprom.h> |
33 | #include "tea5767.h" | ||
30 | 34 | ||
31 | /* commly used strings */ | 35 | /* commly used strings */ |
32 | static char name_mute[] = "mute"; | 36 | static char name_mute[] = "mute"; |
@@ -1046,7 +1050,7 @@ struct saa7134_board saa7134_boards[] = { | |||
1046 | }, | 1050 | }, |
1047 | [SAA7134_BOARD_MANLI_MTV002] = { | 1051 | [SAA7134_BOARD_MANLI_MTV002] = { |
1048 | /* Ognjen Nastic <ognjen@logosoft.ba> */ | 1052 | /* Ognjen Nastic <ognjen@logosoft.ba> */ |
1049 | .name = "Manli MuchTV M-TV002/Behold TV 403 FM", | 1053 | .name = "Manli MuchTV M-TV002", |
1050 | .audio_clock = 0x00200000, | 1054 | .audio_clock = 0x00200000, |
1051 | .tuner_type = TUNER_PHILIPS_PAL, | 1055 | .tuner_type = TUNER_PHILIPS_PAL, |
1052 | .radio_type = UNSET, | 1056 | .radio_type = UNSET, |
@@ -1073,7 +1077,7 @@ struct saa7134_board saa7134_boards[] = { | |||
1073 | }, | 1077 | }, |
1074 | [SAA7134_BOARD_MANLI_MTV001] = { | 1078 | [SAA7134_BOARD_MANLI_MTV001] = { |
1075 | /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */ | 1079 | /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */ |
1076 | .name = "Manli MuchTV M-TV001/Behold TV 401", | 1080 | .name = "Manli MuchTV M-TV001", |
1077 | .audio_clock = 0x00200000, | 1081 | .audio_clock = 0x00200000, |
1078 | .tuner_type = TUNER_PHILIPS_PAL, | 1082 | .tuner_type = TUNER_PHILIPS_PAL, |
1079 | .radio_type = UNSET, | 1083 | .radio_type = UNSET, |
@@ -2195,6 +2199,8 @@ struct saa7134_board saa7134_boards[] = { | |||
2195 | }, | 2199 | }, |
2196 | [SAA7134_BOARD_BEHOLD_409FM] = { | 2200 | [SAA7134_BOARD_BEHOLD_409FM] = { |
2197 | /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */ | 2201 | /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */ |
2202 | /* Beholder Intl. Ltd. 2008 */ | ||
2203 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
2198 | .name = "Beholder BeholdTV 409 FM", | 2204 | .name = "Beholder BeholdTV 409 FM", |
2199 | .audio_clock = 0x00187de7, | 2205 | .audio_clock = 0x00187de7, |
2200 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 2206 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -2202,6 +2208,7 @@ struct saa7134_board saa7134_boards[] = { | |||
2202 | .tuner_addr = ADDR_UNSET, | 2208 | .tuner_addr = ADDR_UNSET, |
2203 | .radio_addr = ADDR_UNSET, | 2209 | .radio_addr = ADDR_UNSET, |
2204 | .tda9887_conf = TDA9887_PRESENT, | 2210 | .tda9887_conf = TDA9887_PRESENT, |
2211 | .gpiomask = 0x00008000, | ||
2205 | .inputs = {{ | 2212 | .inputs = {{ |
2206 | .name = name_tv, | 2213 | .name = name_tv, |
2207 | .vmux = 3, | 2214 | .vmux = 3, |
@@ -2908,15 +2915,13 @@ struct saa7134_board saa7134_boards[] = { | |||
2908 | }}, | 2915 | }}, |
2909 | }, | 2916 | }, |
2910 | [SAA7134_BOARD_MD7134_BRIDGE_2] = { | 2917 | [SAA7134_BOARD_MD7134_BRIDGE_2] = { |
2911 | /* This card has two saa7134 chips on it, | 2918 | /* The second saa7134 on this card only serves as DVB-S host bridge */ |
2912 | but only one of them is currently working. | ||
2913 | The programming for the primary decoder is | ||
2914 | in SAA7134_BOARD_MD7134 */ | ||
2915 | .name = "Medion 7134 Bridge #2", | 2919 | .name = "Medion 7134 Bridge #2", |
2916 | .audio_clock = 0x00187de7, | 2920 | .audio_clock = 0x00187de7, |
2917 | .radio_type = UNSET, | 2921 | .radio_type = UNSET, |
2918 | .tuner_addr = ADDR_UNSET, | 2922 | .tuner_addr = ADDR_UNSET, |
2919 | .radio_addr = ADDR_UNSET, | 2923 | .radio_addr = ADDR_UNSET, |
2924 | .mpeg = SAA7134_MPEG_DVB, | ||
2920 | }, | 2925 | }, |
2921 | [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = { | 2926 | [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = { |
2922 | .name = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB", | 2927 | .name = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB", |
@@ -3330,7 +3335,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3330 | /* Juan Pablo Sormani <sorman@gmail.com> */ | 3335 | /* Juan Pablo Sormani <sorman@gmail.com> */ |
3331 | .name = "Encore ENLTV-FM", | 3336 | .name = "Encore ENLTV-FM", |
3332 | .audio_clock = 0x00200000, | 3337 | .audio_clock = 0x00200000, |
3333 | .tuner_type = TUNER_PHILIPS_ATSC, | 3338 | .tuner_type = TUNER_PHILIPS_FCV1236D, |
3334 | .radio_type = UNSET, | 3339 | .radio_type = UNSET, |
3335 | .tuner_addr = ADDR_UNSET, | 3340 | .tuner_addr = ADDR_UNSET, |
3336 | .radio_addr = ADDR_UNSET, | 3341 | .radio_addr = ADDR_UNSET, |
@@ -3575,12 +3580,15 @@ struct saa7134_board saa7134_boards[] = { | |||
3575 | }}, | 3580 | }}, |
3576 | }, | 3581 | }, |
3577 | [SAA7134_BOARD_BEHOLD_401] = { | 3582 | [SAA7134_BOARD_BEHOLD_401] = { |
3583 | /* Beholder Intl. Ltd. 2008 */ | ||
3584 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3578 | .name = "Beholder BeholdTV 401", | 3585 | .name = "Beholder BeholdTV 401", |
3579 | .audio_clock = 0x00187de7, | 3586 | .audio_clock = 0x00187de7, |
3580 | .tuner_type = TUNER_PHILIPS_FQ1216ME, | 3587 | .tuner_type = TUNER_PHILIPS_FQ1216ME, |
3581 | .radio_type = UNSET, | 3588 | .radio_type = UNSET, |
3582 | .tuner_addr = ADDR_UNSET, | 3589 | .tuner_addr = ADDR_UNSET, |
3583 | .radio_addr = ADDR_UNSET, | 3590 | .radio_addr = ADDR_UNSET, |
3591 | .gpiomask = 0x00008000, | ||
3584 | .inputs = {{ | 3592 | .inputs = {{ |
3585 | .name = name_svideo, | 3593 | .name = name_svideo, |
3586 | .vmux = 8, | 3594 | .vmux = 8, |
@@ -3601,12 +3609,15 @@ struct saa7134_board saa7134_boards[] = { | |||
3601 | }, | 3609 | }, |
3602 | }, | 3610 | }, |
3603 | [SAA7134_BOARD_BEHOLD_403] = { | 3611 | [SAA7134_BOARD_BEHOLD_403] = { |
3612 | /* Beholder Intl. Ltd. 2008 */ | ||
3613 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3604 | .name = "Beholder BeholdTV 403", | 3614 | .name = "Beholder BeholdTV 403", |
3605 | .audio_clock = 0x00187de7, | 3615 | .audio_clock = 0x00187de7, |
3606 | .tuner_type = TUNER_PHILIPS_FQ1216ME, | 3616 | .tuner_type = TUNER_PHILIPS_FQ1216ME, |
3607 | .radio_type = UNSET, | 3617 | .radio_type = UNSET, |
3608 | .tuner_addr = ADDR_UNSET, | 3618 | .tuner_addr = ADDR_UNSET, |
3609 | .radio_addr = ADDR_UNSET, | 3619 | .radio_addr = ADDR_UNSET, |
3620 | .gpiomask = 0x00008000, | ||
3610 | .inputs = {{ | 3621 | .inputs = {{ |
3611 | .name = name_svideo, | 3622 | .name = name_svideo, |
3612 | .vmux = 8, | 3623 | .vmux = 8, |
@@ -3623,12 +3634,15 @@ struct saa7134_board saa7134_boards[] = { | |||
3623 | }}, | 3634 | }}, |
3624 | }, | 3635 | }, |
3625 | [SAA7134_BOARD_BEHOLD_403FM] = { | 3636 | [SAA7134_BOARD_BEHOLD_403FM] = { |
3637 | /* Beholder Intl. Ltd. 2008 */ | ||
3638 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3626 | .name = "Beholder BeholdTV 403 FM", | 3639 | .name = "Beholder BeholdTV 403 FM", |
3627 | .audio_clock = 0x00187de7, | 3640 | .audio_clock = 0x00187de7, |
3628 | .tuner_type = TUNER_PHILIPS_FQ1216ME, | 3641 | .tuner_type = TUNER_PHILIPS_FQ1216ME, |
3629 | .radio_type = UNSET, | 3642 | .radio_type = UNSET, |
3630 | .tuner_addr = ADDR_UNSET, | 3643 | .tuner_addr = ADDR_UNSET, |
3631 | .radio_addr = ADDR_UNSET, | 3644 | .radio_addr = ADDR_UNSET, |
3645 | .gpiomask = 0x00008000, | ||
3632 | .inputs = {{ | 3646 | .inputs = {{ |
3633 | .name = name_svideo, | 3647 | .name = name_svideo, |
3634 | .vmux = 8, | 3648 | .vmux = 8, |
@@ -3649,6 +3663,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3649 | }, | 3663 | }, |
3650 | }, | 3664 | }, |
3651 | [SAA7134_BOARD_BEHOLD_405] = { | 3665 | [SAA7134_BOARD_BEHOLD_405] = { |
3666 | /* Beholder Intl. Ltd. 2008 */ | ||
3667 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3652 | .name = "Beholder BeholdTV 405", | 3668 | .name = "Beholder BeholdTV 405", |
3653 | .audio_clock = 0x00187de7, | 3669 | .audio_clock = 0x00187de7, |
3654 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3670 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3656,6 +3672,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3656 | .tuner_addr = ADDR_UNSET, | 3672 | .tuner_addr = ADDR_UNSET, |
3657 | .radio_addr = ADDR_UNSET, | 3673 | .radio_addr = ADDR_UNSET, |
3658 | .tda9887_conf = TDA9887_PRESENT, | 3674 | .tda9887_conf = TDA9887_PRESENT, |
3675 | .gpiomask = 0x00008000, | ||
3659 | .inputs = {{ | 3676 | .inputs = {{ |
3660 | .name = name_svideo, | 3677 | .name = name_svideo, |
3661 | .vmux = 8, | 3678 | .vmux = 8, |
@@ -3673,6 +3690,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3673 | }, | 3690 | }, |
3674 | [SAA7134_BOARD_BEHOLD_405FM] = { | 3691 | [SAA7134_BOARD_BEHOLD_405FM] = { |
3675 | /* Sergey <skiv@orel.ru> */ | 3692 | /* Sergey <skiv@orel.ru> */ |
3693 | /* Beholder Intl. Ltd. 2008 */ | ||
3694 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3676 | .name = "Beholder BeholdTV 405 FM", | 3695 | .name = "Beholder BeholdTV 405 FM", |
3677 | .audio_clock = 0x00187de7, | 3696 | .audio_clock = 0x00187de7, |
3678 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3697 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3680,6 +3699,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3680 | .tuner_addr = ADDR_UNSET, | 3699 | .tuner_addr = ADDR_UNSET, |
3681 | .radio_addr = ADDR_UNSET, | 3700 | .radio_addr = ADDR_UNSET, |
3682 | .tda9887_conf = TDA9887_PRESENT, | 3701 | .tda9887_conf = TDA9887_PRESENT, |
3702 | .gpiomask = 0x00008000, | ||
3683 | .inputs = {{ | 3703 | .inputs = {{ |
3684 | .name = name_svideo, | 3704 | .name = name_svideo, |
3685 | .vmux = 8, | 3705 | .vmux = 8, |
@@ -3700,6 +3720,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3700 | }, | 3720 | }, |
3701 | }, | 3721 | }, |
3702 | [SAA7134_BOARD_BEHOLD_407] = { | 3722 | [SAA7134_BOARD_BEHOLD_407] = { |
3723 | /* Beholder Intl. Ltd. 2008 */ | ||
3724 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3703 | .name = "Beholder BeholdTV 407", | 3725 | .name = "Beholder BeholdTV 407", |
3704 | .audio_clock = 0x00187de7, | 3726 | .audio_clock = 0x00187de7, |
3705 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3727 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3707,7 +3729,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3707 | .tuner_addr = ADDR_UNSET, | 3729 | .tuner_addr = ADDR_UNSET, |
3708 | .radio_addr = ADDR_UNSET, | 3730 | .radio_addr = ADDR_UNSET, |
3709 | .tda9887_conf = TDA9887_PRESENT, | 3731 | .tda9887_conf = TDA9887_PRESENT, |
3710 | .gpiomask = 0xc0c000, | 3732 | .gpiomask = 0x00008000, |
3711 | .inputs = {{ | 3733 | .inputs = {{ |
3712 | .name = name_svideo, | 3734 | .name = name_svideo, |
3713 | .vmux = 8, | 3735 | .vmux = 8, |
@@ -3727,6 +3749,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3727 | }}, | 3749 | }}, |
3728 | }, | 3750 | }, |
3729 | [SAA7134_BOARD_BEHOLD_407FM] = { | 3751 | [SAA7134_BOARD_BEHOLD_407FM] = { |
3752 | /* Beholder Intl. Ltd. 2008 */ | ||
3753 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3730 | .name = "Beholder BeholdTV 407 FM", | 3754 | .name = "Beholder BeholdTV 407 FM", |
3731 | .audio_clock = 0x00187de7, | 3755 | .audio_clock = 0x00187de7, |
3732 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3756 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3734,7 +3758,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3734 | .tuner_addr = ADDR_UNSET, | 3758 | .tuner_addr = ADDR_UNSET, |
3735 | .radio_addr = ADDR_UNSET, | 3759 | .radio_addr = ADDR_UNSET, |
3736 | .tda9887_conf = TDA9887_PRESENT, | 3760 | .tda9887_conf = TDA9887_PRESENT, |
3737 | .gpiomask = 0xc0c000, | 3761 | .gpiomask = 0x00008000, |
3738 | .inputs = {{ | 3762 | .inputs = {{ |
3739 | .name = name_svideo, | 3763 | .name = name_svideo, |
3740 | .vmux = 8, | 3764 | .vmux = 8, |
@@ -3759,6 +3783,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3759 | }, | 3783 | }, |
3760 | }, | 3784 | }, |
3761 | [SAA7134_BOARD_BEHOLD_409] = { | 3785 | [SAA7134_BOARD_BEHOLD_409] = { |
3786 | /* Beholder Intl. Ltd. 2008 */ | ||
3787 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3762 | .name = "Beholder BeholdTV 409", | 3788 | .name = "Beholder BeholdTV 409", |
3763 | .audio_clock = 0x00187de7, | 3789 | .audio_clock = 0x00187de7, |
3764 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3790 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3766,6 +3792,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3766 | .tuner_addr = ADDR_UNSET, | 3792 | .tuner_addr = ADDR_UNSET, |
3767 | .radio_addr = ADDR_UNSET, | 3793 | .radio_addr = ADDR_UNSET, |
3768 | .tda9887_conf = TDA9887_PRESENT, | 3794 | .tda9887_conf = TDA9887_PRESENT, |
3795 | .gpiomask = 0x00008000, | ||
3769 | .inputs = {{ | 3796 | .inputs = {{ |
3770 | .name = name_tv, | 3797 | .name = name_tv, |
3771 | .vmux = 3, | 3798 | .vmux = 3, |
@@ -3782,6 +3809,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3782 | }}, | 3809 | }}, |
3783 | }, | 3810 | }, |
3784 | [SAA7134_BOARD_BEHOLD_505FM] = { | 3811 | [SAA7134_BOARD_BEHOLD_505FM] = { |
3812 | /* Beholder Intl. Ltd. 2008 */ | ||
3813 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3785 | .name = "Beholder BeholdTV 505 FM/RDS", | 3814 | .name = "Beholder BeholdTV 505 FM/RDS", |
3786 | .audio_clock = 0x00200000, | 3815 | .audio_clock = 0x00200000, |
3787 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3816 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3789,6 +3818,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3789 | .tuner_addr = ADDR_UNSET, | 3818 | .tuner_addr = ADDR_UNSET, |
3790 | .radio_addr = ADDR_UNSET, | 3819 | .radio_addr = ADDR_UNSET, |
3791 | .tda9887_conf = TDA9887_PRESENT, | 3820 | .tda9887_conf = TDA9887_PRESENT, |
3821 | .gpiomask = 0x00008000, | ||
3792 | .inputs = {{ | 3822 | .inputs = {{ |
3793 | .name = name_tv, | 3823 | .name = name_tv, |
3794 | .vmux = 3, | 3824 | .vmux = 3, |
@@ -3813,6 +3843,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3813 | }, | 3843 | }, |
3814 | }, | 3844 | }, |
3815 | [SAA7134_BOARD_BEHOLD_507_9FM] = { | 3845 | [SAA7134_BOARD_BEHOLD_507_9FM] = { |
3846 | /* Beholder Intl. Ltd. 2008 */ | ||
3847 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3816 | .name = "Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM", | 3848 | .name = "Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM", |
3817 | .audio_clock = 0x00187de7, | 3849 | .audio_clock = 0x00187de7, |
3818 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | 3850 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, |
@@ -3820,6 +3852,7 @@ struct saa7134_board saa7134_boards[] = { | |||
3820 | .tuner_addr = ADDR_UNSET, | 3852 | .tuner_addr = ADDR_UNSET, |
3821 | .radio_addr = ADDR_UNSET, | 3853 | .radio_addr = ADDR_UNSET, |
3822 | .tda9887_conf = TDA9887_PRESENT, | 3854 | .tda9887_conf = TDA9887_PRESENT, |
3855 | .gpiomask = 0x00008000, | ||
3823 | .inputs = {{ | 3856 | .inputs = {{ |
3824 | .name = name_tv, | 3857 | .name = name_tv, |
3825 | .vmux = 3, | 3858 | .vmux = 3, |
@@ -3840,6 +3873,8 @@ struct saa7134_board saa7134_boards[] = { | |||
3840 | }, | 3873 | }, |
3841 | }, | 3874 | }, |
3842 | [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = { | 3875 | [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = { |
3876 | /* Beholder Intl. Ltd. 2008 */ | ||
3877 | /*Dmitry Belimov <d.belimov@gmail.com> */ | ||
3843 | .name = "Beholder BeholdTV Columbus TVFM", | 3878 | .name = "Beholder BeholdTV Columbus TVFM", |
3844 | .audio_clock = 0x00187de7, | 3879 | .audio_clock = 0x00187de7, |
3845 | .tuner_type = TUNER_ALPS_TSBE5_PAL, | 3880 | .tuner_type = TUNER_ALPS_TSBE5_PAL, |
@@ -3847,23 +3882,28 @@ struct saa7134_board saa7134_boards[] = { | |||
3847 | .tuner_addr = ADDR_UNSET, | 3882 | .tuner_addr = ADDR_UNSET, |
3848 | .radio_addr = ADDR_UNSET, | 3883 | .radio_addr = ADDR_UNSET, |
3849 | .tda9887_conf = TDA9887_PRESENT, | 3884 | .tda9887_conf = TDA9887_PRESENT, |
3885 | .gpiomask = 0x000A8004, | ||
3850 | .inputs = {{ | 3886 | .inputs = {{ |
3851 | .name = name_tv, | 3887 | .name = name_tv, |
3852 | .vmux = 3, | 3888 | .vmux = 3, |
3853 | .amux = TV, | 3889 | .amux = TV, |
3854 | .tv = 1, | 3890 | .tv = 1, |
3855 | },{ | 3891 | .gpio = 0x000A8004, |
3892 | }, { | ||
3856 | .name = name_comp1, | 3893 | .name = name_comp1, |
3857 | .vmux = 1, | 3894 | .vmux = 1, |
3858 | .amux = LINE1, | 3895 | .amux = LINE1, |
3859 | },{ | 3896 | .gpio = 0x000A8000, |
3897 | }, { | ||
3860 | .name = name_svideo, | 3898 | .name = name_svideo, |
3861 | .vmux = 8, | 3899 | .vmux = 8, |
3862 | .amux = LINE1, | 3900 | .amux = LINE1, |
3863 | }}, | 3901 | .gpio = 0x000A8000, |
3902 | } }, | ||
3864 | .radio = { | 3903 | .radio = { |
3865 | .name = name_radio, | 3904 | .name = name_radio, |
3866 | .amux = LINE2, | 3905 | .amux = LINE2, |
3906 | .gpio = 0x000A8000, | ||
3867 | }, | 3907 | }, |
3868 | }, | 3908 | }, |
3869 | [SAA7134_BOARD_BEHOLD_607_9FM] = { | 3909 | [SAA7134_BOARD_BEHOLD_607_9FM] = { |
@@ -3992,6 +4032,221 @@ struct saa7134_board saa7134_boards[] = { | |||
3992 | .gpio = 0x6000, | 4032 | .gpio = 0x6000, |
3993 | }, | 4033 | }, |
3994 | }, | 4034 | }, |
4035 | [SAA7134_BOARD_PHILIPS_SNAKE] = { | ||
4036 | .name = "NXP Snake DVB-S reference design", | ||
4037 | .audio_clock = 0x00200000, | ||
4038 | .tuner_type = TUNER_ABSENT, | ||
4039 | .radio_type = UNSET, | ||
4040 | .tuner_addr = ADDR_UNSET, | ||
4041 | .radio_addr = ADDR_UNSET, | ||
4042 | .mpeg = SAA7134_MPEG_DVB, | ||
4043 | .inputs = {{ | ||
4044 | .name = name_comp1, | ||
4045 | .vmux = 3, | ||
4046 | .amux = LINE1, | ||
4047 | }, { | ||
4048 | .name = name_svideo, | ||
4049 | .vmux = 8, | ||
4050 | .amux = LINE1, | ||
4051 | } }, | ||
4052 | }, | ||
4053 | [SAA7134_BOARD_CREATIX_CTX953] = { | ||
4054 | .name = "Medion/Creatix CTX953 Hybrid", | ||
4055 | .audio_clock = 0x00187de7, | ||
4056 | .tuner_type = TUNER_PHILIPS_TDA8290, | ||
4057 | .radio_type = UNSET, | ||
4058 | .tuner_addr = ADDR_UNSET, | ||
4059 | .radio_addr = ADDR_UNSET, | ||
4060 | .tuner_config = 0, | ||
4061 | .mpeg = SAA7134_MPEG_DVB, | ||
4062 | .inputs = {{ | ||
4063 | .name = name_tv, | ||
4064 | .vmux = 1, | ||
4065 | .amux = TV, | ||
4066 | .tv = 1, | ||
4067 | }, { | ||
4068 | .name = name_comp1, | ||
4069 | .vmux = 0, | ||
4070 | .amux = LINE1, | ||
4071 | }, { | ||
4072 | .name = name_svideo, | ||
4073 | .vmux = 8, | ||
4074 | .amux = LINE1, | ||
4075 | } }, | ||
4076 | }, | ||
4077 | [SAA7134_BOARD_MSI_TVANYWHERE_AD11] = { | ||
4078 | .name = "MSI TV@nywhere A/D v1.1", | ||
4079 | .audio_clock = 0x00187de7, | ||
4080 | .tuner_type = TUNER_PHILIPS_TDA8290, | ||
4081 | .radio_type = UNSET, | ||
4082 | .tuner_addr = ADDR_UNSET, | ||
4083 | .radio_addr = ADDR_UNSET, | ||
4084 | .tuner_config = 2, | ||
4085 | .mpeg = SAA7134_MPEG_DVB, | ||
4086 | .gpiomask = 0x0200000, | ||
4087 | .inputs = { { | ||
4088 | .name = name_tv, | ||
4089 | .vmux = 1, | ||
4090 | .amux = TV, | ||
4091 | .tv = 1, | ||
4092 | }, { | ||
4093 | .name = name_comp1, | ||
4094 | .vmux = 3, | ||
4095 | .amux = LINE1, | ||
4096 | }, { | ||
4097 | .name = name_svideo, | ||
4098 | .vmux = 8, | ||
4099 | .amux = LINE1, | ||
4100 | } }, | ||
4101 | .radio = { | ||
4102 | .name = name_radio, | ||
4103 | .amux = TV, | ||
4104 | .gpio = 0x0200000, | ||
4105 | }, | ||
4106 | }, | ||
4107 | [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = { | ||
4108 | .name = "AVerMedia Cardbus TV/Radio (E506R)", | ||
4109 | .audio_clock = 0x187de7, | ||
4110 | .tuner_type = TUNER_XC2028, | ||
4111 | .radio_type = UNSET, | ||
4112 | .tuner_addr = ADDR_UNSET, | ||
4113 | .radio_addr = ADDR_UNSET, | ||
4114 | /* | ||
4115 | TODO: | ||
4116 | .mpeg = SAA7134_MPEG_DVB, | ||
4117 | */ | ||
4118 | |||
4119 | .inputs = {{ | ||
4120 | .name = name_tv, | ||
4121 | .vmux = 1, | ||
4122 | .amux = TV, | ||
4123 | .tv = 1, | ||
4124 | }, { | ||
4125 | .name = name_comp1, | ||
4126 | .vmux = 3, | ||
4127 | .amux = LINE2, | ||
4128 | }, { | ||
4129 | .name = name_svideo, | ||
4130 | .vmux = 8, | ||
4131 | .amux = LINE1, | ||
4132 | } }, | ||
4133 | .radio = { | ||
4134 | .name = name_radio, | ||
4135 | .amux = TV, | ||
4136 | }, | ||
4137 | }, | ||
4138 | [SAA7134_BOARD_AVERMEDIA_A16D] = { | ||
4139 | .name = "AVerMedia Hybrid TV/Radio (A16D)", | ||
4140 | .audio_clock = 0x187de7, | ||
4141 | .tuner_type = TUNER_XC2028, | ||
4142 | .radio_type = UNSET, | ||
4143 | .tuner_addr = ADDR_UNSET, | ||
4144 | .radio_addr = ADDR_UNSET, | ||
4145 | .inputs = {{ | ||
4146 | .name = name_tv, | ||
4147 | .vmux = 1, | ||
4148 | .amux = TV, | ||
4149 | .tv = 1, | ||
4150 | }, { | ||
4151 | .name = name_svideo, | ||
4152 | .vmux = 8, | ||
4153 | .amux = LINE1, | ||
4154 | } }, | ||
4155 | .radio = { | ||
4156 | .name = name_radio, | ||
4157 | .amux = LINE1, | ||
4158 | }, | ||
4159 | }, | ||
4160 | [SAA7134_BOARD_AVERMEDIA_M115] = { | ||
4161 | .name = "Avermedia M115", | ||
4162 | .audio_clock = 0x187de7, | ||
4163 | .tuner_type = TUNER_XC2028, | ||
4164 | .radio_type = UNSET, | ||
4165 | .tuner_addr = ADDR_UNSET, | ||
4166 | .radio_addr = ADDR_UNSET, | ||
4167 | .inputs = {{ | ||
4168 | .name = name_tv, | ||
4169 | .vmux = 1, | ||
4170 | .amux = TV, | ||
4171 | .tv = 1, | ||
4172 | }, { | ||
4173 | .name = name_comp1, | ||
4174 | .vmux = 3, | ||
4175 | .amux = LINE1, | ||
4176 | }, { | ||
4177 | .name = name_svideo, | ||
4178 | .vmux = 8, | ||
4179 | .amux = LINE2, | ||
4180 | } }, | ||
4181 | }, | ||
4182 | [SAA7134_BOARD_VIDEOMATE_T750] = { | ||
4183 | /* John Newbigin <jn@it.swin.edu.au> */ | ||
4184 | .name = "Compro VideoMate T750", | ||
4185 | .audio_clock = 0x00187de7, | ||
4186 | .tuner_type = TUNER_XC2028, | ||
4187 | .radio_type = UNSET, | ||
4188 | .tuner_addr = ADDR_UNSET, | ||
4189 | .radio_addr = ADDR_UNSET, | ||
4190 | .mpeg = SAA7134_MPEG_DVB, | ||
4191 | .inputs = {{ | ||
4192 | .name = name_tv, | ||
4193 | .vmux = 3, | ||
4194 | .amux = TV, | ||
4195 | .tv = 1, | ||
4196 | }, { | ||
4197 | .name = name_comp1, | ||
4198 | .vmux = 1, | ||
4199 | .amux = LINE2, | ||
4200 | }, { | ||
4201 | .name = name_svideo, | ||
4202 | .vmux = 8, | ||
4203 | .amux = LINE2, | ||
4204 | } }, | ||
4205 | .radio = { | ||
4206 | .name = name_radio, | ||
4207 | .amux = TV, | ||
4208 | } | ||
4209 | }, | ||
4210 | [SAA7134_BOARD_AVERMEDIA_A700_PRO] = { | ||
4211 | /* Matthias Schwarzott <zzam@gentoo.org> */ | ||
4212 | .name = "Avermedia DVB-S Pro A700", | ||
4213 | .audio_clock = 0x00187de7, | ||
4214 | .tuner_type = TUNER_ABSENT, | ||
4215 | .radio_type = UNSET, | ||
4216 | .tuner_addr = ADDR_UNSET, | ||
4217 | .radio_addr = ADDR_UNSET, | ||
4218 | /* no DVB support for now */ | ||
4219 | /* .mpeg = SAA7134_MPEG_DVB, */ | ||
4220 | .inputs = { { | ||
4221 | .name = name_comp, | ||
4222 | .vmux = 1, | ||
4223 | .amux = LINE1, | ||
4224 | }, { | ||
4225 | .name = name_svideo, | ||
4226 | .vmux = 6, | ||
4227 | .amux = LINE1, | ||
4228 | } }, | ||
4229 | }, | ||
4230 | [SAA7134_BOARD_AVERMEDIA_A700_HYBRID] = { | ||
4231 | /* Matthias Schwarzott <zzam@gentoo.org> */ | ||
4232 | .name = "Avermedia DVB-S Hybrid+FM A700", | ||
4233 | .audio_clock = 0x00187de7, | ||
4234 | .tuner_type = TUNER_ABSENT, /* TUNER_XC2028 */ | ||
4235 | .radio_type = UNSET, | ||
4236 | .tuner_addr = ADDR_UNSET, | ||
4237 | .radio_addr = ADDR_UNSET, | ||
4238 | /* no DVB support for now */ | ||
4239 | /* .mpeg = SAA7134_MPEG_DVB, */ | ||
4240 | .inputs = { { | ||
4241 | .name = name_comp, | ||
4242 | .vmux = 1, | ||
4243 | .amux = LINE1, | ||
4244 | }, { | ||
4245 | .name = name_svideo, | ||
4246 | .vmux = 6, | ||
4247 | .amux = LINE1, | ||
4248 | } }, | ||
4249 | }, | ||
3995 | }; | 4250 | }; |
3996 | 4251 | ||
3997 | const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); | 4252 | const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); |
@@ -4224,6 +4479,18 @@ struct pci_device_id saa7134_pci_tbl[] = { | |||
4224 | .driver_data = SAA7134_BOARD_MD2819, | 4479 | .driver_data = SAA7134_BOARD_MD2819, |
4225 | },{ | 4480 | },{ |
4226 | .vendor = PCI_VENDOR_ID_PHILIPS, | 4481 | .vendor = PCI_VENDOR_ID_PHILIPS, |
4482 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
4483 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
4484 | .subdevice = 0xa7a1, | ||
4485 | .driver_data = SAA7134_BOARD_AVERMEDIA_A700_PRO, | ||
4486 | }, { | ||
4487 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
4488 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
4489 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
4490 | .subdevice = 0xa7a2, | ||
4491 | .driver_data = SAA7134_BOARD_AVERMEDIA_A700_HYBRID, | ||
4492 | }, { | ||
4493 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
4227 | .device = PCI_DEVICE_ID_PHILIPS_SAA7130, | 4494 | .device = PCI_DEVICE_ID_PHILIPS_SAA7130, |
4228 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | 4495 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ |
4229 | .subdevice = 0x2115, | 4496 | .subdevice = 0x2115, |
@@ -4942,7 +5209,43 @@ struct pci_device_id saa7134_pci_tbl[] = { | |||
4942 | .subvendor = 0x1822, /*Twinhan Technology Co. Ltd*/ | 5209 | .subvendor = 0x1822, /*Twinhan Technology Co. Ltd*/ |
4943 | .subdevice = 0x0022, | 5210 | .subdevice = 0x0022, |
4944 | .driver_data = SAA7134_BOARD_TWINHAN_DTV_DVB_3056, | 5211 | .driver_data = SAA7134_BOARD_TWINHAN_DTV_DVB_3056, |
5212 | }, { | ||
5213 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5214 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5215 | .subvendor = 0x16be, | ||
5216 | .subdevice = 0x0010, /* Medion version CTX953_V.1.4.3 */ | ||
5217 | .driver_data = SAA7134_BOARD_CREATIX_CTX953, | ||
5218 | }, { | ||
5219 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5220 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5221 | .subvendor = 0x1462, /* MSI */ | ||
5222 | .subdevice = 0x8625, /* TV@nywhere A/D v1.1 */ | ||
5223 | .driver_data = SAA7134_BOARD_MSI_TVANYWHERE_AD11, | ||
4945 | },{ | 5224 | },{ |
5225 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5226 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5227 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
5228 | .subdevice = 0xf436, | ||
5229 | .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_506, | ||
5230 | }, { | ||
5231 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5232 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5233 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
5234 | .subdevice = 0xf936, | ||
5235 | .driver_data = SAA7134_BOARD_AVERMEDIA_A16D, | ||
5236 | }, { | ||
5237 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5238 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5239 | .subvendor = 0x1461, /* Avermedia Technologies Inc */ | ||
5240 | .subdevice = 0xa836, | ||
5241 | .driver_data = SAA7134_BOARD_AVERMEDIA_M115, | ||
5242 | }, { | ||
5243 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5244 | .device = PCI_DEVICE_ID_PHILIPS_SAA7133, | ||
5245 | .subvendor = 0x185b, | ||
5246 | .subdevice = 0xc900, | ||
5247 | .driver_data = SAA7134_BOARD_VIDEOMATE_T750, | ||
5248 | }, { | ||
4946 | /* --- boards without eeprom + subsystem ID --- */ | 5249 | /* --- boards without eeprom + subsystem ID --- */ |
4947 | .vendor = PCI_VENDOR_ID_PHILIPS, | 5250 | .vendor = PCI_VENDOR_ID_PHILIPS, |
4948 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, | 5251 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, |
@@ -4998,6 +5301,77 @@ static void board_flyvideo(struct saa7134_dev *dev) | |||
4998 | dev->name, dev->name, dev->name); | 5301 | dev->name, dev->name, dev->name); |
4999 | } | 5302 | } |
5000 | 5303 | ||
5304 | static int saa7134_xc2028_callback(struct saa7134_dev *dev, | ||
5305 | int command, int arg) | ||
5306 | { | ||
5307 | switch (command) { | ||
5308 | case XC2028_TUNER_RESET: | ||
5309 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000); | ||
5310 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000); | ||
5311 | mdelay(250); | ||
5312 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0); | ||
5313 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0); | ||
5314 | mdelay(250); | ||
5315 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000); | ||
5316 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000); | ||
5317 | mdelay(250); | ||
5318 | saa_andorl(SAA7133_ANALOG_IO_SELECT >> 2, 0x02, 0x02); | ||
5319 | saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 2, 0x81, 0x81); | ||
5320 | saa_andorl(SAA7134_AUDIO_CLOCK0 >> 2, 0x03187de7, 0x03187de7); | ||
5321 | saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 2, 0x03, 0x03); | ||
5322 | saa_andorl(SAA7134_AUDIO_CLOCKS_PER_FIELD0 >> 2, | ||
5323 | 0x0001e000, 0x0001e000); | ||
5324 | return 0; | ||
5325 | } | ||
5326 | return -EINVAL; | ||
5327 | } | ||
5328 | |||
5329 | |||
5330 | static int saa7134_tda8290_callback(struct saa7134_dev *dev, | ||
5331 | int command, int arg) | ||
5332 | { | ||
5333 | u8 sync_control; | ||
5334 | |||
5335 | switch (command) { | ||
5336 | case 0: /* switch LNA gain through GPIO 22*/ | ||
5337 | saa7134_set_gpio(dev, 22, arg) ; | ||
5338 | break; | ||
5339 | case 1: /* vsync output at GPIO22. 50 / 60Hz */ | ||
5340 | saa_andorb(SAA7134_VIDEO_PORT_CTRL3, 0x80, 0x80); | ||
5341 | saa_andorb(SAA7134_VIDEO_PORT_CTRL6, 0x0f, 0x03); | ||
5342 | if (arg == 1) | ||
5343 | sync_control = 11; | ||
5344 | else | ||
5345 | sync_control = 17; | ||
5346 | saa_writeb(SAA7134_VGATE_START, sync_control); | ||
5347 | saa_writeb(SAA7134_VGATE_STOP, sync_control + 1); | ||
5348 | saa_andorb(SAA7134_MISC_VGATE_MSB, 0x03, 0x00); | ||
5349 | break; | ||
5350 | default: | ||
5351 | return -EINVAL; | ||
5352 | } | ||
5353 | |||
5354 | return 0; | ||
5355 | } | ||
5356 | |||
5357 | int saa7134_tuner_callback(void *priv, int command, int arg) | ||
5358 | { | ||
5359 | struct saa7134_dev *dev = priv; | ||
5360 | if (dev != NULL) { | ||
5361 | switch (dev->tuner_type) { | ||
5362 | case TUNER_PHILIPS_TDA8290: | ||
5363 | return saa7134_tda8290_callback(dev, command, arg); | ||
5364 | case TUNER_XC2028: | ||
5365 | return saa7134_xc2028_callback(dev, command, arg); | ||
5366 | } | ||
5367 | } else { | ||
5368 | printk(KERN_ERR "saa7134: Error - device struct undefined.\n"); | ||
5369 | return -EINVAL; | ||
5370 | } | ||
5371 | return -EINVAL; | ||
5372 | } | ||
5373 | EXPORT_SYMBOL(saa7134_tuner_callback); | ||
5374 | |||
5001 | /* ----------------------------------------------------------- */ | 5375 | /* ----------------------------------------------------------- */ |
5002 | 5376 | ||
5003 | static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data) | 5377 | static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data) |
@@ -5067,6 +5441,7 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
5067 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: | 5441 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: |
5068 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: | 5442 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: |
5069 | case SAA7134_BOARD_VIDEOMATE_DVBT_200A: | 5443 | case SAA7134_BOARD_VIDEOMATE_DVBT_200A: |
5444 | case SAA7134_BOARD_VIDEOMATE_T750: | ||
5070 | case SAA7134_BOARD_MANLI_MTV001: | 5445 | case SAA7134_BOARD_MANLI_MTV001: |
5071 | case SAA7134_BOARD_MANLI_MTV002: | 5446 | case SAA7134_BOARD_MANLI_MTV002: |
5072 | case SAA7134_BOARD_BEHOLD_409FM: | 5447 | case SAA7134_BOARD_BEHOLD_409FM: |
@@ -5133,11 +5508,29 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
5133 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000); | 5508 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000); |
5134 | break; | 5509 | break; |
5135 | case SAA7134_BOARD_AVERMEDIA_CARDBUS: | 5510 | case SAA7134_BOARD_AVERMEDIA_CARDBUS: |
5136 | case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: | 5511 | case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: |
5512 | case SAA7134_BOARD_AVERMEDIA_M115: | ||
5513 | case SAA7134_BOARD_AVERMEDIA_A16D: | ||
5514 | /* power-down tuner chip */ | ||
5515 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0); | ||
5516 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0); | ||
5517 | msleep(10); | ||
5137 | /* power-up tuner chip */ | 5518 | /* power-up tuner chip */ |
5138 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); | 5519 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); |
5139 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff); | 5520 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff); |
5140 | msleep(1); | 5521 | msleep(10); |
5522 | break; | ||
5523 | case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: | ||
5524 | /* power-down tuner chip */ | ||
5525 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004); | ||
5526 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0); | ||
5527 | msleep(10); | ||
5528 | /* power-up tuner chip */ | ||
5529 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004); | ||
5530 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0x000A8004); | ||
5531 | msleep(10); | ||
5532 | /* remote via GPIO */ | ||
5533 | dev->has_remote = SAA7134_REMOTE_GPIO; | ||
5141 | break; | 5534 | break; |
5142 | case SAA7134_BOARD_RTD_VFG7350: | 5535 | case SAA7134_BOARD_RTD_VFG7350: |
5143 | 5536 | ||
@@ -5160,7 +5553,6 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
5160 | dev->has_remote = SAA7134_REMOTE_I2C; | 5553 | dev->has_remote = SAA7134_REMOTE_I2C; |
5161 | break; | 5554 | break; |
5162 | case SAA7134_BOARD_AVERMEDIA_A169_B: | 5555 | case SAA7134_BOARD_AVERMEDIA_A169_B: |
5163 | case SAA7134_BOARD_MD7134_BRIDGE_2: | ||
5164 | printk("%s: %s: dual saa713x broadcast decoders\n" | 5556 | printk("%s: %s: dual saa713x broadcast decoders\n" |
5165 | "%s: Sorry, none of the inputs to this chip are supported yet.\n" | 5557 | "%s: Sorry, none of the inputs to this chip are supported yet.\n" |
5166 | "%s: Dual decoder functionality is disabled for now, use the other chip.\n", | 5558 | "%s: Dual decoder functionality is disabled for now, use the other chip.\n", |
@@ -5172,6 +5564,15 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
5172 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x8c040007, 0x8c040007); | 5564 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x8c040007, 0x8c040007); |
5173 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd); | 5565 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd); |
5174 | break; | 5566 | break; |
5567 | case SAA7134_BOARD_AVERMEDIA_A700_PRO: | ||
5568 | case SAA7134_BOARD_AVERMEDIA_A700_HYBRID: | ||
5569 | /* write windows gpio values */ | ||
5570 | saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x80040100, 0x80040100); | ||
5571 | saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100); | ||
5572 | printk("%s: %s: hybrid analog/dvb card\n" | ||
5573 | "%s: Sorry, only the analog inputs are supported for now.\n", | ||
5574 | dev->name, card(dev).name, dev->name); | ||
5575 | break; | ||
5175 | } | 5576 | } |
5176 | return 0; | 5577 | return 0; |
5177 | } | 5578 | } |
@@ -5200,11 +5601,16 @@ int saa7134_board_init2(struct saa7134_dev *dev) | |||
5200 | dev->tuner_type = saa7134_boards[dev->board].tuner_type; | 5601 | dev->tuner_type = saa7134_boards[dev->board].tuner_type; |
5201 | 5602 | ||
5202 | if (TUNER_ABSENT != dev->tuner_type) { | 5603 | if (TUNER_ABSENT != dev->tuner_type) { |
5203 | tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; | 5604 | tun_setup.mode_mask = T_RADIO | |
5204 | tun_setup.type = dev->tuner_type; | 5605 | T_ANALOG_TV | |
5205 | tun_setup.addr = ADDR_UNSET; | 5606 | T_DIGITAL_TV; |
5607 | tun_setup.type = dev->tuner_type; | ||
5608 | tun_setup.addr = ADDR_UNSET; | ||
5609 | tun_setup.tuner_callback = saa7134_tuner_callback; | ||
5206 | 5610 | ||
5207 | saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup); | 5611 | saa7134_i2c_call_clients(dev, |
5612 | TUNER_SET_TYPE_ADDR, | ||
5613 | &tun_setup); | ||
5208 | } | 5614 | } |
5209 | break; | 5615 | break; |
5210 | case SAA7134_BOARD_MD7134: | 5616 | case SAA7134_BOARD_MD7134: |
@@ -5275,14 +5681,25 @@ int saa7134_board_init2(struct saa7134_dev *dev) | |||
5275 | &tda9887_cfg); | 5681 | &tda9887_cfg); |
5276 | } | 5682 | } |
5277 | 5683 | ||
5278 | tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; | 5684 | tun_setup.mode_mask = T_RADIO | |
5685 | T_ANALOG_TV | | ||
5686 | T_DIGITAL_TV; | ||
5279 | tun_setup.type = dev->tuner_type; | 5687 | tun_setup.type = dev->tuner_type; |
5280 | tun_setup.addr = ADDR_UNSET; | 5688 | tun_setup.addr = ADDR_UNSET; |
5281 | 5689 | ||
5282 | saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); | 5690 | saa7134_i2c_call_clients(dev, |
5691 | TUNER_SET_TYPE_ADDR, &tun_setup); | ||
5283 | } | 5692 | } |
5284 | break; | 5693 | break; |
5285 | case SAA7134_BOARD_PHILIPS_EUROPA: | 5694 | case SAA7134_BOARD_PHILIPS_EUROPA: |
5695 | if (dev->autodetected && (dev->eedata[0x41] == 0x1c)) { | ||
5696 | /* Reconfigure board as Snake reference design */ | ||
5697 | dev->board = SAA7134_BOARD_PHILIPS_SNAKE; | ||
5698 | dev->tuner_type = saa7134_boards[dev->board].tuner_type; | ||
5699 | printk(KERN_INFO "%s: Reconfigured board as %s\n", | ||
5700 | dev->name, saa7134_boards[dev->board].name); | ||
5701 | break; | ||
5702 | } | ||
5286 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: | 5703 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: |
5287 | case SAA7134_BOARD_ASUS_EUROPA2_HYBRID: | 5704 | case SAA7134_BOARD_ASUS_EUROPA2_HYBRID: |
5288 | /* The Philips EUROPA based hybrid boards have the tuner connected through | 5705 | /* The Philips EUROPA based hybrid boards have the tuner connected through |
@@ -5333,6 +5750,7 @@ int saa7134_board_init2(struct saa7134_dev *dev) | |||
5333 | case SAA7134_BOARD_MEDION_MD8800_QUADRO: | 5750 | case SAA7134_BOARD_MEDION_MD8800_QUADRO: |
5334 | case SAA7134_BOARD_AVERMEDIA_SUPER_007: | 5751 | case SAA7134_BOARD_AVERMEDIA_SUPER_007: |
5335 | case SAA7134_BOARD_TWINHAN_DTV_DVB_3056: | 5752 | case SAA7134_BOARD_TWINHAN_DTV_DVB_3056: |
5753 | case SAA7134_BOARD_CREATIX_CTX953: | ||
5336 | /* this is a hybrid board, initialize to analog mode | 5754 | /* this is a hybrid board, initialize to analog mode |
5337 | * and configure firmware eeprom address | 5755 | * and configure firmware eeprom address |
5338 | */ | 5756 | */ |
@@ -5402,13 +5820,46 @@ int saa7134_board_init2(struct saa7134_dev *dev) | |||
5402 | break; | 5820 | break; |
5403 | } | 5821 | } |
5404 | break; | 5822 | break; |
5823 | case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: | ||
5824 | { | ||
5825 | struct v4l2_priv_tun_config tea5767_cfg; | ||
5826 | struct tea5767_ctrl ctl; | ||
5827 | |||
5828 | dev->i2c_client.addr = 0xC0; | ||
5829 | /* set TEA5767(analog FM) defines */ | ||
5830 | memset(&ctl, 0, sizeof(ctl)); | ||
5831 | ctl.xtal_freq = TEA5767_HIGH_LO_13MHz; | ||
5832 | tea5767_cfg.tuner = TUNER_TEA5767; | ||
5833 | tea5767_cfg.priv = &ctl; | ||
5834 | saa7134_i2c_call_clients(dev, TUNER_SET_CONFIG, &tea5767_cfg); | ||
5835 | } | ||
5836 | break; | ||
5405 | } | 5837 | } |
5838 | |||
5839 | if (dev->tuner_type == TUNER_XC2028) { | ||
5840 | struct v4l2_priv_tun_config xc2028_cfg; | ||
5841 | struct xc2028_ctrl ctl; | ||
5842 | |||
5843 | memset(&xc2028_cfg, 0, sizeof(ctl)); | ||
5844 | memset(&ctl, 0, sizeof(ctl)); | ||
5845 | |||
5846 | ctl.fname = XC2028_DEFAULT_FIRMWARE; | ||
5847 | ctl.max_len = 64; | ||
5848 | |||
5849 | switch (dev->board) { | ||
5850 | case SAA7134_BOARD_AVERMEDIA_A16D: | ||
5851 | ctl.demod = XC3028_FE_ZARLINK456; | ||
5852 | break; | ||
5853 | default: | ||
5854 | ctl.demod = XC3028_FE_OREN538; | ||
5855 | ctl.mts = 1; | ||
5856 | } | ||
5857 | |||
5858 | xc2028_cfg.tuner = TUNER_XC2028; | ||
5859 | xc2028_cfg.priv = &ctl; | ||
5860 | |||
5861 | saa7134_i2c_call_clients(dev, TUNER_SET_CONFIG, &xc2028_cfg); | ||
5862 | } | ||
5863 | |||
5406 | return 0; | 5864 | return 0; |
5407 | } | 5865 | } |
5408 | |||
5409 | /* ----------------------------------------------------------- */ | ||
5410 | /* | ||
5411 | * Local variables: | ||
5412 | * c-basic-offset: 8 | ||
5413 | * End: | ||
5414 | */ | ||