Index: v4l-dvb/linux/drivers/media/video/saa7134/Kconfig =================================================================== --- v4l-dvb.orig/linux/drivers/media/video/saa7134/Kconfig +++ v4l-dvb/linux/drivers/media/video/saa7134/Kconfig @@ -37,6 +37,8 @@ config VIDEO_SAA7134_DVB select DVB_TDA826X if !DVB_FE_CUSTOMISE select DVB_TDA827X if !DVB_FE_CUSTOMISE select DVB_ISL6421 if !DVB_FE_CUSTOMISE + select DVB_ZL1003X if !DVB_FE_CUSTOMISE + select DVB_MT312 if !DVB_FE_CUSTOMISE ---help--- This adds support for DVB cards based on the Philips saa7134 chip. Index: v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c =================================================================== --- v4l-dvb.orig/linux/drivers/media/video/saa7134/saa7134-cards.c +++ v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c @@ -3959,7 +3959,7 @@ struct saa7134_board saa7134_boards[] = .radio_type = UNSET, .tuner_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET, - /* no DVB support for now */ + .mpeg = SAA7134_MPEG_DVB, .inputs = {{ .name = name_comp, .vmux = 1, @@ -5178,9 +5178,6 @@ int saa7134_board_init1(struct saa7134_d /* write windows gpio values */ saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x80040100, 0x80040100); saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100); - printk("%s: %s: hybrid analog/dvb card\n" - "%s: Sorry, only the analog inputs are supported for now.\n", - dev->name,card(dev).name, dev->name); break; } return 0; Index: v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c =================================================================== --- v4l-dvb.orig/linux/drivers/media/video/saa7134/saa7134-dvb.c +++ v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c @@ -44,6 +44,9 @@ #include "tda827x.h" #include "isl6421.h" +#include "zl1003x.h" +#include "mt312.h" + MODULE_AUTHOR("Gerd Knorr [SuSE Labs]"); MODULE_LICENSE("GPL"); @@ -840,6 +843,18 @@ static struct nxt200x_config kworldatsc1 .demod_address = 0x0a, }; +/* ------------------------------------------------------------------ */ + +static struct mt312_config avertv_a700_mt312 = { + .demod_address = 0x0e, + .voltage_inverted = 1, +}; + +static struct zl1003x_config avertv_a700_tuner = { + .tuner_address = 0x60, + .type = ZL1003X_TYPE_ZL10036, +}; + /* ================================================================== * Core code */ @@ -1044,6 +1059,17 @@ static int dvb_init(struct saa7134_dev * case SAA7134_BOARD_AVERMEDIA_SUPER_007: configure_tda827x_fe(dev, &avermedia_super_007_config); break; + case SAA7134_BOARD_AVERMEDIA_A700: + dev->dvb.frontend = dvb_attach(vp310_mt312_attach, + &avertv_a700_mt312, &dev->i2c_adap); + if (dev->dvb.frontend) { + if (dvb_attach(zl1003x_attach, dev->dvb.frontend, + &avertv_a700_tuner, &dev->i2c_adap) == NULL) { + wprintk("%s: No zl1003x found!\n", + __FUNCTION__); + } + } + break; default: wprintk("Huh? unknown DVB card?\n"); break;