diff options
Diffstat (limited to 'drivers/media/video/bttv-cards.c')
-rw-r--r-- | drivers/media/video/bttv-cards.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/media/video/bttv-cards.c b/drivers/media/video/bttv-cards.c index 012be639aa18..80bcbc4ea3a4 100644 --- a/drivers/media/video/bttv-cards.c +++ b/drivers/media/video/bttv-cards.c | |||
@@ -292,6 +292,9 @@ static struct CARD { | |||
292 | /* likely broken, vendor id doesn't match the other magic views ... | 292 | /* likely broken, vendor id doesn't match the other magic views ... |
293 | * { 0xa0fca04f, BTTV_BOARD_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */ | 293 | * { 0xa0fca04f, BTTV_BOARD_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */ |
294 | 294 | ||
295 | /* Duplicate PCI ID, reconfigure for this board during the eeprom read. | ||
296 | * { 0x13eb0070, BTTV_BOARD_HAUPPAUGE_IMPACTVCB, "Hauppauge ImpactVCB" }, */ | ||
297 | |||
295 | /* DVB cards (using pci function .1 for mpeg data xfer) */ | 298 | /* DVB cards (using pci function .1 for mpeg data xfer) */ |
296 | { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" }, | 299 | { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" }, |
297 | { 0x07611461, BTTV_BOARD_AVDVBT_761, "AverMedia AverTV DVB-T 761" }, | 300 | { 0x07611461, BTTV_BOARD_AVDVBT_761, "AverMedia AverTV DVB-T 761" }, |
@@ -2817,6 +2820,22 @@ struct tvcard bttv_tvcards[] = { | |||
2817 | .tuner_addr = ADDR_UNSET, | 2820 | .tuner_addr = ADDR_UNSET, |
2818 | .has_radio = 1, | 2821 | .has_radio = 1, |
2819 | }, | 2822 | }, |
2823 | /* ---- card 0x8f ---------------------------------- */ | ||
2824 | [BTTV_BOARD_HAUPPAUGE_IMPACTVCB] = { | ||
2825 | .name = "Hauppauge ImpactVCB (bt878)", | ||
2826 | .video_inputs = 4, | ||
2827 | .audio_inputs = 0, | ||
2828 | .tuner = -1, | ||
2829 | .svhs = -1, | ||
2830 | .gpiomask = 0x0f, /* old: 7 */ | ||
2831 | .muxsel = { 0, 1, 3, 2}, /* Composite 0-3 */ | ||
2832 | .no_msp34xx = 1, | ||
2833 | .no_tda9875 = 1, | ||
2834 | .no_tda7432 = 1, | ||
2835 | .tuner_type = -1, | ||
2836 | .tuner_addr = ADDR_UNSET, | ||
2837 | .radio_addr = ADDR_UNSET, | ||
2838 | }, | ||
2820 | }; | 2839 | }; |
2821 | 2840 | ||
2822 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); | 2841 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); |
@@ -3471,6 +3490,21 @@ static void __devinit hauppauge_eeprom(struct bttv *btv) | |||
3471 | tveeprom_hauppauge_analog(&btv->i2c_client, &tv, eeprom_data); | 3490 | tveeprom_hauppauge_analog(&btv->i2c_client, &tv, eeprom_data); |
3472 | btv->tuner_type = tv.tuner_type; | 3491 | btv->tuner_type = tv.tuner_type; |
3473 | btv->has_radio = tv.has_radio; | 3492 | btv->has_radio = tv.has_radio; |
3493 | |||
3494 | printk("bttv%d: Hauppauge eeprom indicates model#%d\n", | ||
3495 | btv->c.nr, tv.model); | ||
3496 | |||
3497 | /* | ||
3498 | * Some of the 878 boards have duplicate PCI IDs. Switch the board | ||
3499 | * type based on model #. | ||
3500 | */ | ||
3501 | if(tv.model == 64900) { | ||
3502 | printk("bttv%d: Switching board type from %s to %s\n", | ||
3503 | btv->c.nr, | ||
3504 | bttv_tvcards[btv->c.type].name, | ||
3505 | bttv_tvcards[BTTV_BOARD_HAUPPAUGE_IMPACTVCB].name); | ||
3506 | btv->c.type = BTTV_BOARD_HAUPPAUGE_IMPACTVCB; | ||
3507 | } | ||
3474 | } | 3508 | } |
3475 | 3509 | ||
3476 | static int terratec_active_radio_upgrade(struct bttv *btv) | 3510 | static int terratec_active_radio_upgrade(struct bttv *btv) |