V4L (1023): Added Hauppauge ImpactVCB board
authorSteven Toth <stoth@hauppauge.com>
Mon, 9 Jan 2006 17:25:01 +0000 (15:25 -0200)
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>
Mon, 9 Jan 2006 17:25:01 +0000 (15:25 -0200)
- Modifications to bttv to support the Hauppauge ImpactVCB product
(Model #64900).

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Documentation/video4linux/CARDLIST.bttv
drivers/media/video/bttv-cards.c
drivers/media/video/bttv.h

index 330246a..74fb085 100644 (file)
 140 -> Osprey 440                                          [0070:ff07]
 141 -> Asound Skyeye PCTV
 142 -> Sabrent TV-FM (bttv version)
+143 -> Hauppauge ImpactVCB (bt878)                         [0070:13eb]
index 012be63..80bcbc4 100644 (file)
@@ -292,6 +292,9 @@ static struct CARD {
        /* likely broken, vendor id doesn't match the other magic views ...
         * { 0xa0fca04f, BTTV_BOARD_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */
 
+       /* Duplicate PCI ID, reconfigure for this board during the eeprom read.
+       * { 0x13eb0070, BTTV_BOARD_HAUPPAUGE_IMPACTVCB,  "Hauppauge ImpactVCB" }, */
+
        /* DVB cards (using pci function .1 for mpeg data xfer) */
        { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" },
        { 0x07611461, BTTV_BOARD_AVDVBT_761,    "AverMedia AverTV DVB-T 761" },
@@ -2817,6 +2820,22 @@ struct tvcard bttv_tvcards[] = {
                .tuner_addr     = ADDR_UNSET,
                .has_radio      = 1,
        },
+       /* ---- card 0x8f ---------------------------------- */
+       [BTTV_BOARD_HAUPPAUGE_IMPACTVCB] = {
+               .name           = "Hauppauge ImpactVCB (bt878)",
+               .video_inputs   = 4,
+               .audio_inputs   = 0,
+               .tuner          = -1,
+               .svhs           = -1,
+               .gpiomask       = 0x0f, /* old: 7 */
+               .muxsel         = { 0, 1, 3, 2}, /* Composite 0-3 */
+               .no_msp34xx     = 1,
+               .no_tda9875     = 1,
+               .no_tda7432     = 1,
+               .tuner_type     = -1,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+       },
 };
 
 static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
@@ -3471,6 +3490,21 @@ static void __devinit hauppauge_eeprom(struct bttv *btv)
        tveeprom_hauppauge_analog(&btv->i2c_client, &tv, eeprom_data);
        btv->tuner_type = tv.tuner_type;
        btv->has_radio  = tv.has_radio;
+
+       printk("bttv%d: Hauppauge eeprom indicates model#%d\n",
+               btv->c.nr, tv.model);
+
+       /*
+        * Some of the 878 boards have duplicate PCI IDs. Switch the board
+        * type based on model #.
+        */
+       if(tv.model == 64900) {
+               printk("bttv%d: Switching board type from %s to %s\n",
+                       btv->c.nr,
+                       bttv_tvcards[btv->c.type].name,
+                       bttv_tvcards[BTTV_BOARD_HAUPPAUGE_IMPACTVCB].name);
+               btv->c.type = BTTV_BOARD_HAUPPAUGE_IMPACTVCB;
+       }
 }
 
 static int terratec_active_radio_upgrade(struct bttv *btv)
index 93298f0..a5f172f 100644 (file)
 #define BTTV_BOARD_OSPREY440               0x8c
 #define BTTV_BOARD_ASOUND_SKYEYE          0x8d
 #define BTTV_BOARD_SABRENT_TVFM           0x8e
+#define BTTV_BOARD_HAUPPAUGE_IMPACTVCB     0x8f
 
 /* i2c address list */
 #define I2C_TSA5522        0xc2