]> err.no Git - linux-2.6/commitdiff
V4L/DVB (3315): Added support for the Tevion DVB-T 220RF card
authorPeter Hartshorn <p3r@users.sourceforge.net>
Tue, 7 Feb 2006 08:49:13 +0000 (06:49 -0200)
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>
Tue, 7 Feb 2006 08:49:13 +0000 (06:49 -0200)
This is an analog / digital hybrid card.

Signed-off-by: Peter Hartshorn <p3r@users.sourceforge.net>
Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
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 ee1618deadf29018f38b624d91bc69be70202fd1..c10cfd26d529e63489e84c1db1a7929ab2f0efbf 100644 (file)
@@ -86,3 +86,4 @@
  85 -> AverTV DVB-T 777                         [1461:2c05]
  86 -> LifeView FlyDVB-T                        [5168:0301]
  87 -> ADS Instant TV Duo Cardbus PTV331        [0331:1421]
+ 88 -> Tevion DVB-T 220RF                       [17de:7201]
index d65b9dd90342d54aad437e04ba5e3c404d05974f..3f418620bacf04ebbe7a563daf25150331ae3118 100644 (file)
@@ -2674,6 +2674,33 @@ struct saa7134_board saa7134_boards[] = {
                        .gpio   = 0x00200000,
                }},
        },
+       [SAA7134_BOARD_TEVION_DVBT_220RF] = {
+               .name           = "Tevion DVB-T 220RF",
+               .audio_clock    = 0x00187de7,
+               .tuner_type     = TUNER_PHILIPS_TDA8290,
+               .radio_type     = UNSET,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+               .mpeg           = SAA7134_MPEG_DVB,
+               .inputs = {{
+                       .name   = name_tv,
+                       .vmux   = 1,
+                       .amux   = TV,
+                       .tv     = 1,
+               },{
+                       .name   = name_comp1,
+                       .vmux   = 3,
+                       .amux   = LINE1,
+               },{
+                       .name   = name_svideo,
+                       .vmux   = 0,
+                       .amux   = LINE1,
+               }},
+               .radio = {
+                       .name   = name_radio,
+                       .amux   = LINE1,
+               },
+       },
 };
 
 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3162,6 +3189,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
                .subvendor    = 0x0331,
                .subdevice    = 0x1421,
                .driver_data  = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
+       },{
+               .vendor       = PCI_VENDOR_ID_PHILIPS,
+               .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
+               .subvendor    = 0x17de,
+               .subdevice    = 0x7201,
+               .driver_data  = SAA7134_BOARD_TEVION_DVBT_220RF,
        },{
                /* --- boards without eeprom + subsystem ID --- */
                .vendor       = PCI_VENDOR_ID_PHILIPS,
@@ -3431,8 +3464,11 @@ int saa7134_board_init2(struct saa7134_dev *dev)
                }
                break;
        case SAA7134_BOARD_PHILIPS_TIGER:
+       case SAA7134_BOARD_TEVION_DVBT_220RF:
        case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
-               /* this is a hybrid board, initialize to analog mode */
+               /* this is a hybrid board, initialize to analog mode
+                * and configure firmware eeprom address
+                */
                {
                u8 data[] = { 0x3c, 0x33, 0x68};
                struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
index a0c8fa393501b3108e746eef9dc193037971e906..56ca3fad55c48f5a3295eb280205e30e9ab826a6 100644 (file)
@@ -885,6 +885,38 @@ static struct tda1004x_config ads_tech_duo_config = {
        .request_firmware = NULL,
 };
 
+/* ------------------------------------------------------------------ */
+
+static int tevion_dvb220rf_pll_set(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+       int ret;
+       ret = philips_tda827xa_pll_set(0x60, fe, params);
+       return ret;
+}
+
+static int tevion_dvb220rf_pll_init(struct dvb_frontend *fe)
+{
+       return 0;
+}
+
+static void tevion_dvb220rf_pll_sleep(struct dvb_frontend *fe)
+{
+       philips_tda827xa_pll_sleep( 0x61, fe);
+}
+
+static struct tda1004x_config tevion_dvbt220rf_config = {
+       .demod_address = 0x08,
+       .invert        = 1,
+       .invert_oclk   = 0,
+       .xtal_freq     = TDA10046_XTAL_16M,
+       .agc_config    = TDA10046_AGC_TDA827X,
+       .if_freq       = TDA10046_FREQ_045,
+       .pll_init      = tevion_dvb220rf_pll_init,
+       .pll_set       = tevion_dvb220rf_pll_set,
+       .pll_sleep     = tevion_dvb220rf_pll_sleep,
+       .request_firmware = NULL,
+};
+
 #endif
 
 /* ------------------------------------------------------------------ */
@@ -971,6 +1003,10 @@ static int dvb_init(struct saa7134_dev *dev)
                dev->dvb.frontend = tda10046_attach(&ads_tech_duo_config,
                                                    &dev->i2c_adap);
                break;
+       case SAA7134_BOARD_TEVION_DVBT_220RF:
+               dev->dvb.frontend = tda10046_attach(&tevion_dvbt220rf_config,
+                                                   &dev->i2c_adap);
+               break;
 #endif
 #ifdef HAVE_NXT200X
        case SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180:
index 4b49ee03fc210b55b7026fd8cda7f19c4487a9fc..ff39a63c73723e5f809638d849e8728e0007031c 100644 (file)
@@ -214,6 +214,7 @@ struct saa7134_format {
 #define SAA7134_BOARD_AVERMEDIA_777 85
 #define SAA7134_BOARD_FLYDVBT_LR301 86
 #define SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331 87
+#define SAA7134_BOARD_TEVION_DVBT_220RF 88
 
 #define SAA7134_MAXBOARDS 8
 #define SAA7134_INPUT_MAX 8