diff -r cdcf089168df linux/drivers/media/video/saa7134/saa7134-cards.c --- a/linux/drivers/media/video/saa7134/saa7134-cards.c Sun Jan 17 20:42:47 2010 -0200 +++ b/linux/drivers/media/video/saa7134/saa7134-cards.c Mon Jan 18 07:03:53 2010 +0100 @@ -5394,7 +5394,37 @@ .amux = LINE2, }, }, - + [SAA7134_BOARD_FLYDVBTDUO_MEDION] = { + /* Thomas Genty */ + .name = "LifeView FlyDVB-T DUO Medion", + .audio_clock = 0x00187de7, + .tuner_type = TUNER_PHILIPS_TDA8290, + .radio_type = UNSET, + .tuner_addr = ADDR_UNSET, + .radio_addr = ADDR_UNSET, + .gpiomask = 0x00200000, + .mpeg = SAA7134_MPEG_DVB, + .inputs = {{ + .name = name_tv, + .vmux = 1, + .amux = TV, + .gpio = 0x200000, + .tv = 1, + },{ + .name = name_comp1, /* Not tested */ + .vmux = 3, + .amux = LINE1, + },{ + .name = name_svideo, /* Not tested */ + .vmux = 8, + .amux = LINE1, + }}, + .radio = { + .name = name_radio, + .amux = TV, + .gpio = 0x000000, /* No tested */ + }, + }, }; const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); @@ -6551,6 +6581,12 @@ .subdevice = 0x6655, .driver_data = SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S, }, { + .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7133, + .subvendor = 0x5168, + .subdevice = 0x0307, /* LR307-N */ + .driver_data = SAA7134_BOARD_FLYDVBTDUO_MEDION, + }, { /* --- boards without eeprom + subsystem ID --- */ .vendor = PCI_VENDOR_ID_PHILIPS, .device = PCI_DEVICE_ID_PHILIPS_SAA7134, @@ -7318,6 +7354,7 @@ case SAA7134_BOARD_AVERMEDIA_SUPER_007: case SAA7134_BOARD_TWINHAN_DTV_DVB_3056: case SAA7134_BOARD_CREATIX_CTX953: + case SAA7134_BOARD_FLYDVBTDUO_MEDION: { /* this is a hybrid board, initialize to analog mode * and configure firmware eeprom address diff -r cdcf089168df linux/drivers/media/video/saa7134/saa7134-dvb.c --- a/linux/drivers/media/video/saa7134/saa7134-dvb.c Sun Jan 17 20:42:47 2010 -0200 +++ b/linux/drivers/media/video/saa7134/saa7134-dvb.c Mon Jan 18 07:03:53 2010 +0100 @@ -825,6 +825,20 @@ .request_firmware = philips_tda1004x_request_firmware }; +static struct tda1004x_config tda827x_flydvbtduo_medion_config = { + .demod_address = 0x08, + .invert = 1, + .invert_oclk = 0, + .xtal_freq = TDA10046_XTAL_16M, + .agc_config = TDA10046_AGC_TDA827X, + .gpio_config = TDA10046_GP01_I, + .if_freq = TDA10046_FREQ_045, + .i2c_gate = 0x4b, + .tuner_address = 0x61, + .antenna_switch = 2, + .request_firmware = philips_tda1004x_request_firmware +}; + /* ------------------------------------------------------------------ * special case: this card uses saa713x GPIO22 for the mode switch */ @@ -1586,6 +1600,22 @@ &dtv1000s_tda18271_config); } break; + case SAA7134_BOARD_FLYDVBTDUO_MEDION: + /* this card uses saa713x GPIO22 for the mode switch */ + fe0->dvb.frontend = dvb_attach(tda10046_attach, + &tda827x_flydvbtduo_medion_config, + &dev->i2c_adap); + if (fe0->dvb.frontend) { + if (dvb_attach(tda827x_attach,fe0->dvb.frontend, + tda827x_flydvbtduo_medion_config.tuner_address, &dev->i2c_adap, + &ads_duo_cfg) == NULL) { + wprintk("no tda827x tuner found at addr: %02x\n", + tda827x_flydvbtduo_medion_config.tuner_address); + goto dettach_frontend; + } + } else + wprintk("failed to attach tda10046\n"); + break; default: wprintk("Huh? unknown DVB card?\n"); break; diff -r cdcf089168df linux/drivers/media/video/saa7134/saa7134.h --- a/linux/drivers/media/video/saa7134/saa7134.h Sun Jan 17 20:42:47 2010 -0200 +++ b/linux/drivers/media/video/saa7134/saa7134.h Mon Jan 18 07:03:53 2010 +0100 @@ -301,6 +301,7 @@ #define SAA7134_BOARD_ASUS_EUROPA_HYBRID 174 #define SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S 175 #define SAA7134_BOARD_BEHOLD_505RDS_MK3 176 +#define SAA7134_BOARD_FLYDVBTDUO_MEDION 177 #define SAA7134_MAXBOARDS 32 #define SAA7134_INPUT_MAX 8