Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (7677): saa7134: Add/fix Beholder entries

Beholder TV/FM tuners:

Changes:
Add support Beholder Columbus PCMCIA card.
Add key map for remote control of Beholder Columbus PCMCIA card.
Fix gpiomask for all Beholder tuners.

Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

authored by

Dmitry Belimov and committed by
Mauro Carvalho Chehab
b34dddbe 8fb737b7

+157 -11
+2 -2
Documentation/video4linux/CARDLIST.saa7134
··· 25 25 24 -> KNC One TV-Station DVR [1894:a006] 26 26 25 -> ASUS TV-FM 7133 [1043:4843] 27 27 26 -> Pinnacle PCTV Stereo (saa7134) [11bd:002b] 28 - 27 -> Manli MuchTV M-TV002/Behold TV 403 FM 29 - 28 -> Manli MuchTV M-TV001/Behold TV 401 28 + 27 -> Manli MuchTV M-TV002 29 + 28 -> Manli MuchTV M-TV001 30 30 29 -> Nagase Sangyo TransGear 3000TV [1461:050c] 31 31 30 -> Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) [1019:4cb4] 32 32 31 -> Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) [1019:4cb5]
+70
drivers/media/common/ir-keymaps.c
··· 2043 2043 2044 2044 EXPORT_SYMBOL_GPL(ir_codes_behold); 2045 2045 2046 + /* Beholder Intl. Ltd. 2008 2047 + * Dmitry Belimov d.belimov@google.com 2048 + * Keytable is used by BeholdTV Columbus 2049 + * The "ascii-art picture" below (in comments, first row 2050 + * is the keycode in hex, and subsequent row(s) shows 2051 + * the button labels (several variants when appropriate) 2052 + * helps to descide which keycodes to assign to the buttons. 2053 + */ 2054 + IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE] = { 2055 + 2056 + /* 0x13 0x11 0x1C 0x12 * 2057 + * Mute Source TV/FM Power * 2058 + * */ 2059 + 2060 + [0x13] = KEY_MUTE, 2061 + [0x11] = KEY_PROPS, 2062 + [0x1C] = KEY_TUNER, /* KEY_TV/KEY_RADIO */ 2063 + [0x12] = KEY_POWER, 2064 + 2065 + /* 0x01 0x02 0x03 0x0D * 2066 + * 1 2 3 Stereo * 2067 + * * 2068 + * 0x04 0x05 0x06 0x19 * 2069 + * 4 5 6 Snapshot * 2070 + * * 2071 + * 0x07 0x08 0x09 0x10 * 2072 + * 7 8 9 Zoom * 2073 + * */ 2074 + [0x01] = KEY_1, 2075 + [0x02] = KEY_2, 2076 + [0x03] = KEY_3, 2077 + [0x0D] = KEY_SETUP, /* Setup key */ 2078 + [0x04] = KEY_4, 2079 + [0x05] = KEY_5, 2080 + [0x06] = KEY_6, 2081 + [0x19] = KEY_BOOKMARKS, /* Snapshot key */ 2082 + [0x07] = KEY_7, 2083 + [0x08] = KEY_8, 2084 + [0x09] = KEY_9, 2085 + [0x10] = KEY_ZOOM, 2086 + 2087 + /* 0x0A 0x00 0x0B 0x0C * 2088 + * RECALL 0 ChannelUp VolumeUp * 2089 + * */ 2090 + [0x0A] = KEY_AGAIN, 2091 + [0x00] = KEY_0, 2092 + [0x0B] = KEY_CHANNELUP, 2093 + [0x0C] = KEY_VOLUMEUP, 2094 + 2095 + /* 0x1B 0x1D 0x15 0x18 * 2096 + * Timeshift Record ChannelDown VolumeDown * 2097 + * */ 2098 + 2099 + [0x1B] = KEY_REWIND, 2100 + [0x1D] = KEY_RECORD, 2101 + [0x15] = KEY_CHANNELDOWN, 2102 + [0x18] = KEY_VOLUMEDOWN, 2103 + 2104 + /* 0x0E 0x1E 0x0F 0x1A * 2105 + * Stop Pause Previouse Next * 2106 + * */ 2107 + 2108 + [0x0E] = KEY_STOP, 2109 + [0x1E] = KEY_PAUSE, 2110 + [0x0F] = KEY_PREVIOUS, 2111 + [0x1A] = KEY_NEXT, 2112 + 2113 + }; 2114 + EXPORT_SYMBOL_GPL(ir_codes_behold_columbus); 2115 + 2046 2116 /* 2047 2117 * Remote control for the Genius TVGO A11MCE 2048 2118 * Adrian Pardini <pardo.bsso@gmail.com>
+72 -8
drivers/media/video/saa7134/saa7134-cards.c
··· 30 30 #include "tuner-xc2028.h" 31 31 #include <media/v4l2-common.h> 32 32 #include <media/tveeprom.h> 33 + #include "tea5767.h" 33 34 34 35 /* commly used strings */ 35 36 static char name_mute[] = "mute"; ··· 1050 1049 }, 1051 1050 [SAA7134_BOARD_MANLI_MTV002] = { 1052 1051 /* Ognjen Nastic <ognjen@logosoft.ba> */ 1053 - .name = "Manli MuchTV M-TV002/Behold TV 403 FM", 1052 + .name = "Manli MuchTV M-TV002", 1054 1053 .audio_clock = 0x00200000, 1055 1054 .tuner_type = TUNER_PHILIPS_PAL, 1056 1055 .radio_type = UNSET, ··· 1077 1076 }, 1078 1077 [SAA7134_BOARD_MANLI_MTV001] = { 1079 1078 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */ 1080 - .name = "Manli MuchTV M-TV001/Behold TV 401", 1079 + .name = "Manli MuchTV M-TV001", 1081 1080 .audio_clock = 0x00200000, 1082 1081 .tuner_type = TUNER_PHILIPS_PAL, 1083 1082 .radio_type = UNSET, ··· 2199 2198 }, 2200 2199 [SAA7134_BOARD_BEHOLD_409FM] = { 2201 2200 /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */ 2201 + /* Beholder Intl. Ltd. 2008 */ 2202 + /*Dmitry Belimov <d.belimov@gmail.com> */ 2202 2203 .name = "Beholder BeholdTV 409 FM", 2203 2204 .audio_clock = 0x00187de7, 2204 2205 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 2208 2205 .tuner_addr = ADDR_UNSET, 2209 2206 .radio_addr = ADDR_UNSET, 2210 2207 .tda9887_conf = TDA9887_PRESENT, 2208 + .gpiomask = 0x00008000, 2211 2209 .inputs = {{ 2212 2210 .name = name_tv, 2213 2211 .vmux = 3, ··· 3580 3576 }}, 3581 3577 }, 3582 3578 [SAA7134_BOARD_BEHOLD_401] = { 3579 + /* Beholder Intl. Ltd. 2008 */ 3580 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3583 3581 .name = "Beholder BeholdTV 401", 3584 3582 .audio_clock = 0x00187de7, 3585 3583 .tuner_type = TUNER_PHILIPS_FQ1216ME, 3586 3584 .radio_type = UNSET, 3587 3585 .tuner_addr = ADDR_UNSET, 3588 3586 .radio_addr = ADDR_UNSET, 3587 + .gpiomask = 0x00008000, 3589 3588 .inputs = {{ 3590 3589 .name = name_svideo, 3591 3590 .vmux = 8, ··· 3609 3602 }, 3610 3603 }, 3611 3604 [SAA7134_BOARD_BEHOLD_403] = { 3605 + /* Beholder Intl. Ltd. 2008 */ 3606 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3612 3607 .name = "Beholder BeholdTV 403", 3613 3608 .audio_clock = 0x00187de7, 3614 3609 .tuner_type = TUNER_PHILIPS_FQ1216ME, 3615 3610 .radio_type = UNSET, 3616 3611 .tuner_addr = ADDR_UNSET, 3617 3612 .radio_addr = ADDR_UNSET, 3613 + .gpiomask = 0x00008000, 3618 3614 .inputs = {{ 3619 3615 .name = name_svideo, 3620 3616 .vmux = 8, ··· 3634 3624 }}, 3635 3625 }, 3636 3626 [SAA7134_BOARD_BEHOLD_403FM] = { 3627 + /* Beholder Intl. Ltd. 2008 */ 3628 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3637 3629 .name = "Beholder BeholdTV 403 FM", 3638 3630 .audio_clock = 0x00187de7, 3639 3631 .tuner_type = TUNER_PHILIPS_FQ1216ME, 3640 3632 .radio_type = UNSET, 3641 3633 .tuner_addr = ADDR_UNSET, 3642 3634 .radio_addr = ADDR_UNSET, 3635 + .gpiomask = 0x00008000, 3643 3636 .inputs = {{ 3644 3637 .name = name_svideo, 3645 3638 .vmux = 8, ··· 3663 3650 }, 3664 3651 }, 3665 3652 [SAA7134_BOARD_BEHOLD_405] = { 3653 + /* Beholder Intl. Ltd. 2008 */ 3654 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3666 3655 .name = "Beholder BeholdTV 405", 3667 3656 .audio_clock = 0x00187de7, 3668 3657 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3672 3657 .tuner_addr = ADDR_UNSET, 3673 3658 .radio_addr = ADDR_UNSET, 3674 3659 .tda9887_conf = TDA9887_PRESENT, 3660 + .gpiomask = 0x00008000, 3675 3661 .inputs = {{ 3676 3662 .name = name_svideo, 3677 3663 .vmux = 8, ··· 3690 3674 }, 3691 3675 [SAA7134_BOARD_BEHOLD_405FM] = { 3692 3676 /* Sergey <skiv@orel.ru> */ 3677 + /* Beholder Intl. Ltd. 2008 */ 3678 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3693 3679 .name = "Beholder BeholdTV 405 FM", 3694 3680 .audio_clock = 0x00187de7, 3695 3681 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3699 3681 .tuner_addr = ADDR_UNSET, 3700 3682 .radio_addr = ADDR_UNSET, 3701 3683 .tda9887_conf = TDA9887_PRESENT, 3684 + .gpiomask = 0x00008000, 3702 3685 .inputs = {{ 3703 3686 .name = name_svideo, 3704 3687 .vmux = 8, ··· 3720 3701 }, 3721 3702 }, 3722 3703 [SAA7134_BOARD_BEHOLD_407] = { 3704 + /* Beholder Intl. Ltd. 2008 */ 3705 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3723 3706 .name = "Beholder BeholdTV 407", 3724 3707 .audio_clock = 0x00187de7, 3725 3708 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3729 3708 .tuner_addr = ADDR_UNSET, 3730 3709 .radio_addr = ADDR_UNSET, 3731 3710 .tda9887_conf = TDA9887_PRESENT, 3732 - .gpiomask = 0xc0c000, 3711 + .gpiomask = 0x00008000, 3733 3712 .inputs = {{ 3734 3713 .name = name_svideo, 3735 3714 .vmux = 8, ··· 3749 3728 }}, 3750 3729 }, 3751 3730 [SAA7134_BOARD_BEHOLD_407FM] = { 3731 + /* Beholder Intl. Ltd. 2008 */ 3732 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3752 3733 .name = "Beholder BeholdTV 407 FM", 3753 3734 .audio_clock = 0x00187de7, 3754 3735 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3758 3735 .tuner_addr = ADDR_UNSET, 3759 3736 .radio_addr = ADDR_UNSET, 3760 3737 .tda9887_conf = TDA9887_PRESENT, 3761 - .gpiomask = 0xc0c000, 3738 + .gpiomask = 0x00008000, 3762 3739 .inputs = {{ 3763 3740 .name = name_svideo, 3764 3741 .vmux = 8, ··· 3783 3760 }, 3784 3761 }, 3785 3762 [SAA7134_BOARD_BEHOLD_409] = { 3763 + /* Beholder Intl. Ltd. 2008 */ 3764 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3786 3765 .name = "Beholder BeholdTV 409", 3787 3766 .audio_clock = 0x00187de7, 3788 3767 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3792 3767 .tuner_addr = ADDR_UNSET, 3793 3768 .radio_addr = ADDR_UNSET, 3794 3769 .tda9887_conf = TDA9887_PRESENT, 3770 + .gpiomask = 0x00008000, 3795 3771 .inputs = {{ 3796 3772 .name = name_tv, 3797 3773 .vmux = 3, ··· 3809 3783 }}, 3810 3784 }, 3811 3785 [SAA7134_BOARD_BEHOLD_505FM] = { 3786 + /* Beholder Intl. Ltd. 2008 */ 3787 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3812 3788 .name = "Beholder BeholdTV 505 FM/RDS", 3813 3789 .audio_clock = 0x00200000, 3814 3790 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3818 3790 .tuner_addr = ADDR_UNSET, 3819 3791 .radio_addr = ADDR_UNSET, 3820 3792 .tda9887_conf = TDA9887_PRESENT, 3793 + .gpiomask = 0x00008000, 3821 3794 .inputs = {{ 3822 3795 .name = name_tv, 3823 3796 .vmux = 3, ··· 3843 3814 }, 3844 3815 }, 3845 3816 [SAA7134_BOARD_BEHOLD_507_9FM] = { 3817 + /* Beholder Intl. Ltd. 2008 */ 3818 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3846 3819 .name = "Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM", 3847 3820 .audio_clock = 0x00187de7, 3848 3821 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, ··· 3852 3821 .tuner_addr = ADDR_UNSET, 3853 3822 .radio_addr = ADDR_UNSET, 3854 3823 .tda9887_conf = TDA9887_PRESENT, 3824 + .gpiomask = 0x00008000, 3855 3825 .inputs = {{ 3856 3826 .name = name_tv, 3857 3827 .vmux = 3, ··· 3873 3841 }, 3874 3842 }, 3875 3843 [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = { 3844 + /* Beholder Intl. Ltd. 2008 */ 3845 + /*Dmitry Belimov <d.belimov@gmail.com> */ 3876 3846 .name = "Beholder BeholdTV Columbus TVFM", 3877 3847 .audio_clock = 0x00187de7, 3878 3848 .tuner_type = TUNER_ALPS_TSBE5_PAL, ··· 3882 3848 .tuner_addr = ADDR_UNSET, 3883 3849 .radio_addr = ADDR_UNSET, 3884 3850 .tda9887_conf = TDA9887_PRESENT, 3851 + .gpiomask = 0x000A8004, 3885 3852 .inputs = {{ 3886 3853 .name = name_tv, 3887 3854 .vmux = 3, 3888 3855 .amux = TV, 3889 3856 .tv = 1, 3890 - },{ 3857 + .gpio = 0x000A8004, 3858 + }, { 3891 3859 .name = name_comp1, 3892 3860 .vmux = 1, 3893 3861 .amux = LINE1, 3894 - },{ 3862 + .gpio = 0x000A8000, 3863 + }, { 3895 3864 .name = name_svideo, 3896 3865 .vmux = 8, 3897 3866 .amux = LINE1, 3898 - }}, 3867 + .gpio = 0x000A8000, 3868 + } }, 3899 3869 .radio = { 3900 3870 .name = name_radio, 3901 3871 .amux = LINE2, 3872 + .gpio = 0x000A8000, 3902 3873 }, 3903 3874 }, 3904 3875 [SAA7134_BOARD_BEHOLD_607_9FM] = { ··· 5510 5471 case SAA7134_BOARD_AVERMEDIA_CARDBUS: 5511 5472 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506: 5512 5473 case SAA7134_BOARD_AVERMEDIA_M115: 5513 - case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: 5514 5474 case SAA7134_BOARD_AVERMEDIA_A16D: 5515 5475 /* power-down tuner chip */ 5516 5476 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0); ··· 5519 5481 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); 5520 5482 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff); 5521 5483 msleep(10); 5484 + break; 5485 + case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: 5486 + /* power-down tuner chip */ 5487 + saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004); 5488 + saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0); 5489 + msleep(10); 5490 + /* power-up tuner chip */ 5491 + saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004); 5492 + saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0x000A8004); 5493 + msleep(10); 5494 + /* remote via GPIO */ 5495 + dev->has_remote = SAA7134_REMOTE_GPIO; 5522 5496 break; 5523 5497 case SAA7134_BOARD_RTD_VFG7350: 5524 5498 ··· 5818 5768 printk(KERN_WARNING "%s: Unexpected tuner type info: %x in eeprom\n", 5819 5769 dev->name, dev->eedata[0x41]); 5820 5770 break; 5771 + } 5772 + break; 5773 + case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: 5774 + { 5775 + struct v4l2_priv_tun_config tea5767_cfg; 5776 + struct tea5767_ctrl ctl; 5777 + 5778 + dev->i2c_client.addr = 0xC0; 5779 + /* set TEA5767(analog FM) defines */ 5780 + memset(&ctl, 0, sizeof(ctl)); 5781 + ctl.xtal_freq = TEA5767_HIGH_LO_13MHz; 5782 + tea5767_cfg.tuner = TUNER_TEA5767; 5783 + tea5767_cfg.priv = &ctl; 5784 + saa7134_i2c_call_clients(dev, TUNER_SET_CONFIG, &tea5767_cfg); 5821 5785 } 5822 5786 break; 5823 5787 }
+12 -1
drivers/media/video/saa7134/saa7134-input.c
··· 331 331 break; 332 332 case SAA7134_BOARD_MANLI_MTV001: 333 333 case SAA7134_BOARD_MANLI_MTV002: 334 + ir_codes = ir_codes_manli; 335 + mask_keycode = 0x001f00; 336 + mask_keyup = 0x004000; 337 + polling = 50; /* ms */ 338 + break; 334 339 case SAA7134_BOARD_BEHOLD_409FM: 335 340 case SAA7134_BOARD_BEHOLD_401: 336 341 case SAA7134_BOARD_BEHOLD_403: ··· 348 343 case SAA7134_BOARD_BEHOLD_505FM: 349 344 case SAA7134_BOARD_BEHOLD_507_9FM: 350 345 ir_codes = ir_codes_manli; 351 - mask_keycode = 0x001f00; 346 + mask_keycode = 0x003f00; 347 + mask_keyup = 0x004000; 348 + polling = 50; /* ms */ 349 + break; 350 + case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: 351 + ir_codes = ir_codes_behold_columbus; 352 + mask_keycode = 0x003f00; 352 353 mask_keyup = 0x004000; 353 354 polling = 50; // ms 354 355 break;
+1
include/media/ir-common.h
··· 142 142 extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE]; 143 143 extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE]; 144 144 extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE]; 145 + extern IR_KEYTAB_TYPE ir_codes_behold_columbus[IR_KEYTAB_SIZE]; 145 146 extern IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE]; 146 147 extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE]; 147 148 extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE];