[PATCH] v4l: 635: add bttv card 137 conceptronic ctvfmi v2
- Add bttv card 137 - Conceptronic CTVFMi v2 Signed-off-by: Ricardo Cerqueira <v4l\@cerqueira.org> Signed-off-by: Michael Krufky <mkrufky@m1k.net> 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>
This commit is contained in:
Родитель
87f0783159
Коммит
cc9d8d49bb
|
@ -135,3 +135,4 @@ card=133 - Kodicom 4400R (slave)
|
|||
card=134 - Adlink RTV24
|
||||
card=135 - DViCO FusionHDTV 5 Lite
|
||||
card=136 - Acorp Y878F
|
||||
card=137 - Conceptronic CTVFMi v2
|
||||
|
|
|
@ -2418,6 +2418,21 @@ struct tvcard bttv_tvcards[] = {
|
|||
.tuner_type = TUNER_YMEC_TVF66T5_B_DFF,
|
||||
.tuner_addr = 0xc1 >>1,
|
||||
.has_radio = 1,
|
||||
},{
|
||||
/* ---- card 0x89 ---------------------------------- */
|
||||
.name = "Conceptronic CTVFMi v2",
|
||||
.video_inputs = 3,
|
||||
.audio_inputs = 1,
|
||||
.tuner = 0,
|
||||
.svhs = 2,
|
||||
.gpiomask = 0x001c0007,
|
||||
.muxsel = { 2, 3, 1, 1 },
|
||||
.audiomux = { 0, 1, 2, 2, 3 },
|
||||
.needs_tvaudio = 0,
|
||||
.pll = PLL_28,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.has_remote = 1,
|
||||
}};
|
||||
|
||||
static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
|
||||
|
|
|
@ -137,6 +137,7 @@
|
|||
#define BTTV_ADLINK_RTV24 0x86
|
||||
#define BTTV_DVICO_FUSIONHDTV_5_LITE 0x87
|
||||
#define BTTV_ACORP_Y878F 0x88
|
||||
#define BTTV_CONCEPTRONIC_CTVFMI2 0x89
|
||||
|
||||
/* i2c address list */
|
||||
#define I2C_TSA5522 0xc2
|
||||
|
|
|
@ -156,6 +156,71 @@ static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
|
|||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/* Ricardo Cerqueira <v4l@cerqueira.org> */
|
||||
/* Weird matching, since the remote has "uncommon" keys */
|
||||
|
||||
static IR_KEYTAB_TYPE ir_codes_conceptronic[IR_KEYTAB_SIZE] = {
|
||||
|
||||
[ 30 ] = KEY_POWER, // power
|
||||
[ 7 ] = KEY_SWITCHVIDEOMODE, // source
|
||||
[ 28 ] = KEY_SEARCH, // scan
|
||||
|
||||
/* FIXME: duplicate keycodes?
|
||||
*
|
||||
* These four keys seem to share the same GPIO as CH+, CH-, <<< and >>>
|
||||
* The GPIO values are
|
||||
* 6397fb for both "Scan <" and "CH -",
|
||||
* 639ffb for "Scan >" and "CH+",
|
||||
* 6384fb for "Tune <" and "<<<",
|
||||
* 638cfb for "Tune >" and ">>>", regardless of the mask.
|
||||
*
|
||||
* [ 23 ] = KEY_BACK, // fm scan <<
|
||||
* [ 31 ] = KEY_FORWARD, // fm scan >>
|
||||
*
|
||||
* [ 4 ] = KEY_LEFT, // fm tuning <
|
||||
* [ 12 ] = KEY_RIGHT, // fm tuning >
|
||||
*
|
||||
* For now, these four keys are disabled. Pressing them will generate
|
||||
* the CH+/CH-/<<</>>> events
|
||||
*/
|
||||
|
||||
[ 3 ] = KEY_TUNER, // TV/FM
|
||||
|
||||
[ 0 ] = KEY_RECORD,
|
||||
[ 8 ] = KEY_STOP,
|
||||
[ 17 ] = KEY_PLAY,
|
||||
|
||||
[ 26 ] = KEY_PLAYPAUSE, // freeze
|
||||
[ 25 ] = KEY_ZOOM, // zoom
|
||||
[ 15 ] = KEY_TEXT, // min
|
||||
|
||||
[ 1 ] = KEY_KP1,
|
||||
[ 11 ] = KEY_KP2,
|
||||
[ 27 ] = KEY_KP3,
|
||||
[ 5 ] = KEY_KP4,
|
||||
[ 9 ] = KEY_KP5,
|
||||
[ 21 ] = KEY_KP6,
|
||||
[ 6 ] = KEY_KP7,
|
||||
[ 10 ] = KEY_KP8,
|
||||
[ 18 ] = KEY_KP9,
|
||||
[ 2 ] = KEY_KP0,
|
||||
[ 16 ] = KEY_LAST, // +100
|
||||
[ 19 ] = KEY_LIST, // recall
|
||||
|
||||
[ 31 ] = KEY_CHANNELUP, // chn down
|
||||
[ 23 ] = KEY_CHANNELDOWN, // chn up
|
||||
[ 22 ] = KEY_VOLUMEUP, // vol down
|
||||
[ 20 ] = KEY_VOLUMEDOWN, // vol up
|
||||
|
||||
[ 4 ] = KEY_KPMINUS, // <<<
|
||||
[ 14 ] = KEY_SETUP, // function
|
||||
[ 12 ] = KEY_KPPLUS, // >>>
|
||||
|
||||
[ 13 ] = KEY_GOTO, // mts
|
||||
[ 29 ] = KEY_REFRESH, // reset
|
||||
[ 24 ] = KEY_MUTE // mute/unmute
|
||||
};
|
||||
|
||||
struct IR {
|
||||
struct bttv_sub_device *sub;
|
||||
struct input_dev *input;
|
||||
|
@ -329,6 +394,12 @@ static int ir_probe(struct device *dev)
|
|||
ir->mask_keyup = 0x008000;
|
||||
ir->polling = 50; // ms
|
||||
break;
|
||||
case BTTV_CONCEPTRONIC_CTVFMI2:
|
||||
ir_codes = ir_codes_conceptronic;
|
||||
ir->mask_keycode = 0x001F00;
|
||||
ir->mask_keyup = 0x006000;
|
||||
ir->polling = 50; // ms
|
||||
break;
|
||||
}
|
||||
if (NULL == ir_codes) {
|
||||
kfree(ir);
|
||||
|
|
Загрузка…
Ссылка в новой задаче