V4L/DVB (4398): Add support for Acorp TV134DS + FlyDVB-S cards.
authorIgor M. Liplianin <liplianin@me.by>
Tue, 8 Aug 2006 12:10:10 +0000 (09:10 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Tue, 26 Sep 2006 14:53:30 +0000 (11:53 -0300)
Add support for Acorp TV134DS and FlyDVB-S cards (both based on
tda10086+tda826x)

Signed-off-by: Igor M. Liplianin <liplianin@me.by>
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Documentation/video4linux/CARDLIST.saa7134
drivers/media/video/saa7134/saa7134-cards.c
drivers/media/video/saa7134/saa7134-dvb.c
drivers/media/video/saa7134/saa7134.h

index dba6933..ac1357d 100644 (file)
@@ -95,3 +95,4 @@
  94 -> LifeView FlyDVB-T Hybrid Cardbus         [5168:3306,5168:3502]
  95 -> LifeView FlyVIDEO3000 (NTSC)             [5169:0138]
  96 -> Medion Md8800 Quadro                     [16be:0007,16be:0008]
+ 97 -> LifeView FlyDVB-S /Acorp TV134DS         [5168:0300,4e42:0300]
index 6ac5ab9..bd526ad 100644 (file)
@@ -2914,6 +2914,27 @@ struct saa7134_board saa7134_boards[] = {
                        .amux   = LINE2,
                }},
        },
+       [SAA7134_BOARD_FLYDVBS_LR300] = {
+               /* LifeView FlyDVB-s */
+               /* Igor M. Liplianin <liplianin@tut.by> */
+               .name           = "LifeView FlyDVB-S /Acorp TV134DS",
+               .audio_clock    = 0x00200000,
+               .tuner_type     = TUNER_ABSENT,
+               .radio_type     = UNSET,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+               .mpeg           = SAA7134_MPEG_DVB,
+               .inputs         = {{
+                       .name = name_comp1,     /* Composite input */
+                       .vmux = 3,
+                       .amux = LINE1,
+               },{
+                       .name = name_svideo,    /* S-Video signal on S-Video input */
+                       .vmux = 8,
+                       .amux = LINE1,
+               }},
+       },
+
 };
 
 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3445,6 +3466,18 @@ struct pci_device_id saa7134_pci_tbl[] = {
                .subdevice    = 0x0005,
                .driver_data  = SAA7134_BOARD_MD7134_BRIDGE_2,
        },{
+               .vendor       = PCI_VENDOR_ID_PHILIPS,
+               .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
+               .subvendor    = 0x5168,
+               .subdevice    = 0x0300,
+               .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
+       },{
+               .vendor       = PCI_VENDOR_ID_PHILIPS,
+               .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
+               .subvendor    = 0x4e42,
+               .subdevice    = 0x0300,/* LR300 */
+               .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
+       },{
                .vendor = PCI_VENDOR_ID_PHILIPS,
                .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
                .subvendor = 0x1489,
@@ -3597,6 +3630,11 @@ int saa7134_board_init1(struct saa7134_dev *dev)
        case SAA7134_BOARD_FLYDVBTDUO:
                dev->has_remote = SAA7134_REMOTE_GPIO;
                break;
+       case SAA7134_BOARD_FLYDVBS_LR300:
+               saa_writeb(SAA7134_GPIO_GPMODE3, 0x80);
+               saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40);
+               dev->has_remote = SAA7134_REMOTE_GPIO;
+               break;
        case SAA7134_BOARD_MD5044:
                printk("%s: seems there are two different versions of the MD5044\n"
                       "%s: (with the same ID) out there.  If sound doesn't work for\n"
index fdd1bb5..e2d366b 100644 (file)
@@ -39,6 +39,9 @@
 #include "tda1004x.h"
 #include "nxt200x.h"
 
+#include "tda10086.h"
+#include "tda826x.h"
+#include "isl6421.h"
 MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
 MODULE_LICENSE("GPL");
 
@@ -1002,6 +1005,11 @@ static struct tda1004x_config md8800_dvbt_config = {
        .request_firmware = NULL,
 };
 
+static struct tda10086_config flydvbs = {
+       .demod_address = 0x0e,
+       .invert = 0,
+};
+
 /* ------------------------------------------------------------------ */
 
 static struct nxt200x_config avertvhda180 = {
@@ -1199,6 +1207,17 @@ static int dvb_init(struct saa7134_dev *dev)
                        dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61, &dev->i2c_adap, &dvb_pll_tuv1236d);
                }
                break;
+       case SAA7134_BOARD_FLYDVBS_LR300:
+               dev->dvb.frontend = dvb_attach(tda10086_attach, &flydvbs, &dev->i2c_adap);
+               if (dev->dvb.frontend) {
+                       if (dvb_attach(tda826x_attach, dev->dvb.frontend, 0x60, &dev->i2c_adap, 0) == NULL) {
+                               printk("%s: No tda826x found!\n", __FUNCTION__);
+                       }
+                       if (dvb_attach(isl6421_attach, dev->dvb.frontend, &dev->i2c_adap, 0x08, 0, 0) == NULL) {
+                               printk("%s: No ISL6421 found!\n", __FUNCTION__);
+                       }
+               }
+               break;
        default:
                printk("%s: Huh? unknown DVB card?\n",dev->name);
                break;
index e3739b8..c2f5181 100644 (file)
@@ -224,6 +224,7 @@ struct saa7134_format {
 #define SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS 94
 #define SAA7134_BOARD_FLYVIDEO3000_NTSC 95
 #define SAA7134_BOARD_MEDION_MD8800_QUADRO 96
+#define SAA7134_BOARD_FLYDVBS_LR300 97
 
 #define SAA7134_MAXBOARDS 8
 #define SAA7134_INPUT_MAX 8