mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
V4L/DVB (6973): Add Beholder TV 401/405/407/409/505/507/609/M6 support
This patch updates cardlist for Beholder TV tuners: old models (with GPIO ir) 401, 403, 405, 407, 409, 505, 507 and add support for 607, 609, M6 cards with new i2c-ir. Signed-off-by: Igor Kuznetsov <igk72@yandex.ru> Signed-off-by: Andrey J. Melnikov <temnota@kmv.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
3f4dfe2acf
commit
e8018c9e78
@ -116,3 +116,16 @@
|
||||
115 -> Sabrent PCMCIA TV-PCB05 [0919:2003]
|
||||
116 -> 10MOONS TM300 TV Card [1131:2304]
|
||||
117 -> Avermedia Super 007 [1461:f01d]
|
||||
118 -> Beholder BeholdTV 401 [1131:0000,0000:4016]
|
||||
119 -> Beholder BeholdTV 403 [0000:4036]
|
||||
120 -> Beholder BeholdTV 403 FM [1131:0000,0000:4037]
|
||||
121 -> Beholder BeholdTV 405 [0000:4050]
|
||||
122 -> Beholder BeholdTV 405 FM [0000:4051]
|
||||
123 -> [0000:4070]
|
||||
124 -> Beholder BeholdTV 407 FM [0000:4071]
|
||||
125 -> Beholder BeholdTV 409 [0000:4090]
|
||||
126 -> Beholder BeholdTV 505 FM/RDS [0000:5051,0000:505B,5ace:5050]
|
||||
127 -> Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM [0000:5071,0000:507B,5ace:5070,5ace:5090]
|
||||
128 -> Beholder BeholdTV Columbus TVFM [0000:5201]
|
||||
129 -> Beholder BeholdTV 607 / BeholdTV 609 [5ace:6070,5ace:6071,5ace:6072,5ace:6073,5ace:6090,5ace:6091,5ace:6092,5ace:6093]
|
||||
130 -> Beholder BeholdTV M6 / BeholdTV M6 Extra [5ace:6190,5ace:6193]
|
||||
|
@ -1848,3 +1848,107 @@ IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE] = {
|
||||
};
|
||||
|
||||
EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce);
|
||||
|
||||
/*
|
||||
* Igor Kuznetsov <igk72@ya.ru>
|
||||
* Andrey J. Melnikov <temnota@kmv.ru>
|
||||
*
|
||||
* Keytable is used by BeholdTV 60x series, M6 series at
|
||||
* least, and probably other cards too.
|
||||
* The "ascii-art picture" below (in comments, first row
|
||||
* is the keycode in hex, and subsequent row(s) shows
|
||||
* the button labels (several variants when appropriate)
|
||||
* helps to descide which keycodes to assign to the buttons.
|
||||
*/
|
||||
IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE] = {
|
||||
|
||||
/* 0x1c 0x12 *
|
||||
* TV/FM POWER *
|
||||
* */
|
||||
[ 0x1c ] = KEY_TUNER, /*XXX KEY_TV KEY_RADIO */
|
||||
[ 0x12 ] = KEY_POWER,
|
||||
|
||||
/* 0x01 0x02 0x03 *
|
||||
* 1 2 3 *
|
||||
* *
|
||||
* 0x04 0x05 0x06 *
|
||||
* 4 5 6 *
|
||||
* *
|
||||
* 0x07 0x08 0x09 *
|
||||
* 7 8 9 *
|
||||
* */
|
||||
[ 0x01 ] = KEY_1,
|
||||
[ 0x02 ] = KEY_2,
|
||||
[ 0x03 ] = KEY_3,
|
||||
[ 0x04 ] = KEY_4,
|
||||
[ 0x05 ] = KEY_5,
|
||||
[ 0x06 ] = KEY_6,
|
||||
[ 0x07 ] = KEY_7,
|
||||
[ 0x08 ] = KEY_8,
|
||||
[ 0x09 ] = KEY_9,
|
||||
|
||||
/* 0x0a 0x00 0x17 *
|
||||
* RECALL 0 MODE *
|
||||
* */
|
||||
[ 0x0a ] = KEY_AGAIN,
|
||||
[ 0x00 ] = KEY_0,
|
||||
[ 0x17 ] = KEY_MODE,
|
||||
|
||||
/* 0x14 0x10 *
|
||||
* ASPECT FULLSCREEN *
|
||||
* */
|
||||
[ 0x14 ] = KEY_SCREEN,
|
||||
[ 0x10 ] = KEY_ZOOM,
|
||||
|
||||
/* 0x0b *
|
||||
* Up *
|
||||
* *
|
||||
* 0x18 0x16 0x0c *
|
||||
* Left Ok Right *
|
||||
* *
|
||||
* 0x015 *
|
||||
* Down *
|
||||
* */
|
||||
[ 0x0b ] = KEY_CHANNELUP, /*XXX KEY_UP */
|
||||
[ 0x18 ] = KEY_VOLUMEDOWN, /*XXX KEY_LEFT */
|
||||
[ 0x16 ] = KEY_OK, /*XXX KEY_ENTER */
|
||||
[ 0x0c ] = KEY_VOLUMEUP, /*XXX KEY_RIGHT */
|
||||
[ 0x15 ] = KEY_CHANNELDOWN, /*XXX KEY_DOWN */
|
||||
|
||||
/* 0x11 0x0d *
|
||||
* MUTE INFO *
|
||||
* */
|
||||
[ 0x11 ] = KEY_MUTE,
|
||||
[ 0x0d ] = KEY_INFO,
|
||||
|
||||
/* 0x0f 0x1b 0x1a *
|
||||
* RECORD PLAY/PAUSE STOP *
|
||||
* *
|
||||
* 0x0e 0x1f 0x1e *
|
||||
*TELETEXT AUDIO SOURCE *
|
||||
* RED YELLOW *
|
||||
* */
|
||||
[ 0x0f ] = KEY_RECORD,
|
||||
[ 0x1b ] = KEY_PLAYPAUSE,
|
||||
[ 0x1a ] = KEY_STOP,
|
||||
[ 0x0e ] = KEY_TEXT,
|
||||
[ 0x1f ] = KEY_RED, /*XXX KEY_AUDIO */
|
||||
[ 0x1e ] = KEY_YELLOW, /*XXX KEY_SOURCE */
|
||||
|
||||
/* 0x1d 0x13 0x19 *
|
||||
* SLEEP PREVIEW DVB *
|
||||
* GREEN BLUE *
|
||||
* */
|
||||
[ 0x1d ] = KEY_SLEEP,
|
||||
[ 0x13 ] = KEY_GREEN,
|
||||
[ 0x19 ] = KEY_BLUE, /*XXX KEY_SAT */
|
||||
|
||||
/* 0x58 0x5c *
|
||||
* FREEZE SNAPSHOT *
|
||||
* */
|
||||
[ 0x58 ] = KEY_SLOW,
|
||||
[ 0x5c ] = KEY_SAVE,
|
||||
|
||||
};
|
||||
|
||||
EXPORT_SYMBOL_GPL(ir_codes_behold);
|
||||
|
@ -398,6 +398,7 @@ static int ir_attach(struct i2c_adapter *adap, int addr,
|
||||
case 0x7a:
|
||||
case 0x47:
|
||||
case 0x71:
|
||||
case 0x2d:
|
||||
if (adap->id == I2C_HW_B_CX2388x) {
|
||||
/* Handled by cx88-input */
|
||||
name = "CX2388x remote";
|
||||
@ -504,7 +505,7 @@ static int ir_probe(struct i2c_adapter *adap)
|
||||
*/
|
||||
|
||||
static const int probe_bttv[] = { 0x1a, 0x18, 0x4b, 0x64, 0x30, -1};
|
||||
static const int probe_saa7134[] = { 0x7a, 0x47, 0x71, -1 };
|
||||
static const int probe_saa7134[] = { 0x7a, 0x47, 0x71, 0x2d, -1 };
|
||||
static const int probe_em28XX[] = { 0x30, 0x47, -1 };
|
||||
static const int probe_cx88[] = { 0x18, 0x6b, 0x71, -1 };
|
||||
static const int probe_cx23885[] = { 0x6b, -1 };
|
||||
|
@ -3562,6 +3562,329 @@ struct saa7134_board saa7134_boards[] = {
|
||||
.tv = 1,
|
||||
}},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_401] = {
|
||||
.name = "Beholder BeholdTV 401",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FQ1216ME,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.inputs = {{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = LINE2,
|
||||
.tv = 1,
|
||||
}},
|
||||
.mute = {
|
||||
.name = name_mute,
|
||||
.amux = LINE1,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_403] = {
|
||||
.name = "Beholder BeholdTV 403",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FQ1216ME,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.inputs = {{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = LINE2,
|
||||
.tv = 1,
|
||||
}},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_403FM] = {
|
||||
.name = "Beholder BeholdTV 403 FM",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FQ1216ME,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.inputs = {{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = LINE2,
|
||||
.tv = 1,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_405] = {
|
||||
.name = "Beholder BeholdTV 405",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 3,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = LINE2,
|
||||
.tv = 1,
|
||||
}},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_405FM] = {
|
||||
/* Sergey <skiv@orel.ru> */
|
||||
.name = "Beholder BeholdTV 405 FM",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 3,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = LINE2,
|
||||
.tv = 1,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_407FM] = {
|
||||
.name = "Beholder BeholdTV 407 FM",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.gpiomask = 0xc0c000,
|
||||
.inputs = {{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
.gpio = 0xc0c000,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
.gpio = 0xc0c000,
|
||||
},{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = TV,
|
||||
.tv = 1,
|
||||
.gpio = 0xc0c000,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
.gpio = 0xc0c000,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_409] = {
|
||||
.name = "Beholder BeholdTV 409",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = TV,
|
||||
.tv = 1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
}},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_505FM] = {
|
||||
.name = "Beholder BeholdTV 505 FM/RDS",
|
||||
.audio_clock = 0x00200000,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = LINE2,
|
||||
.tv = 1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
}},
|
||||
.mute = {
|
||||
.name = name_mute,
|
||||
.amux = LINE1,
|
||||
},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_507_9FM] = {
|
||||
.name = "Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = TV,
|
||||
.tv = 1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = {
|
||||
.name = "Beholder BeholdTV Columbus TVFM",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_ALPS_TSBE5_PAL,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = TV,
|
||||
.tv = 1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_607_9FM] = {
|
||||
/* Andrey Melnikoff <temnota@kmv.ru> */
|
||||
.name = "Beholder BeholdTV 607 / BeholdTV 609",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = TV,
|
||||
.tv = 1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
},
|
||||
[SAA7134_BOARD_BEHOLD_M6] = {
|
||||
/* Igor Kuznetsov <igk@igk.ru> */
|
||||
/* Andrey Melnikoff <temnota@kmv.ru> */
|
||||
.name = "Beholder BeholdTV M6 / BeholdTV M6 Extra",
|
||||
.audio_clock = 0x00187de7,
|
||||
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
|
||||
.radio_type = UNSET,
|
||||
.tuner_addr = ADDR_UNSET,
|
||||
.radio_addr = ADDR_UNSET,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.inputs = {{
|
||||
.name = name_tv,
|
||||
.vmux = 3,
|
||||
.amux = TV,
|
||||
.tv = 1,
|
||||
},{
|
||||
.name = name_comp1,
|
||||
.vmux = 1,
|
||||
.amux = LINE1,
|
||||
},{
|
||||
.name = name_svideo,
|
||||
.vmux = 8,
|
||||
.amux = LINE1,
|
||||
}},
|
||||
.radio = {
|
||||
.name = name_radio,
|
||||
.amux = LINE2,
|
||||
},
|
||||
.mpeg = SAA7134_MPEG_EMPRESS,
|
||||
},
|
||||
};
|
||||
|
||||
const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
|
||||
@ -4326,6 +4649,174 @@ struct pci_device_id saa7134_pci_tbl[] = {
|
||||
.subvendor = 0x1461, /* Avermedia Technologies Inc */
|
||||
.subdevice = 0xf01d, /* AVerTV DVB-T Super 007 */
|
||||
.driver_data = SAA7134_BOARD_AVERMEDIA_SUPER_007,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x1131,
|
||||
.subdevice = 0x0000,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_401,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4016,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_401,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x1131,
|
||||
.subdevice = 0x0000,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_403FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4036,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_403,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4037,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_403FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4050,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_405,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4051,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_405FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4070,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_407,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4071,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_407FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x4090,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_409,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x5051,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_505FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x505B,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_505FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7130,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x5050,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_505FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x5071,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x507B,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x5070,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x5090,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x0000,
|
||||
.subdevice = 0x5201,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6070,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6071,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6072,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6073,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6090,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6091,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6092,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6093,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_607_9FM,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6190,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_M6,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
.subvendor = 0x5ace,
|
||||
.subdevice = 0x6193,
|
||||
.driver_data = SAA7134_BOARD_BEHOLD_M6,
|
||||
},{
|
||||
.vendor = PCI_VENDOR_ID_PHILIPS,
|
||||
.device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
||||
@ -4473,6 +4964,16 @@ int saa7134_board_init1(struct saa7134_dev *dev)
|
||||
case SAA7134_BOARD_ENCORE_ENLTV:
|
||||
case SAA7134_BOARD_ENCORE_ENLTV_FM:
|
||||
case SAA7134_BOARD_10MOONSTVMASTER3:
|
||||
case SAA7134_BOARD_BEHOLD_401:
|
||||
case SAA7134_BOARD_BEHOLD_403:
|
||||
case SAA7134_BOARD_BEHOLD_403FM:
|
||||
case SAA7134_BOARD_BEHOLD_405:
|
||||
case SAA7134_BOARD_BEHOLD_405FM:
|
||||
case SAA7134_BOARD_BEHOLD_407:
|
||||
case SAA7134_BOARD_BEHOLD_407FM:
|
||||
case SAA7134_BOARD_BEHOLD_409:
|
||||
case SAA7134_BOARD_BEHOLD_505FM:
|
||||
case SAA7134_BOARD_BEHOLD_507_9FM:
|
||||
dev->has_remote = SAA7134_REMOTE_GPIO;
|
||||
break;
|
||||
case SAA7134_BOARD_FLYDVBS_LR300:
|
||||
@ -4512,6 +5013,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
|
||||
saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
|
||||
break;
|
||||
case SAA7134_BOARD_AVERMEDIA_CARDBUS:
|
||||
case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
|
||||
/* power-up tuner chip */
|
||||
saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff);
|
||||
saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
|
||||
@ -4533,6 +5035,8 @@ int saa7134_board_init1(struct saa7134_dev *dev)
|
||||
case SAA7134_BOARD_PINNACLE_PCTV_310i:
|
||||
case SAA7134_BOARD_UPMOST_PURPLE_TV:
|
||||
case SAA7134_BOARD_HAUPPAUGE_HVR1110:
|
||||
case SAA7134_BOARD_BEHOLD_607_9FM:
|
||||
case SAA7134_BOARD_BEHOLD_M6:
|
||||
dev->has_remote = SAA7134_REMOTE_I2C;
|
||||
break;
|
||||
case SAA7134_BOARD_AVERMEDIA_A169_B:
|
||||
|
@ -334,6 +334,7 @@ static int attach_inform(struct i2c_client *client)
|
||||
case 0x7a:
|
||||
case 0x47:
|
||||
case 0x71:
|
||||
case 0x2d:
|
||||
{
|
||||
struct IR_i2c *ir = i2c_get_clientdata(client);
|
||||
d1printk("%s i2c IR detected (%s).\n",
|
||||
@ -439,6 +440,7 @@ static char *i2c_devs[128] = {
|
||||
[ 0xa0 >> 1 ] = "eeprom",
|
||||
[ 0xc0 >> 1 ] = "tuner (analog)",
|
||||
[ 0x86 >> 1 ] = "tda9887",
|
||||
[ 0x5a >> 1 ] = "remote control",
|
||||
};
|
||||
|
||||
static void do_i2c_scan(char *name, struct i2c_client *c)
|
||||
|
@ -52,6 +52,11 @@ module_param(repeat_period, int, 0644);
|
||||
MODULE_PARM_DESC(repeat_period, "repeat period between "
|
||||
"keypresses when key is down");
|
||||
|
||||
static unsigned int disable_other_ir;
|
||||
module_param(disable_other_ir, int, 0644);
|
||||
MODULE_PARM_DESC(disable_other_ir, "disable full codes of "
|
||||
"alternative remotes from other manufacturers");
|
||||
|
||||
#define dprintk(fmt, arg...) if (ir_debug) \
|
||||
printk(KERN_DEBUG "%s/ir: " fmt, dev->name , ## arg)
|
||||
#define i2cdprintk(fmt, arg...) if (ir_debug) \
|
||||
@ -154,6 +159,45 @@ static int get_key_hvr1110(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int get_key_beholdm6xx(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
|
||||
{
|
||||
unsigned char data[12];
|
||||
u32 gpio;
|
||||
|
||||
struct saa7134_dev *dev = ir->c.adapter->algo_data;
|
||||
|
||||
/* rising SAA7134_GPIO_GPRESCAN reads the status */
|
||||
saa_clearb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
|
||||
saa_setb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
|
||||
|
||||
gpio = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
|
||||
|
||||
if (0x400000 &~ gpio)
|
||||
return 0; /* No button press */
|
||||
|
||||
ir->c.addr = 0x5a >> 1;
|
||||
|
||||
if (12 != i2c_master_recv(&ir->c, data, 12)) {
|
||||
i2cdprintk("read error\n");
|
||||
return -EIO;
|
||||
}
|
||||
/* IR of this card normally decode signals NEC-standard from
|
||||
* - Sven IHOO MT 5.1R remote. xxyye718
|
||||
* - Sven DVD HD-10xx remote. xxyyf708
|
||||
* - BBK ...
|
||||
* - mayby others
|
||||
* So, skip not our, if disable full codes mode.
|
||||
*/
|
||||
if (data[10] != 0x6b && data[11] != 0x86 && disable_other_ir)
|
||||
return 0;
|
||||
|
||||
*ir_key = data[9];
|
||||
*ir_raw = data[9];
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void saa7134_input_irq(struct saa7134_dev *dev)
|
||||
{
|
||||
struct card_ir *ir = dev->remote;
|
||||
@ -288,6 +332,16 @@ int saa7134_input_init1(struct saa7134_dev *dev)
|
||||
case SAA7134_BOARD_MANLI_MTV001:
|
||||
case SAA7134_BOARD_MANLI_MTV002:
|
||||
case SAA7134_BOARD_BEHOLD_409FM:
|
||||
case SAA7134_BOARD_BEHOLD_401:
|
||||
case SAA7134_BOARD_BEHOLD_403:
|
||||
case SAA7134_BOARD_BEHOLD_403FM:
|
||||
case SAA7134_BOARD_BEHOLD_405:
|
||||
case SAA7134_BOARD_BEHOLD_405FM:
|
||||
case SAA7134_BOARD_BEHOLD_407:
|
||||
case SAA7134_BOARD_BEHOLD_407FM:
|
||||
case SAA7134_BOARD_BEHOLD_409:
|
||||
case SAA7134_BOARD_BEHOLD_505FM:
|
||||
case SAA7134_BOARD_BEHOLD_507_9FM:
|
||||
ir_codes = ir_codes_manli;
|
||||
mask_keycode = 0x001f00;
|
||||
mask_keyup = 0x004000;
|
||||
@ -458,6 +512,12 @@ void saa7134_set_i2c_ir(struct saa7134_dev *dev, struct IR_i2c *ir)
|
||||
ir->get_key = get_key_hvr1110;
|
||||
ir->ir_codes = ir_codes_hauppauge_new;
|
||||
break;
|
||||
case SAA7134_BOARD_BEHOLD_607_9FM:
|
||||
case SAA7134_BOARD_BEHOLD_M6:
|
||||
snprintf(ir->c.name, sizeof(ir->c.name), "BeholdTV");
|
||||
ir->get_key = get_key_beholdm6xx;
|
||||
ir->ir_codes = ir_codes_behold;
|
||||
break;
|
||||
default:
|
||||
dprintk("Shouldn't get here: Unknown board %x for I2C IR?\n",dev->board);
|
||||
break;
|
||||
|
@ -240,6 +240,19 @@ struct saa7134_format {
|
||||
#define SAA7134_BOARD_SABRENT_TV_PCB05 115
|
||||
#define SAA7134_BOARD_10MOONSTVMASTER3 116
|
||||
#define SAA7134_BOARD_AVERMEDIA_SUPER_007 117
|
||||
#define SAA7134_BOARD_BEHOLD_401 118
|
||||
#define SAA7134_BOARD_BEHOLD_403 119
|
||||
#define SAA7134_BOARD_BEHOLD_403FM 120
|
||||
#define SAA7134_BOARD_BEHOLD_405 121
|
||||
#define SAA7134_BOARD_BEHOLD_405FM 122
|
||||
#define SAA7134_BOARD_BEHOLD_407 123
|
||||
#define SAA7134_BOARD_BEHOLD_407FM 124
|
||||
#define SAA7134_BOARD_BEHOLD_409 125
|
||||
#define SAA7134_BOARD_BEHOLD_505FM 126
|
||||
#define SAA7134_BOARD_BEHOLD_507_9FM 127
|
||||
#define SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM 128
|
||||
#define SAA7134_BOARD_BEHOLD_607_9FM 129
|
||||
#define SAA7134_BOARD_BEHOLD_M6 130
|
||||
|
||||
#define SAA7134_MAXBOARDS 8
|
||||
#define SAA7134_INPUT_MAX 8
|
||||
|
@ -140,6 +140,7 @@ extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE];
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user